diff --git a/.github/agents/CIPP-Alert-Agent.md b/.github/agents/CIPP-Alert-Agent.md new file mode 100644 index 000000000000..6b29ec142fed --- /dev/null +++ b/.github/agents/CIPP-Alert-Agent.md @@ -0,0 +1,45 @@ +--- +name: CIPP Frontend Alert Registrar +description: > + Adds new alert entries to src/data/alerts.json in the CIPP frontend. + The agent must never modify any other file or perform any other change. +--- + +# CIPP Frontend Alert Registrar + +## Mission + +You are a **frontend alert registrar** responsible for updating the `src/data/alerts.json` file to include new alerts. + +Your role is **strictly limited** to adding a new JSON entry describing the alertโ€™s metadata. +You do not touch or inspect any other part of the codebase. + +--- + +## Scope of Work + +This agent is used when a new alert must be surfaced to the frontend โ€” for example, after a new backend `Get-CIPPAlert*.ps1` alert has been added. + +Tasks include: + +- Opening `src/data/alerts.json` +- Appending one new JSON object describing the new alert +- Preserving JSON structure, indentation, and trailing commas exactly as in the existing file +- Validating that the resulting JSON is syntactically correct + + +## Alert Format + +Each alert entry in `src/data/alerts.json` is a JSON object with the following structure: + +```json +{ + "name": "", + "label": "A nice label for the alert", + "requiresInput": true, + "inputType": "switch", + "inputLabel": "Exclude disabled users?", + "inputName": "InactiveLicensedUsersExcludeDisabled", + "recommendedRunInterval": "1d" +} +``` diff --git a/.github/agents/CIPP-Frontend-Alert-Agent.md b/.github/agents/CIPP-Frontend-Alert-Agent.md new file mode 100644 index 000000000000..6b29ec142fed --- /dev/null +++ b/.github/agents/CIPP-Frontend-Alert-Agent.md @@ -0,0 +1,45 @@ +--- +name: CIPP Frontend Alert Registrar +description: > + Adds new alert entries to src/data/alerts.json in the CIPP frontend. + The agent must never modify any other file or perform any other change. +--- + +# CIPP Frontend Alert Registrar + +## Mission + +You are a **frontend alert registrar** responsible for updating the `src/data/alerts.json` file to include new alerts. + +Your role is **strictly limited** to adding a new JSON entry describing the alertโ€™s metadata. +You do not touch or inspect any other part of the codebase. + +--- + +## Scope of Work + +This agent is used when a new alert must be surfaced to the frontend โ€” for example, after a new backend `Get-CIPPAlert*.ps1` alert has been added. + +Tasks include: + +- Opening `src/data/alerts.json` +- Appending one new JSON object describing the new alert +- Preserving JSON structure, indentation, and trailing commas exactly as in the existing file +- Validating that the resulting JSON is syntactically correct + + +## Alert Format + +Each alert entry in `src/data/alerts.json` is a JSON object with the following structure: + +```json +{ + "name": "", + "label": "A nice label for the alert", + "requiresInput": true, + "inputType": "switch", + "inputLabel": "Exclude disabled users?", + "inputName": "InactiveLicensedUsersExcludeDisabled", + "recommendedRunInterval": "1d" +} +``` diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000000..d6c9564cdd27 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,17 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "npm" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "weekly" + target-branch: "dev" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + target-branch: "dev" diff --git a/.github/workflows/Assign_Issue_Volunteer.yml b/.github/workflows/Assign_Issue_Volunteer.yml index 08f1e82701d0..d320a5be96c1 100644 --- a/.github/workflows/Assign_Issue_Volunteer.yml +++ b/.github/workflows/Assign_Issue_Volunteer.yml @@ -1,10 +1,12 @@ --- -name: 'Assign Issue to Volunteer' -on: [issue_comment] # yamllint disable-line rule:truthy +name: "Issue volunteer assignment" +on: + issue_comment: + types: [created] jobs: - build: - runs-on: ubuntu-latest + volunteer: + runs-on: ubuntu-slim steps: - - uses: bhermann/issue-volunteer@v0.1.12 + - uses: kris6673/issue-volunteer@v0.2.0 with: - GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/Check_for_Version_Update.yml b/.github/workflows/Check_for_Version_Update.yml index f8a7db0343f2..de9156a94582 100644 --- a/.github/workflows/Check_for_Version_Update.yml +++ b/.github/workflows/Check_for_Version_Update.yml @@ -8,10 +8,10 @@ jobs: build: if: github.repository_owner == 'KelvinTegelaar' name: "Check for Version Update" - runs-on: ubuntu-latest + runs-on: ubuntu-slim steps: - name: Check for Changed Files - uses: brettcannon/check-for-changed-files@v1.1.0 + uses: brettcannon/check-for-changed-files@v1.2.1 with: file-pattern: public/version.json failure-message: "You have not updated version.json. This is a required file to update at each PR. Please sync your latest changes and update the version number." diff --git a/.github/workflows/Close_Stale_Issues.yml b/.github/workflows/Close_Stale_Issues.yml new file mode 100644 index 000000000000..b1878078ac90 --- /dev/null +++ b/.github/workflows/Close_Stale_Issues.yml @@ -0,0 +1,20 @@ +--- +name: "Close stale issues" +on: + schedule: + - cron: "30 1 * * *" +jobs: + stale: + if: github.repository_owner == 'KelvinTegelaar' + runs-on: ubuntu-slim + steps: + - uses: actions/stale@v10 + with: + stale-issue-message: "This issue is stale because it has been open 10 days with no activity. We will close this issue soon. If you want this feature implemented you can contribute it. See: https://docs.cipp.app/dev-documentation/contributing-to-the-code . Please notify the team if you are working on this yourself." + close-issue-message: "This issue was closed because it has been stalled for 14 days with no activity." + stale-issue-label: "no-activity" + exempt-issue-labels: "planned,bug,roadmap" + days-before-stale: 9 + days-before-close: 5 + days-before-pr-stale: -1 + days-before-pr-close: -1 diff --git a/.github/workflows/Close_Stale_Issues_and_PRs.yml b/.github/workflows/Close_Stale_Issues_and_PRs.yml deleted file mode 100644 index 88607a42675d..000000000000 --- a/.github/workflows/Close_Stale_Issues_and_PRs.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- -name: 'Close stale issues and PRs' -on: - schedule: - - cron: '30 1 * * *' -jobs: - stale: - if: github.repository_owner == 'KelvinTegelaar' - runs-on: ubuntu-latest - steps: - - uses: actions/stale@v4 - with: - stale-issue-message: 'This issue is stale because it has been open 10 days with no activity. We will close this issue soon. If you want this feature implemented you can contribute it. See: https://docs.cipp.app/dev-documentation/contributing-to-the-code . Please notify the team if you are working on this yourself.' - close-issue-message: 'This issue was closed because it has been stalled for 14 days with no activity.' - stale-issue-label: 'no-activity' - exempt-issue-labels: 'planned,bug,roadmap' - days-before-stale: 9 - days-before-close: 5 diff --git a/.github/workflows/CodeQL_Analyser.yml b/.github/workflows/CodeQL_Analyser.yml index 043426a1d69f..11aa414aaf79 100644 --- a/.github/workflows/CodeQL_Analyser.yml +++ b/.github/workflows/CodeQL_Analyser.yml @@ -1,10 +1,10 @@ --- -name: 'CodeQL' +name: "CodeQL" on: pull_request: branches: [master, main, dev, react] schedule: - - cron: '26 17 * * 0' + - cron: "26 17 * * 0" jobs: analyze: if: github.repository_owner == 'KelvinTegelaar' @@ -17,15 +17,15 @@ jobs: strategy: fail-fast: false matrix: - language: ['javascript'] + language: ["javascript"] steps: - name: Checkout Repository - uses: actions/checkout@v2 + uses: actions/checkout@v6 - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} - name: Autobuild - uses: github/codeql-action/autobuild@v1 + uses: github/codeql-action/autobuild@v4 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v4 diff --git a/.github/workflows/Comment_on_Issues.yml b/.github/workflows/Comment_on_Issues.yml index 8d83f6237d82..6a6014f38dcd 100644 --- a/.github/workflows/Comment_on_Issues.yml +++ b/.github/workflows/Comment_on_Issues.yml @@ -7,16 +7,16 @@ on: jobs: add-comment_bug: if: github.repository_owner == 'KelvinTegelaar' && github.event.label.name == 'unconfirmed-by-user' - runs-on: ubuntu-latest + runs-on: ubuntu-slim permissions: issues: write steps: - name: Add Comment - uses: peter-evans/create-or-update-comment@v3 + uses: peter-evans/create-or-update-comment@v5 with: issue-number: ${{ github.event.issue.number }} body: | Thank you for reporting a potential bug. If you would like to work on this bug, please comment: > I would like to work on this please! - + Thank you for helping us maintain the project! diff --git a/.github/workflows/Detect_Duplicate_Issues.yml b/.github/workflows/Detect_Duplicate_Issues.yml new file mode 100644 index 000000000000..e6f8e1d8fbd8 --- /dev/null +++ b/.github/workflows/Detect_Duplicate_Issues.yml @@ -0,0 +1,24 @@ +--- +name: Detect Duplicate Issues +on: + issues: + types: + - opened + - reopened + +permissions: + models: read + issues: write + +jobs: + detect-duplicates: + if: github.repository_owner == 'KelvinTegelaar' && github.event.issue.user.type != 'Bot' + runs-on: ubuntu-latest + steps: + - name: Calculate lookback date + id: lookback + run: echo "since=$(date -u -d '60 days ago' +%Y-%m-%dT%H:%M:%SZ)" >> "$GITHUB_OUTPUT" + - uses: pelikhan/action-genai-issue-dedup@v0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + since: ${{ steps.lookback.outputs.since }} diff --git a/.github/workflows/Label_Issues.yml b/.github/workflows/Label_Issues.yml index 38865a62fae8..cc0032ee08e8 100644 --- a/.github/workflows/Label_Issues.yml +++ b/.github/workflows/Label_Issues.yml @@ -7,23 +7,23 @@ on: jobs: label_issues_bugs: if: github.repository_owner == 'KelvinTegelaar' && contains(github.event.issue.title, 'Bug') - runs-on: ubuntu-latest + runs-on: ubuntu-slim permissions: issues: write steps: - name: Label Issues - uses: andymckay/labeler@5c59dabdfd4dd5bd9c6e6d255b01b9d764af4414 + uses: andymckay/labeler@e6c4322d0397f3240f0e7e30a33b5c5df2d39e90 with: - add-labels: 'not-assigned' + add-labels: "not-assigned" repo-token: ${{ secrets.GITHUB_TOKEN }} label_issues_frs: if: github.repository_owner == 'KelvinTegelaar' && contains(github.event.issue.title, 'Feature') - runs-on: ubuntu-latest + runs-on: ubuntu-slim permissions: issues: write steps: - name: Label Issues - uses: andymckay/labeler@5c59dabdfd4dd5bd9c6e6d255b01b9d764af4414 + uses: andymckay/labeler@e6c4322d0397f3240f0e7e30a33b5c5df2d39e90 with: - add-labels: 'enhancement, not-assigned' + add-labels: "enhancement, not-assigned" repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/Node_Project_Check.yml b/.github/workflows/Node_Project_Check.yml index b135c589ea7b..1116a307ceb7 100644 --- a/.github/workflows/Node_Project_Check.yml +++ b/.github/workflows/Node_Project_Check.yml @@ -15,12 +15,12 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [16.x] + node-version: ["22.13.0"] os: [ubuntu-latest] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v6 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2 + uses: actions/setup-node@v6.3.0 with: node-version: ${{ matrix.node-version }} - name: Install and Build Test diff --git a/.github/workflows/auto_comments.yml b/.github/workflows/auto_comments.yml index 7d7b11b45474..9a7664c9007c 100644 --- a/.github/workflows/auto_comments.yml +++ b/.github/workflows/auto_comments.yml @@ -7,7 +7,7 @@ on: jobs: handle_comment: - runs-on: ubuntu-latest + runs-on: ubuntu-slim # We need permissions to modify issue comments. # 'issues: write' is required for deleting comments. permissions: @@ -17,7 +17,7 @@ jobs: # 1) If the comment includes '!notasponsor', delete it using GitHub Script - name: Delete !notasponsor comment if: contains(github.event.comment.body, '!notasponsor') - uses: actions/github-script@v6 + uses: actions/github-script@v8 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -30,7 +30,7 @@ jobs: # 2) Post a sponsor-specific reply - name: Reply to !notasponsor if: contains(github.event.comment.body, '!notasponsor') - uses: peter-evans/create-or-update-comment@v3 + uses: peter-evans/create-or-update-comment@v5 with: issue-number: ${{ github.event.issue.number }} body: | @@ -51,7 +51,7 @@ jobs: # 3) If the comment includes '!support', classify as a support request - name: Reply to !support if: contains(github.event.comment.body, '!support') - uses: peter-evans/create-or-update-comment@v3 + uses: peter-evans/create-or-update-comment@v5 with: issue-number: ${{ github.event.issue.number }} body: | @@ -69,7 +69,7 @@ jobs: # 4) If the comment includes '!incomplete', note the bug or feature request is incomplete - name: Reply to !incomplete if: contains(github.event.comment.body, '!incomplete') - uses: peter-evans/create-or-update-comment@v3 + uses: peter-evans/create-or-update-comment@v5 with: issue-number: ${{ github.event.issue.number }} body: | diff --git a/.github/workflows/cipp_dev_build.yml b/.github/workflows/cipp_dev_build.yml index dad0dbebe307..8f9def9f61b8 100644 --- a/.github/workflows/cipp_dev_build.yml +++ b/.github/workflows/cipp_dev_build.yml @@ -15,7 +15,7 @@ jobs: steps: # Checkout the repository - name: Checkout Code - uses: actions/checkout@v4.2.2 + uses: actions/checkout@v6 # Set up Node.js - name: Get Node version @@ -26,7 +26,7 @@ jobs: echo "node_version=$node_sanitized_version" >> $GITHUB_OUTPUT - name: Set up Node.js - uses: actions/setup-node@v4.2.0 + uses: actions/setup-node@v6.3.0 with: node-version: ${{ steps.get_node_version.outputs.node_version }} @@ -38,6 +38,13 @@ jobs: - name: Build Project run: npm run build + # Update version.json with commit hash + - name: Update version.json + run: | + VERSION=$(jq -r '.version' public/version.json) + SHORT_SHA="${GITHUB_SHA::7}" + echo "{\"version\": \"${VERSION}\", \"commit\": \"${SHORT_SHA}\"}" > out/version.json + # Create ZIP File in a New Source Directory - name: Prepare and Zip Build Files run: | @@ -47,7 +54,7 @@ jobs: # Upload to Azure Blob Storage - name: Azure Blob Upload - uses: LanceMcCarthy/Action-AzureBlobUpload@v3.3.1 + uses: LanceMcCarthy/Action-AzureBlobUpload@v3.9.0 with: connection_string: ${{ secrets.AZURE_CONNECTION_STRING }} container_name: cipp diff --git a/.github/workflows/cipp_frontend_build.yml b/.github/workflows/cipp_frontend_build.yml index 76a7dbb2fbbf..900a1adb0992 100644 --- a/.github/workflows/cipp_frontend_build.yml +++ b/.github/workflows/cipp_frontend_build.yml @@ -15,7 +15,7 @@ jobs: steps: # Checkout the repository - name: Checkout Code - uses: actions/checkout@v4.2.2 + uses: actions/checkout@v6 # Set up Node.js - name: Get Node version @@ -26,7 +26,7 @@ jobs: echo "node_version=$node_sanitized_version" >> $GITHUB_OUTPUT - name: Set up Node.js - uses: actions/setup-node@v4.2.0 + uses: actions/setup-node@v6.3.0 with: node-version: ${{ steps.get_node_version.outputs.node_version }} @@ -47,7 +47,7 @@ jobs: # Upload to Azure Blob Storage - name: Azure Blob Upload - uses: LanceMcCarthy/Action-AzureBlobUpload@v3.3.1 + uses: LanceMcCarthy/Action-AzureBlobUpload@v3.9.0 with: connection_string: ${{ secrets.AZURE_CONNECTION_STRING }} container_name: cipp diff --git a/.github/workflows/dev_deploy.yml b/.github/workflows/dev_deploy.yml index d8af6078d94f..027b23b85658 100644 --- a/.github/workflows/dev_deploy.yml +++ b/.github/workflows/dev_deploy.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest name: Build and Deploy Job steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: submodules: true - name: Build And Deploy diff --git a/.github/workflows/label_sponsor_requests.yml b/.github/workflows/label_sponsor_requests.yml index 479cad06c728..28b84ea4e9b6 100644 --- a/.github/workflows/label_sponsor_requests.yml +++ b/.github/workflows/label_sponsor_requests.yml @@ -1,4 +1,3 @@ ---- name: Label Issues on: issues: @@ -7,11 +6,13 @@ on: jobs: label_issues_bugs: if: github.repository_owner == 'KelvinTegelaar' && contains(github.event.issue.title, 'Bug') - runs-on: ubuntu-latest + runs-on: ubuntu-slim permissions: issues: write steps: - name: Sponsor Labels - uses: JasonEtco/is-sponsor-label-action@v1.2.0 + uses: JasonEtco/is-sponsor-label-action@v2.0.0 with: - label: 'Sponsor Request' + label: "Sponsor Priority" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/pr_check.yml b/.github/workflows/pr_check.yml index 0d9e2fd7abcd..15b52ecd4e82 100644 --- a/.github/workflows/pr_check.yml +++ b/.github/workflows/pr_check.yml @@ -16,7 +16,7 @@ permissions: jobs: check-branch: - runs-on: ubuntu-latest + runs-on: ubuntu-slim steps: - name: Check and Comment on PR # Only process fork PRs with specific branch conditions @@ -25,7 +25,7 @@ jobs: github.event.pull_request.head.repo.fork == true && ((github.event.pull_request.head.ref == 'main' || github.event.pull_request.head.ref == 'master') || (github.event.pull_request.base.ref == 'main' || github.event.pull_request.base.ref == 'master')) - uses: actions/github-script@v7 + uses: actions/github-script@v8 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -46,14 +46,14 @@ jobs: } message += '๐Ÿ”’ This PR will now be automatically closed due to the above rules.'; - + // Post the comment await github.rest.issues.createComment({ ...context.repo, issue_number: context.issue.number, body: message }); - + // Close the PR await github.rest.pulls.update({ ...context.repo, diff --git a/.gitignore b/.gitignore index e8cef5c36c55..78ea4526e7ce 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ node_modules .pnp .pnp.js build +package-lock.json # testing coverage @@ -27,4 +28,8 @@ yarn-error.log* # vscode debug logs debug.log -app.log \ No newline at end of file +app.log + +# AI rules +.*/rules +AGENTS.md diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 1bcdb9744954..91a6a5c671f2 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -10,6 +10,12 @@ "type": "shell", "command": "azurite --location ../", "isBackground": true, + "options": { + "env": { + "LC_ALL": "en-US.UTF-8", + "LANG": "en-US" + } + }, "problemMatcher": { "pattern": [ { diff --git a/CLA.md b/CLA.md new file mode 100644 index 000000000000..1f94b337f7bf --- /dev/null +++ b/CLA.md @@ -0,0 +1,83 @@ +# Contributor License Agreement (CLA) + +This Contributor License Agreement ("Agreement") is entered into by the individual or entity ("You") submitting a Contribution to this project. By submitting a Contribution, You agree to the following terms and conditions: + +--- + +## 1. Definitions + +1. **"Contribution"** means any original work of authorship, including modifications or additions to existing works, submitted in any form (including source code, object code, documentation, or other materials) to this repository. +2. **"CyberDrain"** means the maintainers, owners, or legal rights holders of this repository, including successors and assigns. +3. **"Project License"** refers to the **GNU Affero General Public License, version 3 (AGPL-3.0)** under which this project is distributed, unless CyberDrain elects to relicense under a custom license. + +--- + +## 2. Copyright Assignment + +You hereby assign to CyberDrain, effective on submission of any Contribution, **all right, title, and interest worldwide in and to the copyright** of Your Contributions. + +This assignment includes, without limitation, the exclusive rights to: + +* Reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute the Contributions in any medium, and +* Relicense the Contributions under the AGPL-3.0 license, any future versions of that license, or under custom/commercial licenses as CyberDrain deems appropriate. + +To the extent that applicable law prohibits the assignment of certain moral rights or similar rights, You hereby irrevocably waive those rights to the maximum extent permitted by law. + +--- + +## 3. Patent Grant + +You hereby grant to CyberDrain, its successors, assigns, and licensees a **perpetual, worldwide, non-exclusive, transferable, irrevocable, royalty-free, fully paid-up license** under any patents that You own or control, to make, have made, use, offer to sell, sell, import, and otherwise transfer Your Contributions. + +This patent license extends only to the combination of Your Contributions with the Project to which they were submitted. + +--- + +## 4. License Grant Back to You + +CyberDrain hereby grants You a non-exclusive, worldwide, royalty-free, irrevocable license to use, reproduce, and prepare derivative works of Your Contributions for any purpose, **provided such use does not conflict with the licensing terms applied by CyberDrain** (including AGPL-3.0 or custom licenses). + +--- + +## 5. Representations and Warranties + +By submitting a Contribution, You represent and warrant that: + +1. The Contribution is Your original creation, or You have sufficient rights to submit it. +2. The Contribution does not knowingly violate or infringe any third-party intellectual property rights. +3. You are legally entitled to assign copyright and grant the licenses described herein. +4. The Contribution is submitted free of any encumbrances, liens, or claims by any third party. + +--- + +## 6. Custom Licensing + +CyberDrain reserves the right to distribute the Project, including Your Contributions, under: + +* The **AGPL-3.0 license**, and/or +* **Custom or commercial licenses**, including licenses granted to sponsors via GitHub Sponsorships. + +Contributors acknowledge and agree that: + +* Their Contributions may be included under such custom licenses. +* No royalties, fees, or other compensation shall be due to Contributors in connection with such relicensing. + +--- + +## 7. Disclaimer of Warranty + +Except as expressly stated in this Agreement, You provide Contributions **โ€œAS ISโ€**, without warranties or conditions of any kind, express or implied, including but not limited to warranties of merchantability, fitness for a particular purpose, or non-infringement. + +--- + +## 8. Limitation of Liability + +In no event shall You be liable for any direct, indirect, incidental, special, exemplary, or consequential damages arising out of or in connection with Your Contributions, even if advised of the possibility of such damages. + +--- + +## 9. Acceptance + +By submitting a Contribution to this repository, You acknowledge that You have read and understood this Agreement, and that You agree to be legally bound by its terms. + +No signature is required โ€” **submission of a Contribution constitutes acceptance**. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000000..219f861658e2 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,47 @@ +# Contributing to This Project + +First of all โ€“ thank you for considering contributing! ๐ŸŽ‰ Contributions help improve this project for everyone, and we welcome issues, discussions, and pull requests. + +Please read through this document before contributing. + +--- + +## Contributor License Agreement (CLA) + +By contributing to this repository, you agree to the terms of our **Contributor License Agreement (CLA):** + +* **Copyright Transfer**: All contributions (commits, pull requests, issues, or code reviews) are automatically assigned to **CyberDrain**. +* Contributors give up ownership rights of their contributions and transfer them fully to CyberDrain. +* CyberDrain may use, modify, distribute, sublicense, or relicense the contributions under any terms it deems fit, including custom or commercial licenses. +* **You do not need to sign anything** โ€“ the act of contributing implies agreement with this CLA. + +--- + +## Custom Licenses + +This project is generally open source, but we also provide **custom licensing options**: + +* Custom licenses are available **upon agreement**. +* Sponsors who arrange a custom license are **not required** to publish their license terms in this repository. +* Since copyright of contributions is transferred to CyberDrain, CyberDrain has full authority to include contributions under such custom licensing terms. + + +--- + +## How to Contribute + +As this project is ever evolving, we recommend checking out the contributions docs on our doc page here: + +- https://docs.cipp.app/dev-documentation/contributing-to-the-code +- https://docs.cipp.app/dev-documentation/cipp-dev-guide +- https://docs.cipp.app/dev-documentation/contributing-to-the-documentation + +--- + +## Code of Conduct + +We expect all contributors to follow respectful, inclusive, and collaborative practices. +Please help keep this project a safe and welcoming place for everyone. + +๐Ÿ‘‰ By contributing to this repository, you acknowledge that your contributions are automatically and irrevocably transferred in copyright to **CyberDrain**, and that they are covered by the CLA described above. + diff --git a/LICENSE.CustomLicenses.md b/LICENSE.CustomLicenses.md new file mode 100644 index 000000000000..2c8ebfbe3dea --- /dev/null +++ b/LICENSE.CustomLicenses.md @@ -0,0 +1,14 @@ +1. Availability of Custom Licenses +Custom licenses are available to sponsors via GitHub Sponsorships. Upon mutual agreement between the project maintainers and the sponsor, such licenses shall apply to the sponsored party. + +2. Publication Exemption +Custom licenses granted through GitHub Sponsorships are exempt from publication in this repository. Sponsors and maintainers may keep such agreements private. + +3. Contributor License Agreement (CLA) +By contributing to this repository in any form (including but not limited to commits, pull requests, and code reviews), contributors explicitly agree to the terms of this Contributor License Agreement. + +4. Coverage of Contributions +Any and all commits made to this repository are automatically considered covered under this CLA. Contributors retain copyright to their individual contributions, while granting the maintainers the necessary rights to use, modify, distribute, and sublicense such contributions in accordance with the terms of the project. + +5. Automatic Acceptance +All contributors to this repository, by the act of contribution, automatically and irrevocably agree to the provisions of this CLA and the terms herein. diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 000000000000..29ebfa545f55 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. \ No newline at end of file diff --git a/Tools/Start-CippDevEmulators.ps1 b/Tools/Start-CippDevEmulators.ps1 index 74de265cc59a..e0d0146f3ab6 100644 --- a/Tools/Start-CippDevEmulators.ps1 +++ b/Tools/Start-CippDevEmulators.ps1 @@ -1,18 +1,26 @@ +Write-Host 'Starting CIPP Dev Emulators' -ForegroundColor Cyan + +# Verify Windows Terminal is available Get-Command wt -ErrorAction Stop | Out-Null + +# Stop any existing node processes Get-Process node -ErrorAction SilentlyContinue | Stop-Process -ErrorAction SilentlyContinue + +# Get paths $Path = (Get-Item $PSScriptRoot).Parent.Parent.FullName -Write-Host "CIPP Dev Emulators starting in $Path" -ForegroundColor Green -pwsh -file (Join-Path $PSScriptRoot 'Start-CippDevInstallation.ps1') +# Run installation script to ensure dependencies are installed and updated before starting emulators +pwsh -File (Join-Path $PSScriptRoot 'Start-CippDevInstallation.ps1') +$ApiPath = Join-Path -Path $Path -ChildPath 'CIPP-API' +$FrontendPath = Join-Path -Path $Path -ChildPath 'CIPP' -Write-Host 'Starting CIPP Dev Emulators' +Write-Host 'Starting emulators...' -ForegroundColor Cyan -if (Test-Path (Join-Path $Path 'CIPP-API-Processor')) { - $Process = Read-Host -Prompt 'Start Process Function (y/N)?' -} +# Build commands with error handling +$azuriteCommand = 'try { azurite } catch { Write-Error $_.Exception.Message } finally { Read-Host "Press Enter to exit" }' +$apiCommand = 'try { func start } catch { Write-Error $_.Exception.Message } finally { Read-Host "Press Enter to exit" }' +$frontendCommand = 'try { npm run dev } catch { Write-Error $_.Exception.Message } finally { Read-Host "Press Enter to exit" }' +$swaCommand = 'try { npm run start-swa } catch { Write-Error $_.Exception.Message } finally { Read-Host "Press Enter to exit" }' -if ($Process -eq 'y') { - wt --title CIPP`; new-tab --title 'Azurite' -d $Path pwsh -c azurite`; new-tab --title 'FunctionApp' -d $Path\CIPP-API pwsh -c func start`; new-tab --title 'CIPP Frontend' -d $Path\CIPP pwsh -c npm run dev`; new-tab --title 'SWA' -d $Path\CIPP pwsh -c npm run start-swa`; new-tab --title 'CIPP-API-Processor' -d $Path\CIPP-API-Processor pwsh -c func start --port 7072 -} else { - wt --title CIPP`; new-tab --title 'Azurite' -d $Path pwsh -c azurite`; new-tab --title 'FunctionApp' -d $Path\CIPP-API pwsh -c func start`; new-tab --title 'CIPP Frontend' -d $Path\CIPP pwsh -c npm run dev`; new-tab --title 'SWA' -d $Path\CIPP pwsh -c npm run start-swa -} +# Start Windows Terminal with all tabs +wt --title CIPP`; new-tab --title 'Azurite' -d $Path pwsh -c $azuriteCommand`; new-tab --title 'FunctionApp' -d $ApiPath pwsh -c $apiCommand`; new-tab --title 'CIPP Frontend' -d $FrontendPath pwsh -c $frontendCommand`; new-tab --title 'SWA' -d $FrontendPath pwsh -c $swaCommand diff --git a/Tools/Start-CippDevInstallation.ps1 b/Tools/Start-CippDevInstallation.ps1 index 2d00a12c6a26..0cc8c07f8633 100644 --- a/Tools/Start-CippDevInstallation.ps1 +++ b/Tools/Start-CippDevInstallation.ps1 @@ -29,4 +29,5 @@ if (-not(yarn global list | Select-String -Pattern 'next')) { yarn global add 'next' } -yarn install --cwd (Join-Path $Path "CIPP") --network-timeout 500000 +Write-Host 'Running yarn install for CIPP frontend...' -ForegroundColor Cyan +yarn install --cwd (Join-Path $Path 'CIPP') --network-timeout 500000 diff --git a/context7.json b/context7.json new file mode 100644 index 000000000000..3a0b7c321b31 --- /dev/null +++ b/context7.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://context7.com/schema/context7.json", + "projectTitle": "CIPP - Cyberdrain Improved Partner Portal", + "description": "The CyberDrain Improved Partner Portal is a portal to help manage administration for Microsoft Partners.", + "folders": [], + "excludeFolders": [], + "excludeFiles": [], + "rules": [], + "previousVersions": [], + "branch": "docs" +} diff --git a/cspell.json b/cspell.json index 8d5d275d003e..00a5c1785b77 100644 --- a/cspell.json +++ b/cspell.json @@ -1,65 +1,83 @@ { - "version": "0.2", - "ignorePaths": [], - "dictionaryDefinitions": [], - "dictionaries": [], - "words": [ - "ADMS", - "AITM", - "Augmentt", - "Autotask", - "Choco", - "CIPP", - "CIPP-API", - "Datto", - "Entra", - "ESET", - "GDAP", - "HIBP", - "Hudu", - "ImmyBot", - "Intune", - "LCID", - "OBEE", - "Passwordless", - "pwpush", - "Rewst", - "Sherweb", - "Syncro", - "TERRL", - "Yubikey" - ], - "ignoreWords": [ - "Addins", - "CIPPAPI", - "PSTN", - "TNEF", - "exo_individualsharing", - "exo_mailboxaudit", - "exo_mailtipsenabled", - "exo_outlookaddins", - "exo_storageproviderrestricted", - "locationcipp", - "mdo_antiphishingpolicies", - "mdo_autoforwardingmode", - "mdo_blockmailforward", - "mdo_commonattachmentsfilter", - "mdo_highconfidencephishaction", - "mdo_highconfidencespamaction", - "mdo_phishthresholdlevel", - "mdo_phisspamacation", - "mdo_safeattachmentpolicy", - "mdo_safeattachments", - "mdo_safedocuments", - "mdo_safelinksforOfficeApps", - "mdo_safelinksforemail", - "mdo_spam_notifications_only_for_admins", - "mdo_zapmalware", - "mdo_zapphish", - "mdo_zapspam", - "microsoftonline", - "mip_search_auditlog", - "winmail" - ], - "import": [] + "version": "0.2", + "ignorePaths": [], + "dictionaryDefinitions": [], + "dictionaries": [], + "words": [ + "ADMS", + "AITM", + "AOSP", + "Augmentt", + "Automapping", + "Autotask", + "Choco", + "cipp", + "CIPP", + "CIPP-API", + "CISA", + "Datto", + "DMARC", + "EIDSCA", + "Entra", + "ESET", + "GDAP", + "HIBP", + "Hudu", + "ImmyBot", + "Intune", + "LCID", + "OBEE", + "passwordless", + "Passwordless", + "pwpush", + "Reshare", + "Rewst", + "Sherweb", + "superadmin", + "Syncro", + "TERRL", + "unconfigured", + "Yubikey" + ], + "ignoreWords": [ + "Addins", + "Disablex", + "Displayname", + "CIPPAPI", + "PSTN", + "TNEF", + "Equivio", + "defaultvalues", + "Excludedfile", + "exo_individualsharing", + "exo_mailboxaudit", + "exo_mailtipsenabled", + "exo_outlookaddins", + "exo_storageproviderrestricted", + "donotchange", + "locationcipp", + "mdo_antiphishingpolicies", + "mdo_autoforwardingmode", + "mdo_blockmailforward", + "mdo_commonattachmentsfilter", + "mdo_highconfidencephishaction", + "mdo_highconfidencespamaction", + "mdo_phishthresholdlevel", + "mdo_phisspamacation", + "mdo_safeattachmentpolicy", + "mdo_safeattachments", + "mdo_safedocuments", + "mdo_safelinksforOfficeApps", + "mdo_safelinksforemail", + "mdo_spam_notifications_only_for_admins", + "mdo_zapmalware", + "mdo_zapphish", + "mdo_zapspam", + "microsoftonline", + "mip_search_auditlog", + "winmail", + "onmicrosoft.com", + "MOERA" + ], + "import": [] } diff --git a/generate-placeholders.js b/generate-placeholders.js index 2f6b614fe9a8..304e6402e4ed 100644 --- a/generate-placeholders.js +++ b/generate-placeholders.js @@ -43,7 +43,7 @@ const pages = [ { title: "BPA Report Builder", path: "/tenant/tools/bpa-report-builder" }, { title: "Standards", path: "/tenant/standards" }, { title: "Edit Standards", path: "/tenant/standards/list-applied-standards" }, - { title: "List Standards", path: "/tenant/standards/list-standards" }, + { title: "List Standards", path: "/tenant/standards" }, { title: "Best Practice Analyser", path: "/tenant/standards/bpa-report" }, { title: "Domains Analyser", path: "/tenant/standards/domains-analyser" }, { title: "Conditional Access", path: "/tenant/administration" }, @@ -70,6 +70,8 @@ const pages = [ { title: "Defender Deployment", path: "/security/defender/deployment" }, { title: "Vulnerabilities", path: "/security/defender/list-defender-tvm" }, { title: "Device Compliance", path: "/security/reports/list-device-compliance" }, + { title: "Safe Links", path: "/security/safelinks/safelinks" }, + { title: "Safe Links Templates", path: "/security/safelinks/safelinks-template" }, { title: "Applications", path: "/endpoint/applications/list" }, { title: "Application Queue", path: "/endpoint/applications/queue" }, { title: "Add Choco App", path: "/endpoint/applications/add-choco-app" }, @@ -81,7 +83,6 @@ const pages = [ { title: "Profiles", path: "/endpoint/autopilot/list-profiles" }, { title: "Add Profile", path: "/endpoint/autopilot/add-profile" }, { title: "Status Pages", path: "/endpoint/autopilot/list-status-pages" }, - { title: "Add Status Page", path: "/endpoint/autopilot/add-status-page" }, { title: "Devices", path: "/endpoint/MEM/devices" }, { title: "Configuration Policies", path: "/endpoint/MEM/list-policies" }, { title: "Compliance Policies", path: "/endpoint/MEM/list-compliance-policies" }, @@ -99,6 +100,7 @@ const pages = [ { title: "Deleted Mailboxes", path: "/email/administration/deleted-mailboxes" }, { title: "Mailbox Rules", path: "/email/administration/mailbox-rules" }, { title: "Contacts", path: "/email/administration/contacts" }, + { title: "Contact Templates", path: "/email/administration/contacts-template" }, { title: "Quarantine", path: "/email/administration/quarantine" }, { title: "Tenant Allow/Block Lists", path: "/email/administration/tenant-allow-block-lists" }, { title: "Mailbox Restore Wizard", path: "/email/tools/mailbox-restore-wizard" }, @@ -121,7 +123,6 @@ const pages = [ { title: "Message Trace", path: "/email/reports/message-trace" }, { title: "Anti-Phishing Filters", path: "/email/reports/antiphishing-filters" }, { title: "Malware Filters", path: "/email/reports/malware-filters" }, - { title: "Safe Links Filters", path: "/email/reports/safelinks-filters" }, { title: "Safe Attachments Filters", path: "/email/reports/safeattachments-filters" }, { title: "Shared Mailbox with Enabled Account", diff --git a/next.config.js b/next.config.js index 7a97a124b4bb..416f3f22d1df 100644 --- a/next.config.js +++ b/next.config.js @@ -4,12 +4,13 @@ const config = { images: { unoptimized: true, }, - webpack(config) { - config.module.rules.push({ - test: /\.svg$/, - use: ["@svgr/webpack"], - }); - return config; + turbopack: { + rules: { + "*.svg": { + loaders: ["@svgr/webpack"], + as: "*.js", + }, + }, }, async redirects() { return []; diff --git a/package.json b/package.json index 51a2591ae67b..1fe17fc166a6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cipp", - "version": "7.1.3", + "version": "10.2.6", "author": "CIPP Contributors", "homepage": "https://cipp.app/", "bugs": { @@ -27,65 +27,68 @@ "@emotion/cache": "11.14.0", "@emotion/react": "11.14.0", "@emotion/server": "11.11.0", - "@emotion/styled": "11.14.0", + "@emotion/styled": "11.14.1", "@heroicons/react": "2.2.0", "@monaco-editor/react": "^4.6.0", - "@mui/icons-material": "6.4.7", - "@mui/lab": "6.0.0-beta.30", - "@mui/material": "6.4.7", - "@mui/system": "6.4.7", - "@mui/x-date-pickers": "7.27.3", + "@mui/icons-material": "7.3.7", + "@mui/lab": "7.0.0-beta.17", + "@mui/material": "7.3.7", + "@mui/system": "7.3.2", + "@mui/x-date-pickers": "^8.27.2", "@musement/iso-duration": "^1.0.0", - "@react-pdf/renderer": "4.3.0", - "@reduxjs/toolkit": "2.6.1", - "@tanstack/query-sync-storage-persister": "^5.76.0", + "@nivo/core": "^0.99.0", + "@nivo/sankey": "^0.99.0", + "@react-pdf/renderer": "^4.3.2", + "@reduxjs/toolkit": "^2.11.2", + "@tanstack/query-sync-storage-persister": "^5.90.25", "@tanstack/react-query": "^5.51.11", "@tanstack/react-query-devtools": "^5.51.11", "@tanstack/react-query-persist-client": "^5.76.0", "@tanstack/react-table": "^8.19.2", - "@tiptap/core": "^2.9.1", - "@tiptap/extension-heading": "^2.9.1", - "@tiptap/extension-image": "^2.9.1", - "@tiptap/extension-table": "^2.9.1", - "@tiptap/pm": "^2.9.1", - "@tiptap/react": "^2.9.1", - "@tiptap/starter-kit": "^2.9.1", - "@uiw/react-json-view": "^2.0.0-alpha.30", - "apexcharts": "4.5.0", + "@tiptap/core": "^3.4.1", + "@tiptap/extension-heading": "^3.4.1", + "@tiptap/extension-image": "^3.4.1", + "@tiptap/extension-table": "^3.19.0", + "@tiptap/pm": "^3.20.4", + "@tiptap/react": "^3.4.1", + "@tiptap/starter-kit": "^3.20.1", + "@uiw/react-json-view": "^2.0.0-alpha.41", + "@vvo/tzdb": "^6.198.0", + "apexcharts": "5.10.4", "axios": "^1.7.2", "date-fns": "4.1.0", "eml-parse-js": "^1.2.0-beta.0", "export-to-csv": "^1.3.0", - "formik": "2.4.6", + "formik": "2.4.9", "gray-matter": "4.0.3", - "i18next": "24.2.3", - "javascript-time-ago": "^2.5.11", - "jspdf": "^3.0.0", - "jspdf-autotable": "^5.0.2", + "i18next": "25.8.18", + "javascript-time-ago": "^2.6.2", + "jspdf": "^4.2.0", + "jspdf-autotable": "^5.0.7", "leaflet": "^1.9.4", "leaflet-defaulticon-compatibility": "^0.1.2", "leaflet.markercluster": "^1.5.3", "lodash.isequal": "4.5.0", "material-react-table": "^3.0.1", - "monaco-editor": "^0.52.0", - "mui-tiptap": "^1.14.0", - "next": "^15.2.2", + "monaco-editor": "^0.55.1", + "mui-tiptap": "^1.29.0", + "next": "^16.1.6", "nprogress": "0.2.0", "numeral": "2.0.6", "prop-types": "15.8.1", "punycode": "^2.3.1", - "react": "19.0.0", - "react-apexcharts": "1.7.0", + "react": "19.2.4", + "react-apexcharts": "1.9.0", "react-beautiful-dnd": "13.1.1", "react-copy-to-clipboard": "^5.1.0", - "react-dom": "19.0.0", + "react-dom": "19.2.4", "react-dropzone": "14.3.8", - "react-error-boundary": "^5.0.0", - "react-grid-layout": "^1.5.0", - "react-hook-form": "^7.53.0", - "react-hot-toast": "2.5.2", + "react-error-boundary": "^6.1.1", + "react-grid-layout": "^2.2.2", + "react-hook-form": "^7.71.2", + "react-hot-toast": "2.6.0", "react-html-parser": "^2.0.2", - "react-i18next": "15.4.1", + "react-i18next": "16.2.4", "react-leaflet": "5.0.0", "react-leaflet-markercluster": "^5.0.0-rc.0", "react-markdown": "10.1.0", @@ -93,23 +96,26 @@ "react-papaparse": "^4.4.0", "react-quill": "^2.0.0", "react-redux": "9.2.0", - "react-syntax-highlighter": "^15.6.1", + "react-syntax-highlighter": "^16.1.0", "react-time-ago": "^7.3.3", - "react-virtuoso": "^4.12.8", - "react-window": "^1.8.10", + "react-virtuoso": "^4.18.3", + "react-window": "^2.2.7", + "recharts": "^3.7.0", "redux": "5.0.1", "redux-devtools-extension": "2.13.9", "redux-persist": "^6.0.0", "redux-thunk": "3.1.0", - "simplebar": "6.3.0", - "simplebar-react": "3.3.0", + "rehype-raw": "^7.0.0", + "remark-gfm": "^4.0.0", + "simplebar": "6.3.3", + "simplebar-react": "3.3.2", "stylis-plugin-rtl": "2.1.1", - "typescript": "5.8.2", - "yup": "1.6.1" + "typescript": "5.9.3", + "yup": "1.7.1" }, "devDependencies": { "@svgr/webpack": "8.1.0", - "eslint": "9.22.0", - "eslint-config-next": "15.2.2" + "eslint": "9.39.2", + "eslint-config-next": "16.1.6" } } diff --git a/public/languageList.json b/public/languageList.json index 3bd0ec3d8e82..769bf0b60f6b 100644 --- a/public/languageList.json +++ b/public/languageList.json @@ -3,240 +3,595 @@ "language": "Arabic", "Geographic area": "Saudi Arabia", "tag": "ar-SA", + "languageTag": "Arabic (ar-SA)", "LCID": "1025" }, + { + "language": "Arabic", + "Geographic area": "Algeria", + "tag": "ar-DZ", + "languageTag": "Arabic (ar-DZ)", + "LCID": "5121" + }, + { + "language": "Arabic", + "Geographic area": "Egypt", + "tag": "ar-EG", + "languageTag": "Arabic (ar-EG)", + "LCID": "3073" + }, + { + "language": "Arabic", + "Geographic area": "Bahrain", + "tag": "ar-BH", + "languageTag": "Arabic (ar-BH)", + "LCID": "15361" + }, + { + "language": "Arabic", + "Geographic area": "Iraq", + "tag": "ar-IQ", + "languageTag": "Arabic (ar-IQ)", + "LCID": "2049" + }, + { + "language": "Arabic", + "Geographic area": "Jordan", + "tag": "ar-JO", + "languageTag": "Arabic (ar-JO)", + "LCID": "11265" + }, + { + "language": "Arabic", + "Geographic area": "Kuwait", + "tag": "ar-KW", + "languageTag": "Arabic (ar-KW)", + "LCID": "13313" + }, + { + "language": "Arabic", + "Geographic area": "Lebanon", + "tag": "ar-LB", + "languageTag": "Arabic (ar-LB)", + "LCID": "12289" + }, + { + "language": "Arabic", + "Geographic area": "Libya", + "tag": "ar-LY", + "languageTag": "Arabic (ar-LY)", + "LCID": "4097" + }, + { + "language": "Arabic", + "Geographic area": "Morocco", + "tag": "ar-MA", + "languageTag": "Arabic (ar-MA)", + "LCID": "6145" + }, + { + "language": "Arabic", + "Geographic area": "Oman", + "tag": "ar-OM", + "languageTag": "Arabic (ar-OM)", + "LCID": "8193" + }, + { + "language": "Arabic", + "Geographic area": "Qatar", + "tag": "ar-QA", + "languageTag": "Arabic (ar-QA)", + "LCID": "16385" + }, + { + "language": "Arabic", + "Geographic area": "Syria", + "tag": "ar-SY", + "languageTag": "Arabic (ar-SY)", + "LCID": "10241" + }, + { + "language": "Arabic", + "Geographic area": "Tunisia", + "tag": "ar-TN", + "languageTag": "Arabic (ar-TN)", + "LCID": "7169" + }, + { + "language": "Arabic", + "Geographic area": "UAE", + "tag": "ar-AE", + "languageTag": "Arabic (ar-AE)", + "LCID": "14337" + }, + { + "language": "Arabic", + "Geographic area": "Yemen", + "tag": "ar-YE", + "languageTag": "Arabic (ar-YE)", + "LCID": "9217" + }, { "language": "Bulgarian", "Geographic area": "Bulgaria", "tag": "bg-BG", + "languageTag": "Bulgarian (bg-BG)", "LCID": "1026" }, { "language": "Chinese (Simplified)", "Geographic area": "People's Republic of China", "tag": "zh-CN", + "languageTag": "Chinese (Simplified) (zh-CN)", "LCID": "2052" }, { "language": "Chinese", "Geographic area": "Taiwan", "tag": "zh-TW", + "languageTag": "Chinese (zh-TW)", "LCID": "1028" }, + { + "language": "Chinese", + "Geographic area": "Hong Kong SAR", + "tag": "zh-HK", + "languageTag": "Chinese (zh-HK)", + "LCID": "3076" + }, { "language": "Croatian", "Geographic area": "Croatia", "tag": "hr-HR", + "languageTag": "Croatian (hr-HR)", "LCID": "1050" }, { "language": "Czech", "Geographic area": "Czech Republic", "tag": "cs-CZ", + "languageTag": "Czech (cs-CZ)", "LCID": "1029" }, { "language": "Danish", "Geographic area": "Denmark", "tag": "da-DK", + "languageTag": "Danish (da-DK)", "LCID": "1030" }, { "language": "Dutch", "Geographic area": "Netherlands", "tag": "nl-NL", + "languageTag": "Dutch (nl-NL)", "LCID": "1043" }, { "language": "English", "Geographic area": "United States", "tag": "en-US", + "languageTag": "English (en-US)", "LCID": "1033" }, + { + "language": "English", + "Geographic area": "Australia", + "tag": "en-AU", + "languageTag": "English (en-AU)", + "LCID": "3081" + }, + { + "language": "English", + "Geographic area": "United Kingdom", + "tag": "en-GB", + "languageTag": "English (en-GB)", + "LCID": "2057" + }, + { + "language": "English", + "Geographic area": "New Zealand", + "tag": "en-NZ", + "languageTag": "English (en-NZ)", + "LCID": "5129" + }, + { + "language": "English", + "Geographic area": "Canada", + "tag": "en-CA", + "languageTag": "English (en-CA)", + "LCID": "4105" + }, + { + "language": "English", + "Geographic area": "South Africa", + "tag": "en-ZA", + "languageTag": "English (en-ZA)", + "LCID": "7177" + }, + { + "language": "English", + "Geographic area": "Singapore", + "tag": "en-SG", + "languageTag": "English (en-SG)", + "LCID": "4100" + }, { "language": "Estonian", "Geographic area": "Estonia", "tag": "et-EE", + "languageTag": "Estonian (et-EE)", "LCID": "1061" }, { "language": "Finnish", "Geographic area": "Finland", "tag": "fi-FI", + "languageTag": "Finnish (fi-FI)", "LCID": "1035" }, { "language": "French", "Geographic area": "France", "tag": "fr-FR", + "languageTag": "French (fr-FR)", "LCID": "1036" }, + { + "language": "French", + "Geographic area": "Canada", + "tag": "fr-CA", + "languageTag": "French (fr-CA)", + "LCID": "3084" + }, + { + "language": "French", + "Geographic area": "Switzerland", + "tag": "fr-CH", + "languageTag": "French (fr-CH)", + "LCID": "4108" + }, { "language": "German", "Geographic area": "Germany", "tag": "de-DE", + "languageTag": "German (de-DE)", "LCID": "1031" }, + { + "language": "German", + "Geographic area": "Switzerland", + "tag": "de-CH", + "languageTag": "German (de-CH)", + "LCID": "2055" + }, { "language": "Greek", "Geographic area": "Greece", "tag": "el-GR", + "languageTag": "Greek (el-GR)", "LCID": "1032" }, { "language": "Hebrew", "Geographic area": "Israel", "tag": "he-IL", + "languageTag": "Hebrew (he-IL)", "LCID": "1037" }, { "language": "Hindi", "Geographic area": "India", "tag": "hi-IN", + "languageTag": "Hindi (hi-IN)", "LCID": "1081" }, { "language": "Hungarian", "Geographic area": "Hungary", "tag": "hu-HU", + "languageTag": "Hungarian (hu-HU)", "LCID": "1038" }, { "language": "Indonesian", "Geographic area": "Indonesia", "tag": "id-ID", + "languageTag": "Indonesian (id-ID)", "LCID": "1057" }, { "language": "Italian", "Geographic area": "Italy", "tag": "it-IT", + "languageTag": "Italian (it-IT)", "LCID": "1040" }, { "language": "Japanese", "Geographic area": "Japan", "tag": "ja-JP", + "languageTag": "Japanese (ja-JP)", "LCID": "1041" }, { "language": "Kazakh", "Geographic area": "Kazakhstan", "tag": "kk-KZ", + "languageTag": "Kazakh (kk-KZ)", "LCID": "1087" }, { "language": "Korean", "Geographic area": "Korea", "tag": "ko-KR", + "languageTag": "Korean (ko-KR)", "LCID": "1042" }, { "language": "Latvian", "Geographic area": "Latvia", "tag": "lv-LV", + "languageTag": "Latvian (lv-LV)", "LCID": "1062" }, { "language": "Lithuanian", "Geographic area": "Lithuania", "tag": "lt-LT", + "languageTag": "Lithuanian (lt-LT)", "LCID": "1063" }, { "language": "Malay", "Geographic area": "Malaysia", "tag": "ms-MY", + "languageTag": "Malay (ms-MY)", "LCID": "1086" }, { "language": "Norwegian (Bokmรฅl)", "Geographic area": "Norway", "tag": "nb-NO", + "languageTag": "Norwegian (Bokmรฅl) (nb-NO)", "LCID": "1044" }, + { + "language": "Persian", + "Geographic area": "Iran", + "tag": "fa-IR", + "languageTag": "Persian (fa-IR)", + "LCID": "1065" + }, { "language": "Polish", "Geographic area": "Poland", "tag": "pl-PL", + "languageTag": "Polish (pl-PL)", "LCID": "1045" }, { "language": "Portuguese", "Geographic area": "Brazil", "tag": "pt-BR", + "languageTag": "Portuguese (pt-BR)", "LCID": "1046" }, { "language": "Portuguese", "Geographic area": "Portugal", "tag": "pt-PT", + "languageTag": "Portuguese (pt-PT)", "LCID": "2070" }, { "language": "Romanian", "Geographic area": "Romania", "tag": "ro-RO", + "languageTag": "Romanian (ro-RO)", "LCID": "1048" }, { "language": "Russian", "Geographic area": "Russia", "tag": "ru-RU", + "languageTag": "Russian (ru-RU)", "LCID": "1049" }, { "language": "Serbian (Latin)", "Geographic area": "Serbia", "tag": "sr-latn-RS", + "languageTag": "Serbian (Latin) (sr-latn-RS)", "LCID": "2074" }, { "language": "Slovak", "Geographic area": "Slovakia", "tag": "sk-SK", + "languageTag": "Slovak (sk-SK)", "LCID": "1051" }, { "language": "Slovenian", "Geographic area": "Slovenia", "tag": "sl-SI", + "languageTag": "Slovenian (sl-SI)", "LCID": "1060" }, { "language": "Spanish", "Geographic area": "Spain", "tag": "es-ES", + "languageTag": "Spanish (es-ES)", "LCID": "3082" }, + { + "language": "Spanish", + "Geographic area": "Argentina", + "tag": "es-AR", + "languageTag": "Spanish (es-AR)", + "LCID": "11274" + }, + { + "language": "Spanish", + "Geographic area": "Bolivia", + "tag": "es-BO", + "languageTag": "Spanish (es-BO)", + "LCID": "16394" + }, + { + "language": "Spanish", + "Geographic area": "Chile", + "tag": "es-CL", + "languageTag": "Spanish (es-CL)", + "LCID": "13322" + }, + { + "language": "Spanish", + "Geographic area": "Colombia", + "tag": "es-CO", + "languageTag": "Spanish (es-CO)", + "LCID": "9226" + }, + { + "language": "Spanish", + "Geographic area": "Costa Rica", + "tag": "es-CR", + "languageTag": "Spanish (es-CR)", + "LCID": "5130" + }, + { + "language": "Spanish", + "Geographic area": "Dominican Republic", + "tag": "es-DO", + "languageTag": "Spanish (es-DO)", + "LCID": "7178" + }, + { + "language": "Spanish", + "Geographic area": "Ecuador", + "tag": "es-EC", + "languageTag": "Spanish (es-EC)", + "LCID": "12298" + }, + { + "language": "Spanish", + "Geographic area": "El Salvador", + "tag": "es-SV", + "languageTag": "Spanish (es-SV)", + "LCID": "17418" + }, + { + "language": "Spanish", + "Geographic area": "Guatemala", + "tag": "es-GT", + "languageTag": "Spanish (es-GT)", + "LCID": "4106" + }, + { + "language": "Spanish", + "Geographic area": "Honduras", + "tag": "es-HN", + "languageTag": "Spanish (es-HN)", + "LCID": "18442" + }, + { + "language": "Spanish", + "Geographic area": "Mexico", + "tag": "es-MX", + "languageTag": "Spanish (es-MX)", + "LCID": "2058" + }, + { + "language": "Spanish", + "Geographic area": "Nicaragua", + "tag": "es-NI", + "languageTag": "Spanish (es-NI)", + "LCID": "19466" + }, + { + "language": "Spanish", + "Geographic area": "Panama", + "tag": "es-PA", + "languageTag": "Spanish (es-PA)", + "LCID": "6154" + }, + { + "language": "Spanish", + "Geographic area": "Paraguay", + "tag": "es-PY", + "languageTag": "Spanish (es-PY)", + "LCID": "15370" + }, + { + "language": "Spanish", + "Geographic area": "Peru", + "tag": "es-PE", + "languageTag": "Spanish (es-PE)", + "LCID": "10250" + }, + { + "language": "Spanish", + "Geographic area": "Uruguay", + "tag": "es-UY", + "languageTag": "Spanish (es-UY)", + "LCID": "14346" + }, + { + "language": "Spanish", + "Geographic area": "Venezuela", + "tag": "es-VE", + "languageTag": "Spanish (es-VE)", + "LCID": "8202" + }, { "language": "Swedish", "Geographic area": "Sweden", "tag": "sv-SE", + "languageTag": "Swedish (sv-SE)", "LCID": "1053" }, { "language": "Thai", "Geographic area": "Thailand", "tag": "th-TH", + "languageTag": "Thai (th-TH)", "LCID": "1054" }, { "language": "Turkish", "Geographic area": "Turkey", "tag": "tr-TR", + "languageTag": "Turkish (tr-TR)", "LCID": "1055" }, { "language": "Ukrainian", - "Geographic area": "Ukrainian", + "Geographic area": "Ukraine", "tag": "uk-UA", + "languageTag": "Ukrainian (uk-UA)", "LCID": "1058" }, + { + "language": "Urdu", + "Geographic area": "Pakistan", + "tag": "ur-PK", + "languageTag": "Urdu (ur-PK)", + "LCID": "1056" + }, { "language": "Vietnamese", "Geographic area": "Vietnam", "tag": "vi-VN", + "languageTag": "Vietnamese (vi-VN)", "LCID": "1066" + }, + { + "language": "Welsh", + "Geographic area": "Wales", + "tag": "cy-GB", + "languageTag": "Welsh (cy-GB)", + "LCID": "1106" } -] +] \ No newline at end of file diff --git a/public/permissionsList.json b/public/permissionsList.json index c91c29126036..8ec55a707b7e 100644 --- a/public/permissionsList.json +++ b/public/permissionsList.json @@ -7969,5 +7969,25 @@ "userConsentDescription": "Allows the app to manage workforce integrations, to synchronize data from Microsoft Teams Shifts, on your behalf.", "userConsentDisplayName": "Read and write workforce integrations", "value": "WorkforceIntegration.ReadWrite.All" + }, + { + "description": "Read and Modify Tenant-Acquired Telephone Number Details", + "displayName": "Read and Modify Tenant-Acquired Telephone Number Details", + "id": "424b07a8-1209-4d17-9fe4-9018a93a1024", + "isEnabled": true, + "Origin": "Delegated", + "userConsentDescription": "Allows the app to read and modify your tenant's acquired telephone number details on behalf of the signed-in admin user. Acquired telephone numbers may include attributes related to assigned object, emergency location, network site, etc.", + "userConsentDisplayName": "Allows the app to read and modify your tenant's acquired telephone number details on behalf of the signed-in admin user. Acquired telephone numbers may include attributes related to assigned object, emergency location, network site, etc.", + "value": "TeamsTelephoneNumber.ReadWrite.All" + }, + { + "description": "Read and Modify Tenant-Acquired Telephone Number Details", + "displayName": "Read and Modify Tenant-Acquired Telephone Number Details", + "id": "0a42382f-155c-4eb1-9bdc-21548ccaa387", + "isEnabled": true, + "Origin": "Application", + "userConsentDescription": "Allows the app to read your tenant's acquired telephone number details, without a signed-in user. Acquired telephone numbers may include attributes related to assigned object, emergency location, network site, etc.", + "userConsentDisplayName": "Allows the app to read your tenant's acquired telephone number details, without a signed-in user. Acquired telephone numbers may include attributes related to assigned object, emergency location, network site, etc.", + "value": "TeamsTelephoneNumber.ReadWrite.All" } ] diff --git a/public/reportImages/board.jpg b/public/reportImages/board.jpg new file mode 100644 index 000000000000..05c3e51ddc34 Binary files /dev/null and b/public/reportImages/board.jpg differ diff --git a/public/reportImages/city.jpg b/public/reportImages/city.jpg new file mode 100644 index 000000000000..155439cf30f2 Binary files /dev/null and b/public/reportImages/city.jpg differ diff --git a/public/reportImages/glasses.jpg b/public/reportImages/glasses.jpg new file mode 100644 index 000000000000..b41d200ea650 Binary files /dev/null and b/public/reportImages/glasses.jpg differ diff --git a/public/reportImages/laptop.jpg b/public/reportImages/laptop.jpg new file mode 100644 index 000000000000..31a14fc4383e Binary files /dev/null and b/public/reportImages/laptop.jpg differ diff --git a/public/reportImages/soc.jpg b/public/reportImages/soc.jpg new file mode 100644 index 000000000000..f8da4eba5139 Binary files /dev/null and b/public/reportImages/soc.jpg differ diff --git a/public/reportImages/working.jpg b/public/reportImages/working.jpg new file mode 100644 index 000000000000..c979c21b1ea0 Binary files /dev/null and b/public/reportImages/working.jpg differ diff --git a/public/secureScore.json b/public/secureScore.json new file mode 100644 index 000000000000..3e59bbd95d5d --- /dev/null +++ b/public/secureScore.json @@ -0,0 +1,3421 @@ +[ + { + "service": "AzureAD", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "aad_admin_accounts_separate_unassigned_cloud_only", + "title": "Ensure Administrative accounts are separate and cloud-only" + }, + { + "service": "AzureAD", + "tier": "Core", + "userImpact": null, + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "aad_admin_consent_workflow", + "title": "Ensure the admin consent workflow is enabled" + }, + { + "service": "AzureAD", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "aad_custom_banned_passwords", + "title": "Ensure custom banned passwords lists are used" + }, + { + "service": "AzureAD", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "aad_limited_administrative_roles", + "title": "Ensure \u0027Microsoft Azure Management\u0027 is limited to administrative roles" + }, + { + "service": "AzureAD", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "aad_linkedin_connection_disables", + "title": "Ensure \u0027LinkedIn account connections\u0027 is disabled" + }, + { + "service": "AzureAD", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "aad_managed_approved_public_groups_only", + "title": "Ensure that only organizationally managed/approved public groups exist" + }, + { + "service": "AzureAD", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "aad_password_protection", + "title": "Ensure password protection is enabled for on-prem Active Directory" + }, + { + "service": "AzureAD", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "aad_phishing_MFA_strength", + "title": "Ensure \u0027Phishing-resistant MFA strength\u0027 is required for Administrators" + }, + { + "service": "AzureAD", + "tier": "Core", + "userImpact": null, + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "aad_sign_in_freq_session_timeout", + "title": "Ensure Sign-in frequency is enabled and browser sessions are not persistent for Administrative users" + }, + { + "service": "AzureAD", + "tier": "Core", + "userImpact": null, + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "aad_third_party_apps", + "title": "Ensure third party integrated applications are not allowed" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_AccountsWithNonDefaultPrimaryGroup", + "title": "Accounts with non-default Primary Group ID" + }, + { + "service": "AzureAD", + "tier": "Core", + "userImpact": "high", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_AccountWithLeakedCredentials", + "title": "Change password for accounts with leaked credentials" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "high", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_AdAccountWithPotentiallyLeakedCredentials", + "title": "Change password for on-prem account with potentially leaked credentials" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_ADCSCertificateTemplateArbitraryAppPolicies", + "title": "Prevent Certificate Enrollment with arbitrary Application Policies (ESC15)" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "high", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_ADCSCertificateTemplateEnrolementSuppliesSubject", + "title": "Prevent users to request a certificate valid for arbitrary users based on the certificate template (ESC1)" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_AdcsComputersWithNoMdiSensorInstalled", + "title": "Install Defender for Identity Sensor on ADCS servers " + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "medium", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_ADCSInsecureCertificateEnrollmentIisEndpoints", + "title": "Edit insecure certificate enrollment IIS endpoints (ESC8)" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "high", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_ADCSMisconfiguredCertificateAuthorityAcl", + "title": "Edit misconfigured Certificate Authority ACL (ESC7)" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "high", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_ADCSMisconfiguredCertificateTemplateAcl", + "title": "Edit misconfigured certificate templates ACL (ESC4)" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "medium", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_ADCSMisconfiguredCertificateTemplateEku", + "title": "Edit overly permissive Certificate Template with privileged EKU (Any purpose EKU or No EKU) (ESC2)" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "high", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_ADCSMisconfiguredCertificateTemplateEnrollmentAgent", + "title": "Edit misconfigured enrollment agent certificate template (ESC3)" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "high", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_ADCSMisconfiguredCertificateTemplateOwner", + "title": "Edit misconfigured certificate templates owner (ESC4)" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "medium", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_ADCSMisconfiguredRpcEnrollmentSigning", + "title": "Enforce encryption for RPC certificate enrollment interface (ESC8)" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "high", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_ADCSSanSpecifiedByUserEnabled", + "title": "Edit vulnerable Certificate Authority setting (ESC6)" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_AdfsComputersWithNoMdiSensorInstalled", + "title": "Install Defender for Identity Sensor on ADFS servers " + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_AdminSDHolder", + "title": "Remove access rights on suspicious accounts with the Admin SDHolder permission" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "high", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_AzureSsoAccountOldPasswords", + "title": "Change password for Entra seamless SSO account" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_BuiltinAdministratorAccountWithOldPassword", + "title": "Change password of built-in domain Administrator account" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Medium", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_BuiltinGuestAccountIsEnabled", + "title": "Built-in Active Directory Guest account is enabled" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_BuiltinKrbtgtAccountWithOldPassword", + "title": "Change password for krbtgt account" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_ClearText", + "title": "Stop clear text credentials exposure" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Medium", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_CyberArk_DormantPriviledgedAccounts", + "title": "Remove stale CyberArk Identity privileged accounts" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Medium", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_CyberArk_HighNumberOfPriviledgedIdentityAccounts", + "title": "High number of CyberArk Identity accounts with a privileged role assigned" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Medium", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_CyberArk_HighNumberOfSystemAdmins", + "title": "Limit the number of CyberArk Identity accounts with system admin role" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Medium", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_CyberArk_MFAforPriviledgedUserAccounts", + "title": "Assign multi-factor authentication for CyberArk Identity privileged user accounts " + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Medium", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_CyberArk_PriviledgedUserAccountsWithOldPasswords", + "title": "Change password for CyberArk Identity privileged User accounts " + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_DefenderForIdentityIsNotInstalled", + "title": "Start your Defender for Identity deployment, installing Sensors on Domain Controllers and other eligible servers." + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "high", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_DnsAdminsGroupWithUnsafePermissions", + "title": "Unsafe permissions on the DnsAdmins group" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "high", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_DomainControllerLocalUsers", + "title": "Remove local admins on identity assets" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Medium", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_DomainControllersWithOldPassword", + "title": "Change Domain Controller computer account old password" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_DormantAccounts", + "title": "Remove dormant accounts from sensitive groups" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "high", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_EntraConnectAccountsOldPasswords", + "title": "Rotate password for Entra Connect AD DS Connector account" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_EntraConnectAccountsWithConnectorAccountAsDefaultAdmin", + "title": "Replace Enterprise or Domain Admin account for Entra Connect AD DS Connector account" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "high", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_EntraConnectAccountUnnecessaryReplicationPermission", + "title": "Remove unnecessary replication permissions for Entra Connect AD DS Connector Account" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_EntraConnectComputersWithNoMdiSensorInstalled", + "title": "Install Defender for Identity Sensor on Entra Connect servers" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_EntraConnectSensitiveAccountsWithUnsafePermissions", + "title": "Remove unsafe permissions on sensitive Entra Connect accounts" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_ExposedPasswordsInADAttributes", + "title": "Remove discoverable passwords in Active Directory account attributes" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Medium", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_GroupManagedServiceAccountWithUnrecommendedPasswordChangeInterval", + "title": "Set a valid password rotation interval for gMSA" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "high", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_GroupPolicyAbnormalModificationAssignment", + "title": "GPO can be modified by unprivileged accounts" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "high", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_GroupPolicyAssignsUnprivilegedIdentitiesToElevatedLocalGroups", + "title": "GPO assigns unprivileged identities to local groups with elevated privileges" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "high", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_GroupPolicyPasswordInPreferences", + "title": "Reversible passwords found in GPOs" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_HoneyToken", + "title": "Set a honeytoken account" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_InactiveServiceAccounts", + "title": "Remove stale service accounts" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_KerberosDelegations", + "title": "Modify unsecure Kerberos delegations to prevent impersonation" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "high", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_NonAdminDCSyncAccounts", + "title": "Remove non-admin accounts with DCSync permissions " + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_Okta_Dormant", + "title": "Remove dormant Okta privileged accounts" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_Okta_HighNumberOfNonSuperAdminPrivilegedUserAccounts", + "title": "High number of Okta accounts with privileged role assigned" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_Okta_HighNumberOfSuperAdmins", + "title": "Limit the Number of Okta Super Admins Accounts" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Medium", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_Okta_SensitiveAccountWithOldPassword", + "title": "Change password for Okta privileged User accounts" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_Okta_SensitiveAccountWithoutFactorsAssigned", + "title": "Assign multi-factor authentication for Okta privileged user accounts" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_Okta_SensitiveApiToken", + "title": "Highly Privileged Okta Api Token" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_PathRisk", + "title": "Reduce lateral movement path risk to sensitive entities" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_Ping_Dormant", + "title": "Remove stale PingOne privileged accounts" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_Ping_HighNumberOfNonSuperAdminPrivilegedUserAccounts", + "title": "High number of PingOne accounts with a privileged role assigned" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_Ping_HighNumberOfSuperAdmins", + "title": "Limit the number of PingOne accounts with organization admin role" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Medium", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_Ping_SensitiveAccountWithOldPassword", + "title": "Change password for PingOne privileged User accounts" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_Ping_SensitiveAccountWithoutFactorsAssigned", + "title": "Assign multi-factor authentication for PingOne privileged user accounts" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_PrintSpooler", + "title": "Disable Print spooler service on domain controllers" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_PrivilegedAccountsWithDelegationAllowed", + "title": "Ensure privileged accounts are not delegated" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_PwdLAPS", + "title": "Protect and manage local admin passwords with Microsoft LAPS" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_Sensor", + "title": "Install Defender for Identity Sensor on all Domain Controllers" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_SIDHistory", + "title": "Remove unsecure SID history attributes from entities" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "Medium", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_SingleManagedServiceAccountsWithOldPassword", + "title": "Rotate old password for sMSA and set up valid rotation interval in the GPO" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_UnsecureAccount", + "title": "Resolve unsecure account attributes" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_UnsecureDomain", + "title": "Resolve unsecure domain configurations" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_Vpn", + "title": "Configure VPN integration" + }, + { + "service": "Azure ATP", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AATP_WeakCipher", + "title": "Stop weak cipher usage" + }, + { + "service": "Admincenter", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "admincenter_owned_apps_and_services", + "title": "Ensure \u0027User owned apps and services\u0027 is restricted" + }, + { + "service": "AzureAD", + "tier": "Core", + "userImpact": "Low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AdminMFAV2", + "title": "Ensure multifactor authentication is enabled for all users in administrative roles" + }, + { + "service": "AppG", + "tier": "Core", + "userImpact": "moderate", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AppG_regulate_access_to_sensitive_data", + "title": "Regulate cloud app access to sensitive data" + }, + { + "service": "AppG", + "tier": "Core", + "userImpact": "moderate", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "AppG_unusual_activity_with_priority_account", + "title": "Regulate apps with priority account consent" + }, + { + "service": "AzureAD", + "tier": "Advanced", + "userImpact": "Moderate", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "BlockLegacyAuthentication", + "title": "Enable Conditional Access policies to block legacy authentication" + }, + { + "service": "EXO", + "tier": "Advanced", + "userImpact": "Moderate", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "CustomerLockBoxEnabled", + "title": "Ensure the customer lockbox feature is enabled" + }, + { + "service": "MIP", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "dlp_datalossprevention", + "title": "Ensure DLP policies are enabled" + }, + { + "service": "EXO", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "exo_individualsharing", + "title": "Ensure \u0027External sharing\u0027 of calendars is not available" + }, + { + "service": "EXO", + "tier": "Core", + "userImpact": null, + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "exo_mailboxaudit", + "title": "Ensure mailbox auditing for all users is Enabled" + }, + { + "service": "EXO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "exo_mailtipsenabled", + "title": "Ensure MailTips are enabled for end users" + }, + { + "service": "EXO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "exo_oauth2clientprofileenabled", + "title": "Ensure modern authentication for Exchange Online is enabled" + }, + { + "service": "EXO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "exo_outlookaddins", + "title": "Ensure users installing Outlook add-ins is not allowed" + }, + { + "service": "EXO", + "tier": "Core", + "userImpact": null, + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "exo_SPF_records_for_all_domains", + "title": "Ensure that SPF records are published for all Exchange Domains" + }, + { + "service": "EXO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "exo_storageproviderrestricted", + "title": "Ensure additional storage providers are restricted in Outlook on the web" + }, + { + "service": "EXO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "exo_transportrulesallowlistdomains", + "title": "Ensure Spam confidence level (SCL) is configured in mail transport rules with specific domains" + }, + { + "service": "FORMS", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "forms_phishing_protection", + "title": "Ensure internal phishing protection for Forms is enabled" + }, + { + "service": "AzureAD", + "tier": "Defense In Depth", + "userImpact": "Moderate", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "IntegratedApps", + "title": "Ensure user consent to apps accessing company data on their behalf is not allowed" + }, + { + "service": "MCAS", + "tier": "Core", + "userImpact": null, + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mcas_mda_enabled", + "title": "Ensure Microsoft Defender for Cloud Apps is enabled and configured" + }, + { + "service": "MCAS", + "tier": "Advanced", + "userImpact": "Low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "McasFirewallLogUpload", + "title": "Deploy a log collector to discover shadow IT activity" + }, + { + "service": "MDA_Atlassian", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Atlassian_EnableTwoFactorAuth", + "title": "Enable multi-factor authentication (MFA)" + }, + { + "service": "MDA_Atlassian", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Atlassian_ForceSSO", + "title": "Enable Single Sing On (SSO)" + }, + { + "service": "MDA_Atlassian", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Atlassian_InactiveTimeoutMins", + "title": "Enable session timeout for web users" + }, + { + "service": "MDA_Atlassian", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Atlassian_mobile_access", + "title": "Atlassian mobile app security - App access requirement" + }, + { + "service": "MDA_Atlassian", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Atlassian_mobile_dataprotection", + "title": "Atlassian mobile app security - App data protection" + }, + { + "service": "MDA_Atlassian", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Atlassian_mobile_UsersAffected", + "title": "Atlassian mobile app security - Users that are affected by policies" + }, + { + "service": "MDA_Atlassian", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Atlassian_passwordExpiry", + "title": "Enable Password expiration policies" + }, + { + "service": "MDA_CitrixSF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_CitrixSF_EnableTwoFactorAuth", + "title": "Enable multi-factor authentication (MFA)" + }, + { + "service": "MDA_CitrixSF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_CitrixSF_ForceSSO", + "title": "Enable Single Sign on (SSO)" + }, + { + "service": "MDA_CitrixSF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_CitrixSF_InactiveTimeoutMins", + "title": "Enable session timeout for web users" + }, + { + "service": "MDA_CitrixSF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_CitrixSF_LoginFailLockoutSecs", + "title": "Enhance \u0027login maximum attempts\u0027 - Lockout timer" + }, + { + "service": "MDA_CitrixSF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_CitrixSF_LoginFailMaxAttempts", + "title": "Enhance \u0027login maximum attempts\u0027 - Number of attempts" + }, + { + "service": "MDA_CitrixSF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_CitrixSF_MinimumLength", + "title": "Enable password minimum length" + }, + { + "service": "MDA_CitrixSF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_CitrixSF_MinimumNumeric", + "title": "Enable password minimum numeric characters" + }, + { + "service": "MDA_CitrixSF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_CitrixSF_MinimumSpecialCharacters", + "title": "Enable password minimum special characters" + }, + { + "service": "MDA_CitrixSF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_CitrixSF_PasswordMaxAgeDays", + "title": "Enable password expiration policies" + }, + { + "service": "MDA_DocuSign", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_DocuSign_EnhancedPassword", + "title": "Enhance password requirements" + }, + { + "service": "MDA_DocuSign", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_DocuSign_PasswordExpires", + "title": "Password expiry requirements" + }, + { + "service": "MDA_DocuSign", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_DocuSign_SessionTimeout", + "title": "Enable session timeout for web users" + }, + { + "service": "MDA_Dropbox", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Dropbox_InactiveTimeoutMins", + "title": "Enable web session timeout for web users" + }, + { + "service": "MDA_GitHub", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_GitHub_DependencyInsights", + "title": "Disable \u0027Allow members to view dependency insights\u0027" + }, + { + "service": "MDA_GitHub", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_GitHub_EmailNotificationRestrictedToVerifiedOrApprovedDomains", + "title": "Enabled \u0027email notification delivery for this enterprise is restricted to verified or approved domains\u0027" + }, + { + "service": "MDA_GitHub", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_GitHub_IPallowListConfigurationForOrgResources", + "title": "Enforce IP allow list configuration for org resources" + }, + { + "service": "MDA_GitHub", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_GitHub_OutsideCollabInvitation", + "title": "Disable \u0027Allow repository administrators to invite outside collaborators to repositories for this organization" + }, + { + "service": "MDA_GitHub", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_GitHub_PrivateRepositoryForkingSetting", + "title": "Disable private repository forking" + }, + { + "service": "MDA_GitHub", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_GitHub_PublicRepoCreation", + "title": "Disable \u0027Members will be able to create public repositories, visible to anyone\u0027" + }, + { + "service": "MDA_GitHub", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_GitHub_RepoTransferOrDeletion", + "title": "Disable \u0027members with admin permissions for repositories can delete or transfer repositories\u0027" + }, + { + "service": "MDA_GitHub", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_GitHub_RepoVisibility_change", + "title": "Disable \u0027Allow members to change repository visibilities for this organization\u0027" + }, + { + "service": "MDA_GitHub", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_GitHub_SAML", + "title": "Enable single sign on (SSO)" + }, + { + "service": "MDA_Google", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Google_EnableTwoFactorAuth", + "title": "Enable multi-factor authentication (MFA)" + }, + { + "service": "MDA_NetDocuments", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_NetDocuments_SSO", + "title": "Adopt SSO (Single sign on) in netDocuments" + }, + { + "service": "MDA_Okta", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Okta_EnhancedPassword", + "title": "Enhance password requirements" + }, + { + "service": "MDA_Okta", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Okta_MFA", + "title": "Enable multi-factor authentication" + }, + { + "service": "MDA_Okta", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Okta_PasswordExpires", + "title": "Password expiry requirements" + }, + { + "service": "MDA_Okta", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Okta_SessionTimeout", + "title": "Enable session timeout for web users" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_disableProtocolSecurity", + "title": "Remote Site" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_enableAdminLoginAsAnyUser", + "title": "Disable Administrators Can Log In As Any User" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_enableCacheAndAutocomplete", + "title": "Disable Caching and Autocomplete on Login Page via Session settings" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_enableClickjackNonsetupSFDC", + "title": "Enable clickjack protection for non-Setup for Salesforce pages" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_enableClickjackNonsetupUser", + "title": "Enable clickjack protection for customer VisualForce pages with standard headers" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_enableClickjackNonsetupUserHeaderless", + "title": "Enable clickjack protection for customer VisualForce pages with headers disabled" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_enableClickjackSetup", + "title": "Enable clickjack protection for Setup pages" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_enableContentSniffingProtection", + "title": "Enable Content Sniffing protection" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_enableCSPOnEmail", + "title": "Enable Content Security Policy protection for email templates" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_enableCSRFOnGet", + "title": "Enable CSRF protection on GET requests on non-setup pages" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_enableCSRFOnPost", + "title": "Enable CSRF protection on POST requests on non-setup pages" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_enableMultipleSamlConfigs", + "title": "Require identity verification during multi-factor authentication (MFA) registration" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_enableSMSIdentity", + "title": "Let users verify their identity by text (SMS)" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_enforceIpRangesEveryRequest", + "title": "Enforce login IP ranges on every request" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_forceLogoutOnSessionTimeout", + "title": "Force logout on session timeout" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_forceRelogin", + "title": "Force (admin) relogin after Login-As-User" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_identityConfirmationOnEmailChange", + "title": "Require identity verification for change of email address" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_lockSessionsToDomain", + "title": "Lock sessions to the domain in which they were first used" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_maxLoginAttempts", + "title": "Maximum invalid login attempts" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_minimumPasswordLifetime", + "title": "Require a minimum 1 day password lifetime" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_password_complexity", + "title": "Password complexity requirement" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_password_expiration", + "title": "User passwords expire in 90 days or less" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_password_historyRestriction", + "title": "Enforce password history" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_password_lockoutInterval", + "title": "Lockout effective period" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_password_minimumPasswordLength", + "title": "Minimum password length" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_password_obscureSecretAnswer", + "title": "Obscure secret answer for password resets" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_password_questionRestriction", + "title": "Password question requirement" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_password_sessionTimeout", + "title": "Session timeout" + }, + { + "service": "MDA_SF", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SF_requireHttpOnly", + "title": "Require HttpOnly attribute" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_authenticateMultifactor", + "title": "Enable multi-factor authentication" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_authRequiredJson2", + "title": "Enable enforcing JSONv2 requests with basic authorization" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_authRequiredSOAP", + "title": "Enable enforcing SOAP requests with basic authorization" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_authRequiredUnl", + "title": "Enable unload request authorization" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_cauthRequiredScriptedProcessor", + "title": "Enable script request authorization" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_concourseOnmessageEnforceSameOrigin", + "title": "Enable URL allow list for cross-origin iframe communication" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_enablePasswordPolicy", + "title": "Enable Password Reset Policy Checks" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_highSecurity", + "title": "Enable high security plugin" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_httpCacheControl", + "title": "Set default cache-control HTTP header value to private" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_loginNoBlankPassword", + "title": "Disable password-less authentication" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_roleManagement", + "title": "Enable Contextual Security: Role Management plugin" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_scriptCcsiIsPublic", + "title": "Set client-callable script includes to private" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_scriptSecureAjaxgliderecord", + "title": "Apply access control rule (ACL) validation when server-side records are accessed using GlideAjax APIs within a client script" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_scriptUseSandbox", + "title": "Enable client generated scripts sandbox" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_smDefaultMode", + "title": "Enable default deny with new ACL rules" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_sncUserLockoutCheck", + "title": "Enable managing failed login attempts" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_soapRequireContentTypeXml", + "title": "Enable SOAP content type checking" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_soapStrictSecurity", + "title": "Enable SOAP request strict security" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_systemSecurity", + "title": "Activate security jump start (ACL rules) plugin" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_uiSessionTimeout", + "title": "Enable session activity timeout" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_useCsrfToken", + "title": "Enable anti-CSRF token" + }, + { + "service": "MDA_SNOW", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_SNOW_userCookieMaxLifeSpanInDays", + "title": "Enable absolute session timeout" + }, + { + "service": "MDA_Workplace", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Workplace_SSO", + "title": "Adopt SSO (Single sign on) in Workplace by Meta" + }, + { + "service": "MDA_Zendesk", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Zendesk_AdminPassChange", + "title": "Block admins to set passwords" + }, + { + "service": "MDA_Zendesk", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Zendesk_BlockAccountAssumption", + "title": "Block account assumption" + }, + { + "service": "MDA_Zendesk", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Zendesk_bypassIPrestrictions", + "title": "Block customers to bypass IP restrictions" + }, + { + "service": "MDA_Zendesk", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Zendesk_EmailNotificationsforPassChange", + "title": "Send a notification on password change for admins, agents, and end users" + }, + { + "service": "MDA_Zendesk", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Zendesk_enableapp", + "title": "Admins and agents can use the Zendesk Support mobile app" + }, + { + "service": "MDA_Zendesk", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Zendesk_IPrestrictions", + "title": "Enable IP restrictions" + }, + { + "service": "MDA_Zendesk", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Zendesk_MFA", + "title": "Enable and adopt two-factor authentication (2FA)" + }, + { + "service": "MDA_Zendesk", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Zendesk_sessionexpiry", + "title": "Enable session timeout for users" + }, + { + "service": "MDA_Zendesk", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Zendesk_SSO", + "title": "Enable external Authentication (google or microsoft or SSO)" + }, + { + "service": "MDA_Zendesk", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Zendesk_ZanAuth", + "title": "Enable Zendesk authentication" + }, + { + "service": "MDA_Zoom", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Zoom_BlockDomains", + "title": "Block users in specific domains from joining meetings and webinars" + }, + { + "service": "MDA_Zoom", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Zoom_MeetingE2eEncryption", + "title": "Enforce end to end encryption in all Zoom meetings" + }, + { + "service": "MDA_Zoom", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Zoom_MFA", + "title": "Enable multi-factor authentication" + }, + { + "service": "MDA_Zoom", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Zoom_PasswordReq", + "title": "Enhance password requirements" + }, + { + "service": "MDA_Zoom", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Zoom_SessionTimeoutClient", + "title": "Enable session timeout for client users" + }, + { + "service": "MDA_Zoom", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MDA_Zoom_SessionTimeoutWeb", + "title": "Enable session timeout for web users" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_allowedsenderscombined", + "title": "Ensure that no sender domains are allowed for anti-spam policies" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_antiphishingpolicies", + "title": "Ensure that an anti-phishing policy has been created" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_atpprotection", + "title": "Turn on Microsoft Defender for Office 365 in SharePoint, OneDrive, and Microsoft Teams" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_autoforwardingmode", + "title": "Set automatic email forwarding rules to be system controlled" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_blockmailforward", + "title": "Ensure all forms of mail forwarding are blocked and/or disabled" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_bulkspamaction", + "title": "Set action to take on bulk spam detection" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_bulkthreshold", + "title": "Set the email bulk complaint level (BCL) threshold to be 6 or lower" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_commonattachmentsfilter", + "title": "Ensure the Common Attachment Types Filter is enabled" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_connectionfilter", + "title": "Don\u0027t add allowed IP addresses in the connection filter policy " + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_enabledomainstoprotect", + "title": "Enable impersonated domain protection" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_enablemailboxintelligence", + "title": "Ensure that mailbox intelligence is enabled" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_highconfidencephishaction", + "title": "Set action to take on high confidence phishing detection" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_highconfidencespamaction", + "title": "Set action to take on high confidence spam detection" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_mailboxintelligenceprotection", + "title": "Ensure that intelligence for impersonation protection is enabled" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_mailboxintelligenceprotectionaction", + "title": "Move messages that are detected as impersonated users by mailbox intelligence" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_phishthresholdlevel", + "title": "Set the phishing email level threshold at 2 or higher" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_phisspamacation", + "title": "Set action to take on phishing detection" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_quarantineretentionperiod", + "title": "Retain spam in quarantine for 30 days" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_recipientexternallimitperhour", + "title": "Set maximum number of external recipients that a user can email per hour" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_recipientinternallimitperhour", + "title": "Set maximum number of internal recipients that a user can send to within an hour" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_recipientlimitperday", + "title": "Set a daily message limit" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_safeattachmentpolicy", + "title": "Ensure Safe Attachments policy is enabled" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_safeattachments", + "title": "Turn on Safe Attachments in block mode" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_safedocuments", + "title": "Turn on Safe Documents for Office Clients" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_safelinksforemail", + "title": "Create Safe Links policies for email messages" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_safelinksforOfficeApps", + "title": "Ensure Safe Links for Office Applications is Enabled" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_similardomainssafetytips", + "title": "Enable the domain impersonation safety tip" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_similaruserssafetytips", + "title": "Enable the user impersonation safety tip" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_spam_notifications_only_for_admins", + "title": "Ensure Exchange Online Spam Policies are set to notify administrators" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_spamaction", + "title": "Set action to take on spam detection" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_targeteddomainprotectionaction", + "title": "Quarantine messages that are detected from impersonated domains" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_targeteduserprotectionaction", + "title": "Quarantine messages that are detected from impersonated users" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_targetedusersprotection", + "title": "Enable impersonated user protection" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_thresholdreachedaction", + "title": "Block users who reached the message limit" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_unusualcharacterssafetytips", + "title": "Enable the user impersonation unusual characters safety tipโ€ฏ" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_zapmalware", + "title": "Create zero-hour auto purge policies for malware" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_zapphish", + "title": "Create zero-hour auto purge policies for phishing messages" + }, + { + "service": "MDO", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mdo_zapspam", + "title": "Create zero-hour auto purge policies for spam messages" + }, + { + "service": "MS Teams", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "meeting_anonymousstartmeeting_v1", + "title": "Restrict anonymous users from starting Teams meetings" + }, + { + "service": "MS Teams", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "meeting_autoadmitusers_v1", + "title": "Only invited users should be automatically admitted to Teams meetings" + }, + { + "service": "MS Teams", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "meeting_designatedpresenter_v1", + "title": "Configure which users are allowed to present in Teams meetings" + }, + { + "service": "MS Teams", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "meeting_externalrequestcontrol_v1", + "title": "Limit external participants from having control in a Teams meeting" + }, + { + "service": "MS Teams", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "meeting_pstnusersbypasslobby_v1", + "title": "Restrict dial-in users from bypassing a meeting lobby " + }, + { + "service": "MS Teams", + "tier": "Core", + "userImpact": "low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "meeting_restrictanonymousjoin_v1", + "title": "Restrict anonymous users from joining meetings" + }, + { + "service": "AzureAD", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "MFARegistrationV2", + "title": "Ensure multifactor authentication is enabled for all users" + }, + { + "service": "MIP", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mip_autosensitivitylabelspolicies", + "title": "Ensure that Auto-labeling data classification policies are set up and used" + }, + { + "service": "MIP", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mip_DLP_policies_Teams", + "title": "Ensure DLP policies are enabled for Microsoft Teams" + }, + { + "service": "MIP", + "tier": "Core", + "userImpact": null, + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mip_management_API_enabled_four_workloads", + "title": "Ensure Office 365 Management Activity API is Enabled for some workloads (see description)" + }, + { + "service": "MIP", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mip_purviewlabelconsent", + "title": "Extend M365 sensitivity labeling to assets in Microsoft Purview data map" + }, + { + "service": "MIP", + "tier": "Core", + "userImpact": null, + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mip_search_auditlog", + "title": "Ensure Microsoft 365 audit log search is Enabled" + }, + { + "service": "MIP", + "tier": "Core", + "userImpact": "High", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "mip_sensitivitylabelspolicies", + "title": "Publish M365 sensitivity label data classification policies" + }, + { + "service": "AzureAD", + "tier": "Core", + "userImpact": "Low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "OneAdmin", + "title": "Designate more than one global admin" + }, + { + "service": "AzureAD", + "tier": "Core", + "userImpact": "Low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "PasswordHashSync", + "title": "Ensure that password hash sync is enabled for hybrid deployments" + }, + { + "service": "AzureAD", + "tier": "Defense In Depth", + "userImpact": "Moderate", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "PWAgePolicyNew", + "title": "Ensure the \u0027Password expiration policy\u0027 is set to \u0027Set passwords to never expire (recommended)\u0027" + }, + { + "service": "AzureAD", + "tier": "Defense In Depth", + "userImpact": "Low", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "RoleOverlap", + "title": "Use least privileged administrative roles" + }, + { + "service": "AzureAD", + "tier": "Defense In Depth", + "userImpact": "Moderate", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "SelfServicePasswordReset", + "title": "Ensure \u0027Self service password reset enabled\u0027 is set to \u0027All\u0027" + }, + { + "service": "AzureAD", + "tier": "Advanced", + "userImpact": "Moderate", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "SigninRiskPolicy", + "title": "Enable Microsoft Entra ID Identity Protection sign-in risk policies" + }, + { + "service": "SPO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "spo_block_onedrive_sync_unmanaged_devices", + "title": "Block OneDrive for Business sync from unmanaged devices" + }, + { + "service": "SPO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "spo_external_sharing_managed", + "title": "Ensure SharePoint external sharing is managed through domain whitelist/blacklists" + }, + { + "service": "SPO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "spo_external_users_sharing", + "title": "Ensure that SharePoint guest users cannot share items they don\u0027t own" + }, + { + "service": "SPO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "spo_idle_session_timeout", + "title": "Sign out inactive users in SharePoint Online" + }, + { + "service": "SPO", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "spo_legacy_auth", + "title": "Ensure modern authentication for SharePoint applications is required" + }, + { + "service": "SWAY", + "tier": "Core", + "userImpact": "Unknown", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "sway_block_sharing_with_outside_users", + "title": "Ensure that Sways cannot be shared with people outside of your organization" + }, + { + "service": "AzureAD", + "tier": "Advanced", + "userImpact": "Moderate", + "vendorInformation": { + "provider": "SecureScore", + "providerVersion": null, + "subProvider": null, + "vendor": "Microsoft" + }, + "id": "UserRiskPolicy", + "title": "Enable Microsoft Entra ID Identity Protection user risk policies" + } +] diff --git a/public/sponsors/domotz-dark.png b/public/sponsors/domotz-dark.png new file mode 100644 index 000000000000..ac26f6f0f6ad Binary files /dev/null and b/public/sponsors/domotz-dark.png differ diff --git a/public/sponsors/domotz-light.png b/public/sponsors/domotz-light.png new file mode 100644 index 000000000000..dab40b067807 Binary files /dev/null and b/public/sponsors/domotz-light.png differ diff --git a/public/sponsors/relentless-dark.png b/public/sponsors/relentless-dark.png new file mode 100644 index 000000000000..b234ac7c7903 Binary files /dev/null and b/public/sponsors/relentless-dark.png differ diff --git a/public/sponsors/relentless-light.png b/public/sponsors/relentless-light.png new file mode 100644 index 000000000000..5884597febe7 Binary files /dev/null and b/public/sponsors/relentless-light.png differ diff --git a/public/version.json b/public/version.json index f47e65940e3b..d827a149db50 100644 --- a/public/version.json +++ b/public/version.json @@ -1,3 +1,3 @@ { - "version": "8.0.2" -} \ No newline at end of file + "version": "10.2.6" +} diff --git a/public/version_latest.txt b/public/version_latest.txt deleted file mode 100644 index 5e39348ef037..000000000000 --- a/public/version_latest.txt +++ /dev/null @@ -1 +0,0 @@ -99.99.99 \ No newline at end of file diff --git a/src/api/ApiCall.jsx b/src/api/ApiCall.jsx index 35554764168e..e57fb516b9ac 100644 --- a/src/api/ApiCall.jsx +++ b/src/api/ApiCall.jsx @@ -1,14 +1,9 @@ -import { - keepPreviousData, - useInfiniteQuery, - useMutation, - useQuery, - useQueryClient, -} from "@tanstack/react-query"; +import { useInfiniteQuery, useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import axios, { isAxiosError } from "axios"; import { useDispatch } from "react-redux"; import { showToast } from "../store/toasts"; import { getCippError } from "../utils/get-cipp-error"; +import { buildVersionedHeaders } from "../utils/cippVersion"; export function ApiGetCall(props) { const { @@ -26,6 +21,9 @@ export function ApiGetCall(props) { refetchOnMount = true, refetchOnReconnect = true, keepPreviousData = false, + refetchInterval = false, + responseType = "json", + convertToDataUrl = false, } = props; const queryClient = useQueryClient(); const dispatch = useDispatch(); @@ -52,7 +50,7 @@ export function ApiGetCall(props) { title: `${ error.config?.params?.tenantFilter ? error.config?.params?.tenantFilter : "" } Error`, - }) + }), ); } return returnRetry; @@ -69,9 +67,7 @@ export function ApiGetCall(props) { const response = await axios.get(url, { signal: signal, params: element, - headers: { - "Content-Type": "application/json", - }, + headers: await buildVersionedHeaders(), }); results.push(response.data); if (onResult) { @@ -81,7 +77,25 @@ export function ApiGetCall(props) { if (relatedQueryKeys) { const clearKeys = Array.isArray(relatedQueryKeys) ? relatedQueryKeys : [relatedQueryKeys]; setTimeout(() => { - clearKeys.forEach((key) => { + // Separate wildcard patterns from exact keys + const wildcardPatterns = clearKeys + .filter((key) => key.endsWith("*")) + .map((key) => key.slice(0, -1)); + const exactKeys = clearKeys.filter((key) => !key.endsWith("*")); + + // Use single predicate call for all wildcard patterns + if (wildcardPatterns.length > 0) { + queryClient.invalidateQueries({ + predicate: (query) => { + if (!query.queryKey || !query.queryKey[0]) return false; + const queryKeyStr = String(query.queryKey[0]); + return wildcardPatterns.some((pattern) => queryKeyStr.startsWith(pattern)); + }, + }); + } + + // Handle exact keys + exactKeys.forEach((key) => { queryClient.invalidateQueries({ queryKey: [key] }); }); }, 1000); @@ -91,22 +105,51 @@ export function ApiGetCall(props) { const response = await axios.get(url, { signal: url === "/api/tenantFilter" ? null : signal, params: data, - headers: { - "Content-Type": "application/json", - }, + headers: await buildVersionedHeaders(), + responseType: responseType, }); + + let responseData = response.data; + + // Convert blob to data URL if requested + if (convertToDataUrl && responseType === "blob" && response.data) { + responseData = await new Promise((resolve) => { + const reader = new FileReader(); + reader.onloadend = () => resolve(reader.result); + reader.readAsDataURL(response.data); + }); + } + if (onResult) { - onResult(response.data); // Emit each result as it arrives + onResult(responseData); // Emit each result as it arrives } if (relatedQueryKeys) { const clearKeys = Array.isArray(relatedQueryKeys) ? relatedQueryKeys : [relatedQueryKeys]; setTimeout(() => { - clearKeys.forEach((key) => { + // Separate wildcard patterns from exact keys + const wildcardPatterns = clearKeys + .filter((key) => key.endsWith("*")) + .map((key) => key.slice(0, -1)); + const exactKeys = clearKeys.filter((key) => !key.endsWith("*")); + + // Use single predicate call for all wildcard patterns + if (wildcardPatterns.length > 0) { + queryClient.invalidateQueries({ + predicate: (query) => { + if (!query.queryKey || !query.queryKey[0]) return false; + const queryKeyStr = String(query.queryKey[0]); + return wildcardPatterns.some((pattern) => queryKeyStr.startsWith(pattern)); + }, + }); + } + + // Handle exact keys + exactKeys.forEach((key) => { queryClient.invalidateQueries({ queryKey: [key] }); }); }, 1000); } - return response.data; + return responseData; } }, staleTime: staleTime, @@ -114,6 +157,7 @@ export function ApiGetCall(props) { refetchOnMount: refetchOnMount, refetchOnReconnect: refetchOnReconnect, keepPreviousData: keepPreviousData, + refetchInterval: refetchInterval, retry: retryFn, }); return queryInfo; @@ -121,6 +165,7 @@ export function ApiGetCall(props) { export function ApiPostCall({ relatedQueryKeys, onResult }) { const queryClient = useQueryClient(); + const mutation = useMutation({ mutationFn: async (props) => { const { url, data, bulkRequest } = props; @@ -128,15 +173,17 @@ export function ApiPostCall({ relatedQueryKeys, onResult }) { const results = []; for (let i = 0; i < data.length; i++) { let element = data[i]; - const response = await axios.post(url, element); - results.push(response); + const response = await axios.post(url, element, { + headers: await buildVersionedHeaders(), + }); + results.push(response.data); if (onResult) { onResult(response.data); // Emit each result as it arrives } } return results; } else { - const response = await axios.post(url, data); + const response = await axios.post(url, data, { headers: await buildVersionedHeaders() }); if (onResult) { onResult(response.data); // Emit each result as it arrives } @@ -148,9 +195,43 @@ export function ApiPostCall({ relatedQueryKeys, onResult }) { const clearKeys = Array.isArray(relatedQueryKeys) ? relatedQueryKeys : [relatedQueryKeys]; setTimeout(() => { if (relatedQueryKeys === "*") { + console.log("Invalidating all queries"); queryClient.invalidateQueries(); } else { - clearKeys.forEach((key) => { + // Separate wildcard patterns from exact keys + const wildcardPatterns = clearKeys + .filter((key) => key.endsWith("*")) + .map((key) => key.slice(0, -1)); + const exactKeys = clearKeys.filter((key) => !key.endsWith("*")); + + // Use single predicate call for all wildcard patterns + if (wildcardPatterns.length > 0) { + queryClient.invalidateQueries({ + predicate: (query) => { + if (!query.queryKey || !query.queryKey[0]) return false; + const queryKeyStr = String(query.queryKey[0]); + const matches = wildcardPatterns.some((pattern) => + queryKeyStr.startsWith(pattern), + ); + + // Debug logging for each query check + if (matches) { + console.log("Invalidating query:", { + queryKey: query.queryKey, + queryKeyStr, + matchedPattern: wildcardPatterns.find((pattern) => + queryKeyStr.startsWith(pattern), + ), + }); + } + + return matches; + }, + }); + } + + // Handle exact keys + exactKeys.forEach((key) => { queryClient.invalidateQueries({ queryKey: [key] }); }); } @@ -171,8 +252,9 @@ export function ApiGetCallWithPagination({ waiting = true, }) { const dispatch = useDispatch(); + const queryClient = useQueryClient(); const MAX_RETRIES = retry; - const HTTP_STATUS_TO_NOT_RETRY = [401, 403, 404]; + const HTTP_STATUS_TO_NOT_RETRY = [302, 401, 403, 404, 500]; const retryFn = (failureCount, error) => { let returnRetry = true; @@ -180,6 +262,12 @@ export function ApiGetCallWithPagination({ returnRetry = false; } if (isAxiosError(error) && HTTP_STATUS_TO_NOT_RETRY.includes(error.response?.status ?? 0)) { + if ( + error.response?.status === 302 && + error.response?.headers.get("location").includes("/.auth/login/aad") + ) { + queryClient.invalidateQueries({ queryKey: ["authmecipp"] }); + } returnRetry = false; } @@ -189,7 +277,7 @@ export function ApiGetCallWithPagination({ message: getCippError(error), title: "Error", toastError: error, - }) + }), ); } return returnRetry; @@ -202,9 +290,7 @@ export function ApiGetCallWithPagination({ const response = await axios.get(url, { signal: signal, params: { ...data, ...pageParam }, - headers: { - "Content-Type": "application/json", - }, + headers: await buildVersionedHeaders(), }); return response.data; }, diff --git a/src/components/BECRemediationReportButton.js b/src/components/BECRemediationReportButton.js new file mode 100644 index 000000000000..c7a98231f7d3 --- /dev/null +++ b/src/components/BECRemediationReportButton.js @@ -0,0 +1,1513 @@ +import { useState } from "react"; +import { + Button, + Tooltip, + Dialog, + DialogTitle, + DialogContent, + DialogActions, + Box, + Typography, + IconButton, + CircularProgress, +} from "@mui/material"; +import { PictureAsPdf, Download, Close } from "@mui/icons-material"; +import { + Document, + Page, + Text, + View, + StyleSheet, + PDFViewer, + PDFDownloadLink, + Image, +} from "@react-pdf/renderer"; +import { useSettings } from "../hooks/use-settings"; + +// BEC Remediation PDF Document Component +const BECRemediationReportDocument = ({ + userData, + becData, + brandingSettings, + tenantName, + remediationData, +}) => { + const currentDate = new Date().toLocaleDateString("en-US", { + year: "numeric", + month: "long", + day: "numeric", + }); + const brandColor = brandingSettings?.colour || "#F77F00"; + + const styles = StyleSheet.create({ + page: { + flexDirection: "column", + backgroundColor: "#FFFFFF", + fontFamily: "Helvetica", + fontSize: 10, + lineHeight: 1.4, + color: "#2D3748", + padding: 40, + }, + + // COVER PAGE + coverPage: { + flexDirection: "column", + backgroundColor: "#FFFFFF", + fontFamily: "Helvetica", + padding: 60, + justifyContent: "space-between", + minHeight: "100%", + }, + + coverHeader: { + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + marginBottom: 80, + }, + + logoSection: { + flexDirection: "row", + alignItems: "center", + }, + + logo: { + height: 100, + marginRight: 12, + }, + + headerLogo: { + height: 30, + }, + + dateStamp: { + fontSize: 9, + color: "#000000", + textTransform: "uppercase", + letterSpacing: 0.5, + }, + + coverHero: { + flex: 1, + justifyContent: "flex-start", + alignItems: "flex-start", + paddingTop: 40, + }, + + coverLabel: { + backgroundColor: brandColor, + color: "#FFFFFF", + fontSize: 10, + fontWeight: "bold", + textTransform: "uppercase", + letterSpacing: 1, + paddingHorizontal: 16, + paddingVertical: 8, + borderRadius: 20, + marginBottom: 30, + alignSelf: "flex-start", + }, + + mainTitle: { + fontSize: 48, + fontWeight: "bold", + color: "#1A202C", + lineHeight: 1.1, + marginBottom: 20, + letterSpacing: -1, + }, + + titleAccent: { + color: brandColor, + }, + + subtitle: { + fontSize: 14, + color: "#000000", + fontWeight: "normal", + lineHeight: 1.5, + marginBottom: 40, + maxWidth: 400, + }, + + userCard: { + backgroundColor: "transparent", + padding: 0, + maxWidth: 500, + }, + + userName: { + fontSize: 18, + fontWeight: "bold", + color: "#000000", + marginBottom: 8, + }, + + userEmail: { + fontSize: 12, + color: "#333333", + marginBottom: 4, + }, + + coverFooter: { + textAlign: "center", + marginTop: 60, + }, + + confidential: { + fontSize: 9, + color: "#A0AEC0", + textTransform: "uppercase", + letterSpacing: 1, + }, + + // CONTENT PAGES + pageHeader: { + borderBottom: `1px solid ${brandColor}`, + paddingBottom: 12, + marginBottom: 24, + flexDirection: "row", + justifyContent: "space-between", + alignItems: "flex-start", + }, + + pageHeaderContent: { + flex: 1, + }, + + pageTitle: { + fontSize: 20, + fontWeight: "bold", + color: "#1A202C", + marginBottom: 8, + }, + + pageSubtitle: { + fontSize: 11, + color: "#4A5568", + fontWeight: "normal", + }, + + section: { + marginBottom: 24, + pageBreakInside: "avoid", + breakInside: "avoid", + }, + + sectionTitle: { + fontSize: 14, + fontWeight: "bold", + color: brandColor, + marginBottom: 12, + }, + + sectionSubtitle: { + fontSize: 11, + fontWeight: "bold", + color: "#2D3748", + marginBottom: 8, + marginTop: 12, + }, + + bodyText: { + fontSize: 9, + color: "#2D3748", + lineHeight: 1.5, + marginBottom: 12, + textAlign: "justify", + }, + + bulletList: { + marginLeft: 12, + marginBottom: 12, + }, + + bulletItem: { + flexDirection: "row", + alignItems: "flex-start", + marginBottom: 6, + }, + + bulletPoint: { + fontSize: 8, + color: brandColor, + marginRight: 6, + fontWeight: "bold", + marginTop: 1, + }, + + bulletText: { + fontSize: 9, + color: "#2D3748", + lineHeight: 1.4, + flex: 1, + }, + + // ALERT BOXES + alertBox: { + backgroundColor: "#FFF5F5", + border: `2px solid ${brandColor}`, + borderRadius: 6, + padding: 12, + marginBottom: 16, + }, + + alertTitle: { + fontSize: 11, + fontWeight: "bold", + color: brandColor, + marginBottom: 6, + }, + + alertText: { + fontSize: 9, + color: "#2D3748", + lineHeight: 1.4, + }, + + // INFO BOXES + infoBox: { + backgroundColor: "#F7FAFC", + border: `1px solid #E2E8F0`, + borderLeft: `4px solid ${brandColor}`, + borderRadius: 4, + padding: 12, + marginBottom: 12, + }, + + infoTitle: { + fontSize: 10, + fontWeight: "bold", + color: "#2D3748", + marginBottom: 6, + }, + + infoText: { + fontSize: 8, + color: "#4A5568", + lineHeight: 1.4, + }, + + // STATS GRID + statsGrid: { + flexDirection: "row", + gap: 12, + marginBottom: 20, + pageBreakInside: "avoid", + breakInside: "avoid", + }, + + statCard: { + flex: 1, + backgroundColor: "#FFFFFF", + border: `1px solid #E2E8F0`, + borderRadius: 6, + padding: 16, + alignItems: "center", + borderTop: `3px solid ${brandColor}`, + }, + + statNumber: { + fontSize: 20, + fontWeight: "bold", + color: brandColor, + marginBottom: 4, + }, + + statLabel: { + fontSize: 7, + color: "#4A5568", + textTransform: "uppercase", + letterSpacing: 0.5, + textAlign: "center", + fontWeight: "bold", + }, + + // TABLES + table: { + border: `1px solid #E2E8F0`, + borderRadius: 6, + overflow: "hidden", + marginBottom: 16, + }, + + tableHeader: { + flexDirection: "row", + backgroundColor: brandColor, + paddingVertical: 10, + paddingHorizontal: 12, + }, + + tableHeaderCell: { + fontSize: 7, + fontWeight: "bold", + color: "#FFFFFF", + textTransform: "uppercase", + letterSpacing: 0.5, + }, + + tableRow: { + flexDirection: "row", + borderBottomWidth: 1, + borderBottomColor: "#F7FAFC", + paddingVertical: 8, + paddingHorizontal: 12, + alignItems: "flex-start", + }, + + tableCell: { + fontSize: 8, + color: "#2D3748", + lineHeight: 1.3, + }, + + // FOOTER + footer: { + position: "absolute", + bottom: 20, + left: 40, + right: 40, + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + borderTop: "1px solid #E2E8F0", + paddingTop: 8, + }, + + footerText: { + fontSize: 7, + color: "#718096", + }, + + pageNumber: { + fontSize: 7, + color: "#718096", + fontWeight: "bold", + }, + + // STATUS INDICATORS + statusBadge: { + fontSize: 7, + fontWeight: "bold", + paddingHorizontal: 8, + paddingVertical: 4, + borderRadius: 4, + textTransform: "uppercase", + letterSpacing: 0.3, + }, + + statusSuccess: { + backgroundColor: "#C6F6D5", + color: "#22543D", + }, + + statusWarning: { + backgroundColor: "#FEEBC8", + color: "#744210", + }, + + statusDanger: { + backgroundColor: "#FED7D7", + color: "#742A2A", + }, + + statusInfo: { + backgroundColor: "#BEE3F8", + color: "#2C5282", + }, + }); + + // Helper function to format dates + const formatDate = (dateString) => { + if (!dateString) return "N/A"; + try { + return new Date(dateString).toLocaleString("en-US", { + year: "numeric", + month: "short", + day: "numeric", + hour: "2-digit", + minute: "2-digit", + }); + } catch { + return dateString; + } + }; + + // Calculate statistics + const stats = { + newRules: becData?.NewRules?.length || 0, + newUsers: becData?.NewUsers?.length || 0, + newApps: becData?.AddedApps?.length || 0, + permissionChanges: becData?.MailboxPermissionChanges?.length || 0, + mfaDevices: becData?.MFADevices?.length || 0, + passwordChanges: becData?.ChangedPasswords?.length || 0, + }; + + // Determine threat level + const calculateThreatLevel = () => { + let threatScore = 0; + if (stats.newRules > 0) threatScore += 3; + if (stats.permissionChanges > 0) threatScore += 2; + if (stats.newApps > 0) threatScore += 2; + if (stats.newUsers > 5) threatScore += 1; + + // Check for suspicious rules (RSS folder moves) + const hasSuspiciousRules = becData?.NewRules?.some((rule) => + rule.MoveToFolder?.includes("RSS"), + ); + if (hasSuspiciousRules) threatScore += 5; + + if (threatScore >= 7) return { level: "High", color: "#742A2A" }; + if (threatScore >= 4) return { level: "Medium", color: "#744210" }; + return { level: "Low", color: "#22543D" }; + }; + + const threatLevel = calculateThreatLevel(); + + return ( + + {/* COVER PAGE */} + + + + {brandingSettings?.logo && ( + + )} + + {currentDate} + + + + SECURITY INCIDENT REPORT + + + BEC Compromise{"\n"} + Analysis + + + + Business Email Compromise Investigation Report for {tenantName || "your organization"} + + + + {userData?.displayName || "Unknown User"} + {userData?.userPrincipalName || "user@domain.com"} + + Analysis Date: {becData?.ExtractedAt ? formatDate(becData.ExtractedAt) : "N/A"} + + + + + + + Confidential & Proprietary - For Internal Use Only + + + + + {/* EXECUTIVE SUMMARY PAGE */} + + + + Executive Summary + + Overview of Business Email Compromise investigation findings + + + {brandingSettings?.logo && ( + + )} + + + + + This report documents the findings of a Business Email Compromise (BEC) investigation + performed for the user account{" "} + {userData?.userPrincipalName} within{" "} + {tenantName}. The investigation analyzed + suspicious activity indicators including mailbox rules, permission changes, new + applications, and authentication patterns over a 7-day period. + + + + Business Email Compromise is a sophisticated scam targeting organizations that regularly + perform wire transfers or have established relationships with foreign suppliers. + Attackers compromise legitimate email accounts through social engineering or computer + intrusion techniques to conduct unauthorized fund transfers, steal sensitive + information, or impersonate executives. + + + + + Investigation Overview + + + + {stats.newRules} + Mailbox Rules + + + {stats.permissionChanges} + Permission Changes + + + {stats.newApps} + New Applications + + + {stats.newUsers} + New Users + + + + + + Threat Assessment: {threatLevel.level} + + + {threatLevel.level === "High" && + "HIGH RISK: Multiple indicators of compromise detected. Immediate remediation actions are strongly recommended. This account shows patterns consistent with active Business Email Compromise attacks."} + {threatLevel.level === "Medium" && + "MEDIUM RISK: Suspicious activity patterns detected. Review findings and consider implementing recommended security measures. Some indicators suggest potential unauthorized access."} + {threatLevel.level === "Low" && + "LOW RISK: Minimal suspicious activity detected. The findings show standard user behavior with no significant indicators of compromise. Continue monitoring as a precautionary measure."} + + + + + + Data Source Information + + Audit Log Status + {becData?.ExtractResult || "Unknown"} + + + Analysis Period + + Last 7 days ending {becData?.ExtractedAt ? formatDate(becData.ExtractedAt) : "N/A"} + + + + + + + {tenantName} - BEC Analysis Report for {userData?.displayName} + + `Page ${pageNumber} of ${totalPages}`} + /> + + + + {/* UNDERSTANDING BEC PAGE */} + + + + Understanding Business Email Compromise + What is BEC and why does it matter? + + {brandingSettings?.logo && ( + + )} + + + + What is Business Email Compromise? + + Business Email Compromise (BEC) is a type of cyberattack where criminals gain + unauthorized access to a business email account. Once inside, attackers can: + + + + + โ€ข + + Monitor communications: Read sensitive + emails to learn about business operations, financial processes, and key + relationships. + + + + โ€ข + + Impersonate executives: Send fraudulent + emails appearing to come from company leadership requesting wire transfers or + sensitive data. + + + + โ€ข + + Manipulate transactions: Intercept + legitimate invoices and alter payment information to redirect funds to + attacker-controlled accounts. + + + + โ€ข + + Hide their tracks: Create email rules to + automatically delete or hide messages, preventing detection. + + + + + + + Common Attack Methods + + Attackers typically gain access to email accounts through: + + + + + โ€ข + + Phishing: Deceptive emails that trick + users into providing their login credentials on fake websites. + + + + โ€ข + + Password Spraying: Automated attempts to + log in using common passwords across many accounts. + + + + โ€ข + + Credential Stuffing: Using usernames and + passwords leaked from other breached websites. + + + + โ€ข + + Malware: Software that captures + keystrokes or steals stored passwords from compromised devices. + + + + + + + Why This Investigation Was Performed + + This analysis was initiated because suspicious activity was detected or reported for + this user account. The investigation examines multiple indicators that might suggest + account compromise, including unusual mailbox rules, unexpected permission changes, new + application authorizations, and abnormal sign-in patterns. Early detection is critical + to minimize potential damage and prevent financial loss or data theft. + + + + + + {tenantName} - BEC Analysis Report for {userData?.displayName} + + `Page ${pageNumber} of ${totalPages}`} + /> + + + + {/* DETAILED FINDINGS PAGE */} + + + + Detailed Findings + Investigation results and analysis + + {brandingSettings?.logo && ( + + )} + + + {/* Check 1: Mailbox Rules */} + + Check 1: Mailbox Rules + + Why We Check This + + Attackers often create email rules to automatically forward, delete, or hide messages. + This prevents victims from seeing evidence of fraudulent activity. Suspicious rules + may move emails to obscure folders like "RSS Subscriptions" or forward them to + external addresses. + + + + {stats.newRules > 0 ? ( + <> + + โš  {stats.newRules} Mailbox Rule(s) Found + + The following mailbox rules were detected. Review each rule carefully to determine + if it was created by the user or by an attacker. Rules that forward emails or move + them to unusual folders are particularly suspicious. + + + + {becData.NewRules.slice(0, 10).map((rule, index) => ( + + Rule: {rule.Name || "Unnamed Rule"} + + Description: {rule.Description || "No description available"} + {"\n"} + {rule.MoveToFolder && `Moves to: ${rule.MoveToFolder}`} + {rule.ForwardTo && `\nForwards to: ${rule.ForwardTo}`} + {rule.DeleteMessage && "\nDeletes messages"} + + + ))} + {becData.NewRules.length > 10 && ( + + ... and {becData.NewRules.length - 10} more rules (see JSON export for full list) + + )} + + ) : ( + + + โœ“ No Suspicious Rules Found + + + No mailbox rules were detected that match suspicious patterns. This is a positive + indicator. + + + )} + + + + + {tenantName} - BEC Analysis Report for {userData?.displayName} + + `Page ${pageNumber} of ${totalPages}`} + /> + + + + {/* CHECK 2: NEW USERS */} + + + + Detailed Findings (Continued) + Investigation results and analysis + + {brandingSettings?.logo && ( + + )} + + + + Check 2: Recently Created Users + + Why We Check This + + Attackers sometimes create new user accounts to maintain persistent access or to use + as staging accounts for fraudulent activities. Reviewing recently created users helps + identify unauthorized account creation. + + + + {stats.newUsers > 0 ? ( + <> + + โ„น {stats.newUsers} New User(s) Found + + The following users were created in the last 7 days. Verify that each account + creation was authorized and legitimate. + + + + {becData.NewUsers.slice(0, 8).map((user, index) => ( + + {user.displayName || "Unknown"} + + Email: {user.userPrincipalName || "N/A"} + {"\n"} + Created: {formatDate(user.createdDateTime)} + + + ))} + {becData.NewUsers.length > 8 && ( + + ... and {becData.NewUsers.length - 8} more users (see JSON export for full list) + + )} + + ) : ( + + โœ“ No New Users Found + + No new user accounts were created during the analysis period. + + + )} + + + {/* Check 3: New Applications */} + + Check 3: New Applications + + Why We Check This + + Attackers may authorize malicious or suspicious third-party applications to access + your email and data. These applications can read emails, send messages, and access + files without the user's explicit knowledge. + + + + {stats.newApps > 0 ? ( + <> + + โš  {stats.newApps} New Application(s) Found + + New applications were granted access during the analysis period. Review each + application to ensure it was authorized and is from a trusted publisher. + + + + {becData.AddedApps.slice(0, 6).map((app, index) => ( + + + {app.displayName || app.appDisplayName || "Unknown"} + + + Publisher: {app.publisher || "Unknown"} + {"\n"} + App ID: {app.appId || "N/A"} + {"\n"} + Created: {formatDate(app.createdDateTime)} + + + ))} + {becData.AddedApps.length > 6 && ( + + ... and {becData.AddedApps.length - 6} more apps (see JSON export for full list) + + )} + + ) : ( + + + โœ“ No New Applications Found + + + No new applications were authorized during the analysis period. + + + )} + + + + + {tenantName} - BEC Analysis Report for {userData?.displayName} + + `Page ${pageNumber} of ${totalPages}`} + /> + + + + {/* CHECK 4, 5, 6: PERMISSIONS, MFA, PASSWORDS */} + + + + Additional Security Checks + + Permissions, authentication, and access patterns + + + {brandingSettings?.logo && ( + + )} + + + {/* Check 4: Mailbox Permission Changes */} + + Check 4: Mailbox Permission Changes + + Why We Check This + + Unauthorized changes to mailbox permissions can allow attackers to grant themselves or + accomplices access to read, send, or manage emails. This is a common technique to + maintain persistent access. + + + + {stats.permissionChanges > 0 ? ( + <> + + + โš  {stats.permissionChanges} Permission Change(s) Found + + + Mailbox permission changes were detected. Verify that each change was authorized + and necessary for legitimate business purposes. + + + + {becData.MailboxPermissionChanges.slice(0, 5).map((change, index) => ( + + {change.Operation || "Permission Change"} + + User: {change.UserKey || "Unknown"} + {"\n"} + Target: {change.ObjectId || "N/A"} + {"\n"} + Permissions: {change.Permissions || "Unknown"} + + + ))} + {becData.MailboxPermissionChanges.length > 5 && ( + + ... and {becData.MailboxPermissionChanges.length - 5} more changes + + )} + + ) : ( + + + โœ“ No Permission Changes Found + + + No mailbox permission changes were detected during the analysis period. + + + )} + + + {/* Check 5: MFA Devices */} + + Check 5: MFA Devices + + Why We Check This + + Multi-factor authentication (MFA) devices provide an additional layer of security. + Reviewing registered MFA methods helps identify if attackers have added unauthorized + devices to bypass security controls. + + + + {stats.mfaDevices > 0 ? ( + <> + + โ„น {stats.mfaDevices} MFA device(s) registered. Verify each device belongs to the + user. + + + {becData.MFADevices.slice(0, 5).map((device, index) => ( + + + {device["@odata.type"] + ?.replace("#microsoft.graph.", "") + .replace("AuthenticationMethod", "") || "Unknown"} + + + Display Name: {device.displayName || "N/A"} + {"\n"} + Registered: {formatDate(device.createdDateTime)} + + + ))} + + ) : ( + + โš  No MFA Devices Found + + No multi-factor authentication devices are registered. MFA is highly recommended to + prevent unauthorized access. + + + )} + + + {/* Check 6: Password Changes */} + + Check 6: Recent Password Changes + + Why We Check This + + Attackers often change passwords to lock out legitimate users. Reviewing recent + password changes in the tenant helps identify if the compromised account's password + was changed or if other accounts were affected. + + + + {stats.passwordChanges > 0 ? ( + <> + + โ„น {stats.passwordChanges} password change(s) detected in the tenant during the + analysis period. + + + {becData.ChangedPasswords.slice(0, 5).map((user, index) => ( + + {user.displayName || "Unknown"} + + Email: {user.userPrincipalName || "N/A"} + {"\n"} + Last Password Change: {formatDate(user.lastPasswordChangeDateTime)} + + + ))} + + ) : ( + + โ„น No password changes detected during the analysis period. + + )} + + + + + {tenantName} - BEC Analysis Report for {userData?.displayName} + + `Page ${pageNumber} of ${totalPages}`} + /> + + + + {/* RECOMMENDATIONS PAGE */} + + + + Recommendations + Actions to take and prevention best practices + + {brandingSettings?.logo && ( + + )} + + + + Immediate Actions Required + + Based on the investigation findings, the following actions should be taken immediately: + + + + + 1. + + Reset Password: Change the user's + password immediately to prevent further unauthorized access. + + + + 2. + + Revoke Sessions: Sign out the user from + all active sessions to terminate any attacker access. + + + + 3. + + Remove Suspicious Rules: Delete any + mailbox rules that forward, redirect, or hide emails, especially those moving + messages to unusual folders. + + + + 4. + + Review MFA Devices: Remove any MFA + devices that the user doesn't recognize and re-register legitimate devices. + + + + 5. + + Audit Permissions: Review and revoke any + unauthorized mailbox permissions or application consents. + + + + 6. + + Monitor Account: Continue monitoring the + account for suspicious activity for at least 30 days. + + + + + + + Long-Term Prevention Strategies + + To prevent future Business Email Compromise attacks, implement these security best + practices: + + + + + โ€ข + + + Enforce Multi-Factor Authentication (MFA): + {" "} + Require MFA for all users, especially those with administrative privileges or access + to financial systems. + + + + โ€ข + + Implement Security Awareness Training:{" "} + Educate employees about phishing, social engineering, and how to identify suspicious + emails. Regular training significantly reduces successful attacks. + + + + โ€ข + + Enable Advanced Threat Protection: Use + email security solutions that detect and block phishing, malware, and suspicious + attachments. + + + + โ€ข + + Configure Conditional Access Policies:{" "} + Restrict access based on location, device compliance, and risk level to prevent + unauthorized sign-ins. + + + + โ€ข + + Monitor Audit Logs: Regularly review + audit logs for suspicious activities such as unusual sign-in patterns, rule + creation, or permission changes. + + + + โ€ข + + Establish Financial Controls: Implement + multi-person approval processes for wire transfers and payment changes to prevent + fraudulent transactions. + + + + + + + User Education Points + + Share these key points with the affected user to help prevent future compromises: + + + + + โ€ข + + Never click on links or open attachments in unexpected emails, even if they appear + to come from known contacts. + + + + โ€ข + + Always verify unusual requests for money transfers or sensitive information through + a separate communication channel (phone call, in person). + + + + โ€ข + + Use strong, unique passwords for each account and consider using a password manager. + + + + โ€ข + + Be cautious when authorizing new applications or granting permissions to third-party + services. + + + + โ€ข + + Report suspicious emails or activities to your IT security team immediately. + + + + + + + + {tenantName} - BEC Analysis Report for {userData?.displayName} + + `Page ${pageNumber} of ${totalPages}`} + /> + + + + {/* COMPLIANCE & DOCUMENTATION PAGE */} + + + + Compliance & Documentation + Meeting regulatory and audit requirements + + {brandingSettings?.logo && ( + + )} + + + + Compliance Considerations + + This report supports compliance and documentation requirements for various security + frameworks and regulatory standards: + + + + + โ€ข + + ISO 27001: Demonstrates incident + detection, analysis, and response procedures (Controls A.16.1.1 - A.16.1.7). + + + + โ€ข + + CMMC Level 2: Provides evidence of + security incident monitoring, analysis, and documentation (AC.L2-3.1.12, + AU.L2-3.3.1). + + + + โ€ข + + SOC 2 Type II: Documents detective and + responsive controls for security incidents (CC7.3, CC7.4). + + + + โ€ข + + NIST CSF: Aligns with Detect (DE.AE, + DE.CM) and Respond (RS.AN, RS.MI) functions. + + + + โ€ข + + GDPR: Demonstrates security breach + detection and potential data breach assessment (Articles 32, 33). + + + + + + + Audit Trail + + This investigation and resulting documentation provide an audit trail for security + incident response: + + + + Investigation Details + + Investigation Date: {formatDate(becData?.ExtractedAt)} + {"\n"} + Analyzed User: {userData?.userPrincipalName} + {"\n"} + Organization: {tenantName} + {"\n"} + Analysis Period: 7 days + {"\n"} + Audit Log Status: {becData?.ExtractResult || "Unknown"} + + + + + Findings Summary + + Threat Level: {threatLevel.level} + {"\n"} + Mailbox Rules Found: {stats.newRules} + {"\n"} + Permission Changes: {stats.permissionChanges} + {"\n"} + New Applications: {stats.newApps} + {"\n"} + New Users: {stats.newUsers} + {"\n"} + MFA Devices: {stats.mfaDevices} + {"\n"} + Password Changes: {stats.passwordChanges} + + + + + + Document Retention + + This report should be retained according to your organization's document retention + policy and regulatory requirements. Typical retention periods range from 3-7 years + depending on applicable compliance frameworks. Store this document securely with + restricted access as it contains sensitive security information. + + + + + Additional Resources + + For more information about Business Email Compromise and cybersecurity best practices: + + + + + โ€ข + + FBI IC3: Internet Crime Complaint Center (ic3.gov) + + + + โ€ข + + CISA: Cybersecurity & Infrastructure Security Agency (cisa.gov) + + + + โ€ข + + Microsoft Security: Business Email Compromise resources + + + + + + + + {tenantName} - BEC Analysis Report for {userData?.displayName} + + `Page ${pageNumber} of ${totalPages}`} + /> + + + + ); +}; + +// Main Button Component +export const BECRemediationReportButton = ({ userData, becData, tenantName }) => { + const [dialogOpen, setDialogOpen] = useState(false); + const [isGenerating, setIsGenerating] = useState(false); + const userSettings = useSettings(); + + // Check if we have the necessary data + const hasData = userData && becData && !becData.Waiting; + + const brandingSettings = userSettings?.organizationSettings || { + logo: userSettings?.organizationSettings?.logo, + colour: userSettings?.organizationSettings?.colour || "#F77F00", + }; + + const handleOpenDialog = () => { + setDialogOpen(true); + }; + + const handleCloseDialog = () => { + setDialogOpen(false); + }; + + if (!hasData) { + return null; // Don't show button if data isn't ready + } + + return ( + <> + + + + + + + + BEC Remediation Report Preview + + + + + + + {hasData && ( + + + + )} + + + + + } + fileName={`BEC_Report_${userData?.userPrincipalName}_${new Date().toISOString().split("T")[0]}.pdf`} + style={{ textDecoration: "none" }} + > + {({ loading }) => ( + + )} + + + + + ); +}; diff --git a/src/components/CSVReader.jsx b/src/components/CSVReader.jsx index d34d9ee79007..be3f6f67f02a 100644 --- a/src/components/CSVReader.jsx +++ b/src/components/CSVReader.jsx @@ -1,86 +1,67 @@ -import React, { useState } from "react"; +import React, { useState, useEffect } from "react"; import { useCSVReader, lightenDarkenColor, formatFileSize } from "react-papaparse"; +import { Box, Typography, useTheme } from "@mui/material"; +import { CloudUpload } from "@mui/icons-material"; -const GREY = "#CCC"; -const GREY_LIGHT = "rgba(255, 255, 255, 0.4)"; +/* + * These colors define our remove button states. The light version is + * calculated rather than hardcoded - a small touch that ensures + * consistent color relationships no matter what base color we use. + * + * Sometimes it's these little details that make a component feel polished. + */ const DEFAULT_REMOVE_HOVER_COLOR = "#A01919"; const REMOVE_HOVER_COLOR_LIGHT = lightenDarkenColor(DEFAULT_REMOVE_HOVER_COLOR, 40); -const GREY_DIM = "#686868"; -const styles = { - zone: { - alignItems: "center", - border: `2px dashed`, - borderRadius: 20, - display: "flex", - flexDirection: "column", - height: "100%", - justifyContent: "center", - padding: 20, - }, - file: { - background: "linear-gradient(to bottom, #aaa, #aaa)", - borderRadius: 20, - display: "flex", - height: 60, - width: 120, - position: "relative", - zIndex: 10, - flexDirection: "column", - justifyContent: "center", - }, - info: { - alignItems: "center", - display: "flex", - flexDirection: "column", - paddingLeft: 10, - paddingRight: 10, - }, - size: { - borderRadius: 3, - marginBottom: "0.5em", - justifyContent: "center", - display: "flex", - }, - name: { - borderRadius: 3, - fontSize: 12, - marginBottom: "0.5em", - }, - progressBar: { - bottom: 14, - position: "absolute", - width: "100%", - paddingLeft: 10, - paddingRight: 10, - }, - zoneHover: { - borderColor: GREY_DIM, - }, - default: { - borderColor: GREY, - }, - remove: { - height: 23, - position: "absolute", - right: 6, - top: 6, - width: 23, - }, -}; - -export default function CSVReader(props) { +/* + * This component has evolved from a simple file input to a polished + * upload zone that maintains state between wizard steps. It's a good + * example of how components grow with requirements while trying to + * keep their core purpose clear. + * + * The journey to this version taught us about: + * - Proper event handling with third-party libraries + * - State persistence in multi-step forms + * - The value of simple solutions (sessionStorage vs complex state) + */ +export default function CSVReader({ config, onDrop, onRemove }) { const { CSVReader } = useCSVReader(); const [zoneHover, setZoneHover] = useState(false); const [removeHoverColor, setRemoveHoverColor] = useState(DEFAULT_REMOVE_HOVER_COLOR); + const [storedFile, setStoredFile] = useState(null); + const theme = useTheme(); + + /* + * On mount, we check sessionStorage for file details. This lets us + * restore the preview when users navigate back to this step. + * + * It's a simple solution that works well - sometimes the best + * approaches don't need complex state management. The fact that + * it "just works" is a feature, not a bug. + */ + useEffect(() => { + const fileName = sessionStorage.getItem('csvFileName'); + const fileSize = sessionStorage.getItem('csvFileSize'); + if (fileName && fileSize) { + console.log('Restoring file preview:', fileName); + setStoredFile({ + name: fileName, + size: parseInt(fileSize, 10) + }); + } + }, []); return ( { - //call the ondrop function from the props, passing the results. - props.onDrop(results.data); + config={config} + onUploadAccepted={(results, file) => { + console.log('File accepted:', file.name); + onDrop(results.data); setZoneHover(false); + setStoredFile(file); + // Store file details for persistence between steps + sessionStorage.setItem('csvFileName', file.name); + sessionStorage.setItem('csvFileSize', file.size.toString()); }} onDragOver={(event) => { event.preventDefault(); @@ -92,46 +73,91 @@ export default function CSVReader(props) { }} > {({ getRootProps, acceptedFile, ProgressBar, getRemoveFileProps, Remove }) => ( - <> -
- {acceptedFile ? ( - <> -
-
- {formatFileSize(acceptedFile.size)} - {acceptedFile.name} -
-
- -
-
{ - event.preventDefault(); - setRemoveHoverColor(REMOVE_HOVER_COLOR_LIGHT); - }} - onMouseOut={(event) => { - event.preventDefault(); - setRemoveHoverColor(DEFAULT_REMOVE_HOVER_COLOR); - }} - > - -
-
- - ) : ( - "Drop CSV file here or click to upload" - )} -
- + + {(acceptedFile || storedFile) ? ( + + + + + + {acceptedFile?.name || storedFile?.name} + + + {formatFileSize(acceptedFile?.size || storedFile?.size)} + + + + + {acceptedFile && } + + {/* + * The remove button's event handling taught us about working with + * third-party libraries. Instead of fighting the library's patterns, + * we adapted to work with them. A good reminder that sometimes + * the best solution is to follow the path of least resistance. + */} + { + console.log('Removing file'); + setStoredFile(null); + sessionStorage.removeItem('csvFileName'); + sessionStorage.removeItem('csvFileSize'); + // Notify parent that file was removed + onRemove?.(); + } + })} + > + + + + ) : ( + + + + Drop CSV file here + + + or click to browse + + + )} + )}
); -} +} \ No newline at end of file diff --git a/src/components/CippCards/CippBannerListCard.jsx b/src/components/CippCards/CippBannerListCard.jsx index 8a123e5064b2..55f5c2ecbae6 100644 --- a/src/components/CippCards/CippBannerListCard.jsx +++ b/src/components/CippCards/CippBannerListCard.jsx @@ -3,6 +3,7 @@ import { useState, useCallback } from "react"; import { Box, Card, + Checkbox, Collapse, Divider, IconButton, @@ -16,13 +17,34 @@ import { CippPropertyListCard } from "./CippPropertyListCard"; import { CippDataTable } from "../CippTable/CippDataTable"; export const CippBannerListCard = (props) => { - const { items = [], isCollapsible = false, isFetching = false, children, ...other } = props; + const { + items = [], + isCollapsible = false, + isFetching = false, + children, + onSelectionChange, + selectedItems = [], + ...other + } = props; const [expanded, setExpanded] = useState(null); const handleExpand = useCallback((itemId) => { setExpanded((prevState) => (prevState === itemId ? null : itemId)); }, []); + const handleCheckboxChange = useCallback( + (itemId, checked) => { + if (onSelectionChange) { + if (checked) { + onSelectionChange([...selectedItems, itemId]); + } else { + onSelectionChange(selectedItems.filter((id) => id !== itemId)); + } + } + }, + [onSelectionChange, selectedItems] + ); + const hasItems = items.length > 0; if (isFetching) { @@ -72,7 +94,6 @@ export const CippBannerListCard = (props) => {
  • { onClick={isCollapsible ? () => handleExpand(item.id) : undefined} > {/* Left Side: cardLabelBox */} - + + {onSelectionChange && ( + { + e.stopPropagation(); + handleCheckboxChange(item.id, e.target.checked); + }} + onClick={(e) => e.stopPropagation()} + /> + )} {typeof item.cardLabelBox === "object" ? ( @@ -111,8 +148,16 @@ export const CippBannerListCard = (props) => { {/* Main Text and Subtext */} - - + + {item.text} @@ -122,7 +167,7 @@ export const CippBannerListCard = (props) => { {/* Right Side: Status and Expand Icon */} - + {item?.statusText && ( { {item?.propertyItems?.length > 0 && ( )} @@ -204,7 +249,6 @@ CippBannerListCard.propTypes = { actionButton: PropTypes.element, propertyItems: PropTypes.array, table: PropTypes.object, - actionButton: PropTypes.element, isFetching: PropTypes.bool, children: PropTypes.node, cardLabelBoxActions: PropTypes.element, @@ -212,4 +256,6 @@ CippBannerListCard.propTypes = { ).isRequired, isCollapsible: PropTypes.bool, isFetching: PropTypes.bool, + onSelectionChange: PropTypes.func, + selectedItems: PropTypes.array, }; diff --git a/src/components/CippCards/CippButtonCard.jsx b/src/components/CippCards/CippButtonCard.jsx index 73f1009e1ec7..ca9429af940b 100644 --- a/src/components/CippCards/CippButtonCard.jsx +++ b/src/components/CippCards/CippButtonCard.jsx @@ -42,8 +42,12 @@ export default function CippButtonCard({ {component === "card" && ( <> - - + {title && ( + <> + + + + )} {isFetching ? : children} diff --git a/src/components/CippCards/CippChartCard.jsx b/src/components/CippCards/CippChartCard.jsx index 2bd455d87761..577a3f2bbaf1 100644 --- a/src/components/CippCards/CippChartCard.jsx +++ b/src/components/CippCards/CippChartCard.jsx @@ -92,12 +92,16 @@ export const CippChartCard = ({ chartType = "donut", title, actions, + onClick, + totalLabel = "Total", + customTotal, }) => { const [range, setRange] = useState("Last 7 days"); const [barSeries, setBarSeries] = useState([]); const chartOptions = useChartOptions(labels, chartType); chartSeries = chartSeries.filter((item) => item !== null); - const total = chartSeries.reduce((acc, value) => acc + value, 0); + const calculatedTotal = chartSeries.reduce((acc, value) => acc + value, 0); + const total = customTotal !== undefined ? customTotal : calculatedTotal; useEffect(() => { if (chartType === "bar") { setBarSeries( @@ -109,7 +113,18 @@ export const CippChartCard = ({ }, [chartType, chartSeries.length, labels]); return ( - + theme.shadows[8], + transform: "translateY(-2px)", + } : {}, + }} + > {labels.length > 0 && ( <> - Total + {totalLabel} {isFetching ? "0" : total} )} diff --git a/src/components/CippCards/CippDomainCards.jsx b/src/components/CippCards/CippDomainCards.jsx index 3aa81e3019fe..9268fcd08f96 100644 --- a/src/components/CippCards/CippDomainCards.jsx +++ b/src/components/CippCards/CippDomainCards.jsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from "react"; +import { useEffect, useState } from "react"; import { Button, Collapse, @@ -22,9 +22,9 @@ import WarningIcon from "@mui/icons-material/Warning"; import HelpIcon from "@mui/icons-material/Help"; import MoreVertIcon from "@mui/icons-material/MoreVert"; import { Controller, useForm } from "react-hook-form"; -import { ApiGetCall } from "/src/api/ApiCall"; -import CippButtonCard from "/src/components/CippCards/CippButtonCard"; -import { CippCodeBlock } from "/src/components/CippComponents/CippCodeBlock"; +import { ApiGetCall } from "../../api/ApiCall"; +import CippButtonCard from "./CippButtonCard"; +import { CippCodeBlock } from "../CippComponents/CippCodeBlock"; import { CippOffCanvas } from "../CippComponents/CippOffCanvas"; import { CippPropertyListCard } from "./CippPropertyListCard"; import { getCippFormatting } from "../../utils/get-cipp-formatting"; @@ -477,7 +477,7 @@ export const CippDomainCards = ({ domain: propDomain = "", fullwidth = false }) waiting: !!domain && enableHttps, }); - // Adjust grid item size based on fullwidth prop + // Adjust Grid size based on fullwidth prop const gridItemSize = fullwidth ? 12 : 4; return ( diff --git a/src/components/CippCards/CippExchangeInfoCard.jsx b/src/components/CippCards/CippExchangeInfoCard.jsx index 1a368b99324d..6a00f53c0248 100644 --- a/src/components/CippCards/CippExchangeInfoCard.jsx +++ b/src/components/CippCards/CippExchangeInfoCard.jsx @@ -8,13 +8,14 @@ import { IconButton, Typography, CircularProgress, + Alert, } from "@mui/material"; -import { PropertyList } from "/src/components/property-list"; -import { PropertyListItem } from "/src/components/property-list-item"; +import { PropertyList } from "../property-list"; +import { PropertyListItem } from "../property-list-item"; import { getCippFormatting } from "../../utils/get-cipp-formatting"; import { Check as CheckIcon, Close as CloseIcon, Sync } from "@mui/icons-material"; import { LinearProgressWithLabel } from "../linearProgressWithLabel"; -import { Stack } from "@mui/system"; +import { Stack, Grid } from "@mui/system"; export const CippExchangeInfoCard = (props) => { const { exchangeData, isLoading = false, isFetching = false, handleRefresh, ...other } = props; @@ -59,16 +60,56 @@ export const CippExchangeInfoCard = (props) => { } /> + {exchangeData?.BlockedForSpam === true ? ( + + This mailbox is currently blocked for spam. + + ) : null} + ) : ( - exchangeData?.RecipientTypeDetails || "N/A" + + + + Mailbox Type: + + + {exchangeData?.RecipientTypeDetails || "N/A"} + + + + + Hidden from GAL: + + + {getCippFormatting( + exchangeData?.HiddenFromAddressLists, + "HiddenFromAddressLists", + )} + + + + + Blocked For Spam: + + + {getCippFormatting(exchangeData?.BlockedForSpam, "BlockedForSpam")} + + + + + Retention Policy: + + + {getCippFormatting(exchangeData?.RetentionPolicy, "RetentionPolicy")} + + + ) } /> @@ -83,13 +124,13 @@ export const CippExchangeInfoCard = (props) => { sx={{ width: "100%" }} variant="determinate" addedLabel={`(${Math.round(exchangeData.TotalItemSize)} GB of ${Math.round( - exchangeData?.ProhibitSendReceiveQuota + exchangeData?.ProhibitSendReceiveQuota, )}GB)`} value={ Math.round( (exchangeData?.TotalItemSize / exchangeData?.ProhibitSendReceiveQuota) * 100 * - 100 + 100, ) / 100 } /> @@ -100,82 +141,148 @@ export const CippExchangeInfoCard = (props) => { /> - ) : ( - getCippFormatting(exchangeData?.HiddenFromAddressLists, "HiddenFromAddressLists") - ) - } - /> - - ) : ( - getCippFormatting(exchangeData?.ForwardAndDeliver, "ForwardAndDeliver") - ) - } - /> - - ) : ( - exchangeData?.ForwardingAddress || "N/A" - ) - } - /> - - ) : ( - getCippFormatting(exchangeData?.ArchiveMailBox, "ArchiveMailBox") - ) - } - /> - - ) : ( - getCippFormatting(exchangeData?.AutoExpandingArchive, "AutoExpandingArchive") - ) - } - /> - - ) : exchangeData?.TotalArchiveItemSize != null ? ( - `${exchangeData.TotalArchiveItemSize} GB` + ) : ( - "N/A" + (() => { + const forwardingAddress = exchangeData?.ForwardingAddress; + const forwardAndDeliver = exchangeData?.ForwardAndDeliver; + + // Determine forwarding type and clean address + let forwardingType = "None"; + let cleanAddress = ""; + + if (forwardingAddress) { + // Handle array of forwarding addresses + if (Array.isArray(forwardingAddress)) { + cleanAddress = forwardingAddress + .map((addr) => + typeof addr === "string" ? addr.replace(/^smtp:/i, "") : String(addr), + ) + .join(", "); + // Check if any address has smtp: prefix (external) or contains @ (external email) + forwardingType = forwardingAddress.some( + (addr) => + (typeof addr === "string" && addr.toLowerCase().startsWith("smtp:")) || + (typeof addr === "string" && addr.includes("@")), + ) + ? "External" + : "Internal"; + } + // Handle single string address + else if (typeof forwardingAddress === "string") { + if (forwardingAddress.startsWith("smtp:")) { + forwardingType = "External"; + cleanAddress = forwardingAddress.replace(/^smtp:/i, ""); + } else if (forwardingAddress.includes("@")) { + forwardingType = "External"; + cleanAddress = forwardingAddress; + } else { + forwardingType = "Internal"; + cleanAddress = forwardingAddress; + } + } + // Fallback for other types + else { + forwardingType = "Internal"; + cleanAddress = String(forwardingAddress); + } + } + + return ( + + + + Forwarding Status: + + + {forwardingType === "None" + ? getCippFormatting(false, "ForwardingStatus") + : `${forwardingType} Forwarding`} + + + {forwardingType !== "None" && ( + <> + + + Keep Copy in Mailbox: + + + {getCippFormatting(forwardAndDeliver, "ForwardAndDeliver")} + + + + + Forwarding Address: + + {cleanAddress} + + + )} + + ); + })() ) } /> + + {/* Archive section - always show status */} - ) : exchangeData?.TotalArchiveItemCount != null ? ( - exchangeData.TotalArchiveItemCount + ) : ( - "N/A" + + + + Archive Mailbox Enabled: + + + {getCippFormatting(exchangeData?.ArchiveMailBox, "ArchiveMailBox")} + + + {exchangeData?.ArchiveMailBox && ( + <> + + + Auto Expanding Archive: + + + {getCippFormatting( + exchangeData?.AutoExpandingArchive, + "AutoExpandingArchive", + )} + + + + + Total Archive Item Size: + + + {exchangeData?.TotalArchiveItemSize != null + ? `${exchangeData.TotalArchiveItemSize} GB` + : "N/A"} + + + + + Total Archive Item Count: + + + {exchangeData?.TotalArchiveItemCount != null + ? exchangeData.TotalArchiveItemCount + : "N/A"} + + + + )} + ) } /> - {/* Combine all mailbox hold types into a single PropertyListItem */} + { ) } /> - {/* Combine protocols into a single PropertyListItem */} { ) } /> - - ) : ( - getCippFormatting(exchangeData?.BlockedForSpam, "BlockedForSpam") - ) - } - /> ); diff --git a/src/components/CippCards/CippInfoBar.jsx b/src/components/CippCards/CippInfoBar.jsx index c8889e498c4e..930d729b8400 100644 --- a/src/components/CippCards/CippInfoBar.jsx +++ b/src/components/CippCards/CippInfoBar.jsx @@ -37,9 +37,13 @@ export const CippInfoBar = ({ data, isFetching }) => { }, }} > - + {item?.icon && ( - + {item.icon} )} @@ -48,14 +52,27 @@ export const CippInfoBar = ({ data, isFetching }) => { { if (!item?.icon) { - return { pl: 2 }; + return { pl: 2, minWidth: 0, flex: 1 }; } + return { minWidth: 0, flex: 1 }; }} > - + {item.name} - + {isFetching ? : item.data} @@ -64,14 +81,27 @@ export const CippInfoBar = ({ data, isFetching }) => { { if (!item?.icon) { - return { pl: 2 }; + return { pl: 2, minWidth: 0, flex: 1 }; } + return { minWidth: 0, flex: 1 }; }} > - + {item.name} - + {isFetching ? : item.data} @@ -95,7 +125,7 @@ export const CippInfoBar = ({ data, isFetching }) => { }} > - + {item?.offcanvas?.propertyItems?.length > 0 && ( { const { @@ -26,27 +25,12 @@ const CippPageCard = (props) => { -
    - {!hideBackButton && ( - - )} -
    {hideTitleText !== true && (
    {title} diff --git a/src/components/CippCards/CippPropertyListCard.jsx b/src/components/CippCards/CippPropertyListCard.jsx index d22d6924292a..4e7bb2d81f0f 100644 --- a/src/components/CippCards/CippPropertyListCard.jsx +++ b/src/components/CippCards/CippPropertyListCard.jsx @@ -62,11 +62,11 @@ export const CippPropertyListCard = (props) => { {isFetching ? ( <> - {propertyItems.map((item, index) => ( + {Array.from({ length: propertyItems?.length || 3 }).map((_, index) => ( } sx={setPadding} /> @@ -87,7 +87,7 @@ export const CippPropertyListCard = (props) => { ) : ( // Two-column layout - ( { > {isFetching ? ( - } - /> + <> + {Array.from({ length: Math.max(1, firstHalf?.length || 1) }).map((_, index) => ( + } + /> + ))} + ) : ( firstHalf.map((item, index) => ( { {isFetching ? ( - } - /> + <> + {Array.from({ length: Math.max(1, secondHalf?.length || 1) }).map( + (_, index) => ( + } + /> + ) + )} + ) : ( secondHalf.map((item, index) => ( { )) )} - ) + )} diff --git a/src/components/CippCards/CippRemediationCard.jsx b/src/components/CippCards/CippRemediationCard.jsx index d18739c033ca..d864719f80e1 100644 --- a/src/components/CippCards/CippRemediationCard.jsx +++ b/src/components/CippCards/CippRemediationCard.jsx @@ -1,4 +1,3 @@ -import React from "react"; import { Button, Typography, List, ListItem, SvgIcon } from "@mui/material"; import CippButtonCard from "./CippButtonCard"; // Adjust the import path as needed import { CippApiDialog } from "../CippComponents/CippApiDialog"; diff --git a/src/components/CippCards/CippStandardsDialog.jsx b/src/components/CippCards/CippStandardsDialog.jsx new file mode 100644 index 000000000000..5e3c2cc879d8 --- /dev/null +++ b/src/components/CippCards/CippStandardsDialog.jsx @@ -0,0 +1,544 @@ +import React, { useState } from "react"; +import _ from "lodash"; +import { + Dialog, + DialogTitle, + DialogContent, + DialogActions, + Button, + Typography, + Box, + Chip, + Stack, + Divider, + Card, + CardContent, + Grid, + IconButton, + Tooltip, + Accordion, + AccordionSummary, + AccordionDetails, +} from "@mui/material"; +import { + Close as CloseIcon, + Info as InfoIcon, + Warning as WarningIcon, + CheckCircle as CheckCircleIcon, + Assignment as AssignmentIcon, + Notifications as NotificationsIcon, + Construction as ConstructionIcon, + Public as PublicIcon, + Cloud as CloudIcon, + Email as EmailIcon, + Security as SecurityIcon, + PhoneAndroid as PhoneAndroidIcon, + ExpandMore as ExpandMoreIcon, +} from "@mui/icons-material"; +import { SvgIcon } from "@mui/material"; +import standards from "../../data/standards.json"; + +const getCategoryIcon = (category) => { + switch (category) { + case "Global Standards": + return ; + case "Entra (AAD) Standards": + return ; + case "Exchange Standards": + return ; + case "Defender Standards": + return ; + case "Intune Standards": + return ; + case "Templates": + return ; + default: + return ; + } +}; + +const getActionIcon = (action) => { + switch (action?.toLowerCase()) { + case "report": + return ; + case "alert": + case "warn": + return ; + case "remediate": + return ; + default: + return ; + } +}; + +const getImpactColor = (impact) => { + switch (impact?.toLowerCase()) { + case "low impact": + return "info"; + case "medium impact": + return "warning"; + case "high impact": + return "error"; + default: + return "default"; + } +}; + +export const CippStandardsDialog = ({ open, onClose, standardsData, currentTenant }) => { + const [expanded, setExpanded] = useState(false); + if (!standardsData) return null; + + // Get applicable templates for the current tenant + const applicableTemplates = standardsData.filter((template) => { + const tenantFilterArr = Array.isArray(template?.tenantFilter) ? template.tenantFilter : []; + const excludedTenantsArr = Array.isArray(template?.excludedTenants) + ? template.excludedTenants + : []; + + const tenantInFilter = + tenantFilterArr.length > 0 && tenantFilterArr.some((tf) => tf.value === currentTenant); + + const allTenantsTemplate = + tenantFilterArr.some((tf) => tf.value === "AllTenants") && + (excludedTenantsArr.length === 0 || + !excludedTenantsArr.some((et) => et.value === currentTenant)); + + const isApplicable = tenantInFilter || allTenantsTemplate; + + return isApplicable; + }); + + // Combine standards from all applicable templates + const combinedStandards = {}; + for (const template of applicableTemplates) { + for (const [standardKey, standardValue] of Object.entries(template.standards)) { + if (combinedStandards[standardKey]) { + // If the standard already exists, we need to merge it + const existing = combinedStandards[standardKey]; + const incoming = standardValue; + + // If both are arrays (like IntuneTemplate, ConditionalAccessTemplate), concatenate them + if (Array.isArray(existing) && Array.isArray(incoming)) { + combinedStandards[standardKey] = [...existing, ...incoming]; + } + // If one is array and other is not, or both are objects, keep the last one (existing behavior) + else { + combinedStandards[standardKey] = standardValue; + } + } else { + combinedStandards[standardKey] = standardValue; + } + } + } + + // Group standards by category + const standardsByCategory = {}; + let totalStandardsCount = 0; + + Object.entries(combinedStandards).forEach(([standardKey, standardConfig]) => { + const standardInfo = standards.find((s) => s.name === `standards.${standardKey}`); + if (standardInfo) { + const category = standardInfo.cat; + if (!standardsByCategory[category]) { + standardsByCategory[category] = []; + } + standardsByCategory[category].push({ + key: standardKey, + config: standardConfig, + info: standardInfo, + }); + + // Count template instances separately + if (Array.isArray(standardConfig) && standardConfig.length > 0) { + totalStandardsCount += standardConfig.length; + } else { + totalStandardsCount += 1; + } + } + }); + + const handleAccordionChange = (panel) => (event, isExpanded) => { + setExpanded(isExpanded ? panel : false); + }; + + return ( + + + Standards Configuration + theme.palette.grey[500], + }} + > + + + + + + + + Showing standards configuration for tenant: {currentTenant} + + + Total templates applied: {applicableTemplates.length} | Total + standards: {totalStandardsCount} + + + + {Object.entries(standardsByCategory).map(([category, categoryStandards], idx) => { + // Calculate the actual count of standards in this category (counting template instances) + const categoryCount = categoryStandards.reduce((count, { config }) => { + if (Array.isArray(config) && config.length > 0) { + return count + config.length; + } + return count + 1; + }, 0); + + return ( + `1px solid ${theme.palette.divider}`, + "&:before": { display: "none" }, + }} + > + } + aria-controls={`${category}-content`} + id={`${category}-header`} + sx={{ + minHeight: 48, + "& .MuiAccordionSummary-content": { alignItems: "center", m: 0 }, + }} + > + + {getCategoryIcon(category)} + + {category} + + + + + + + {categoryStandards.map(({ key, config, info }) => { + // Handle template arrays by rendering each template as a separate card + if (Array.isArray(config) && config.length > 0) { + return config.map((templateItem, templateIndex) => ( + + + + + + + {info.label} {config.length > 1 && `(${templateIndex + 1})`} + + + {info.helpText} + + + + + {info.tag && info.tag.length > 0 && ( + + )} + + + + Actions: + + + {templateItem.action && Array.isArray(templateItem.action) ? ( + templateItem.action.map((action, actionIndex) => ( + + )) + ) : ( + + No actions configured + + )} + + + + {info.addedComponent && info.addedComponent.length > 0 && ( + + + Fields: + + + {info.addedComponent.map((component, componentIndex) => { + const value = _.get(templateItem, component.name); + let displayValue = "N/A"; + + if (value) { + if (typeof value === "object" && value !== null) { + displayValue = + value.label || value.value || JSON.stringify(value); + } else { + displayValue = String(value); + } + } + + return ( + + + {component.label || component.name}: + + + + ); + })} + + + )} + + + + + )); + } + + // Handle regular standards (non-template arrays) + return ( + + + + + + + {info.label} + + + {info.helpText} + + + + + {info.tag && info.tag.length > 0 && ( + + )} + + + + Actions: + + + {config.action && Array.isArray(config.action) ? ( + config.action.map((action, index) => ( + + )) + ) : ( + + No actions configured + + )} + + + + {info.addedComponent && info.addedComponent.length > 0 && ( + + + Fields: + + + {info.addedComponent.map((component, index) => { + let componentValue; + let displayValue = "N/A"; + + // Handle regular standards and nested standards structures + let extractedValue = null; + + // Try direct access first + componentValue = _.get(config, component.name); + + // If direct access fails and component name contains dots (nested structure) + if ( + (componentValue === undefined || + componentValue === null) && + component.name.includes(".") + ) { + const pathParts = component.name.split("."); + + // Handle structures like: standards.AuthMethodsSettings.ReportSuspiciousActivity + if (pathParts[0] === "standards" && config.standards) { + // Remove 'standards.' prefix and try to find the value in config.standards + const nestedPath = pathParts.slice(1).join("."); + extractedValue = _.get(config.standards, nestedPath); + + // If still not found, try alternative nested structures + // Some standards have double nesting like: config.standards.StandardName.fieldName + if ( + (extractedValue === undefined || + extractedValue === null) && + pathParts.length >= 3 + ) { + const standardName = pathParts[1]; + const fieldPath = pathParts.slice(2).join("."); + extractedValue = _.get( + config.standards, + `${standardName}.${fieldPath}` + ); + } + } + } else { + extractedValue = componentValue; + } + + if (extractedValue) { + if (Array.isArray(extractedValue)) { + // Handle array of objects + const arrayValues = extractedValue.map((item) => { + if (typeof item === "object" && item !== null) { + return ( + item.label || item.value || JSON.stringify(item) + ); + } + return String(item); + }); + displayValue = arrayValues.join(", "); + } else if ( + typeof extractedValue === "object" && + extractedValue !== null + ) { + if (extractedValue.label) { + displayValue = extractedValue.label; + } else if (extractedValue.value) { + displayValue = extractedValue.value; + } else { + displayValue = JSON.stringify(extractedValue); + } + } else { + displayValue = String(extractedValue); + } + } + + return ( + + + {component.label || component.name}: + + + + ); + })} + + + )} + + + + + ); + })} + + + + ); + })} + + {Object.keys(standardsByCategory).length === 0 && ( + + + No standards configured for this tenant + + + Standards templates may not be applied to this tenant or no standards are currently + active. + + + )} + + + + + + + ); +}; diff --git a/src/components/CippCards/CippUniversalSearch.jsx b/src/components/CippCards/CippUniversalSearch.jsx index ccba59600fc0..589ac2c117bf 100644 --- a/src/components/CippCards/CippUniversalSearch.jsx +++ b/src/components/CippCards/CippUniversalSearch.jsx @@ -34,33 +34,28 @@ export const CippUniversalSearch = React.forwardRef( }; return ( - - - - - + + - {search.isFetching && ( - - - - )} - {search.isSuccess && search?.data?.length > 0 ? ( - - ) : ( - search.isSuccess && "No results found." - )} + {search.isFetching && ( + + - - + )} + {search.isSuccess && search?.data?.length > 0 ? ( + + ) : ( + search.isSuccess && "No results found." + )} + ); } ); @@ -97,7 +92,7 @@ const Results = ({ items = [], searchValue }) => { {displayedResults.map((item, key) => ( - + ))} diff --git a/src/components/CippCards/CippUniversalSearchV2.jsx b/src/components/CippCards/CippUniversalSearchV2.jsx new file mode 100644 index 000000000000..0f0d6e88ad8b --- /dev/null +++ b/src/components/CippCards/CippUniversalSearchV2.jsx @@ -0,0 +1,467 @@ +import React, { useState, useRef, useEffect } from "react"; +import { + TextField, + Box, + Typography, + Skeleton, + MenuItem, + ListItemText, + Paper, + CircularProgress, + InputAdornment, + Portal, + Button, +} from "@mui/material"; +import { Search as SearchIcon } from "@mui/icons-material"; +import { ApiGetCall } from "../../api/ApiCall"; +import { useRouter } from "next/router"; +import { BulkActionsMenu } from "../bulk-actions-menu"; +import { CippOffCanvas } from "../CippComponents/CippOffCanvas"; +import { CippBitlockerKeySearch } from "../CippComponents/CippBitlockerKeySearch"; + +export const CippUniversalSearchV2 = React.forwardRef( + ({ onConfirm = () => {}, onChange = () => {}, maxResults = 10, value = "" }, ref) => { + const [searchValue, setSearchValue] = useState(value); + const [searchType, setSearchType] = useState("Users"); + const [bitlockerLookupType, setBitlockerLookupType] = useState("keyId"); + const [showDropdown, setShowDropdown] = useState(false); + const [bitlockerDrawerVisible, setBitlockerDrawerVisible] = useState(false); + const [bitlockerDrawerDefaults, setBitlockerDrawerDefaults] = useState({ + searchTerm: "", + searchType: "keyId", + }); + const [dropdownPosition, setDropdownPosition] = useState({ top: 0, left: 0, width: 0 }); + const containerRef = useRef(null); + const textFieldRef = useRef(null); + const router = useRouter(); + + const universalSearch = ApiGetCall({ + url: `/api/ExecUniversalSearchV2`, + data: { + searchTerms: searchValue, + limit: maxResults, + type: searchType, + }, + queryKey: `searchV2-${searchType}-${searchValue}`, + waiting: false, + }); + + const bitlockerSearch = ApiGetCall({ + url: "/api/ExecBitlockerSearch", + data: { + [bitlockerLookupType]: searchValue, + }, + queryKey: `bitlocker-universal-${bitlockerLookupType}-${searchValue}`, + waiting: false, + }); + + const activeSearch = searchType === "BitLocker" ? bitlockerSearch : universalSearch; + + const handleChange = (event) => { + const newValue = event.target.value; + setSearchValue(newValue); + onChange(newValue); + + if (newValue.length === 0) { + setShowDropdown(false); + } + }; + + const updateDropdownPosition = () => { + if (textFieldRef.current) { + const rect = textFieldRef.current.getBoundingClientRect(); + setDropdownPosition({ + top: rect.bottom + window.scrollY + 4, + left: rect.left + window.scrollX, + width: rect.width, + }); + } + }; + + const handleKeyDown = (event) => { + if (event.key === "Enter" && searchValue.length > 0) { + handleSearch(); + } + }; + + const handleSearch = () => { + if (searchValue.length > 0) { + updateDropdownPosition(); + activeSearch.refetch(); + setShowDropdown(true); + } + }; + + const handleResultClick = (match) => { + const itemData = match.Data || {}; + const tenantDomain = match.Tenant || ""; + if (searchType === "Users") { + router.push( + `/identity/administration/users/user?tenantFilter=${tenantDomain}&userId=${itemData.id}`, + ); + } else if (searchType === "Groups") { + router.push( + `/identity/administration/groups/group?groupId=${itemData.id}&tenantFilter=${tenantDomain}`, + ); + } + setShowDropdown(false); + }; + + const handleTypeChange = (type) => { + setSearchType(type); + if (type === "BitLocker") { + setBitlockerLookupType("keyId"); + } + setShowDropdown(false); + }; + + const handleBitlockerResultClick = (match) => { + setBitlockerDrawerDefaults({ + searchTerm: + bitlockerLookupType === "deviceId" + ? match?.deviceId || searchValue + : match?.keyId || searchValue, + searchType: bitlockerLookupType, + }); + setBitlockerDrawerVisible(true); + setShowDropdown(false); + }; + + const typeMenuActions = [ + { + label: "Users", + icon: "UsersIcon", + onClick: () => handleTypeChange("Users"), + }, + { + label: "Groups", + icon: "Group", + onClick: () => handleTypeChange("Groups"), + }, + { + label: "BitLocker", + icon: "FilePresent", + onClick: () => handleTypeChange("BitLocker"), + }, + ]; + + const bitlockerLookupActions = [ + { + label: "Key ID", + icon: "FilePresent", + onClick: () => setBitlockerLookupType("keyId"), + }, + { + label: "Device ID", + icon: "Laptop", + onClick: () => setBitlockerLookupType("deviceId"), + }, + ]; + + // Close dropdown when clicking outside + useEffect(() => { + const handleClickOutside = (event) => { + if ( + containerRef.current && + !containerRef.current.contains(event.target) && + !event.target.closest("[data-dropdown-portal]") + ) { + setShowDropdown(false); + } + }; + + if (showDropdown) { + document.addEventListener("mousedown", handleClickOutside); + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + } + }, [showDropdown]); + + // Update position on scroll/resize + useEffect(() => { + if (showDropdown) { + updateDropdownPosition(); + const handleScroll = () => updateDropdownPosition(); + const handleResize = () => updateDropdownPosition(); + window.addEventListener("scroll", handleScroll, true); + window.addEventListener("resize", handleResize); + return () => { + window.removeEventListener("scroll", handleScroll, true); + window.removeEventListener("resize", handleResize); + }; + } + }, [showDropdown]); + + const bitlockerResults = Array.isArray(bitlockerSearch?.data?.Results) + ? bitlockerSearch.data.Results + : []; + const universalResults = Array.isArray(universalSearch?.data) ? universalSearch.data : []; + const hasResults = + searchType === "BitLocker" ? bitlockerResults.length > 0 : universalResults.length > 0; + const shouldShowDropdown = showDropdown && searchValue.length > 0; + + const getLabel = () => { + if (searchType === "Users") { + return "Search users by UPN or Display Name"; + } else if (searchType === "Groups") { + return "Search groups by Display Name"; + } else if (searchType === "BitLocker") { + return bitlockerLookupType === "deviceId" + ? "Search BitLocker by Device ID" + : "Search BitLocker by Recovery Key ID"; + } + return "Search"; + }; + + return ( + <> + + + {searchType === "BitLocker" && ( + + )} + { + textFieldRef.current = node; + if (typeof ref === "function") { + ref(node); + } else if (ref) { + ref.current = node; + } + }} + fullWidth + type="text" + label={getLabel()} + onKeyDown={handleKeyDown} + onChange={handleChange} + value={searchValue} + InputProps={{ + startAdornment: ( + + + + ), + endAdornment: activeSearch.isFetching ? ( + + + + ) : null, + sx: { + "& .MuiInputAdornment-root": { + marginTop: "0 !important", + alignSelf: "center", + }, + }, + }} + /> + + + + {shouldShowDropdown && ( + + + {activeSearch.isFetching ? ( + + + + + ) : hasResults ? ( + searchType === "BitLocker" ? ( + + ) : ( + + ) + ) : ( + + + No results found. + + + )} + + + )} + + setBitlockerDrawerVisible(false)} + size="xl" + contentPadding={0} + > + + + + ); + }, +); + +CippUniversalSearchV2.displayName = "CippUniversalSearchV2"; + +const Results = ({ items = [], searchValue, onResultClick, searchType = "Users" }) => { + const highlightMatch = (text) => { + if (!text || !searchValue) return text; + const escapedSearch = searchValue.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + const parts = text?.split(new RegExp(`(${escapedSearch})`, "gi")); + return parts?.map((part, index) => + part.toLowerCase() === searchValue.toLowerCase() ? ( + + {part} + + ) : ( + part + ), + ); + }; + + return ( + <> + {items.map((match, index) => { + const itemData = match.Data || {}; + const tenantDomain = match.Tenant || ""; + + return ( + onResultClick(match)} + sx={{ + py: 1.5, + px: 2, + borderBottom: index < items.length - 1 ? "1px solid" : "none", + borderColor: "divider", + "&:hover": { + backgroundColor: "action.hover", + }, + }} + > + + {highlightMatch(itemData.displayName || "")} + + } + secondary={ + + {searchType === "Users" && ( + + {highlightMatch(itemData.userPrincipalName || "")} + + )} + {searchType === "Groups" && ( + <> + {itemData.mail && ( + + {highlightMatch(itemData.mail || "")} + + )} + {itemData.description && ( + + {highlightMatch(itemData.description || "")} + + )} + + )} + + Tenant: {tenantDomain} + + + } + /> + + ); + })} + + ); +}; + +const BitlockerResults = ({ items = [], onResultClick }) => { + return ( + <> + {items.map((result, index) => ( + onResultClick(result)} + sx={{ + py: 1.5, + px: 2, + borderBottom: index < items.length - 1 ? "1px solid" : "none", + borderColor: "divider", + "&:hover": { + backgroundColor: "action.hover", + }, + }} + > + + {result.deviceName || "Unknown Device"} + + } + secondary={ + + + Key ID: {result.keyId || "N/A"} + + + Device ID: {result.deviceId || "N/A"} + + + Tenant: {result.tenant || "N/A"} + + + } + /> + + ))} + + ); +}; diff --git a/src/components/CippCards/CippUserInfoCard.jsx b/src/components/CippCards/CippUserInfoCard.jsx index 97e6917e9126..6814a6e32790 100644 --- a/src/components/CippCards/CippUserInfoCard.jsx +++ b/src/components/CippCards/CippUserInfoCard.jsx @@ -1,163 +1,440 @@ import PropTypes from "prop-types"; -import { Avatar, Card, CardHeader, Divider, Skeleton, Stack } from "@mui/material"; -import { PropertyList } from "/src/components/property-list"; -import { PropertyListItem } from "/src/components/property-list-item"; +import { + Avatar, + Card, + CardHeader, + Divider, + Skeleton, + Typography, + Alert, + IconButton, + Tooltip, + CircularProgress, +} from "@mui/material"; +import { AccountCircle, PhotoCamera, Delete } from "@mui/icons-material"; +import { PropertyList } from "../property-list"; +import { PropertyListItem } from "../property-list-item"; import { getCippFormatting } from "../../utils/get-cipp-formatting"; +import { Stack, Grid, Box } from "@mui/system"; +import { useState, useRef, useCallback } from "react"; +import { ApiPostCall } from "../../api/ApiCall"; +import { useLicenseBackfill } from "../../hooks/use-license-backfill"; export const CippUserInfoCard = (props) => { const { user, tenant, isFetching = false, ...other } = props; + const [photoTimestamp, setPhotoTimestamp] = useState(Date.now()); + const [uploadError, setUploadError] = useState(null); + const [successMessage, setSuccessMessage] = useState(null); + const fileInputRef = useRef(null); + + // Hook to trigger re-render when license backfill completes + const { updateTrigger } = useLicenseBackfill(); + + // API mutations + const setPhotoMutation = ApiPostCall({ urlFromData: true }); + const removePhotoMutation = ApiPostCall({ urlFromData: true }); + + // Helper function to check if a section has any data + const hasWorkInfo = + user?.jobTitle || user?.department || user?.manager?.displayName || user?.companyName; + const hasAddressInfo = + user?.streetAddress || user?.postalCode || user?.city || user?.country || user?.officeLocation; + const hasContactInfo = + user?.mobilePhone || (user?.businessPhones && user?.businessPhones.length > 0); + + // Handle image URL with timestamp for cache busting + const imageUrl = + user?.id && tenant + ? `/api/ListUserPhoto?TenantFilter=${tenant}&UserId=${user.id}&t=${photoTimestamp}` + : undefined; + + const handleFileSelect = async (event) => { + const file = event.target.files[0]; + setUploadError(null); + setSuccessMessage(null); + + if (!file) return; + + // Validate file type + const validTypes = ["image/jpeg", "image/jpg", "image/png"]; + if (!validTypes.includes(file.type)) { + setUploadError("Please select a valid image file (JPEG or PNG)"); + return; + } + + // Validate file size (4MB max) + const maxSize = 4 * 1024 * 1024; + if (file.size > maxSize) { + setUploadError( + `File size exceeds 4MB limit. Current size: ${(file.size / (1024 * 1024)).toFixed(2)}MB` + ); + return; + } + + // Convert to base64 and upload + const reader = new FileReader(); + reader.onloadend = async () => { + try { + await setPhotoMutation.mutateAsync({ + url: "/api/ExecSetUserPhoto", + data: { + userId: user.id, + tenantFilter: tenant, + action: "set", + photoData: reader.result, + }, + }); + setPhotoTimestamp(Date.now()); + setSuccessMessage("Profile picture updated successfully!"); + setTimeout(() => setSuccessMessage(null), 3000); + } catch (error) { + setUploadError(error.message || "Failed to upload photo"); + } + }; + reader.onerror = () => { + setUploadError("Failed to read file"); + }; + reader.readAsDataURL(file); + + // Clear the input + if (fileInputRef.current) { + fileInputRef.current.value = ""; + } + }; + + const handleRemovePhoto = async () => { + setUploadError(null); + setSuccessMessage(null); + + try { + await removePhotoMutation.mutateAsync({ + url: "/api/ExecSetUserPhoto", + data: { + userId: user.id, + tenantFilter: tenant, + action: "remove", + }, + }); + setPhotoTimestamp(Date.now()); + setSuccessMessage("Profile picture removed successfully!"); + setTimeout(() => setSuccessMessage(null), 3000); + } catch (error) { + setUploadError(error.message || "Failed to remove photo"); + } + }; + + const isLoading = setPhotoMutation.isPending || removePhotoMutation.isPending; return ( - - {isFetching ? ( - - ) : ( - - {user?.displayName?.[0] + user?.surname?.[0] || ""} - - )} - - - ) : ( - getCippFormatting(user?.accountEnabled, "accountEnabled") - ) - } - /> - - ) : ( - getCippFormatting(user?.onPremisesSyncEnabled, "onPremisesSyncEnabled") - ) - } - /> + ) : ( - getCippFormatting(user?.displayName, "displayName") + + {/* Avatar section */} + + + + + + + {isLoading && ( + + )} + + {/* Photo management buttons */} + + + + fileInputRef.current?.click()} + disabled={isLoading} + sx={{ + backgroundColor: "action.hover", + "&:hover": { backgroundColor: "action.selected" }, + }} + > + + + + + + + + + + {/* Status messages */} + {successMessage && ( + + {successMessage} + + )} + {uploadError && ( + + {uploadError} + + )} + + + + {/* Status information section */} + + + + + Account Enabled: + + + {getCippFormatting(user?.accountEnabled, "accountEnabled")} + + + + + + Synced from AD: + + + {getCippFormatting(user?.onPremisesSyncEnabled, "onPremisesSyncEnabled")} + + + + + ) } /> + + {/* Basic Identity Information */} + ) : ( - getCippFormatting(user?.userPrincipalName, "userPrincipalName") + + + + Display Name: + + + {getCippFormatting(user?.displayName, "displayName") || "N/A"} + + + + + Email Address: + + + {getCippFormatting(user?.proxyAddresses, "proxyAddresses") || "N/A"} + + + + + User Principal Name: + + + {getCippFormatting(user?.userPrincipalName, "userPrincipalName") || "N/A"} + + + ) } /> + + {/* Licenses */} + ) : !user?.assignedLicenses || user?.assignedLicenses.length === 0 ? ( + + No licenses assigned to this user + ) : ( getCippFormatting(user?.assignedLicenses, "assignedLicenses") ) } /> + + {/* Work Information Section */} : user?.id || "N/A"} - /> - + + ) : !hasWorkInfo ? ( + + No work information available + ) : ( - getCippFormatting(user?.proxyAddresses, "proxyAddresses") + + {user?.jobTitle && ( + + + Job Title: + + {user.jobTitle} + + )} + {user?.companyName && ( + + + Company Name: + + {user.companyName} + + )} + {user?.department && ( + + + Department: + + {user.department} + + )} + {user?.manager?.displayName && ( + + + Manager: + + {user.manager.displayName} + + )} + ) } /> - : user?.jobTitle || "N/A"} - /> - : user?.department || "N/A"} - /> - : user?.manager?.displayName || "N/A"} - /> - : user?.streetAddress || "N/A" - } - /> - : user?.postalCode || "N/A"} - /> - : user?.city || "N/A"} - /> - : user?.country || "N/A"} - /> + + {/* Contact Information Section */} : user?.officeLocation || "N/A" + isFetching ? ( + + ) : !hasContactInfo ? ( + + No contact information available + + ) : ( + + {user?.mobilePhone && ( + + + Mobile Phone: + + {user.mobilePhone} + + )} + {user?.businessPhones && user.businessPhones.length > 0 && ( + + + Business Phones: + + {user.businessPhones.join(", ")} + + )} + + ) } /> + + {/* Address Information Section */} : user?.mobilePhone || "N/A"} - /> - + + ) : !hasAddressInfo ? ( + + No address information available + ) : ( - user?.businessPhones?.join(", ") || "N/A" + + {user?.streetAddress && ( + + + Street Address: + + {user.streetAddress} + + )} + {user?.city && ( + + + City: + + {user.city} + + )} + {user?.postalCode && ( + + + Postal Code: + + {user.postalCode} + + )} + {user?.country && ( + + + Country: + + {user.country} + + )} + {user?.officeLocation && ( + + + Office Location: + + {user.officeLocation} + + )} + ) } /> @@ -168,5 +445,6 @@ export const CippUserInfoCard = (props) => { CippUserInfoCard.propTypes = { user: PropTypes.object, + tenant: PropTypes.string, isFetching: PropTypes.bool, }; diff --git a/src/components/CippComponents/AppApprovalTemplateForm.jsx b/src/components/CippComponents/AppApprovalTemplateForm.jsx index 4efe18a1ecbb..e58add0e6945 100644 --- a/src/components/CippComponents/AppApprovalTemplateForm.jsx +++ b/src/components/CippComponents/AppApprovalTemplateForm.jsx @@ -1,10 +1,12 @@ -import React, { useState, useEffect } from "react"; -import { Alert, Skeleton, Stack, Typography, Button, Box } from "@mui/material"; -import { ApiGetCall } from "/src/api/ApiCall"; +import { useState, useEffect, use } from "react"; +import { Alert, Skeleton, Stack, Typography, Button, Box, Link } from "@mui/material"; import { CippFormComponent } from "./CippFormComponent"; +import { CippFormCondition } from "./CippFormCondition"; import { CippApiResults } from "./CippApiResults"; import { Grid } from "@mui/system"; import CippPermissionPreview from "./CippPermissionPreview"; +import { useWatch } from "react-hook-form"; +import { CippPermissionSetDrawer } from "./CippPermissionSetDrawer"; const AppApprovalTemplateForm = ({ formControl, @@ -15,12 +17,39 @@ const AppApprovalTemplateForm = ({ updatePermissions, onSubmit, refetchKey, + hideSubmitButton = false, // New prop to hide the submit button when used in a drawer }) => { const [selectedPermissionSet, setSelectedPermissionSet] = useState(null); const [permissionsLoaded, setPermissionsLoaded] = useState(false); + const [permissionSetDrawerVisible, setPermissionSetDrawerVisible] = useState(false); + + // Watch for app type selection changes + const selectedAppType = useWatch({ + control: formControl?.control, + name: "appType", + defaultValue: "EnterpriseApp", + }); + const selectedGalleryTemplate = useWatch({ + control: formControl?.control, + name: "galleryTemplateId", + }); + + // Watch for application manifest changes + const selectedApplicationManifest = useWatch({ + control: formControl?.control, + name: "applicationManifest", + }); + + // Watch for app selection changes to update template name + const selectedApp = useWatch({ + control: formControl?.control, + name: "appId", + }); // When templateData changes, update the form useEffect(() => { + if (!formControl) return; // Early return if formControl is not available + if (!isEditing && !isCopy) { formControl.setValue("templateName", "New App Deployment Template"); formControl.setValue("appType", "EnterpriseApp"); @@ -30,75 +59,161 @@ const AppApprovalTemplateForm = ({ if (templateData[0]) { const copyName = `Copy of ${templateData[0].TemplateName}`; formControl.setValue("templateName", copyName); - formControl.setValue("appId", { - label: `${templateData[0].AppName || "Unknown"} (${templateData[0].AppId})`, - value: templateData[0].AppId, - addedFields: { - displayName: templateData[0].AppName, - }, - }); - // Set permission set and trigger loading of permissions - const permissionSetValue = { - label: templateData[0].PermissionSetName || "Custom Permissions", - value: templateData[0].PermissionSetId, - addedFields: { - Permissions: templateData[0].Permissions || {}, - }, - }; - - formControl.setValue("permissionSetId", permissionSetValue); - setSelectedPermissionSet(permissionSetValue); - setPermissionsLoaded(true); + // Set app type based on whether it's a gallery template, defaulting to EnterpriseApp for backward compatibility + const appType = + templateData[0].AppType || + (templateData[0].GalleryTemplateId + ? "GalleryTemplate" + : templateData[0].ApplicationManifest + ? "ApplicationManifest" + : "EnterpriseApp"); + formControl.setValue("appType", appType); + + if (appType === "GalleryTemplate") { + formControl.setValue("galleryTemplateId", { + label: templateData[0].AppName || "Unknown", + value: templateData[0].GalleryTemplateId, + addedFields: { + displayName: templateData[0].AppName, + applicationId: templateData[0].AppId, + // Include saved gallery information for proper display + ...(templateData[0].GalleryInformation || {}), + }, + }); + } else if (appType === "ApplicationManifest") { + // For Application Manifest, load the manifest JSON + if (templateData[0].ApplicationManifest) { + formControl.setValue( + "applicationManifest", + JSON.stringify(templateData[0].ApplicationManifest, null, 2) + ); + } + } else { + formControl.setValue("appId", { + label: `${templateData[0].AppName || "Unknown"} (${templateData[0].AppId})`, + value: templateData[0].AppId, + addedFields: { + displayName: templateData[0].AppName, + }, + }); + } + + // Set permission set and trigger loading of permissions (only for Enterprise Apps) + if (appType === "EnterpriseApp") { + const permissionSetValue = { + label: templateData[0].PermissionSetName || "Custom Permissions", + value: templateData[0].PermissionSetId, + addedFields: { + Permissions: templateData[0].Permissions || {}, + }, + }; + + formControl.setValue("permissionSetId", permissionSetValue); + setSelectedPermissionSet(permissionSetValue); + setPermissionsLoaded(true); + } else { + // For Gallery Templates, no permission set needed + setSelectedPermissionSet(null); + setPermissionsLoaded(false); + } } } else if (templateData) { // For editing, load all template data if (templateData[0]) { formControl.setValue("templateName", templateData[0].TemplateName); - formControl.setValue("appId", { - label: `${templateData[0].AppName || "Unknown"} (${templateData[0].AppId})`, - value: templateData[0].AppId, - addedFields: { - displayName: templateData[0].AppName, - }, - }); - // Set permission set and trigger loading of permissions - const permissionSetValue = { - label: templateData[0].PermissionSetName || "Custom Permissions", - value: templateData[0].PermissionSetId, - addedFields: { - Permissions: templateData[0].Permissions || {}, - }, - }; - - formControl.setValue("permissionSetId", permissionSetValue); - setSelectedPermissionSet(permissionSetValue); - setPermissionsLoaded(true); + // Set app type based on whether it's a gallery template, defaulting to EnterpriseApp for backward compatibility + const appType = + templateData[0].AppType || + (templateData[0].GalleryTemplateId + ? "GalleryTemplate" + : templateData[0].ApplicationManifest + ? "ApplicationManifest" + : "EnterpriseApp"); + formControl.setValue("appType", appType); + + if (appType === "GalleryTemplate") { + formControl.setValue("galleryTemplateId", { + label: templateData[0].AppName || "Unknown", + value: templateData[0].GalleryTemplateId, + addedFields: { + displayName: templateData[0].AppName, + applicationId: templateData[0].AppId, + // Include saved gallery information for proper display + ...(templateData[0].GalleryInformation || {}), + }, + }); + } else if (appType === "ApplicationManifest") { + // For Application Manifest, load the manifest JSON + if (templateData[0].ApplicationManifest) { + formControl.setValue( + "applicationManifest", + JSON.stringify(templateData[0].ApplicationManifest, null, 2) + ); + } + } else { + formControl.setValue("appId", { + label: `${templateData[0].AppName || "Unknown"} (${templateData[0].AppId})`, + value: templateData[0].AppId, + addedFields: { + displayName: templateData[0].AppName, + }, + }); + } + + // Set permission set and trigger loading of permissions (only for Enterprise Apps) + if (appType === "EnterpriseApp") { + const permissionSetValue = { + label: templateData[0].PermissionSetName || "Custom Permissions", + value: templateData[0].PermissionSetId, + addedFields: { + Permissions: templateData[0].Permissions || {}, + }, + }; + + formControl.setValue("permissionSetId", permissionSetValue); + setSelectedPermissionSet(permissionSetValue); + setPermissionsLoaded(true); + } else { + // For Gallery Templates and Application Manifests, no permission set needed + setSelectedPermissionSet(null); + setPermissionsLoaded(false); + } } } }, [templateData, isCopy, isEditing, formControl]); - // Watch for app selection changes to update template name - const selectedApp = formControl.watch("appId"); - useEffect(() => { + if (!formControl) return; // Early return if formControl is not available + // Update template name when app is selected if we're in add mode and name hasn't been manually changed - if (selectedApp && !isEditing && !isCopy) { + if (!isEditing && !isCopy) { const currentName = formControl.getValues("templateName"); // Only update if it's still the default or empty if (currentName === "New App Deployment Template" || !currentName) { - // Extract app name from the label (format is usually "AppName (AppId)") - const appName = selectedApp.label.split(" (")[0]; + let appName = null; + + if (selectedAppType === "GalleryTemplate" && selectedGalleryTemplate) { + appName = + selectedGalleryTemplate.addedFields?.displayName || selectedGalleryTemplate.label; + } else if (selectedAppType === "EnterpriseApp" && selectedApp) { + // Extract app name from the label (format is usually "AppName (AppId)") + appName = selectedApp.label.split(" (")[0]; + } + if (appName) { formControl.setValue("templateName", `${appName} Template`); } } } - }, [selectedApp, isEditing, isCopy, formControl]); + }, [selectedApp, selectedGalleryTemplate, selectedAppType, isEditing, isCopy, formControl]); // Watch for permission set selection changes - const selectedPermissionSetValue = formControl.watch("permissionSetId"); + const selectedPermissionSetValue = useWatch({ + control: formControl?.control, + name: "permissionSetId", + }); useEffect(() => { if (selectedPermissionSetValue?.value) { @@ -123,19 +238,69 @@ const AppApprovalTemplateForm = ({ // Handle form submission const handleSubmit = (data) => { - const appDisplayName = - data.appId?.addedFields?.displayName || - (data.appId?.label ? data.appId.label.split(" (")[0] : undefined); + let appDisplayName, appId, galleryTemplateId, applicationManifest; + + if (data.appType === "GalleryTemplate") { + appDisplayName = + data.galleryTemplateId?.addedFields?.displayName || data.galleryTemplateId?.label; + appId = data.galleryTemplateId?.addedFields?.applicationId; + galleryTemplateId = data.galleryTemplateId?.value; + } else if (data.appType === "ApplicationManifest") { + try { + applicationManifest = JSON.parse(data.applicationManifest); + + // Validate signInAudience - only allow null/undefined or "AzureADMyOrg" + if ( + applicationManifest.signInAudience && + applicationManifest.signInAudience !== "AzureADMyOrg" + ) { + return; // Don't submit if validation fails + } + + // Extract app name from manifest + appDisplayName = + applicationManifest.displayName || + applicationManifest.appDisplayName || + "Custom Application"; + // Application ID will be generated during deployment for manifests + appId = null; + } catch (error) { + console.error("Failed to parse application manifest:", error); + return; // Don't submit if manifest is invalid + } + } else { + appDisplayName = + data.appId?.addedFields?.displayName || + (data.appId?.label ? data.appId.label.split(" (")[0] : undefined); + appId = data.appId?.value; + } const payload = { TemplateName: data.templateName, - AppId: data.appId?.value, + AppType: data.appType, + AppId: appId, AppName: appDisplayName, - PermissionSetId: data.permissionSetId?.value, - PermissionSetName: data.permissionSetId?.label, - Permissions: data.permissionSetId?.addedFields?.Permissions, }; + // Only include permission set data for Enterprise Apps + if (data.appType === "EnterpriseApp") { + payload.PermissionSetId = data.permissionSetId?.value; + payload.PermissionSetName = data.permissionSetId?.label; + payload.Permissions = data.permissionSetId?.addedFields?.Permissions; + } + // For Gallery Templates, permissions will be auto-handled from the template's app registration + if (data.appType === "GalleryTemplate") { + payload.Permissions = null; // No permissions needed for Gallery Templates + payload.GalleryTemplateId = galleryTemplateId; + payload.GalleryInformation = selectedGalleryTemplate?.addedFields || {}; + } + + // For Application Manifests, store the manifest data + if (data.appType === "ApplicationManifest") { + payload.Permissions = null; // Permissions defined in manifest + payload.ApplicationManifest = applicationManifest; + } + if (isEditing && !isCopy && templateData?.[0]?.TemplateId) { payload.TemplateId = templateData[0].TemplateId; } @@ -143,8 +308,11 @@ const AppApprovalTemplateForm = ({ // Store values before submission to set them back afterward const currentValues = { templateName: data.templateName, + appType: data.appType, appId: data.appId, + galleryTemplateId: data.galleryTemplateId, permissionSetId: data.permissionSetId, + applicationManifest: data.applicationManifest, }; onSubmit(payload); @@ -154,10 +322,17 @@ const AppApprovalTemplateForm = ({ if (!isEditing) { setTimeout(() => { formControl.setValue("templateName", currentValues.templateName, { shouldDirty: false }); + formControl.setValue("appType", currentValues.appType, { shouldDirty: false }); formControl.setValue("appId", currentValues.appId, { shouldDirty: false }); + formControl.setValue("galleryTemplateId", currentValues.galleryTemplateId, { + shouldDirty: false, + }); formControl.setValue("permissionSetId", currentValues.permissionSetId, { shouldDirty: false, }); + formControl.setValue("applicationManifest", currentValues.applicationManifest, { + shouldDirty: false, + }); }, 100); } }; @@ -172,10 +347,19 @@ const AppApprovalTemplateForm = ({ <> App approval templates allow you to define an application with its permissions that - can be deployed to multiple tenants. Select an application and permission set to - create a template. + can be deployed to multiple tenants. Choose from three template types: +
    +
    + โ€ข Enterprise Application: Deploy existing multi-tenant apps from + your tenant. Requires "Multiple organizations" or "Personal Microsoft accounts" in + App Registration settings. +
    + โ€ข Gallery Template: Deploy pre-configured applications from + Microsoft's Enterprise Application Gallery with standard permissions. +
    + โ€ข Application Manifest: Deploy custom applications using JSON + manifests. For security, only single-tenant apps (AzureADMyOrg) are supported.
    - - `${item.displayName} (${item.appId})`, - valueField: "appId", - addedField: { - displayName: "displayName", - }, - showRefresh: true, - }} - multiple={false} - validators={{ required: "Application is required" }} + name="appType" + label="Application Type" + type="select" + clearable={false} + options={[ + { label: "Enterprise Application", value: "EnterpriseApp" }, + { label: "Gallery Template", value: "GalleryTemplate" }, + { label: "Application Manifest", value: "ApplicationManifest" }, + ]} + creatable={false} + required={true} + validators={{ required: "Application type is required" }} /> + + `${item.displayName} (${item.appId})`, + valueField: "appId", + addedField: { + displayName: "displayName", + signInAudience: "signInAudience", + }, + dataFilter: (data) => { + return data.filter( + (item) => + item.addedFields?.signInAudience === "AzureADMultipleOrgs" || + item.addedFields?.signInAudience === "AzureADandPersonalMicrosoftAccount" + ); + }, + showRefresh: true, + }} + multiple={false} + creatable={false} + required={true} + validators={{ required: "Application is required" }} + helperText="Select a multi-tenant application to deploy in this template." + /> + + + item.displayName, + valueField: "id", + addedField: { + displayName: "displayName", + applicationId: "applicationId", + description: "description", + categories: "categories", + publisher: "publisher", + logoUrl: "logoUrl", + homePageUrl: "homePageUrl", + supportedSingleSignOnModes: "supportedSingleSignOnModes", + supportedProvisioningTypes: "supportedProvisioningTypes", + }, + showRefresh: true, + }} + multiple={false} + creatable={false} + required={true} + sortOptions={true} + validators={{ required: "Gallery template is required" }} + /> + + + { + try { + const manifest = JSON.parse(value); - + + + item.TemplateName, - valueField: "TemplateId", - addedField: { - Permissions: "Permissions", - }, - showRefresh: true, - }} - multiple={false} - validators={{ required: "Permission Set is required" }} - /> + > + item.TemplateName, + valueField: "TemplateId", + addedField: { + Permissions: "Permissions", + }, + showRefresh: true, + }} + multiple={false} + creatable={false} + required={true} + validators={{ required: "Permission Set is required" }} + helperText={ + <> + Select a permission set to apply to this application.{" "} + + + } + /> + - - - - - - + {!hideSubmitButton && ( + + + + + + + )} )}
    { + try { + return JSON.parse(selectedApplicationManifest); + } catch (e) { + return null; // Return null if JSON is invalid + } + })() + : null + } />
    diff --git a/src/components/CippComponents/AssessmentCard.jsx b/src/components/CippComponents/AssessmentCard.jsx new file mode 100644 index 000000000000..e3f02e29f080 --- /dev/null +++ b/src/components/CippComponents/AssessmentCard.jsx @@ -0,0 +1,129 @@ +import { Card, CardHeader, CardContent, Box, Typography, Skeleton } from "@mui/material"; +import { Security as SecurityIcon } from "@mui/icons-material"; +import { ResponsiveContainer, RadialBarChart, RadialBar, PolarAngleAxis } from "recharts"; +import { CippTimeAgo } from "../CippComponents/CippTimeAgo"; + +export const AssessmentCard = ({ data, isLoading }) => { + // Extract data with null safety + const identityPassed = data?.TestResultSummary?.IdentityPassed || 0; + const identityTotal = data?.TestResultSummary?.IdentityTotal || 1; + const devicesPassed = data?.TestResultSummary?.DevicesPassed || 0; + const devicesTotal = data?.TestResultSummary?.DevicesTotal || 0; + + // Determine if we should show devices section + const hasDeviceTests = devicesTotal > 0; + + // Calculate percentages for the radial chart + // If no device tests, set devices to 100% (complete) + const devicesPercentage = hasDeviceTests ? (devicesPassed / devicesTotal) * 100 : 100; + const identityPercentage = (identityPassed / identityTotal) * 100; + + const chartData = [ + { + value: devicesPercentage, + fill: "#22c55e", + }, + { + value: identityPercentage, + fill: "#3b82f6", + }, + ]; + + return ( + + + + Assessment + + } + sx={{ pb: 1.5 }} + /> + + + + + + Identity + + + {isLoading ? ( + + ) : ( + <> + {identityPassed}/{identityTotal} + + tests + + + )} + + + {hasDeviceTests && ( + + + Devices + + + {isLoading ? ( + + ) : ( + <> + {devicesPassed}/{devicesTotal} + + tests + + + )} + + + )} + + + Last Data Collection + + + {isLoading ? ( + + ) : data?.ExecutedAt ? ( + + ) : ( + "Not Available" + )} + + + + + {isLoading ? ( + + ) : ( + + + + + + + )} + + + + + ); +}; diff --git a/src/components/CippComponents/AuthMethodCard.jsx b/src/components/CippComponents/AuthMethodCard.jsx new file mode 100644 index 000000000000..97ade0f8d6c6 --- /dev/null +++ b/src/components/CippComponents/AuthMethodCard.jsx @@ -0,0 +1,242 @@ +import { Box, Card, CardHeader, CardContent, Typography, Skeleton } from "@mui/material"; +import { People as UsersIcon } from "@mui/icons-material"; +import { CippSankey } from "./CippSankey"; +import { useRouter } from "next/router"; + +export const AuthMethodCard = ({ data, isLoading }) => { + const router = useRouter(); + + const processData = () => { + if (!data || !Array.isArray(data) || data.length === 0) { + return null; + } + + const enabledUsers = data.filter((user) => user.AccountEnabled === true); + if (enabledUsers.length === 0) { + return null; + } + + const phishableMethods = ["mobilePhone", "email", "microsoftAuthenticatorPush"]; + const phishResistantMethods = ["fido2", "windowsHelloForBusiness", "x509Certificate"]; + + let singleFactor = 0; + let phishableCount = 0; + let phishResistantCount = 0; + let perUserMFA = 0; + let phoneCount = 0; + let authenticatorCount = 0; + let passkeyCount = 0; + let whfbCount = 0; + + enabledUsers.forEach((user) => { + const methods = Array.isArray(user.MFAMethods) ? user.MFAMethods : []; + const perUser = user.PerUser === "enforced" || user.PerUser === "enabled"; + const hasRegistered = user.MFARegistration === true; + + if (perUser && !hasRegistered && methods.length === 0) { + perUserMFA++; + return; + } + + if (!hasRegistered || methods.length === 0) { + singleFactor++; + return; + } + + const hasPhishResistant = methods.some((m) => phishResistantMethods.includes(m)); + const hasPhishable = methods.some((m) => phishableMethods.includes(m)); + + if (hasPhishResistant) { + phishResistantCount++; + if (methods.includes("fido2") || methods.includes("x509Certificate")) { + passkeyCount++; + } + if (methods.includes("windowsHelloForBusiness")) { + whfbCount++; + } + } else if (hasPhishable) { + phishableCount++; + if (methods.includes("mobilePhone") || methods.includes("email")) { + phoneCount++; + } + if ( + methods.includes("microsoftAuthenticatorPush") || + methods.includes("softwareOneTimePasscode") + ) { + authenticatorCount++; + } + } else { + phishableCount++; + authenticatorCount++; + } + }); + + const mfaPercentage = ( + ((phishableCount + phishResistantCount + perUserMFA) / enabledUsers.length) * + 100 + ).toFixed(1); + const phishResistantPercentage = ((phishResistantCount / enabledUsers.length) * 100).toFixed(1); + + const links = [ + { source: "Users", target: "Single factor", value: singleFactor }, + { source: "Users", target: "Multi factor", value: perUserMFA }, + { source: "Users", target: "Phishable", value: phishableCount }, + { source: "Users", target: "Phish resistant", value: phishResistantCount }, + ]; + + if (phoneCount > 0) links.push({ source: "Phishable", target: "Phone", value: phoneCount }); + if (authenticatorCount > 0) + links.push({ source: "Phishable", target: "Authenticator", value: authenticatorCount }); + + if (passkeyCount > 0) + links.push({ source: "Phish resistant", target: "Passkey", value: passkeyCount }); + if (whfbCount > 0) links.push({ source: "Phish resistant", target: "WHfB", value: whfbCount }); + + const description = `${mfaPercentage}% of enabled users have MFA configured. ${phishResistantPercentage}% use phish-resistant authentication methods.`; + + return { + nodes: [ + { id: "Users", nodeColor: "hsl(28, 100%, 53%)" }, + { id: "Single factor", nodeColor: "hsl(0, 100%, 50%)" }, + { id: "Multi factor", nodeColor: "hsl(200, 70%, 50%)" }, + { id: "Phishable", nodeColor: "hsl(39, 100%, 50%)" }, + { id: "Phone", nodeColor: "hsl(39, 100%, 45%)" }, + { id: "Authenticator", nodeColor: "hsl(39, 100%, 55%)" }, + { id: "Phish resistant", nodeColor: "hsl(99, 70%, 50%)" }, + { id: "Passkey", nodeColor: "hsl(140, 70%, 50%)" }, + { id: "WHfB", nodeColor: "hsl(160, 70%, 50%)" }, + ], + links, + description, + }; + }; + + const processedData = processData(); + + const handleNodeClick = (node) => { + let filters = []; + + switch (node.id) { + case "Users": + filters = [{ id: "AccountEnabled", value: "Yes" }]; + break; + case "Single factor": + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "No" }, + ]; + break; + case "Multi factor": + // Per-user MFA enabled/enforced + filters = [{ id: "AccountEnabled", value: "Yes" }]; + break; + case "Phishable": + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "Yes" }, + ]; + break; + case "Phish resistant": + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "Yes" }, + ]; + break; + default: + return; + } + + router.push({ + pathname: "/identity/reports/mfa-report", + query: { filters: JSON.stringify(filters) }, + }); + }; + + const handleLinkClick = (link) => { + let filters = []; + + if (link.source.id === "Users" && link.target.id === "Single factor") { + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "No" }, + ]; + } else if (link.source.id === "Users" && link.target.id === "Multi factor") { + filters = [{ id: "AccountEnabled", value: "Yes" }]; + } else if (link.source.id === "Users" && link.target.id === "Phishable") { + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "Yes" }, + ]; + } else if (link.source.id === "Users" && link.target.id === "Phish resistant") { + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "Yes" }, + ]; + } else if (link.source.id === "Phishable") { + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "Yes" }, + ]; + } else if (link.source.id === "Phish resistant") { + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "Yes" }, + ]; + } + + if (filters.length > 0) { + router.push({ + pathname: "/identity/reports/mfa-report", + query: { filters: JSON.stringify(filters) }, + }); + } + }; + + return ( + + + + All users auth methods + + } + sx={{ pb: 1 }} + /> + + + {isLoading ? ( + + ) : processedData ? ( + + ) : ( + + + No authentication method data available + + + )} + + + {!isLoading && processedData?.description && ( + + + {processedData.description} + + + )} + + ); +}; diff --git a/src/components/CippComponents/AuthMethodSankey.jsx b/src/components/CippComponents/AuthMethodSankey.jsx new file mode 100644 index 000000000000..f57c42573c52 --- /dev/null +++ b/src/components/CippComponents/AuthMethodSankey.jsx @@ -0,0 +1,159 @@ +import { CippSankey } from "./CippSankey"; + +export const AuthMethodSankey = ({ data }) => { + // Null safety checks + if (!data || !Array.isArray(data) || data.length === 0) { + return null; + } + + // Count enabled users only + const enabledUsers = data.filter((user) => user.AccountEnabled === true); + + if (enabledUsers.length === 0) { + return null; + } + + // Categorize MFA methods as phishable or phish-resistant + const phishableMethods = ["mobilePhone", "email", "microsoftAuthenticatorPush"]; + const phishResistantMethods = ["fido2", "windowsHelloForBusiness", "x509Certificate"]; + + let singleFactor = 0; + let phishableCount = 0; + let phishResistantCount = 0; + let perUserMFA = 0; + + // Breakdown of phishable methods + let phoneCount = 0; + let authenticatorCount = 0; + + // Breakdown of phish-resistant methods + let passkeyCount = 0; + let whfbCount = 0; + + enabledUsers.forEach((user) => { + const methods = user.MFAMethods || []; + const perUser = user.PerUser === "enforced" || user.PerUser === "enabled"; + const hasRegistered = user.MFARegistration === true; + + // If user has per-user MFA enforced but no specific methods, count as generic MFA + if (perUser && !hasRegistered && methods.length === 0) { + perUserMFA++; + return; + } + + // Check if user has any MFA methods + if (!hasRegistered || methods.length === 0) { + singleFactor++; + return; + } + + // Categorize by method type + const hasPhishResistant = methods.some((m) => phishResistantMethods.includes(m)); + const hasPhishable = methods.some((m) => phishableMethods.includes(m)); + + if (hasPhishResistant) { + phishResistantCount++; + // Count specific phish-resistant methods + if (methods.includes("fido2") || methods.includes("x509Certificate")) { + passkeyCount++; + } + if (methods.includes("windowsHelloForBusiness")) { + whfbCount++; + } + } else if (hasPhishable) { + phishableCount++; + // Count specific phishable methods + if (methods.includes("mobilePhone") || methods.includes("email")) { + phoneCount++; + } + if ( + methods.includes("microsoftAuthenticatorPush") || + methods.includes("softwareOneTimePasscode") + ) { + authenticatorCount++; + } + } else { + // Has MFA methods but not in our categorized lists + phishableCount++; + authenticatorCount++; + } + }); + + const mfaPercentage = ( + ((phishableCount + phishResistantCount + perUserMFA) / enabledUsers.length) * + 100 + ).toFixed(1); + const phishResistantPercentage = ((phishResistantCount / enabledUsers.length) * 100).toFixed(1); + + const links = [ + { source: "Users", target: "Single factor", value: singleFactor }, + { source: "Users", target: "Multi factor", value: perUserMFA }, + { source: "Users", target: "Phishable", value: phishableCount }, + { source: "Users", target: "Phish resistant", value: phishResistantCount }, + ]; + + // Add phishable method breakdowns + if (phoneCount > 0) links.push({ source: "Phishable", target: "Phone", value: phoneCount }); + if (authenticatorCount > 0) + links.push({ source: "Phishable", target: "Authenticator", value: authenticatorCount }); + + // Add phish-resistant method breakdowns + if (passkeyCount > 0) + links.push({ source: "Phish resistant", target: "Passkey", value: passkeyCount }); + if (whfbCount > 0) links.push({ source: "Phish resistant", target: "WHfB", value: whfbCount }); + + const description = `${mfaPercentage}% of enabled users have MFA configured. ${phishResistantPercentage}% use phish-resistant authentication methods.`; + + return ( + <> + + {description && ( +
    + {description} +
    + )} + + ); +}; diff --git a/src/components/CippComponents/BPASyncDialog.jsx b/src/components/CippComponents/BPASyncDialog.jsx index 014e033747e6..3add79b46f54 100644 --- a/src/components/CippComponents/BPASyncDialog.jsx +++ b/src/components/CippComponents/BPASyncDialog.jsx @@ -1,17 +1,15 @@ -import React, { useState } from "react"; +import { useState } from "react"; import { Dialog, DialogContent, DialogTitle, Button, DialogActions, - Alert, - CircularProgress, } from "@mui/material"; -import { CheckCircle, Error, Sync } from "@mui/icons-material"; +import { Sync } from "@mui/icons-material"; import { useForm, FormProvider } from "react-hook-form"; import { CippFormTenantSelector } from "./CippFormTenantSelector"; -import { ApiPostCall } from "/src/api/ApiCall"; +import { ApiPostCall } from "../../api/ApiCall"; import { CippApiResults } from "./CippApiResults"; export const BPASyncDialog = ({ createDialog }) => { diff --git a/src/components/CippComponents/BreachSearchDialog.jsx b/src/components/CippComponents/BreachSearchDialog.jsx new file mode 100644 index 000000000000..8a69cd40206c --- /dev/null +++ b/src/components/CippComponents/BreachSearchDialog.jsx @@ -0,0 +1,67 @@ +import { useState } from "react"; +import { Dialog, DialogContent, DialogTitle, Button, DialogActions } from "@mui/material"; +import { Search } from "@mui/icons-material"; +import { useForm, FormProvider } from "react-hook-form"; +import { ApiPostCall } from "../../api/ApiCall"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; + +export const BreachSearchDialog = ({ createDialog }) => { + const tenantFilter = useSettings()?.currentTenant; + const methods = useForm({ + defaultValues: {}, + }); + + // Use methods for form handling and control + const { handleSubmit } = methods; + + const [isRunning, setIsRunning] = useState(false); + const breachSearchResults = ApiPostCall({ + urlFromData: true, + }); + + const handleForm = () => { + setIsRunning(true); + breachSearchResults.mutate({ + url: "/api/ExecBreachSearch", + queryKey: `breach-search-${tenantFilter}`, + data: { tenantFilter: tenantFilter }, + }); + }; + + // Reset running state when dialog is closed + const handleClose = () => { + setIsRunning(false); + createDialog.handleClose(); + }; + + return ( + + +
    + Run Breach Search + +
    +

    + This will run a breach search to check for potentially compromised passwords and information + for the current tenant: {tenantFilter?.displayName || tenantFilter} +

    +
    + +
    + + + + +
    +
    +
    + ); +}; \ No newline at end of file diff --git a/src/components/CippComponents/CIPPDeviceCodeButton.js b/src/components/CippComponents/CIPPDeviceCodeButton.js index e262b69c7912..16711f8d1332 100644 --- a/src/components/CippComponents/CIPPDeviceCodeButton.js +++ b/src/components/CippComponents/CIPPDeviceCodeButton.js @@ -2,12 +2,11 @@ import { useState, useEffect } from "react"; import { Alert, Button, - Stack, Typography, CircularProgress, Box, } from "@mui/material"; -import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; +import { ApiGetCall } from "../../api/ApiCall"; /** * CIPPDeviceCodeButton - A button component for Microsoft 365 OAuth authentication using device code flow diff --git a/src/components/CippComponents/CIPPM365OAuthButton.jsx b/src/components/CippComponents/CIPPM365OAuthButton.jsx index 88e517a2139d..0818190ca1cc 100644 --- a/src/components/CippComponents/CIPPM365OAuthButton.jsx +++ b/src/components/CippComponents/CIPPM365OAuthButton.jsx @@ -1,7 +1,9 @@ import { useState, useEffect } from "react"; import { Alert, Button, Typography, CircularProgress, Box } from "@mui/material"; +import { Microsoft, Login, Refresh } from "@mui/icons-material"; import { ApiGetCall } from "../../api/ApiCall"; import { CippCopyToClipBoard } from "./CippCopyToClipboard"; +import { CippApiDialog } from "./CippApiDialog"; export const CIPPM365OAuthButton = ({ onAuthSuccess, @@ -14,12 +16,14 @@ export const CIPPM365OAuthButton = ({ applicationId = null, autoStartDeviceLogon = false, validateServiceAccount = true, + promptBeforeAuth = false, }) => { const [authInProgress, setAuthInProgress] = useState(false); const [authError, setAuthError] = useState(null); const [deviceCodeInfo, setDeviceCodeInfo] = useState(null); const [codeRetrievalInProgress, setCodeRetrievalInProgress] = useState(false); const [isServiceAccount, setIsServiceAccount] = useState(true); + const [promptDialog, setPromptDialog] = useState({ open: false }); const [tokens, setTokens] = useState({ accessToken: null, refreshToken: null, @@ -32,13 +36,10 @@ export const CIPPM365OAuthButton = ({ const appIdInfo = ApiGetCall({ url: `/api/ExecListAppId`, + queryKey: "listAppId", waiting: true, }); - useEffect(() => { - appIdInfo.refetch(); - }, []); - const handleCloseError = () => { setAuthError(null); }; @@ -55,8 +56,10 @@ export const CIPPM365OAuthButton = ({ setCodeRetrievalInProgress(true); setAuthError(null); - // Refetch appId to ensure we have the latest - await appIdInfo.refetch(); + // Only refetch appId if not already present + if (!applicationId && !appIdInfo?.data?.applicationId) { + await appIdInfo.refetch(); + } try { // Get the application ID to use @@ -66,8 +69,8 @@ export const CIPPM365OAuthButton = ({ // Request device code from our API endpoint const deviceCodeResponse = await fetch( `/api/ExecDeviceCodeLogon?operation=getDeviceCode&clientId=${appId}&scope=${encodeURIComponent( - scope - )}` + scope, + )}`, ); const deviceCodeData = await deviceCodeResponse.json(); @@ -95,8 +98,10 @@ export const CIPPM365OAuthButton = ({ // Device code authentication function - opens popup and starts polling const handleDeviceCodeAuthentication = async () => { - // Refetch appId to ensure we have the latest - await appIdInfo.refetch(); + // Only refetch appId if not already present + if (!applicationId && !appIdInfo?.data?.applicationId) { + await appIdInfo.refetch(); + } if (!deviceCodeInfo) { // If we don't have a device code yet, retrieve it first @@ -129,7 +134,7 @@ export const CIPPM365OAuthButton = ({ const popup = window.open( "https://microsoft.com/devicelogin", "deviceLoginPopup", - `width=${width},height=${height},left=${left},top=${top}` + `width=${width},height=${height},left=${left},top=${top}`, ); // Start polling for token @@ -155,7 +160,7 @@ export const CIPPM365OAuthButton = ({ try { // Poll for token using our API endpoint const tokenResponse = await fetch( - `/api/ExecDeviceCodeLogon?operation=checkToken&clientId=${appId}&deviceCode=${deviceCodeInfo.device_code}` + `/api/ExecDeviceCodeLogon?operation=checkToken&clientId=${appId}&deviceCode=${deviceCodeInfo.device_code}`, ); const tokenData = await tokenResponse.json(); @@ -263,7 +268,9 @@ export const CIPPM365OAuthButton = ({ }; // MSAL-like authentication function - const handleMsalAuthentication = async () => { + const handleMsalAuthentication = async (retryCount = 0) => { + const maxRetries = 3; + // Clear previous authentication state when starting a new authentication setAuthInProgress(true); setAuthError(null); @@ -277,10 +284,12 @@ export const CIPPM365OAuthButton = ({ onmicrosoftDomain: null, }); - // Refetch app ID info to ensure we have the latest - await appIdInfo.refetch(); + // Only refetch app ID if not already present + if (!applicationId && !appIdInfo?.data?.applicationId) { + await appIdInfo.refetch(); + } - // Get the application ID to use - now we're sure to have the latest after the await + // Get the application ID to use const appId = applicationId || appIdInfo?.data?.applicationId; // Generate MSAL-like authentication parameters @@ -327,7 +336,7 @@ export const CIPPM365OAuthButton = ({ const popup = window.open( authUrl, "msalAuthPopup", - `width=${width},height=${height},left=${left},top=${top}` + `width=${width},height=${height},left=${left},top=${top}`, ); // Function to actually exchange the authorization code for tokens @@ -356,20 +365,43 @@ export const CIPPM365OAuthButton = ({ }; // Make the token request through our API proxy to avoid origin header issues - const tokenResponse = await fetch(`/api/ExecTokenExchange`, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - tokenRequest, - tokenUrl: "https://login.microsoftonline.com/common/oauth2/v2.0/token", - tenantId: appId, // Pass the tenant ID to retrieve the correct client secret - }), - }); + // Retry logic for AADSTS650051 (service principal already exists) + let retryCount = 0; + const maxRetries = 3; + let tokenResponse; + let tokenData; + + while (retryCount <= maxRetries) { + tokenResponse = await fetch(`/api/ExecTokenExchange`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + tokenRequest, + tokenUrl: "https://login.microsoftonline.com/common/oauth2/v2.0/token", + tenantId: appId, // Pass the tenant ID to retrieve the correct client secret + }), + }); - // Parse the token response - const tokenData = await tokenResponse.json(); + // Parse the token response + tokenData = await tokenResponse.json(); + + // Check if it's the AADSTS650051 error (service principal already exists) + if ( + tokenData.error === "invalid_client" && + tokenData.error_description?.includes("AADSTS650051") + ) { + retryCount++; + if (retryCount <= maxRetries) { + // Wait before retrying (exponential backoff) + await new Promise((resolve) => setTimeout(resolve, 2000 * retryCount)); + continue; + } + } + // If no error or different error, break out of retry loop + break; + } // Check if the response contains an error if (tokenData.error) { @@ -408,6 +440,9 @@ export const CIPPM365OAuthButton = ({ if (!refreshResponse.ok) { console.warn("Failed to store refresh token, but continuing with authentication"); + } else { + // Invalidate the listAppId and tenants-table queryKeys to refresh data + appIdInfo.refetch(); } } catch (error) { console.error("Failed to store refresh token:", error); @@ -502,7 +537,27 @@ export const CIPPM365OAuthButton = ({ const errorCode = urlParams.get("error"); const errorDescription = urlParams.get("error_description"); - // Set the error state + // Check if it's the AADSTS650051 error (service principal already exists during consent) + if ( + errorCode === "invalid_client" && + errorDescription?.includes("AADSTS650051") && + retryCount < maxRetries + ) { + // Close the popup + popup.close(); + setAuthInProgress(false); + + // Wait before retrying (exponential backoff) + setTimeout( + () => { + handleMsalAuthentication(retryCount + 1); + }, + 2000 * (retryCount + 1), + ); + return; + } + + // Set the error state for non-retryable errors const error = { errorCode: errorCode, errorMessage: errorDescription || "Unknown authentication error", @@ -550,9 +605,9 @@ export const CIPPM365OAuthButton = ({
    {!applicationId && !appIdInfo.isLoading && - appIdInfo?.data && // Only check if data is available + appIdInfo?.data?.applicationId && // Only check if applicationId is present in data !/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test( - appIdInfo?.data?.applicationId + appIdInfo?.data?.applicationId, ) && ( The Application ID is not valid. Please check your configuration. @@ -653,6 +708,30 @@ export const CIPPM365OAuthButton = ({ ) : null} )} + + {promptBeforeAuth !== false && ( + setPromptDialog({ open: false }), + }} + api={{ + type: "POST", + confirmText: promptBeforeAuth, + noConfirm: false, + customFunction: () => { + setPromptDialog({ open: false }); + const authFunction = useDeviceCode + ? handleDeviceCodeAuthentication + : handleMsalAuthentication; + authFunction(); + }, + }} + fields={[]} + /> + )} +
    ); diff --git a/src/components/CippComponents/CaDeviceSankey.jsx b/src/components/CippComponents/CaDeviceSankey.jsx new file mode 100644 index 000000000000..81f49ac38acb --- /dev/null +++ b/src/components/CippComponents/CaDeviceSankey.jsx @@ -0,0 +1,33 @@ +import { CippSankey } from "./CippSankey"; + +export const CaDeviceSankey = ({ data }) => { + return ( + + ); +}; diff --git a/src/components/CippComponents/CaSankey.jsx b/src/components/CippComponents/CaSankey.jsx new file mode 100644 index 000000000000..ffad546d8738 --- /dev/null +++ b/src/components/CippComponents/CaSankey.jsx @@ -0,0 +1,41 @@ +import { CippSankey } from "./CippSankey"; + +export const CaSankey = ({ data }) => { + return ( + + ); +}; diff --git a/src/components/CippComponents/CertificateCredentialRemovalForm.jsx b/src/components/CippComponents/CertificateCredentialRemovalForm.jsx new file mode 100644 index 000000000000..9b499297ed59 --- /dev/null +++ b/src/components/CippComponents/CertificateCredentialRemovalForm.jsx @@ -0,0 +1,23 @@ +import { CippFormComponent } from "./CippFormComponent.jsx"; + +export const CertificateCredentialRemovalForm = ({ formHook, row }) => { + return ( + ({ + label: `${cred.displayName || "Unnamed"} (Expiration: ${new Date( + cred.endDateTime + ).toLocaleDateString()})`, + value: cred.keyId, + })) || [] + } + /> + ); +}; diff --git a/src/components/CippComponents/CippAddConnectorDrawer.jsx b/src/components/CippComponents/CippAddConnectorDrawer.jsx new file mode 100644 index 000000000000..e08654239b14 --- /dev/null +++ b/src/components/CippComponents/CippAddConnectorDrawer.jsx @@ -0,0 +1,166 @@ +๏ปฟimport { useState, useEffect } from "react"; +import { Button, Divider } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm, useFormState, useWatch } from "react-hook-form"; +import { RocketLaunch } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippFormTenantSelector } from "./CippFormTenantSelector"; +import { CippApiResults } from "./CippApiResults"; +import { ApiPostCall } from "../../api/ApiCall"; + +export const CippAddConnectorDrawer = ({ + buttonText = "Deploy Connector", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + selectedTenants: [], + TemplateList: null, + PowerShellCommand: "", + }, + }); + + const { isValid } = useFormState({ control: formControl.control }); + const templateListVal = useWatch({ control: formControl.control, name: "TemplateList" }); + + const addConnector = ApiPostCall({ + urlFromData: true, + }); + + // Update PowerShellCommand when template is selected + useEffect(() => { + if (templateListVal?.value) { + formControl.setValue("PowerShellCommand", JSON.stringify(templateListVal?.value)); + } + }, [templateListVal, formControl]); + + // Reset form fields on successful creation + useEffect(() => { + if (addConnector.isSuccess) { + const currentTenants = formControl.getValues("selectedTenants"); + formControl.reset({ + selectedTenants: currentTenants, + TemplateList: null, + PowerShellCommand: "", + }); + } + }, [addConnector.isSuccess, formControl]); + + const handleSubmit = () => { + formControl.trigger(); + // Check if the form is valid before proceeding + if (!isValid) { + return; + } + + const formData = formControl.getValues(); + + addConnector.mutate({ + url: "/api/AddExConnector", + data: formData, + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset({ + selectedTenants: [], + TemplateList: null, + PowerShellCommand: "", + }); + }; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + + +
    + } + > + + {/* Tenant Selector */} + + + + + + + {/* Template List */} + + option, + url: "/api/ListExconnectorTemplates", + }} + placeholder="Select a template or enter PowerShell JSON manually" + /> + + + + + {/* PowerShell Command */} + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippAddContactDrawer.jsx b/src/components/CippComponents/CippAddContactDrawer.jsx new file mode 100644 index 000000000000..f46b5b54f80e --- /dev/null +++ b/src/components/CippComponents/CippAddContactDrawer.jsx @@ -0,0 +1,321 @@ +๏ปฟimport React, { useState, useEffect } from "react"; +import { Button, Divider } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm, useFormState } from "react-hook-form"; +import { PersonAdd } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiPostCall } from "../../api/ApiCall"; + +export const CippAddContactDrawer = ({ + buttonText = "Add Contact", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const tenantDomain = useSettings().currentTenant; + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + displayName: "", + firstName: "", + lastName: "", + email: "", + hidefromGAL: false, + streetAddress: "", + postalCode: "", + city: "", + state: "", + country: "", + companyName: "", + mobilePhone: "", + businessPhone: "", + jobTitle: "", + website: "", + mailTip: "", + }, + }); + + const { isValid } = useFormState({ control: formControl.control }); + + const addContact = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: [`Contacts-${tenantDomain}`], + }); + + // Reset form fields on successful creation + useEffect(() => { + if (addContact.isSuccess) { + formControl.reset({ + displayName: "", + firstName: "", + lastName: "", + email: "", + hidefromGAL: false, + streetAddress: "", + postalCode: "", + city: "", + state: "", + country: "", + companyName: "", + mobilePhone: "", + businessPhone: "", + jobTitle: "", + website: "", + mailTip: "", + }); + } + }, [addContact.isSuccess, formControl]); + + const handleSubmit = () => { + formControl.trigger(); + // Check if the form is valid before proceeding + if (!isValid) { + return; + } + + const formData = formControl.getValues(); + const shippedValues = { + tenantID: tenantDomain, + DisplayName: formData.displayName, + hidefromGAL: formData.hidefromGAL, + email: formData.email, + FirstName: formData.firstName, + LastName: formData.lastName, + Title: formData.jobTitle, + StreetAddress: formData.streetAddress, + PostalCode: formData.postalCode, + City: formData.city, + State: formData.state, + CountryOrRegion: formData.country?.value || formData.country, + Company: formData.companyName, + mobilePhone: formData.mobilePhone, + phone: formData.businessPhone, + website: formData.website, + mailTip: formData.mailTip, + }; + + addContact.mutate({ + url: "/api/AddContact", + data: shippedValues, + relatedQueryKeys: [`Contacts-${tenantDomain}`], + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset({ + displayName: "", + firstName: "", + lastName: "", + email: "", + hidefromGAL: false, + streetAddress: "", + postalCode: "", + city: "", + state: "", + country: "", + companyName: "", + mobilePhone: "", + businessPhone: "", + jobTitle: "", + website: "", + mailTip: "", + }); + }; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + + + + } + > + + {/* Display Name */} + + + + + {/* First Name and Last Name */} + + + + + + + + + + {/* Email */} + + + + + {/* Hide from GAL */} + + + + + + + {/* Additional Contact Information */} + + + + + + + + {/* Phone Numbers */} + + + + + + + + {/* Address Information */} + + + + + + + + + + + + + + {/* Website and Mail Tip */} + + + + {/* Website and Mail Tip */} + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippAddDomainDrawer.jsx b/src/components/CippComponents/CippAddDomainDrawer.jsx new file mode 100644 index 000000000000..f5017f3fa379 --- /dev/null +++ b/src/components/CippComponents/CippAddDomainDrawer.jsx @@ -0,0 +1,121 @@ +import { useState, useEffect } from "react"; +import { Button, Box, Alert } from "@mui/material"; +import { useForm, useFormState } from "react-hook-form"; +import { AddCircleOutline } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiPostCall } from "../../api/ApiCall"; +import { Stack } from "@mui/system"; +import { CippFormComponent } from "./CippFormComponent"; + +export const CippAddDomainDrawer = ({ + buttonText = "Add Domain", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const userSettingsDefaults = useSettings(); + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + tenantFilter: userSettingsDefaults.currentTenant, + }, + }); + + const createDomain = ApiPostCall({ + datafromUrl: true, + relatedQueryKeys: [`Domains - ${userSettingsDefaults.currentTenant}`], + }); + + const { isValid, isDirty } = useFormState({ control: formControl.control }); + + useEffect(() => { + if (createDomain.isSuccess) { + formControl.reset({ + tenantFilter: userSettingsDefaults.currentTenant, + }); + } + }, [createDomain.isSuccess]); + + const handleSubmit = (values) => { + createDomain.mutate({ + url: "/api/AddDomain", + data: values, + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset({ + tenantFilter: userSettingsDefaults.currentTenant, + }); + }; + + const formFields = [ + { + type: "textField", + name: "domain", + label: "Domain Name", + placeholder: "example.com", + required: "Domain name is required", + }, + ]; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + +
    + + +
    +
    + } + > + + + Add a new domain to the current tenant. Ensure that the appropriate DNS records are + configured by checking the verification and service records after adding the domain. You + can find these in the "More info" section once the domain is added. + + + + + + ); +}; diff --git a/src/components/CippComponents/CippAddEditTenantGroups.jsx b/src/components/CippComponents/CippAddEditTenantGroups.jsx index 35696ef1fe52..4208c18eaf7c 100644 --- a/src/components/CippComponents/CippAddEditTenantGroups.jsx +++ b/src/components/CippComponents/CippAddEditTenantGroups.jsx @@ -1,53 +1,96 @@ -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { Stack, Typography } from "@mui/material"; -import CippFormSection from "/src/components/CippFormPages/CippFormSection"; +import CippFormComponent from "./CippFormComponent"; +import { Typography } from "@mui/material"; +import { Grid } from "@mui/system"; import { CippFormTenantSelector } from "./CippFormTenantSelector"; +import { CippFormCondition } from "./CippFormCondition"; +import CippTenantGroupRuleBuilder from "./CippTenantGroupRuleBuilder"; -const CippAddEditTenantGroups = ({ formControl, initialValues, title, backButtonTitle }) => { +const CippAddEditTenantGroups = ({ formControl, initialValues, title, backButtonTitle, hideSubmitButton = false }) => { return ( - { - return { - ...values, - Action: "AddEdit", - }; - }} - initialValues={initialValues} - > + <> Properties - - - - - - + + + + + + + + + {/* Group Type Selection */} + + + + + {/* Static Group Members - Show only when Static is selected */} + + + + + + + {/* Dynamic Group Rules - Show only when Dynamic is selected */} + + + + + + + ); }; diff --git a/src/components/CippComponents/CippAddEquipmentDrawer.jsx b/src/components/CippComponents/CippAddEquipmentDrawer.jsx new file mode 100644 index 000000000000..3d9a397765c6 --- /dev/null +++ b/src/components/CippComponents/CippAddEquipmentDrawer.jsx @@ -0,0 +1,151 @@ +๏ปฟimport React, { useState, useEffect } from "react"; +import { Button, Divider } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm, useFormState } from "react-hook-form"; +import { AddBusiness } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippFormDomainSelector } from "./CippFormDomainSelector"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiPostCall } from "../../api/ApiCall"; + +export const CippAddEquipmentDrawer = ({ + buttonText = "Add Equipment Mailbox", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const tenantDomain = useSettings().currentTenant; + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + displayName: "", + username: "", + domain: null, + }, + }); + + const { isValid } = useFormState({ control: formControl.control }); + + const addEquipment = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: [`EquipmentMailbox-${tenantDomain}`], + }); + + // Reset form fields on successful creation + useEffect(() => { + if (addEquipment.isSuccess) { + formControl.reset(); + } + }, [addEquipment.isSuccess, formControl]); + + const handleSubmit = () => { + formControl.trigger(); + // Check if the form is valid before proceeding + if (!isValid) { + return; + } + + const formData = formControl.getValues(); + const shippedValues = { + tenantID: tenantDomain, + domain: formData.domain?.value, + displayName: formData.displayName.trim(), + username: formData.username.trim(), + userPrincipalName: formData.username.trim() + "@" + (formData.domain?.value || "").trim(), + }; + + addEquipment.mutate({ + url: "/api/AddEquipmentMailbox", + data: shippedValues, + relatedQueryKeys: [`EquipmentMailbox-${tenantDomain}`], + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset({ + displayName: "", + username: "", + domain: null, + location: "", + department: "", + company: "", + }); + }; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + + + + } + > + + {/* Display Name */} + + + + + + + {/* Username and Domain */} + + + + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippAddRoomDrawer.jsx b/src/components/CippComponents/CippAddRoomDrawer.jsx new file mode 100644 index 000000000000..8dc5060908aa --- /dev/null +++ b/src/components/CippComponents/CippAddRoomDrawer.jsx @@ -0,0 +1,171 @@ +๏ปฟimport React, { useState, useEffect } from "react"; +import { Button, Divider } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm, useFormState } from "react-hook-form"; +import { AddHomeWork } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippFormDomainSelector } from "./CippFormDomainSelector"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiPostCall } from "../../api/ApiCall"; + +export const CippAddRoomDrawer = ({ + buttonText = "Add Room Mailbox", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const tenantDomain = useSettings().currentTenant; + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + displayName: "", + username: "", + domain: null, + resourceCapacity: "", + }, + }); + + const { isValid } = useFormState({ control: formControl.control }); + + const addRoom = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: [`RoomMailbox-${tenantDomain}`], + }); + + // Reset form fields on successful creation + useEffect(() => { + if (addRoom.isSuccess) { + formControl.reset({ + displayName: "", + username: "", + domain: null, + resourceCapacity: "", + }); + } + }, [addRoom.isSuccess, formControl]); + + const handleSubmit = () => { + formControl.trigger(); + // Check if the form is valid before proceeding + if (!isValid) { + return; + } + + const formData = formControl.getValues(); + const shippedValues = { + tenantID: tenantDomain, + domain: formData.domain?.value, + displayName: formData.displayName.trim(), + username: formData.username.trim(), + userPrincipalName: formData.username.trim() + "@" + (formData.domain?.value || "").trim(), + }; + + if (formData.resourceCapacity && formData.resourceCapacity.trim() !== "") { + shippedValues.resourceCapacity = formData.resourceCapacity.trim(); + } + + addRoom.mutate({ + url: "/api/AddRoomMailbox", + data: shippedValues, + relatedQueryKeys: [`RoomMailbox-${tenantDomain}`], + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset({ + displayName: "", + username: "", + domain: null, + resourceCapacity: "", + }); + }; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + + + + } + > + + {/* Display Name */} + + + + + + + {/* Username and Domain */} + + + + + + + + + + {/* Resource Capacity (Optional) */} + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippAddRoomListDrawer.jsx b/src/components/CippComponents/CippAddRoomListDrawer.jsx new file mode 100644 index 000000000000..6ced8947993b --- /dev/null +++ b/src/components/CippComponents/CippAddRoomListDrawer.jsx @@ -0,0 +1,159 @@ +๏ปฟimport React, { useState, useEffect } from "react"; +import { Button, InputAdornment, Divider } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm, useFormState } from "react-hook-form"; +import { ListAlt } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippFormDomainSelector } from "./CippFormDomainSelector"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiPostCall } from "../../api/ApiCall"; + +export const CippAddRoomListDrawer = ({ + buttonText = "Add Room List", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const userSettingsDefaults = useSettings(); + const tenantDomain = userSettingsDefaults.currentTenant; + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + displayName: "", + username: "", + primDomain: null, + }, + }); + + const { isValid } = useFormState({ control: formControl.control }); + + const addRoomList = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: [`RoomLists-${tenantDomain}`], + }); + + // Reset form fields on successful creation + useEffect(() => { + if (addRoomList.isSuccess) { + formControl.reset({ + displayName: "", + username: "", + primDomain: null, + }); + } + }, [addRoomList.isSuccess, formControl]); + + const handleSubmit = () => { + formControl.trigger(); + // Check if the form is valid before proceeding + if (!isValid) { + return; + } + + const formData = formControl.getValues(); + const shippedValues = { + tenantFilter: tenantDomain, + displayName: formData.displayName?.trim(), + username: formData.username?.trim(), + primDomain: formData.primDomain, + }; + + addRoomList.mutate({ + url: "/api/AddRoomList", + data: shippedValues, + relatedQueryKeys: [`RoomLists-${tenantDomain}`], + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset({ + displayName: "", + username: "", + primDomain: null, + }); + }; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + + + + } + > + + + + + + + @, + }} + /> + + + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippAddTenantAllowBlockListDrawer.jsx b/src/components/CippComponents/CippAddTenantAllowBlockListDrawer.jsx new file mode 100644 index 000000000000..182f897966aa --- /dev/null +++ b/src/components/CippComponents/CippAddTenantAllowBlockListDrawer.jsx @@ -0,0 +1,368 @@ +import { useEffect, useState } from "react"; +import { Button, Divider } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm, useFormState, useWatch } from "react-hook-form"; +import { PlaylistAdd } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippFormTenantSelector } from "./CippFormTenantSelector"; +import { CippApiResults } from "./CippApiResults"; +import { ApiPostCall } from "../../api/ApiCall"; +import { getCippValidator } from "../../utils/get-cipp-validator"; + +const defaultValues = { + tenantID: [], + entries: "", + notes: "", + listType: null, + listMethod: null, + NoExpiration: false, + RemoveAfter: false, +}; + +export const CippAddTenantAllowBlockListDrawer = ({ + buttonText = "Add Entry", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const formControl = useForm({ + mode: "onChange", + defaultValues, + }); + + const { isValid } = useFormState({ control: formControl.control }); + + const noExpiration = useWatch({ control: formControl.control, name: "NoExpiration" }); + const removeAfter = useWatch({ control: formControl.control, name: "RemoveAfter" }); + const listMethod = useWatch({ control: formControl.control, name: "listMethod" }); + const listType = useWatch({ control: formControl.control, name: "listType" }); + + const isListMethodBlock = listMethod?.value === "Block"; + const isListTypeFileHash = listType?.value === "FileHash"; + const isListTypeSenderUrlOrFileHash = ["Sender", "Url", "FileHash"].includes(listType?.value); + const isNoExpirationCompatible = + isListMethodBlock || (listMethod?.value === "Allow" && ["Url", "IP"].includes(listType?.value)); + + const addEntry = ApiPostCall({}); + + useEffect(() => { + if (noExpiration && formControl.getValues("RemoveAfter")) { + formControl.setValue("RemoveAfter", false, { shouldValidate: true }); + } + + if (removeAfter && formControl.getValues("NoExpiration")) { + formControl.setValue("NoExpiration", false, { shouldValidate: true }); + } + + if (isListMethodBlock && formControl.getValues("RemoveAfter")) { + formControl.setValue("RemoveAfter", false, { shouldValidate: true }); + } + + if (listType && !isListTypeSenderUrlOrFileHash && formControl.getValues("RemoveAfter")) { + formControl.setValue("RemoveAfter", false, { shouldValidate: true }); + } + + if (isListTypeFileHash && listMethod?.value !== "Block") { + formControl.setValue( + "listMethod", + { label: "Block", value: "Block" }, + { shouldValidate: true }, + ); + } + + if ((listMethod || listType) && noExpiration && !isNoExpirationCompatible) { + formControl.setValue("NoExpiration", false, { shouldValidate: true }); + } + }, [ + noExpiration, + removeAfter, + isListMethodBlock, + listType, + isListTypeSenderUrlOrFileHash, + isListTypeFileHash, + isNoExpirationCompatible, + listMethod, + formControl, + ]); + + const validateEntries = (value) => { + if (!value) return true; + + const entries = value + .split(/[,;]/) + .map((entry) => entry.trim()) + .filter(Boolean); + const currentListType = listType?.value; + + if (currentListType === "FileHash") { + for (const entry of entries) { + if (entry.length !== 64) return "File hash entries must be exactly 64 characters"; + + const hashResult = getCippValidator(entry, "sha256"); + if (hashResult !== true) return hashResult; + } + return true; + } + + if (currentListType === "IP") { + for (const entry of entries) { + const ipv6Result = getCippValidator(entry, "ipv6"); + const ipv6CidrResult = getCippValidator(entry, "ipv6cidr"); + + if (ipv6Result !== true && ipv6CidrResult !== true) { + return "Invalid IPv6 address format. Use colon-hexadecimal or CIDR notation"; + } + } + return true; + } + + if (currentListType === "Url") { + for (const entry of entries) { + if (entry.length > 250) { + return "URL entries must be 250 characters or less"; + } + + if (entry.includes("*") || entry.includes("~")) { + const wildcardUrlResult = getCippValidator(entry, "wildcardUrl"); + const wildcardDomainResult = getCippValidator(entry, "wildcardDomain"); + + if (wildcardUrlResult === true || wildcardDomainResult === true) { + continue; + } + + if (!/^[a-zA-Z0-9.\-*~\/]+$/.test(entry)) { + return "Invalid wildcard pattern. Use only letters, numbers, dots, hyphens, slashes, and wildcards (* or ~)"; + } + + return "Invalid wildcard format. Common formats are *.domain.com or domain.*"; + } + + const ipv4Result = getCippValidator(entry, "ip"); + const ipv4CidrResult = getCippValidator(entry, "ipv4cidr"); + const ipv6Result = getCippValidator(entry, "ipv6"); + const ipv6CidrResult = getCippValidator(entry, "ipv6cidr"); + const hostnameResult = getCippValidator(entry, "hostname"); + const urlResult = getCippValidator(entry, "url"); + + if ( + ipv4Result !== true && + ipv4CidrResult !== true && + ipv6Result !== true && + ipv6CidrResult !== true && + hostnameResult !== true && + urlResult !== true + ) { + return "Invalid URL format. Enter hostnames, IPv4, or IPv6 addresses"; + } + } + return true; + } + + if (currentListType === "Sender") { + for (const entry of entries) { + if (entry.includes("*") || entry.includes("~")) { + const wildcardDomainResult = getCippValidator(entry, "wildcardDomain"); + + if (wildcardDomainResult !== true) { + return "Invalid sender wildcard pattern. Common format is *.domain.com"; + } + continue; + } + + const senderResult = getCippValidator(entry, "senderEntry"); + if (senderResult !== true) { + return senderResult; + } + } + return true; + } + + return true; + }; + + const handleSubmit = formControl.handleSubmit((values) => { + const payload = { + tenantID: values.tenantID, + entries: values.entries, + listType: values.listType?.value, + notes: values.notes, + listMethod: values.listMethod?.value, + NoExpiration: values.NoExpiration, + RemoveAfter: values.RemoveAfter, + }; + + addEntry.mutate({ + url: "/api/AddTenantAllowBlockList", + data: payload, + }); + }); + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset(defaultValues); + }; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + + + + + } + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default CippAddTenantAllowBlockListDrawer; diff --git a/src/components/CippComponents/CippAddTenantGroupDrawer.jsx b/src/components/CippComponents/CippAddTenantGroupDrawer.jsx new file mode 100644 index 000000000000..a82e0fd3f791 --- /dev/null +++ b/src/components/CippComponents/CippAddTenantGroupDrawer.jsx @@ -0,0 +1,120 @@ +import { useState, useEffect } from "react"; +import { Button, Box } from "@mui/material"; +import { useForm, useFormState } from "react-hook-form"; +import { GroupAdd } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import { CippApiResults } from "./CippApiResults"; +import { ApiPostCall } from "../../api/ApiCall"; +import CippAddEditTenantGroups from "./CippAddEditTenantGroups"; + +export const CippAddTenantGroupDrawer = ({ + buttonText = "Add Tenant Group", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + groupType: "static", + ruleLogic: "and", + dynamicRules: [{}] + }, + }); + + const createTenantGroup = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: ["TenantGroupListPage"], + }); + + const { isValid, isDirty } = useFormState({ control: formControl.control }); + + useEffect(() => { + if (createTenantGroup.isSuccess) { + formControl.reset({ + groupType: "static", + ruleLogic: "and", + dynamicRules: [{}] + }); + } + }, [createTenantGroup.isSuccess]); + + const handleSubmit = (data) => { + const formattedData = { + ...data, + Action: "AddEdit", + }; + + // If it's a dynamic group, format the rules for the backend + if (data.groupType === "dynamic" && data.dynamicRules) { + formattedData.dynamicRules = data.dynamicRules.map(rule => ({ + property: rule.property?.value || rule.property, + operator: rule.operator?.value || rule.operator, + value: rule.value, + })); + formattedData.ruleLogic = data.ruleLogic || "and"; + } + + createTenantGroup.mutate({ + url: "/api/ExecTenantGroup", + data: formattedData, + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset({ + groupType: "static", + ruleLogic: "and", + dynamicRules: [{}] + }); + }; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + + + + } + > + + + + + + + ); +}; \ No newline at end of file diff --git a/src/components/CippComponents/CippAddTestReportDrawer.jsx b/src/components/CippComponents/CippAddTestReportDrawer.jsx new file mode 100644 index 000000000000..6ea7d84ea0bb --- /dev/null +++ b/src/components/CippComponents/CippAddTestReportDrawer.jsx @@ -0,0 +1,385 @@ +import React, { useState, useEffect } from "react"; +import { + Button, + Card, + CardContent, + TextField, + Typography, + Box, + Chip, + Tab, + Tabs, + Paper, + Stack, +} from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm, useFormState, useWatch } from "react-hook-form"; +import { Add } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippApiResults } from "./CippApiResults"; +import { ApiPostCall, ApiGetCall } from "../../api/ApiCall"; + +export const CippAddTestReportDrawer = ({ buttonText = "Create custom report" }) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const [activeTab, setActiveTab] = useState(0); + const [searchTerm, setSearchTerm] = useState(""); + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + name: "", + description: "", + IdentityTests: [], + DevicesTests: [], + }, + }); + + const { isValid } = useFormState({ control: formControl.control }); + const selectedIdentityTests = + useWatch({ control: formControl.control, name: "IdentityTests" }) || []; + const selectedDeviceTests = + useWatch({ control: formControl.control, name: "DevicesTests" }) || []; + + const createReport = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: "ListTestReports", + }); + + // Fetch available tests for the form + const availableTestsApi = ApiGetCall({ + url: "/api/ListAvailableTests", + queryKey: "ListAvailableTests", + }); + + const availableTests = availableTestsApi.data || { IdentityTests: [], DevicesTests: [] }; + + // Reset form fields on successful creation + useEffect(() => { + if (createReport.isSuccess) { + formControl.reset({ + name: "", + description: "", + IdentityTests: [], + DevicesTests: [], + }); + } + }, [createReport.isSuccess, formControl]); + + const handleSubmit = () => { + formControl.trigger(); + if (!isValid) { + return; + } + + const values = formControl.getValues(); + Object.keys(values).forEach((key) => { + if (values[key] === "" || values[key] === null) { + delete values[key]; + } + }); + + createReport.mutate({ + url: "/api/AddTestReport", + data: values, + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + setSearchTerm(""); + setActiveTab(0); + formControl.reset({ + name: "", + description: "", + IdentityTests: [], + DevicesTests: [], + }); + }; + + const toggleTest = (testId, testType) => { + const fieldName = testType === "Identity" ? "IdentityTests" : "DevicesTests"; + const currentTests = formControl.getValues(fieldName) || []; + + if (currentTests.includes(testId)) { + formControl.setValue( + fieldName, + currentTests.filter((id) => id !== testId), + { shouldValidate: true } + ); + } else { + formControl.setValue(fieldName, [...currentTests, testId], { shouldValidate: true }); + } + }; + + const isTestSelected = (testId, testType) => { + return testType === "Identity" + ? selectedIdentityTests.includes(testId) + : selectedDeviceTests.includes(testId); + }; + + const filterTests = (tests) => { + if (!searchTerm) return tests; + return tests.filter( + (test) => + test.id.toLowerCase().includes(searchTerm.toLowerCase()) || + test.name.toLowerCase().includes(searchTerm.toLowerCase()) + ); + }; + + const currentTests = + activeTab === 0 + ? filterTests(availableTests.IdentityTests || []) + : filterTests(availableTests.DevicesTests || []); + + const currentTestType = activeTab === 0 ? "Identity" : "Devices"; + + return ( + <> + + + +
    + + +
    + + } + > + + {/* Report Details Section */} + + + + Report Details + + + + + + + + + + + + + {/* Selection Summary */} + + + + + Selected Tests: + + + + + + Total: {selectedIdentityTests.length + selectedDeviceTests.length} tests + + + + + + {/* Test Selection Section */} + + + + { + setActiveTab(newValue); + setSearchTerm(""); + }} + variant="fullWidth" + > + + Identity Tests + {selectedIdentityTests.length > 0 && ( + + )} + + } + /> + + Device Tests + {selectedDeviceTests.length > 0 && ( + + )} +
    + } + /> + + + + {/* Search Bar */} + + setSearchTerm(e.target.value)} + /> + + + {/* Test List */} + + {availableTestsApi.isFetching ? ( + + Loading tests... + + ) : currentTests.length === 0 ? ( + + + {searchTerm ? "No tests found matching your search" : "No tests available"} + + + ) : ( + + {currentTests.map((test) => { + const isSelected = isTestSelected(test.id, currentTestType); + return ( + + toggleTest(test.id, currentTestType)} + > + + + + + + + {test.name} + + + {test.description && ( + + {test.description} + + )} + + + + + + ); + })} + + )} + + +
    +
    + + + ); +}; diff --git a/src/components/CippComponents/CippAddTransportRuleDrawer.jsx b/src/components/CippComponents/CippAddTransportRuleDrawer.jsx new file mode 100644 index 000000000000..b9ee583100a8 --- /dev/null +++ b/src/components/CippComponents/CippAddTransportRuleDrawer.jsx @@ -0,0 +1,166 @@ +๏ปฟimport { useState, useEffect } from "react"; +import { Button, Divider } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm, useFormState, useWatch } from "react-hook-form"; +import { RocketLaunch } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippFormTenantSelector } from "./CippFormTenantSelector"; +import { CippApiResults } from "./CippApiResults"; +import { ApiPostCall } from "../../api/ApiCall"; + +export const CippAddTransportRuleDrawer = ({ + buttonText = "Deploy Template", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + selectedTenants: [], + TemplateList: null, + PowerShellCommand: "", + }, + }); + + const { isValid } = useFormState({ control: formControl.control }); + const templateListVal = useWatch({ control: formControl.control, name: "TemplateList" }); + + const addTransportRule = ApiPostCall({ + urlFromData: true, + }); + + // Update PowerShellCommand when template is selected + useEffect(() => { + if (templateListVal?.value) { + formControl.setValue("PowerShellCommand", JSON.stringify(templateListVal?.value)); + } + }, [templateListVal, formControl]); + + // Reset form fields on successful creation + useEffect(() => { + if (addTransportRule.isSuccess) { + const currentTenants = formControl.getValues("selectedTenants"); + formControl.reset({ + selectedTenants: currentTenants, + TemplateList: null, + PowerShellCommand: "", + }); + } + }, [addTransportRule.isSuccess, formControl]); + + const handleSubmit = () => { + formControl.trigger(); + // Check if the form is valid before proceeding + if (!isValid) { + return; + } + + const formData = formControl.getValues(); + + addTransportRule.mutate({ + url: "/api/AddTransportRule", + data: formData, + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset({ + selectedTenants: [], + TemplateList: null, + PowerShellCommand: "", + }); + }; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + + + + } + > + + {/* Tenant Selector */} + + + + + + + {/* Template List */} + + option, + url: "/api/ListTransportRulesTemplates", + }} + placeholder="Select a template or enter PowerShell JSON manually" + /> + + + + + {/* PowerShell Command */} + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippAddUserDrawer.jsx b/src/components/CippComponents/CippAddUserDrawer.jsx new file mode 100644 index 000000000000..297fa91dd58f --- /dev/null +++ b/src/components/CippComponents/CippAddUserDrawer.jsx @@ -0,0 +1,177 @@ +import React, { useState, useEffect } from "react"; +import { Button, Box } from "@mui/material"; +import { useForm, useWatch, useFormState } from "react-hook-form"; +import { PersonAdd } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiPostCall } from "../../api/ApiCall"; +import CippAddEditUser from "../CippFormPages/CippAddEditUser"; +import { Stack } from "@mui/system"; + +export const CippAddUserDrawer = ({ + buttonText = "Add User", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const userSettingsDefaults = useSettings(); + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + tenantFilter: userSettingsDefaults.currentTenant, + usageLocation: userSettingsDefaults.usageLocation, + }, + }); + + const createUser = ApiPostCall({ + datafromUrl: true, + relatedQueryKeys: [`Users-${userSettingsDefaults.currentTenant}`], + }); + + const { isValid, isDirty } = useFormState({ control: formControl.control }); + + const formValues = useWatch({ control: formControl.control, name: "userProperties" }); + + useEffect(() => { + if (formValues) { + const { userPrincipalName, usageLocation, ...restFields } = formValues.addedFields || {}; + let newFields = { ...restFields }; + if (userPrincipalName) { + const [mailNickname, domainNamePart] = userPrincipalName.split("@"); + if (mailNickname) { + newFields.mailNickname = mailNickname; + } + if (domainNamePart) { + newFields.primDomain = { label: domainNamePart, value: domainNamePart }; + } + } + if (usageLocation) { + newFields.usageLocation = { label: usageLocation, value: usageLocation }; + } + newFields.tenantFilter = userSettingsDefaults.currentTenant; + + // Preserve the currently selected template when copying properties + const currentTemplate = formControl.getValues("userTemplate"); + if (currentTemplate) { + newFields.userTemplate = currentTemplate; + } + + formControl.reset(newFields); + } + }, [formValues]); + + useEffect(() => { + if (createUser.isSuccess) { + const resetValues = { + tenantFilter: userSettingsDefaults.currentTenant, + usageLocation: userSettingsDefaults.usageLocation, + }; + + // Preserve the default template if it exists + const currentTemplate = formControl.getValues("userTemplate"); + if (currentTemplate?.addedFields?.defaultForTenant) { + resetValues.userTemplate = currentTemplate; + } + + formControl.reset(resetValues); + } + }, [createUser.isSuccess]); + + const handleSubmit = async () => { + const isFormValid = await formControl.trigger(); + if (!isFormValid) { + return; + } + const values = formControl.getValues(); + Object.keys(values).forEach((key) => { + if (values[key] === "" || values[key] === null) { + delete values[key]; + } + }); + createUser.mutate({ + url: "/api/AddUser", + data: values, + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + const resetValues = { + tenantFilter: userSettingsDefaults.currentTenant, + usageLocation: userSettingsDefaults.usageLocation, + }; + + // Preserve the default template if it exists + const currentTemplate = formControl.getValues("userTemplate"); + if (currentTemplate?.addedFields?.defaultForTenant) { + resetValues.userTemplate = currentTemplate; + } + + formControl.reset(resetValues); + }; + + const handleOpenDrawer = () => { + const resetValues = { + tenantFilter: userSettingsDefaults.currentTenant, + usageLocation: userSettingsDefaults.usageLocation, + }; + + const currentTemplate = formControl.getValues("userTemplate"); + if (currentTemplate?.addedFields?.defaultForTenant) { + resetValues.userTemplate = currentTemplate; + } + + formControl.reset(resetValues); + setDrawerVisible(true); + }; + + return ( + <> + } + > + {buttonText} + + + +
    + + +
    +
    + } + > + + + + + + ); +}; diff --git a/src/components/CippComponents/CippAliasDialog.jsx b/src/components/CippComponents/CippAliasDialog.jsx index 1046a5bb1cac..7f6696054843 100644 --- a/src/components/CippComponents/CippAliasDialog.jsx +++ b/src/components/CippComponents/CippAliasDialog.jsx @@ -1,10 +1,11 @@ -import { useState, useEffect } from "react"; +import { useState, useEffect, useMemo } from "react"; import { Typography, Box, Button, TextField, Chip, Stack } from "@mui/material"; import { Add } from "@mui/icons-material"; import { useWatch } from "react-hook-form"; +import { CippFormDomainSelector } from "./CippFormDomainSelector"; const CippAliasDialog = ({ formHook }) => { - const [newAlias, setNewAlias] = useState(""); + const [aliasPrefix, setAliasPrefix] = useState(""); // Initialize the form field if it doesn't exist useEffect(() => { @@ -21,15 +22,43 @@ const CippAliasDialog = ({ formHook }) => { defaultValue: [], }); + const selectedDomain = useWatch({ + control: formHook.control, + name: "AliasDomain", + }); + const isPending = formHook.formState.isSubmitting; + const selectedDomainValue = useMemo(() => { + if (!selectedDomain) return ""; + if (Array.isArray(selectedDomain)) { + return selectedDomain[0]?.value || selectedDomain[0] || ""; + } + if (typeof selectedDomain === "object") { + return selectedDomain?.value || ""; + } + return selectedDomain; + }, [selectedDomain]); + const handleAddAlias = () => { - if (newAlias.trim()) { - const currentAliases = formHook.getValues("AddedAliases") || []; - const newList = [...currentAliases, newAlias.trim()]; - formHook.setValue("AddedAliases", newList, { shouldValidate: true }); - setNewAlias(""); + const prefix = aliasPrefix.trim(); + const domain = selectedDomainValue; + + if (!prefix || !domain) { + return; + } + + const formattedAlias = `${prefix}@${domain}`; + const currentAliases = formHook.getValues("AddedAliases") || []; + + if (currentAliases.some((alias) => alias.toLowerCase() === formattedAlias.toLowerCase())) { + setAliasPrefix(""); + return; } + + const newList = [...currentAliases, formattedAlias]; + formHook.setValue("AddedAliases", newList, { shouldValidate: true }); + setAliasPrefix(""); }; const handleDeleteAlias = (aliasToDelete) => { @@ -49,16 +78,23 @@ const CippAliasDialog = ({ formHook }) => { <> - Add proxy addresses (aliases) for this user. Enter each alias and click Add or press - Enter. + Add proxy addresses (aliases) for this user. Enter a prefix, choose a verified tenant + domain, and click Add or press Enter. - + setNewAlias(e.target.value)} + value={aliasPrefix} + onChange={(e) => setAliasPrefix(e.target.value)} onKeyPress={handleKeyPress} - placeholder="Enter an alias" + placeholder="Enter alias prefix" variant="outlined" disabled={isPending} size="small" @@ -71,10 +107,20 @@ const CippAliasDialog = ({ formHook }) => { }, }} /> + + + diff --git a/src/components/CippComponents/CippApiLogsDrawer.jsx b/src/components/CippComponents/CippApiLogsDrawer.jsx new file mode 100644 index 000000000000..67eb80cef47e --- /dev/null +++ b/src/components/CippComponents/CippApiLogsDrawer.jsx @@ -0,0 +1,113 @@ +import { useState } from "react"; +import { Button, Box } from "@mui/material"; +import { ReceiptLongOutlined } from "@mui/icons-material"; +import { EyeIcon } from "@heroicons/react/24/outline"; +import { CippOffCanvas } from "./CippOffCanvas"; +import { CippDataTable } from "../CippTable/CippDataTable"; + +export const CippApiLogsDrawer = ({ + buttonText = "View API Logs", + apiFilter = null, + tenantFilter = null, + standardFilter = null, + scheduledTaskFilter = null, + requiredPermissions = [], + PermissionButton = Button, + title = "API Logs", + ...props +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + + const handleCloseDrawer = () => { + setDrawerVisible(false); + }; + + const handleOpenDrawer = () => { + setDrawerVisible(true); + }; + + // Build the API URL with the filter + const apiUrl = `/api/ListLogs?Filter=true${apiFilter ? `&API=${apiFilter}` : ""}${ + tenantFilter ? `&Tenant=${tenantFilter}` : "" + }${standardFilter ? `&StandardTemplateId=${standardFilter}` : ""}${ + scheduledTaskFilter ? `&ScheduledTaskId=${scheduledTaskFilter}` : "" + }`; + + // Define the columns for the logs table + const simpleColumns = [ + "DateTime", + "Severity", + "Message", + "User", + "Tenant", + "API", + "StandardInfo.Template", + "StandardInfo.Standard", + "StandardInfo.ConditionalAccessPolicy", + "StandardInfo.IntunePolicy", + ]; + + const actions = [ + { + label: "View Log Entry", + link: "/cipp/logs/logentry?logentry=[RowKey]", + icon: , + color: "primary", + }, + ]; + + return ( + <> + } + {...props} + > + {buttonText} + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippApiResults.jsx b/src/components/CippComponents/CippApiResults.jsx index 3a9dd724b6f1..777fc9d07283 100644 --- a/src/components/CippComponents/CippApiResults.jsx +++ b/src/components/CippComponents/CippApiResults.jsx @@ -1,4 +1,4 @@ -import { Close, Download, Help } from "@mui/icons-material"; +import { Close, Download, Help, ExpandMore, ExpandLess } from "@mui/icons-material"; import { Alert, CircularProgress, @@ -16,11 +16,11 @@ import { useEffect, useState, useMemo, useCallback } from "react"; import { getCippError } from "../../utils/get-cipp-error"; import { CippCopyToClipBoard } from "./CippCopyToClipboard"; import { CippDocsLookup } from "./CippDocsLookup"; +import { CippCodeBlock } from "./CippCodeBlock"; import React from "react"; import { CippTableDialog } from "./CippTableDialog"; import { EyeIcon } from "@heroicons/react/24/outline"; import { useDialog } from "../../hooks/use-dialog"; -import { useRouter } from "next/router"; const extractAllResults = (data) => { const results = []; @@ -44,12 +44,14 @@ const extractAllResults = (data) => { const copyField = item.copyField || ""; const severity = typeof item.state === "string" ? item.state : getSeverity(item) ? "error" : "success"; + const details = item.details || null; if (text) { return { text, copyField, severity, + details, ...item, }; } @@ -124,6 +126,7 @@ export const CippApiResults = (props) => { const [errorVisible, setErrorVisible] = useState(false); const [fetchingVisible, setFetchingVisible] = useState(false); const [finalResults, setFinalResults] = useState([]); + const [showDetails, setShowDetails] = useState({}); const tableDialog = useDialog(); const pageTitle = `${document.title} - Results`; const correctResultObj = useMemo(() => { @@ -155,8 +158,27 @@ export const CippApiResults = (props) => { const allResults = useMemo(() => { const apiResults = extractAllResults(correctResultObj); + + // Also extract error results if there's an error + if (apiObject.isError && apiObject.error) { + const errorResults = extractAllResults(apiObject.error.response.data); + if (errorResults.length > 0) { + // Mark all error results with error severity and merge with success results + return [...apiResults, ...errorResults.map((r) => ({ ...r, severity: "error" }))]; + } + + // Fallback to getCippError if extraction didn't work + const processedError = getCippError(apiObject.error); + if (typeof processedError === "string") { + return [ + ...apiResults, + { text: processedError, copyField: processedError, severity: "error" }, + ]; + } + } + return apiResults; - }, [correctResultObj]); + }, [correctResultObj, apiObject.isError, apiObject.error]); useEffect(() => { setErrorVisible(!!apiObject.isError); @@ -176,7 +198,7 @@ export const CippApiResults = (props) => { severity: res.severity, visible: true, ...res, - })) + })), ); } else { setFinalResults([]); @@ -195,6 +217,10 @@ export const CippApiResults = (props) => { setFinalResults((prev) => prev.map((r) => (r.id === id ? { ...r, visible: false } : r))); }, []); + const toggleDetails = useCallback((id) => { + setShowDetails((prev) => ({ ...prev, [id]: !prev[id] })); + }, []); + const handleDownloadCsv = useCallback(() => { if (!finalResults?.length) return; @@ -203,7 +229,7 @@ export const CippApiResults = (props) => { const headers = Object.keys(finalResults[0]); const rows = finalResults.map((item) => - headers.map((header) => `"${item[header] || ""}"`).join(",") + headers.map((header) => `"${item[header] || ""}"`).join(","), ); const csvContent = [headers.join(","), ...rows].join("\n"); const blob = new Blob([csvContent], { type: "text/csv;charset=utf-8;" }); @@ -243,37 +269,28 @@ export const CippApiResults = (props) => { )} - {/* Error alert */} - - {apiObject.isError && ( - setErrorVisible(false)} - > - - - } - > - {getCippError(apiObject.error)} - - )} - - {/* Individual result alerts */} - {apiObject.isSuccess && !errorsOnly && hasVisibleResults && ( + {hasVisibleResults && ( <> {finalResults.map((resultObj) => ( { startIcon={} onClick={() => { const searchUrl = `https://docs.cipp.app/?q=Help+with:+${encodeURIComponent( - resultObj.copyField || resultObj.text + resultObj.copyField || resultObj.text, )}&ask=true`; window.open(searchUrl, "_blank"); }} @@ -308,7 +325,29 @@ export const CippApiResults = (props) => { Get Help )} - + + + {resultObj.details && ( + + toggleDetails(resultObj.id)} + aria-label={showDetails[resultObj.id] ? "Hide Details" : "Show Details"} + > + {showDetails[resultObj.id] ? ( + + ) : ( + + )} + + + )} { } > - {resultObj.text} + + {resultObj.text} + {resultObj.details && ( + + + + + + )} + diff --git a/src/components/CippComponents/CippAppApprovalTemplateDrawer.jsx b/src/components/CippComponents/CippAppApprovalTemplateDrawer.jsx new file mode 100644 index 000000000000..95526d194495 --- /dev/null +++ b/src/components/CippComponents/CippAppApprovalTemplateDrawer.jsx @@ -0,0 +1,188 @@ +import { useState, useEffect } from "react"; +import { Button } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm } from "react-hook-form"; +import { Add, Edit } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import AppApprovalTemplateForm from "./AppApprovalTemplateForm"; +import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; +import { CippApiResults } from "./CippApiResults"; + +export const CippAppApprovalTemplateDrawer = ({ + buttonText = "Add App Approval Template", + isEditMode = false, + templateId = null, + templateName = null, + isCopy = false, + requiredPermissions = [], + PermissionButton = Button, + onSuccess = null, + drawerVisible: externalDrawerVisible, + setDrawerVisible: externalSetDrawerVisible, +}) => { + const [internalDrawerVisible, setInternalDrawerVisible] = useState(false); + const [refetchKey, setRefetchKey] = useState(0); + + // Use external drawer state if provided, otherwise use internal state + const drawerVisible = + externalDrawerVisible !== undefined ? externalDrawerVisible : internalDrawerVisible; + const setDrawerVisible = externalSetDrawerVisible || setInternalDrawerVisible; + + const formControl = useForm({ + mode: "onBlur", + }); + + // Get the specified template if template ID is provided + const { data: templateData, isLoading: templateLoading } = ApiGetCall({ + url: + (isEditMode || isCopy) && templateId + ? `/api/ExecAppApprovalTemplate?Action=Get&TemplateId=${templateId}` + : null, + queryKey: + (isEditMode || isCopy) && templateId + ? ["ExecAppApprovalTemplate", templateId, refetchKey] + : null, + waiting: !!((isEditMode || isCopy) && templateId), + }); + + const updatePermissions = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: ["ListAppApprovalTemplates", "ExecAppApprovalTemplate"], + }); + + const handleSubmit = (payload) => { + // If editing, include the template ID + if (isEditMode && !isCopy && templateId) { + payload.TemplateId = templateId; + } + + updatePermissions.mutate( + { + url: "/api/ExecAppApprovalTemplate?Action=Save", + data: payload, + queryKey: "ExecAppApprovalTemplate", + }, + { + onSuccess: (data) => { + // Refresh the data + setRefetchKey((prev) => prev + 1); + + // Call the onSuccess callback if provided + if (onSuccess) { + onSuccess(data); + } + + // If adding or copying, reset the form for next entry + if (!isEditMode || isCopy) { + formControl.reset({ + templateName: "", + appType: "EnterpriseApp", + appId: null, + galleryTemplateId: null, + permissionSetId: null, + applicationManifest: "", + }); + } + }, + } + ); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset({ + templateName: "", + appType: "EnterpriseApp", + appId: null, + galleryTemplateId: null, + permissionSetId: null, + applicationManifest: "", + }); + }; + + // Reset form when drawer is opened for a new template + useEffect(() => { + if (drawerVisible && !isEditMode && !isCopy) { + formControl.reset({ + templateName: "New App Deployment Template", + appType: "EnterpriseApp", + appId: null, + galleryTemplateId: null, + permissionSetId: null, + applicationManifest: "", + }); + } + }, [drawerVisible, isEditMode, isCopy]); + + const getDrawerTitle = () => { + if (isCopy) { + return `Copy App Approval Template${templateName ? `: ${templateName}` : ""}`; + } else if (isEditMode) { + return `Edit App Approval Template${templateName ? `: ${templateName}` : ""}`; + } else { + return "Add App Approval Template"; + } + }; + + return ( + <> + setDrawerVisible(true)} + startIcon={isEditMode ? : } + > + {buttonText} + + + + + + } + > + + + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippAppPermissionBuilder.jsx b/src/components/CippComponents/CippAppPermissionBuilder.jsx index b0a7a4ded9bc..da386b770f91 100644 --- a/src/components/CippComponents/CippAppPermissionBuilder.jsx +++ b/src/components/CippComponents/CippAppPermissionBuilder.jsx @@ -17,7 +17,7 @@ import { Tab, } from "@mui/material"; import { Grid } from "@mui/system"; -import { ApiGetCall, ApiPostCall } from "/src/api/ApiCall"; +import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; import { CippDataTable } from "../CippTable/CippDataTable"; import { PlusIcon, ShieldCheckIcon, WrenchIcon } from "@heroicons/react/24/outline"; import CippFormComponent from "./CippFormComponent"; @@ -70,7 +70,18 @@ const CippAppPermissionBuilder = ({ setExpanded(newExpanded ? panel : false); }; + const deprecatedServicePrincipals = [ + "00000002-0000-0000-c000-000000000000", // Windows Azure Active Directory + "a0c73c16-a7e3-4564-9a95-2bdf47383716", // Microsoft Exchange Online Remote PowerShell + "1b730954-1685-4b74-9bfd-dac224a7b894", // Azure Active Directory PowerShell + ]; + const currentSelectedSp = useWatch({ control: formControl.control, name: "servicePrincipal" }); + + // Check if selected service principal is in the deprecated list + const isDeprecatedSp = + currentSelectedSp && deprecatedServicePrincipals.includes(currentSelectedSp.value); + const { data: servicePrincipals = [], isSuccess: spSuccess, @@ -114,7 +125,7 @@ const CippAppPermissionBuilder = ({ return prevPermissions; }); }, - [selectedApp, newPermissions, removePermissionConfirm, removePermissionDialog] + [selectedApp, newPermissions, removePermissionConfirm, removePermissionDialog], ); const createServicePrincipal = ApiPostCall({ @@ -154,7 +165,7 @@ const CippAppPermissionBuilder = ({ const savePermissionChanges = ( servicePrincipal, applicationPermissions, - delegatedPermissions + delegatedPermissions, ) => { setNewPermissions((prevPermissions) => { const updatedPermissions = { @@ -198,6 +209,14 @@ const CippAppPermissionBuilder = ({ requiredResourceAccess: [], }; + if (appDisplayName === "CIPP-SAM") { + // add servicePrincipalLockConfiguration to SAM manifest + manifest.servicePrincipalLockConfiguration = { + isEnabled: true, + allProperties: true, + }; + } + var newAdditionalPermissions = []; selectedApp.map((sp) => { @@ -355,7 +374,7 @@ const CippAppPermissionBuilder = ({ if (selectedApp.length === 0 && initialAppIds.length === 0) { var microsoftGraph = servicePrincipals?.Results?.find( - (sp) => sp?.appId === "00000003-0000-0000-c000-000000000000" + (sp) => sp?.appId === "00000003-0000-0000-c000-000000000000", ); if (microsoftGraph) { setSelectedApp([microsoftGraph]); // Ensure this does not trigger a loop @@ -376,7 +395,7 @@ const CippAppPermissionBuilder = ({ setPermissionsImported(false); } else if (initialAppIds.length > 0 && !permissionsImported) { const newApps = servicePrincipals?.Results?.filter((sp) => - initialAppIds.includes(sp.appId) + initialAppIds.includes(sp.appId), )?.sort((a, b) => a.displayName.localeCompare(b.displayName)); if (!_.isEqual(selectedApp, newApps)) { @@ -449,7 +468,7 @@ const CippAppPermissionBuilder = ({ value: perm.value, description: spInfo?.Results?.appRoles.find((role) => role.id === perm.id) ?.description, - })) + })), ); } if (delegatedTable !== undefined && delegatedTable.length === 0) { @@ -462,7 +481,7 @@ const CippAppPermissionBuilder = ({ description: spInfo?.Results?.publishedPermissionScopes.find((scope) => scope.id === perm.id) ?.userConsentDescription ?? "Manually added", - })) + })), ); } setSpInitialized(true); @@ -503,7 +522,7 @@ const CippAppPermissionBuilder = ({ id: permission.value, value: permission.label, description: spInfo?.Results?.publishedPermissionScopes.find( - (scope) => scope.id === permission.value + (scope) => scope.id === permission.value, )?.userConsentDescription, }; setDelegatedTable([...(delegatedTable ?? []), newDelegatedPermission]); @@ -517,7 +536,7 @@ const CippAppPermissionBuilder = ({ setAppTable((prevAppTable) => prevAppTable.filter((perm) => perm.id !== permission.id)); } else { setDelegatedTable((prevDelegatedTable) => - prevDelegatedTable.filter((perm) => perm.id !== permission.id) + prevDelegatedTable.filter((perm) => perm.id !== permission.id), ); } } @@ -527,7 +546,7 @@ const CippAppPermissionBuilder = ({ savePermissionChanges( servicePrincipal.appId, appTable?.map((perm) => ({ id: perm.id, value: perm.value })) ?? [], - delegatedTable?.map((perm) => ({ id: perm.id, value: perm.value })) ?? [] + delegatedTable?.map((perm) => ({ id: perm.id, value: perm.value })) ?? [], ); }; @@ -544,115 +563,50 @@ const CippAppPermissionBuilder = ({ return ( <> - {spInfoFetching && } - {servicePrincipal && spInfoSuccess && !spInfoFetching && ( - <> - - Manage the permissions for the {servicePrincipal.displayName}. - + + Manage the permissions for the {servicePrincipal.displayName}. + - - - - - - - - - {servicePrincipal?.appRoles?.length > 0 ? ( - <> - - - - !appTable?.find((perm) => perm.id === role.id)) - .map((role) => ({ - label: role.value, - value: role.id, - }))} - formControl={formControl} - multiple={false} - /> - - - -
    - handleAddRow("applicationPermissions", currentAppPermission) - } - > - -
    -
    -
    -
    - , - noConfirm: true, - customFunction: (row) => handleRemoveRow("applicationPermissions", row), - }, - ]} - /> -
    - - ) : ( - } sx={{ mb: 3 }}> - No Application Permissions found. - - )} -
    - + + + + + + + + + {servicePrincipal?.appRoles?.length > 0 ? ( + <> - {spInfo?.Results?.publishedPermissionScopes?.length === 0 && ( - }> - No Published Delegated Permissions found. - - )} - + !delegatedTable?.find((perm) => perm.id === scope.id)) - .map((scope) => ({ - label: scope.value, - value: scope.id, + options={(spInfo?.Results?.appRoles || []) + .filter((role) => !appTable?.find((perm) => perm.id === role.id)) + .map((role) => ({ + label: role.value, + value: role.id, }))} formControl={formControl} multiple={false} /> - +
    - handleAddRow("delegatedPermissions", currentDelegatedPermission) + handleAddRow("applicationPermissions", currentAppPermission) } > - +
    +
    +
    +
    - -
    - - )} + , + noConfirm: true, + customFunction: (row) => handleRemoveRow("delegatedPermissions", row), + }, + ]} + isFetching={spInfoFetching} + /> +
    + + + + ); }; @@ -737,24 +753,33 @@ const CippAppPermissionBuilder = ({
    - + - +
    { - setSelectedApp([ - ...selectedApp, - servicePrincipals?.Results?.find( - (sp) => sp.appId === currentSelectedSp.value - ), - ]); - formControl.setValue("servicePrincipal", null); + // Only add if not deprecated + if (!isDeprecatedSp) { + setSelectedApp([ + ...selectedApp, + servicePrincipals?.Results?.find( + (sp) => sp.appId === currentSelectedSp.value, + ), + ]); + formControl.setValue("servicePrincipal", null); + } }} > + +
    + } + > + + + + + {/* Tenant Selector */} + + + + + + + + + + + + + This is a community contribution and is not covered under a vendor sponsorship. + Please join our Discord community for assistance with this MSP App. + + + + + + + + + + + {selectedTenants?.map((tenant, index) => ( + + + + ))} + + + {/* For "syncro" */} + + {selectedTenants?.map((tenant, index) => ( + + + + ))} + + + {/* For "huntress" */} + + + + + {selectedTenants?.map((tenant, index) => ( + + + + ))} + + + {/* For "automate" */} + + + + + {selectedTenants?.map((tenant, index) => ( + + + + ))} + {selectedTenants?.map((tenant, index) => ( + + + + ))} + + + {/* For "cwcommand" */} + + {selectedTenants?.map((tenant, index) => ( + + + + ))} + + + {/* Assign To Options */} + + + + + + + + + + + {/* WinGet App Section */} + + + + + + + + + + ({ + value: item, + label: `${item.applicationName} - ${item.packagename}`, + })) + : [] + } + multiple={false} + formControl={formControl} + disabled={winGetSearchResults.isPending} + isFetching={winGetSearchResults.isPending} + /> + + + + + + + + + + + + {/* Install Options */} + + + + + {/* Assign To Options */} + + + + + + + + + + + {/* Chocolatey App Section */} + + + + + + + + + + ({ + value: item, + label: `${item.applicationName} - ${item.packagename}`, + })) + : [] + } + multiple={false} + formControl={formControl} + isFetching={ChocosearchResults.isPending} + /> + + + + + + + + + + + + + + + + + + + {/* Install Options */} + + + + + + + {/* Assign To Options */} + + + + + + + + + + + {/* Office App Section */} + + + + + + + + + ({ + value: tag, + label: `${language} (${tag})`, + }))} + multiple={true} + formControl={formControl} + validators={{ required: "Please select at least one language" }} + /> + + + + + + + + + + + + + + + + + + + + + Provide a custom Office Configuration XML. When using custom XML, all other Office + configuration options above will be ignored. See{" "} + + Office Customization Tool + {" "} + to generate XML. + + + + + {/* Assign To Options */} + + + + + + {/* Win32 Script App Section */} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {/* Assign To Options */} + + + + + + + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippAuditLogDetails.jsx b/src/components/CippComponents/CippAuditLogDetails.jsx new file mode 100644 index 000000000000..44a291245cb7 --- /dev/null +++ b/src/components/CippComponents/CippAuditLogDetails.jsx @@ -0,0 +1,359 @@ +import { useEffect } from "react"; +import { getCippTranslation } from "../../utils/get-cipp-translation"; +import { getCippFormatting } from "../../utils/get-cipp-formatting"; +import CippGeoLocation from "./CippGeoLocation"; +import { Tooltip, CircularProgress, Stack } from "@mui/material"; +import { useGuidResolver } from "../../hooks/use-guid-resolver"; +import { CippPropertyListCard } from "../CippCards/CippPropertyListCard"; + +const CippAuditLogDetails = ({ row }) => { + const { + guidMapping, + upnMapping, + isLoadingGuids, + resolveGuids, + isGuid, + replaceGuidsAndUpnsInString, + } = useGuidResolver(); + + // Use effect for initial scan to resolve GUIDs and special UPNs + useEffect(() => { + if (row) { + // Scan the main row data + resolveGuids(row); + + // Scan audit data if present + if (row.auditData) { + resolveGuids(row.auditData); + } + } + }, [row?.id, resolveGuids]); // Dependencies for when to resolve GUIDs + + // Function to replace GUIDs and special UPNs in strings with resolved names + const replaceGuidsInString = (str) => { + if (typeof str !== "string") return str; + + // Use the hook's helper function to replace both GUIDs and special UPNs + const { result, hasResolvedNames } = replaceGuidsAndUpnsInString(str); + + // If we have resolved names, return a tooltip showing original and resolved + if (hasResolvedNames) { + return ( + + {result} + + ); + } + + // Check for GUIDs and special UPNs to see if we should show loading state + const guidRegex = /[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/gi; + const partnerUpnRegex = /user_([0-9a-f]{32})@([^@]+\.onmicrosoft\.com)/gi; + + let hasGuids = guidRegex.test(str); + + // Reset regex state and check for partner UPNs + partnerUpnRegex.lastIndex = 0; + let hasUpns = false; + let match; + + // Need to extract and check if the GUIDs from UPNs are in the pending state + while ((match = partnerUpnRegex.exec(str)) !== null) { + const hexId = match[1]; + if (hexId && hexId.length === 32) { + hasUpns = true; + break; // At least one UPN pattern found + } + } + + // If we have unresolved GUIDs or UPNs and are currently loading + if ((hasGuids || hasUpns) && isLoadingGuids) { + return ( +
    + + {str} +
    + ); + } + + return str; + }; + + // Convert data to property items format for CippPropertyListCard + const convertToPropertyItems = (data, excludeAuditData = false) => { + if (!data) return []; + + return Object.entries(data) + .map(([key, value]) => { + // Skip certain blacklisted fields + const blacklist = ["selectedOption", "GUID", "ID", "id", "noSubmitButton"]; + if (blacklist.includes(key)) return null; + + // Exclude auditData from main log items if specified + if (excludeAuditData && key === "auditData") return null; + + let displayValue; + // Handle different value types + if (typeof value === "string" && isGuid(value)) { + // Handle pure GUID strings + displayValue = renderGuidValue(value); + } else if ( + typeof value === "string" && + value.match(/^user_[0-9a-f]{32}@[^@]+\.onmicrosoft\.com$/i) + ) { + // Handle special partner UPN format as direct values + displayValue = renderGuidValue(value); + } else if ( + key.toLowerCase().includes("clientip") && + value && + value !== null && + isValidIpAddress(value) + ) { + // Handle IP addresses (with optional ports) using CippGeoLocation + // Check for various IP field names: clientIp, ClientIP, IP, etc. + const cleanIp = extractIpForGeolocation(value); + displayValue = ( +
    + +
    + ); + } else if (typeof value === "string") { + // Handle strings that might contain embedded GUIDs + // First apply GUID replacement to get the processed string + const guidProcessedValue = replaceGuidsInString(value); + + // If GUID replacement returned a React element (with tooltips), use it directly + if (typeof guidProcessedValue === "object" && guidProcessedValue?.type) { + displayValue = guidProcessedValue; + } else { + // Otherwise, apply getCippFormatting to the GUID-processed string + // This preserves key-based formatting while including GUID replacements + displayValue = getCippFormatting(guidProcessedValue, key); + } + } else if (typeof value === "object" && value !== null) { + // Handle nested objects and arrays - expand GUIDs within them + displayValue = renderNestedValue(value); + } else { + // Handle regular values + displayValue = getCippFormatting(value, key); + } + + return { + label: getCippTranslation(key), + value: displayValue, + }; + }) + .filter(Boolean); + }; + + // Render GUID values with proper resolution states + const renderGuidValue = (guidValue) => { + // Handle standard GUIDs directly + if (guidMapping[guidValue]) { + return ( + + {guidMapping[guidValue]} + + ); + } + + // Special handling for partner UPN format (user_@partnertenant.onmicrosoft.com) + const partnerUpnRegex = /^user_([0-9a-f]{32})@([^@]+\.onmicrosoft\.com)$/i; + const upnMatch = typeof guidValue === "string" ? guidValue.match(partnerUpnRegex) : null; + + if (upnMatch) { + const hexId = upnMatch[1]; + if (hexId && hexId.length === 32) { + const guid = [ + hexId.slice(0, 8), + hexId.slice(8, 12), + hexId.slice(12, 16), + hexId.slice(16, 20), + hexId.slice(20, 32), + ].join("-"); + + // For partner UPN format, use the actual UPN if available, otherwise fall back to display name + if (upnMapping && upnMapping[guid]) { + return ( + + {upnMapping[guid]} + + ); + } else if (guidMapping[guid]) { + return ( + + {guidMapping[guid]} + + ); + } + } + } + + // Loading state + if (isLoadingGuids) { + return ( +
    + + {guidValue} +
    + ); + } + + // Fallback for unresolved values + return ( + + {guidValue} + + ); + }; + + // Recursively render nested objects and arrays with GUID expansion + const renderNestedValue = (value) => { + if (Array.isArray(value)) { + // Handle arrays + return renderArrayValue(value); + } else if (typeof value === "object" && value !== null) { + // Handle objects + return renderObjectValue(value); + } + return getCippFormatting(value, "nested"); + }; + + // Render array values with GUID expansion + const renderArrayValue = (arrayValue) => { + if (arrayValue.length === 0) return "[]"; + + // If it's a simple array, show it formatted + if (arrayValue.length <= 5 && arrayValue.every((item) => typeof item !== "object")) { + return ( +
    + {arrayValue.map((item, index) => ( +
    + {typeof item === "string" && isGuid(item) + ? renderGuidValue(item) + : typeof item === "string" + ? replaceGuidsInString(item) + : getCippFormatting(item, `item-${index}`)} +
    + ))} +
    + ); + } + + // For complex arrays, use the formatted version which might include table buttons + return getCippFormatting(arrayValue, "array"); + }; + + // Render object values with GUID expansion + const renderObjectValue = (objectValue) => { + const entries = Object.entries(objectValue); + + // If it's a simple object with few properties, show them inline + if (entries.length <= 3 && entries.every(([, val]) => typeof val !== "object")) { + return ( +
    + {entries.map(([objKey, objVal]) => ( +
    + {getCippTranslation(objKey)}:{" "} + {typeof objVal === "string" && isGuid(objVal) + ? renderGuidValue(objVal) + : typeof objVal === "string" + ? replaceGuidsInString(objVal) + : getCippFormatting(objVal, objKey)} +
    + ))} +
    + ); + } + + // For complex objects, use the formatted version which might include table buttons + return getCippFormatting(objectValue, "object"); + }; + + // Helper function to validate IP addresses (with optional ports) + const isValidIpAddress = (ip) => { + if (typeof ip !== "string") return false; + + // Extract IP part if there's a port (split by last colon for IPv6 compatibility) + let ipPart = ip; + let portPart = null; + + // Check for IPv4:port format + const ipv4PortMatch = ip.match(/^(.+):(\d+)$/); + if (ipv4PortMatch) { + ipPart = ipv4PortMatch[1]; + portPart = ipv4PortMatch[2]; + } + + // IPv4 regex + const ipv4Regex = + /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; + + // IPv6 regex (simplified) - note: IPv6 with ports use [::]:port format, handled separately + const ipv6Regex = /^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$|^::1$|^::$/; + + // Check for IPv6 with port [::]:port format + const ipv6PortMatch = ip.match(/^\[(.+)\]:(\d+)$/); + if (ipv6PortMatch) { + ipPart = ipv6PortMatch[1]; + portPart = ipv6PortMatch[2]; + } + + // Validate port number if present + if (portPart !== null) { + const port = parseInt(portPart, 10); + if (port < 1 || port > 65535) return false; + } + + return ipv4Regex.test(ipPart) || ipv6Regex.test(ipPart); + }; + + // Extract clean IP address from IP:port combinations for geolocation + const extractIpForGeolocation = (ipWithPort) => { + if (typeof ipWithPort !== "string") return ipWithPort; + + // IPv4:port format + const ipv4PortMatch = ipWithPort.match(/^(.+):(\d+)$/); + if (ipv4PortMatch) { + return ipv4PortMatch[1]; + } + + // IPv6 with port [::]:port format + const ipv6PortMatch = ipWithPort.match(/^\[(.+)\]:(\d+)$/); + if (ipv6PortMatch) { + return ipv6PortMatch[1]; + } + + // Return as-is if no port detected + return ipWithPort; + }; + + const mainLogItems = convertToPropertyItems(row, true); // Exclude auditData from main items + const auditDataItems = row?.auditData ? convertToPropertyItems(row.auditData) : []; + + return ( + + + + {auditDataItems.length > 0 && ( + + )} + + ); +}; + +export default CippAuditLogDetails; diff --git a/src/components/CippComponents/CippAuditLogSearchDrawer.jsx b/src/components/CippComponents/CippAuditLogSearchDrawer.jsx new file mode 100644 index 000000000000..9c3179f0490d --- /dev/null +++ b/src/components/CippComponents/CippAuditLogSearchDrawer.jsx @@ -0,0 +1,471 @@ +import { useState, useEffect } from "react"; +import { Button, Stack, Box } from "@mui/material"; +import { Add } from "@mui/icons-material"; +import { useForm } from "react-hook-form"; +import { CippOffCanvas } from "./CippOffCanvas"; +import { ApiPostCall, ApiGetCallWithPagination } from "../../api/ApiCall"; +import CippFormComponent from "./CippFormComponent"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; + +export const CippAuditLogSearchDrawer = ({ + buttonText = "New Search", + relatedQueryKeys = ["AuditLogSearches"], +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const currentTenantDomain = useSettings().currentTenant; + + // Fetch tenant list to get full tenant details + const tenantList = ApiGetCallWithPagination({ + url: "/api/ListTenants", + queryKey: "ListTenants-FormnotAllTenants", + data: { AllTenantSelector: false }, + }); + + // Find the current tenant from the list using the domain name - handle pagination data structure + const allTenants = tenantList.data?.pages?.flatMap((page) => page.Results || page) || []; + const currentTenant = allTenants.find( + (tenant) => tenant.defaultDomainName === currentTenantDomain + ); + + // Create default values with current tenant prefilled + const defaultValues = { + TenantFilter: currentTenant + ? { + label: `${currentTenant.displayName} (${currentTenant.defaultDomainName})`, + value: currentTenant.defaultDomainName, + } + : null, + }; + + const formControl = useForm({ + defaultValues, + }); + + // Update form defaults when tenant data is loaded + useEffect(() => { + if (currentTenant) { + const newDefaultValues = { + TenantFilter: { + label: `${currentTenant.displayName} (${currentTenant.defaultDomainName})`, + value: currentTenant.defaultDomainName, + }, + }; + formControl.reset(newDefaultValues); + } + }, [currentTenant, formControl]); + + const createSearchApi = ApiPostCall({ + datafromUrl: false, + relatedQueryKeys, + }); + + const handleCloseDrawer = () => { + setDrawerVisible(false); + if (currentTenant) { + const resetValues = { + TenantFilter: { + label: `${currentTenant.displayName} (${currentTenant.defaultDomainName})`, + value: currentTenant.defaultDomainName, + }, + }; + formControl.reset(resetValues); + } else { + formControl.reset(); + } + }; + + const handleCreateSearch = async (data) => { + const formattedData = { ...data }; + + // Extract value from TenantFilter autocomplete object + if (formattedData.TenantFilter?.value) { + formattedData.TenantFilter = formattedData.TenantFilter.value; + } + + // Handle KeywordFilter - extract values from array and join with spaces + if (Array.isArray(formattedData.KeywordFilter)) { + const keywords = formattedData.KeywordFilter.map((item) => + typeof item === "object" ? item.value : item + ).filter(Boolean); + formattedData.KeywordFilter = keywords.join(" "); + } + + // Extract values from RecordTypeFilters array + if (Array.isArray(formattedData.RecordTypeFilters)) { + formattedData.RecordTypeFilters = formattedData.RecordTypeFilters.map((item) => + typeof item === "object" ? item.value : item + ); + } + + // Extract values from ServiceFilters array + if (Array.isArray(formattedData.ServiceFilters)) { + formattedData.ServiceFilters = formattedData.ServiceFilters.map((item) => + typeof item === "object" ? item.value : item + ); + } + + // Extract values from OperationsFilters array + if (Array.isArray(formattedData.OperationsFilters)) { + formattedData.OperationsFilters = formattedData.OperationsFilters.map((item) => + typeof item === "object" ? item.value : item + ); + } + + // Extract values from UserPrincipalNameFilters array + if (Array.isArray(formattedData.UserPrincipalNameFilters)) { + formattedData.UserPrincipalNameFilters = formattedData.UserPrincipalNameFilters.map((item) => + typeof item === "object" ? item.value : item + ); + } + + // Extract values from IPAddressFilters array + if (Array.isArray(formattedData.IPAddressFilters)) { + formattedData.IPAddressFilters = formattedData.IPAddressFilters.map((item) => + typeof item === "object" ? item.value : item + ); + } + + // Extract values from ObjectIdFilters array + if (Array.isArray(formattedData.ObjectIdFilters)) { + formattedData.ObjectIdFilters = formattedData.ObjectIdFilters.map((item) => + typeof item === "object" ? item.value : item + ); + } + + // Extract values from AdministrativeUnitFilters array + if (Array.isArray(formattedData.AdministrativeUnitFilters)) { + formattedData.AdministrativeUnitFilters = formattedData.AdministrativeUnitFilters.map( + (item) => (typeof item === "object" ? item.value : item) + ); + } + + // Remove empty arrays to avoid sending unnecessary data + Object.keys(formattedData).forEach((key) => { + if (Array.isArray(formattedData[key]) && formattedData[key].length === 0) { + delete formattedData[key]; + } + if ( + formattedData[key] === "" || + formattedData[key] === null || + formattedData[key] === undefined + ) { + delete formattedData[key]; + } + }); + + try { + await createSearchApi.mutateAsync({ + url: "/api/ExecAuditLogSearch", + data: formattedData, + }); + } catch (error) { + console.error("Error creating search:", error); + } + }; + + // Create Search Form Fields + const createSearchFields = [ + { + type: "textField", + name: "DisplayName", + label: "Search Name", + required: true, + validators: { required: "Search name is required" }, + disableVariables: true, + }, + { + type: "autoComplete", + name: "TenantFilter", + label: "Tenant", + multiple: false, + creatable: false, + api: { + url: "/api/ListTenants?AllTenantSelector=false", + labelField: (option) => `${option.displayName} (${option.defaultDomainName})`, + valueField: "defaultDomainName", + queryKey: "ListTenants-FormnotAllTenants", + excludeTenantFilter: true, + }, + validators: { validate: (value) => !!value?.value || "Please select a tenant" }, + required: true, + }, + { + type: "datePicker", + name: "StartTime", + label: "Start Date & Time", + dateTimeType: "datetime-local", + validators: { required: "Start time is required" }, + required: true, + }, + { + type: "datePicker", + name: "EndTime", + label: "End Date & Time", + dateTimeType: "datetime-local", + validators: { required: "End time is required" }, + required: true, + }, + { + type: "autoComplete", + name: "ServiceFilters", + label: "Services", + multiple: true, + creatable: false, + options: [ + { label: "Azure Active Directory", value: "AzureActiveDirectory" }, + { label: "Dynamics 365", value: "CRM" }, + { label: "Exchange Online", value: "Exchange" }, + { label: "Microsoft Flow", value: "MicrosoftFlow" }, + { label: "Microsoft Teams", value: "MicrosoftTeams" }, + { label: "OneDrive for Business", value: "OneDrive" }, + { label: "Power BI", value: "PowerBI" }, + { label: "Security & Compliance", value: "ThreatIntelligence" }, + { label: "SharePoint Online", value: "SharePoint" }, + { label: "Yammer", value: "Yammer" }, + ], + validators: { + validate: (values) => values?.length > 0 || "Please select at least one service", + }, + }, + { + type: "autoComplete", + name: "RecordTypeFilters", + label: "Record Types", + multiple: true, + creatable: false, + options: [ + { label: "Azure Active Directory", value: "azureActiveDirectory" }, + { label: "Azure AD Account Logon", value: "azureActiveDirectoryAccountLogon" }, + { label: "Azure AD STS Logon", value: "azureActiveDirectoryStsLogon" }, + { label: "Compliance DLP Endpoint", value: "complianceDLPEndpoint" }, + { label: "Compliance DLP Exchange", value: "complianceDLPExchange" }, + { label: "Compliance DLP SharePoint", value: "complianceDLPSharePoint" }, + { label: "Data Governance", value: "dataGovernance" }, + { label: "Exchange Admin", value: "exchangeAdmin" }, + { label: "Exchange Item", value: "exchangeItem" }, + { label: "Exchange Item Group", value: "exchangeItemGroup" }, + { label: "Information Worker Protection", value: "informationWorkerProtection" }, + { label: "Label Content Explorer", value: "labelContentExplorer" }, + { label: "Microsoft Flow", value: "microsoftFlow" }, + { label: "Microsoft Forms", value: "microsoftForms" }, + { label: "Microsoft Stream", value: "microsoftStream" }, + { label: "Microsoft Teams", value: "microsoftTeams" }, + { label: "Microsoft Teams Admin", value: "microsoftTeamsAdmin" }, + { label: "Microsoft Teams Analytics", value: "microsoftTeamsAnalytics" }, + { label: "Microsoft Teams Device", value: "microsoftTeamsDevice" }, + { label: "Microsoft Teams Shifts", value: "microsoftTeamsShifts" }, + { label: "MIP Label", value: "mipLabel" }, + { label: "OneDrive", value: "oneDrive" }, + { label: "Power Apps App", value: "powerAppsApp" }, + { label: "Power Apps Plan", value: "powerAppsPlan" }, + { label: "Power BI Audit", value: "powerBIAudit" }, + { label: "Power BI DLP", value: "powerBIDlp" }, + { label: "Security & Compliance Alerts", value: "securityComplianceAlerts" }, + { label: "Security & Compliance Insights", value: "securityComplianceInsights" }, + { label: "Security & Compliance RBAC", value: "securityComplianceRBAC" }, + { label: "SharePoint", value: "sharePoint" }, + { label: "SharePoint File Operation", value: "sharePointFileOperation" }, + { label: "SharePoint List Operation", value: "sharePointListOperation" }, + { label: "SharePoint Sharing Operation", value: "sharePointSharingOperation" }, + { label: "Threat Intelligence", value: "threatIntelligence" }, + { label: "Threat Intelligence ATP Content", value: "threatIntelligenceAtpContent" }, + { label: "Threat Intelligence URL", value: "threatIntelligenceUrl" }, + { label: "Workplace Analytics", value: "workplaceAnalytics" }, + ], + }, + { + type: "autoComplete", + name: "KeywordFilter", + label: "Keywords", + multiple: true, + creatable: true, + freeSolo: true, + placeholder: "Enter keywords to search for", + options: [], + }, + { + type: "autoComplete", + name: "OperationsFilters", + label: "Operations", + multiple: true, + creatable: true, + placeholder: "Enter or select operations", + options: [ + // Authentication & User Operations + { label: "User Logged In", value: "UserLoggedIn" }, + { label: "Mailbox Login", value: "mailboxlogin" }, + + // User Management Operations + { label: "Add User", value: "add user." }, + { label: "Update User", value: "update user." }, + { label: "Delete User", value: "delete user." }, + { label: "Reset User Password", value: "reset user password." }, + { label: "Change User Password", value: "change user password." }, + { label: "Change User License", value: "change user license." }, + + // Group Management Operations + { label: "Add Group", value: "add group." }, + { label: "Update Group", value: "update group." }, + { label: "Delete Group", value: "delete group." }, + { label: "Add Member to Group", value: "add member to group." }, + { label: "Remove Member from Group", value: "remove member from group." }, + + // Mailbox Operations + { label: "New Mailbox", value: "New-Mailbox" }, + { label: "Set Mailbox", value: "Set-Mailbox" }, + { label: "Add Mailbox Permission", value: "add-mailboxpermission" }, + { label: "Remove Mailbox Permission", value: "remove-mailboxpermission" }, + { label: "Mail Items Accessed", value: "mailitemsaccessed" }, + + // Email Operations + { label: "Send Message", value: "send" }, + { label: "Send As", value: "sendas" }, + { label: "Send On Behalf", value: "sendonbehalf" }, + { label: "Create Item", value: "create" }, + { label: "Update Message", value: "update" }, + { label: "Copy Messages", value: "copy" }, + { label: "Move Messages", value: "move" }, + { label: "Move to Deleted Items", value: "movetodeleteditems" }, + { label: "Soft Delete", value: "softdelete" }, + { label: "Hard Delete", value: "harddelete" }, + + // Inbox Rules + { label: "New Inbox Rule", value: "new-inboxrule" }, + { label: "Set Inbox Rule", value: "set-inboxrule" }, + { label: "Update Inbox Rules", value: "updateinboxrules" }, + + // Folder Operations + { label: "Add Folder Permissions", value: "addfolderpermissions" }, + { label: "Remove Folder Permissions", value: "removefolderpermissions" }, + { label: "Update Folder Permissions", value: "updatefolderpermissions" }, + { label: "Update Calendar Delegation", value: "updatecalendardelegation" }, + + // SharePoint/OneDrive Operations (Common ones) + { label: "File Accessed", value: "FileAccessed" }, + { label: "File Modified", value: "FileModified" }, + { label: "File Deleted", value: "FileDeleted" }, + { label: "File Downloaded", value: "FileDownloaded" }, + { label: "File Uploaded", value: "FileUploaded" }, + { label: "Sharing Set", value: "SharingSet" }, + { label: "Anonymous Link Created", value: "AnonymousLinkCreated" }, + + // Role and Permission Operations + { label: "Add Member to Role", value: "add member to role." }, + { label: "Remove Member from Role", value: "remove member from role." }, + { label: "Add Service Principal", value: "add service principal." }, + { label: "Remove Service Principal", value: "remove service principal." }, + + // Company and Domain Operations + { label: "Add Domain to Company", value: "add domain to company." }, + { label: "Remove Domain from Company", value: "remove domain from company." }, + { label: "Verify Domain", value: "verify domain." }, + { label: "Set Company Information", value: "set company information." }, + + // Security Operations + { label: "Disable Strong Authentication", value: "Disable Strong Authentication." }, + { label: "Apply Record Label", value: "applyrecordlabel" }, + { label: "Update STS Refresh Token", value: "Update StsRefreshTokenValidFrom Timestamp." }, + ], + }, + { + type: "autoComplete", + name: "UserPrincipalNameFilters", + label: "User Principal Names", + multiple: true, + creatable: true, + freeSolo: true, + placeholder: "Enter user principal names", + options: [], + }, + { + type: "autoComplete", + name: "IPAddressFilters", + label: "IP Addresses", + multiple: true, + creatable: true, + freeSolo: true, + placeholder: "Enter IP addresses", + options: [], + }, + { + type: "autoComplete", + name: "ObjectIdFilters", + label: "Object IDs", + multiple: true, + creatable: true, + freeSolo: true, + placeholder: "Enter object IDs", + options: [], + }, + { + type: "autoComplete", + name: "AdministrativeUnitFilters", + label: "Administrative Units", + multiple: true, + creatable: true, + placeholder: "Enter administrative units", + api: { + url: "/api/ListGraphRequest", + queryKey: "AdministrativeUnits", + data: { + Endpoint: "directoryObjects/microsoft.graph.administrativeUnit", + $select: "id,displayName", + }, + dataKey: "Results", + labelField: "displayName", + valueField: "id", + addedField: { + id: "id", + displayName: "displayName", + }, + showRefresh: true, + }, + }, + { + type: "switch", + name: "ProcessLogs", + label: "Process Logs for Alerts", + helperText: "Enable to store this search for alert processing", + }, + ]; + + return ( + <> + + + + +
    + } + > + + + {createSearchFields.map((field, index) => ( + + + + ))} + + + + + + ); +}; diff --git a/src/components/CippComponents/CippAutocomplete.jsx b/src/components/CippComponents/CippAutocomplete.jsx index 9b95fb101bdb..a27bbe535e8a 100644 --- a/src/components/CippComponents/CippAutocomplete.jsx +++ b/src/components/CippComponents/CippAutocomplete.jsx @@ -1,18 +1,24 @@ -import { ArrowDropDown } from "@mui/icons-material"; +import { ArrowDropDown, Visibility } from "@mui/icons-material"; import { Autocomplete, CircularProgress, createFilterOptions, TextField, IconButton, + Tooltip, + Box, + Typography, } from "@mui/material"; -import { useEffect, useState, useMemo, useCallback } from "react"; +import Link from "next/link"; +import { useEffect, useState, useMemo, useCallback, useRef, useImperativeHandle } from "react"; import { useSettings } from "../../hooks/use-settings"; import { getCippError } from "../../utils/get-cipp-error"; import { ApiGetCallWithPagination } from "../../api/ApiCall"; import { Sync } from "@mui/icons-material"; import { Stack } from "@mui/system"; import React from "react"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippJsonView from "../CippFormPages/CippJSONView"; const MemoTextField = React.memo(function MemoTextField({ params, @@ -23,33 +29,35 @@ const MemoTextField = React.memo(function MemoTextField({ const { InputProps, ...otherParams } = params; return ( - + + }} + /> + ); }); -export const CippAutoComplete = (props) => { +export const CippAutoComplete = React.forwardRef((props, ref) => { const { size, api, @@ -71,15 +79,44 @@ export const CippAutoComplete = (props) => { removeOptions = [], sortOptions = false, preselectedValue, + groupBy, + renderGroup, + customAction, + handleHomeEndKeys = false, ...other } = props; const [usedOptions, setUsedOptions] = useState(options); const [getRequestInfo, setGetRequestInfo] = useState({ url: "", waiting: false, queryKey: "" }); + const hasPreselectedRef = useRef(false); + const autocompleteRef = useRef(null); // Ref for focusing input after selection + + useImperativeHandle(ref, () => ({ + focus() { + const input = autocompleteRef.current?.querySelector("input"); + input?.focus(); + input?.select(); + }, + }), []); + const listboxRef = useRef(null); // Ref for the listbox to preserve scroll position + const scrollPositionRef = useRef(0); // Store scroll position const filter = createFilterOptions({ stringify: (option) => JSON.stringify(option), }); + const [offCanvasVisible, setOffCanvasVisible] = useState(false); + const [fullObject, setFullObject] = useState(null); + const [internalValue, setInternalValue] = useState(null); // Track selected value internally + const [open, setOpen] = useState(false); // Control popover open state + + // Sync internalValue when external value or defaultValue prop changes (e.g., when editing a form) + useEffect(() => { + const currentValue = value !== undefined && value !== null ? value : defaultValue; + if (currentValue !== undefined && currentValue !== null) { + setInternalValue(currentValue); + } + }, [value, defaultValue]); + // This is our paginated call const actionGetRequest = ApiGetCallWithPagination({ ...getRequestInfo, @@ -145,7 +182,7 @@ export const CippAutoComplete = (props) => { }, ]); } else { - // Convert each item into your { label, value, addedFields } shape + // Convert each item into your { label, value, addedFields, rawData } shape const convertedOptions = combinedResults.map((option) => { const addedFields = {}; if (api?.addedField) { @@ -159,15 +196,22 @@ export const CippAutoComplete = (props) => { typeof api?.labelField === "function" ? api.labelField(option) : option[api?.labelField] - ? option[api?.labelField] - : option[api?.altLabelField] || - option[api?.valueField] || - "No label found - Are you missing a labelField?", + ? option[api?.labelField] + : option[api?.altLabelField] || + option[api?.valueField] || + "No label found - Are you missing a labelField?", value: typeof api?.valueField === "function" ? api.valueField(option) : option[api?.valueField], + description: + typeof api?.descriptionField === "function" + ? api.descriptionField(option) + : api?.descriptionField + ? option[api?.descriptionField] + : undefined, addedFields, + rawData: option, // Store the full original object }; }); @@ -205,19 +249,51 @@ export const CippAutoComplete = (props) => { return finalOptions; }, [api, usedOptions, options, removeOptions, sortOptions]); - // Dedicated effect for handling preselected value + // Dedicated effect for handling preselected value or auto-select first item - only runs once useEffect(() => { - if (preselectedValue && !defaultValue && !value && memoizedOptions.length > 0) { - const preselectedOption = memoizedOptions.find((option) => option.value === preselectedValue); + if (memoizedOptions.length > 0 && !hasPreselectedRef.current) { + // Check if we should skip preselection due to existing defaultValue + const hasDefaultValue = + defaultValue && (Array.isArray(defaultValue) ? defaultValue.length > 0 : true); - if (preselectedOption) { - const newValue = multiple ? [preselectedOption] : preselectedOption; - if (onChange) { - onChange(newValue, newValue?.addedFields); + if (!hasDefaultValue) { + // For multiple mode, check if value is empty array or null/undefined + // For single mode, check if value is null/undefined + const shouldPreselect = multiple + ? !value || (Array.isArray(value) && value.length === 0) + : !value; + + if (shouldPreselect) { + let preselectedOption; + + // Handle explicit preselected value + if (preselectedValue) { + preselectedOption = memoizedOptions.find((option) => option.value === preselectedValue); + } + // Handle auto-select first item from API + else if (api?.autoSelectFirstItem && memoizedOptions.length > 0) { + preselectedOption = memoizedOptions[0]; + } + + if (preselectedOption) { + const newValue = multiple ? [preselectedOption] : preselectedOption; + hasPreselectedRef.current = true; // Mark that we've preselected + if (onChange) { + onChange(newValue, newValue?.addedFields); + } + } } } } - }, [preselectedValue, defaultValue, value, memoizedOptions, multiple, onChange]); + }, [ + preselectedValue, + defaultValue, + value, + memoizedOptions, + multiple, + onChange, + api?.autoSelectFirstItem, + ]); // Create a stable key that only changes when necessary inputs change const stableKey = useMemo(() => { @@ -236,129 +312,383 @@ export const CippAutoComplete = (props) => { const foundOption = memoizedOptions.find((option) => option.value === value); return foundOption || { label: value, value: value }; }, - [memoizedOptions] + [memoizedOptions], ); return ( - - ) : ( - - ) - } - isOptionEqualToValue={(option, val) => option.value === val.value} - value={typeof value === "string" ? { label: value, value: value } : value} - filterSelectedOptions - disableClearable={disableClearable} - multiple={multiple} - fullWidth - placeholder={placeholder} - filterOptions={(options, params) => { - const filtered = filter(options, params); - const isExisting = - options?.length > 0 && - options.some( - (option) => params.inputValue === option.value || params.inputValue === option.label - ); - if (params.inputValue !== "" && creatable && !isExisting) { - const newOption = { - label: `Add option: "${params.inputValue}"`, - value: params.inputValue, - manual: true, - }; - if (!filtered.some((option) => option.value === newOption.value)) { - filtered.push(newOption); + <> + setOpen(true)} + onClose={(event, reason) => { + // Keep open if Tab was used in multiple mode + if (reason === "selectOption" && multiple && event?.type === "click") { + return; } + setOpen(false); + }} + disabled={disabled || actionGetRequest.isFetching || isFetching} + popupIcon={ + actionGetRequest.isFetching || isFetching ? ( + + ) : ( + + ) } + isOptionEqualToValue={(option, val) => option.value === val.value} + value={typeof value === "string" ? { label: value, value: value } : value} + filterSelectedOptions + disableClearable={disableClearable} + multiple={multiple} + fullWidth + placeholder={placeholder} + filterOptions={(options, params) => { + const filtered = filter(options, params); + const isExisting = + options?.length > 0 && + options.some( + (option) => params.inputValue === option.value || params.inputValue === option.label, + ); + if (params.inputValue !== "" && creatable && !isExisting) { + const newOption = { + label: `Add option: "${params.inputValue}"`, + value: params.inputValue, + manual: true, + }; + if (!filtered.some((option) => option.value === newOption.value)) { + filtered.push(newOption); + } + } - return filtered; - }} - size="small" - defaultValue={ - Array.isArray(defaultValue) - ? defaultValue.map((item) => - typeof item === "string" ? lookupOptionByValue(item) : item - ) - : typeof defaultValue === "object" && multiple - ? [defaultValue] - : typeof defaultValue === "string" - ? lookupOptionByValue(defaultValue) - : defaultValue - } - name={name} - onChange={(event, newValue) => { - if (Array.isArray(newValue)) { - newValue = newValue.map((item) => { - // If user typed a new item or missing label - if (item?.manual || !item?.label) { - item = { - label: item?.label ? item.value : item, - value: item?.label ? item.value : item, + return filtered; + }} + size="small" + defaultValue={ + Array.isArray(defaultValue) + ? defaultValue.map((item) => + typeof item === "string" ? lookupOptionByValue(item) : item, + ) + : typeof defaultValue === "object" && multiple + ? [defaultValue] + : typeof defaultValue === "string" + ? lookupOptionByValue(defaultValue) + : defaultValue + } + name={name} + onChange={(event, newValue) => { + // Store scroll position before processing the change + if (multiple && listboxRef.current) { + scrollPositionRef.current = listboxRef.current.scrollTop; + } + + if (Array.isArray(newValue)) { + newValue = newValue.map((item) => { + // If user typed a new item or missing label + if (item?.manual || !item?.label) { + item = { + label: item?.label ? item.value : item, + value: item?.label ? item.value : item, + }; + if (onCreateOption) { + item = onCreateOption(item, item?.addedFields); + } + } + return item; + }); + newValue = newValue.filter( + (item) => + item.value && item.value !== "" && item.value !== "error" && item.value !== -1, + ); + } else { + if (newValue?.manual || !newValue?.label) { + newValue = { + label: newValue?.label ? newValue.value : newValue, + value: newValue?.label ? newValue.value : newValue, }; if (onCreateOption) { - onCreateOption(item, item?.addedFields); + newValue = onCreateOption(newValue, newValue?.addedFields); } } - return item; - }); - newValue = newValue.filter( - (item) => item.value && item.value !== "" && item.value !== "error" && item.value !== -1 - ); - } else { - if (newValue?.manual || !newValue?.label) { - newValue = { - label: newValue?.label ? newValue.value : newValue, - value: newValue?.label ? newValue.value : newValue, - }; - if (onCreateOption) { - onCreateOption(newValue, newValue?.addedFields); + if (!newValue?.value || newValue.value === "error") { + newValue = null; } } - if (!newValue?.value || newValue.value === "error") { - newValue = null; + + // Track the internal value for the template view + setInternalValue(newValue); + + if (onChange) { + onChange(newValue, newValue?.addedFields); } - } - if (onChange) { - onChange(newValue, newValue?.addedFields); - } - }} - options={memoizedOptions} - getOptionLabel={useCallback( - (option) => - option - ? option.label === null - ? "" - : option.label || "Label not found - Are you missing a labelField?" - : "", - [] - )} - sx={sx} - renderInput={(params) => ( - - { + const input = autocompleteRef.current?.querySelector("input"); + if (input) { + input.focus(); + } + + // Restore the scroll position + if (listboxRef.current && scrollPositionRef.current > 0) { + listboxRef.current.scrollTop = scrollPositionRef.current; + } + }, 0); + } + }} + options={memoizedOptions} + getOptionLabel={useCallback( + (option) => { + if (!option) return ""; + // For static options (non-API), the option should already have a label + if (!api && option.label !== undefined) { + return option.label === null ? "" : String(option.label); + } + // For API options, use the existing logic + if (api) { + return option.label === null + ? "" + : option.label || "Label not found - Are you missing a labelField?"; + } + // Fallback for any edge cases + return option.label || option.value || ""; + }, + [api], + )} + onKeyDown={(event) => { + // Handle Tab key to select highlighted option + if (event.key === "Tab" && !event.shiftKey) { + // Check if there's a highlighted option + const listbox = document.querySelector('[role="listbox"]'); + const highlightedOption = listbox?.querySelector('[data-focus="true"], .Mui-focused'); + + if (highlightedOption && listbox?.style.display !== "none") { + event.preventDefault(); + // Trigger a click on the highlighted option + highlightedOption.click(); + + // In multiple mode, keep the popover open and refocus + if (multiple) { + setTimeout(() => { + setOpen(true); + const input = autocompleteRef.current?.querySelector("input"); + if (input) { + input.focus(); + } + }, 50); + } + } + } + }} + sx={sx} + renderInput={(params) => { + // Handle custom action button inside the TextField + const { InputProps, ...otherParams } = params; + const modifiedInputProps = + customAction && customAction.position === "inside" + ? { + ...InputProps, + endAdornment: ( + <> + {customAction && ( + + { + e.stopPropagation(); + customAction.onClick(value || internalValue); + } + : (e) => e.stopPropagation() + } + sx={{ + opacity: 0, + transition: "all 0.2s", + p: "4px", + mr: "-4px", + mt: -1, + cursor: "pointer", + color: "inherit", + textDecoration: "none", + "&:hover": { + opacity: 1, + backgroundColor: "action.hover", + }, + ".MuiAutocomplete-root:hover &": { + opacity: 0.6, + }, + ".MuiAutocomplete-root:hover &:hover": { + opacity: 1, + backgroundColor: "action.hover", + }, + }} + > + {customAction.icon} + + + )} + {InputProps?.endAdornment} + + ), + } + : InputProps; + + return ( + + + {api?.url && api?.showRefresh && ( + + { + actionGetRequest.refetch(); + }} + > + + + + )} + {api?.templateView && ( + + { + // Use internalValue if value prop is not available + const currentValue = value || internalValue; + + // Get the full object from the selected value + if (multiple) { + // For multiple selection, get all full objects + const fullObjects = currentValue + .map((v) => { + const valueToFind = v?.value || v; + const found = usedOptions.find((opt) => opt.value === valueToFind); + let rawData = found?.rawData; + + // If property is specified, extract and parse JSON from that property + if (rawData && api?.templateView?.property) { + try { + const propertyValue = rawData[api.templateView.property]; + if (typeof propertyValue === "string") { + rawData = JSON.parse(propertyValue); + } else { + rawData = propertyValue; + } + } catch (e) { + console.error("Failed to parse JSON from property:", e); + // Keep original rawData if parsing fails + } + } + + return rawData; + }) + .filter(Boolean); + setFullObject(fullObjects); + } else { + // For single selection, get the full object + const valueToFind = currentValue?.value || currentValue; + const selectedOption = usedOptions.find((opt) => opt.value === valueToFind); + let rawData = selectedOption?.rawData || null; + + // If property is specified, extract and parse JSON from that property + if (rawData && api?.templateView?.property) { + try { + const propertyValue = rawData[api.templateView.property]; + if (typeof propertyValue === "string") { + rawData = JSON.parse(propertyValue); + } else { + rawData = propertyValue; + } + } catch (e) { + console.error("Failed to parse JSON from property:", e); + // Keep original rawData if parsing fails + } + } + + setFullObject(rawData); + } + setOffCanvasVisible(true); + }} + title={api?.templateView.title || "View details"} + > + + + + )} + {customAction && customAction.position === "outside" && ( + { + e.stopPropagation(); + if (customAction.onClick) { + customAction.onClick(value || internalValue); + } + }} + title={customAction.tooltip || ""} + > + {customAction.icon} + + )} + + ); + }} + groupBy={groupBy} + renderGroup={renderGroup} + slotProps={{ + listbox: { + ref: listboxRef, + onScroll: (e) => { + if (listboxRef.current) { + scrollPositionRef.current = e.target.scrollTop; + } + }, + }, + }} + renderOption={(props, option) => { + const { key, ...optionProps } = props; + return ( + + + {option.label} + {option.description && ( + + {option.description} + + )} + + + ); + }} + {...other} + /> + {api?.templateView && ( + setOffCanvasVisible(false)} + title={api?.templateView?.title || "Details"} + size="xl" + > + - {api?.url && api?.showRefresh && ( - { - actionGetRequest.refetch(); - }} - > - - - )} - + )} - {...other} - /> + ); -}; +}); +CippAutoComplete.displayName = "CippAutoComplete"; diff --git a/src/components/CippComponents/CippAutopilotProfileDrawer.jsx b/src/components/CippComponents/CippAutopilotProfileDrawer.jsx new file mode 100644 index 000000000000..fa1ac63baa52 --- /dev/null +++ b/src/components/CippComponents/CippAutopilotProfileDrawer.jsx @@ -0,0 +1,259 @@ +import React, { useState, useEffect } from "react"; +import { Divider, Button } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm, useWatch, useFormState } from "react-hook-form"; +import { AccountCircle } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippFormTenantSelector } from "./CippFormTenantSelector"; +import { CippApiResults } from "./CippApiResults"; +import languageList from "../../data/languageList.json"; +import { ApiPostCall } from "../../api/ApiCall"; + +export const CippAutopilotProfileDrawer = ({ + buttonText = "Add Profile", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const formControl = useForm({ + mode: "onChange", + defaultValues: { + DisplayName: "", + Description: "", + DeviceNameTemplate: "", + languages: null, + CollectHash: false, + Assignto: true, + DeploymentMode: false, + HideTerms: true, + HidePrivacy: true, + HideChangeAccount: true, + NotLocalAdmin: true, + allowWhiteglove: true, + Autokeyboard: true, + }, + }); + + const createProfile = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: ["Autopilot Profiles*"], + }); + + // Watch the deployment mode to conditionally disable white glove + const deploymentMode = useWatch({ + control: formControl.control, + name: "DeploymentMode", + }); + + // Watch form state for validation + const { isValid, isDirty } = useFormState({ + control: formControl.control, + }); + + // Automatically disable white glove when self-deploying mode (shared) is enabled + useEffect(() => { + if (deploymentMode === true) { + // Self-deploying mode is enabled (shared mode), disable white glove + formControl.setValue("allowWhiteglove", false); + } + }, [deploymentMode, formControl]); + + const handleSubmit = () => { + const formData = formControl.getValues(); + // Always set HideChangeAccount to true regardless of form state + formData.HideChangeAccount = true; + createProfile.mutate({ + url: "/api/AddAutopilotConfig", + data: formData, + relatedQueryKeys: ["Autopilot Profiles*"], + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset(); + }; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + +
    + + +
    + + } + > + + {/* Tenant Selector */} + + + + + + + + + {/* Form Fields */} + + + + + + ({ + value: tag, + label: `${language} - ${geographicArea}`, // Format as "language - geographic area" for display + })), + ]} + formControl={formControl} + multiple={false} + /> + + + + + + + + + + + {/* Switches */} + + + + + + + + + + + + +
    + + ); +}; diff --git a/src/components/CippComponents/CippAutopilotStatusPageDrawer.jsx b/src/components/CippComponents/CippAutopilotStatusPageDrawer.jsx new file mode 100644 index 000000000000..3f0739ec4874 --- /dev/null +++ b/src/components/CippComponents/CippAutopilotStatusPageDrawer.jsx @@ -0,0 +1,180 @@ +import React, { useState } from "react"; +import { Divider, Button } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm, useFormState } from "react-hook-form"; +import { PostAdd } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippFormTenantSelector } from "./CippFormTenantSelector"; +import { CippApiResults } from "./CippApiResults"; +import { ApiPostCall } from "../../api/ApiCall"; + +export const CippAutopilotStatusPageDrawer = ({ + buttonText = "Add Status Page", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const formControl = useForm({ + mode: "onChange", + defaultValues: { + TimeOutInMinutes: "", + ErrorMessage: "", + ShowProgress: true, + EnableLog: true, + OBEEOnly: false, + blockDevice: true, + AllowReset: true, + AllowFail: false, + InstallWindowsUpdates: true, + }, + }); + + // Get form state for validation + const { isValid } = useFormState({ control: formControl.control }); + + const createStatusPage = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: ["Autopilot Status Pages"], + }); + + const handleSubmit = () => { + const formData = formControl.getValues(); + createStatusPage.mutate({ + url: "/api/AddEnrollment", + data: formData, + relatedQueryKeys: ["Autopilot Status Pages"], + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset(); + }; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + + + + } + > + + {/* Tenant Selector */} + + + + + + + + + {/* Form Fields */} + + + + + + + + + {/* Switches */} + + + + + + + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippBackupScheduleDrawer.jsx b/src/components/CippComponents/CippBackupScheduleDrawer.jsx new file mode 100644 index 000000000000..36f064d06110 --- /dev/null +++ b/src/components/CippComponents/CippBackupScheduleDrawer.jsx @@ -0,0 +1,287 @@ +import { useState, useEffect } from "react"; +import { Button, Box, Typography, Alert, AlertTitle } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm, useFormState } from "react-hook-form"; +import { Backup } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippFormTenantSelector } from "./CippFormTenantSelector"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiPostCall } from "../../api/ApiCall"; +import { omit } from "lodash"; + +export const CippBackupScheduleDrawer = ({ + buttonText = "Add Backup Schedule", + requiredPermissions = [], + PermissionButton = Button, + onSuccess, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const userSettingsDefaults = useSettings(); + + const formControl = useForm({ + mode: "onBlur", + defaultValues: { + tenantFilter: userSettingsDefaults.currentTenant, + users: true, + groups: true, + ca: true, + intuneconfig: true, + intunecompliance: true, + intuneprotection: true, + antispam: true, + antiphishing: true, + CippWebhookAlerts: true, + CippScriptedAlerts: true, + CippCustomVariables: true, + }, + }); + + const createBackup = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: [`BackupTasks-${userSettingsDefaults.currentTenant}`], + }); + + const { isValid, isDirty } = useFormState({ control: formControl.control }); + + useEffect(() => { + if (createBackup.isSuccess) { + formControl.reset({ + tenantFilter: userSettingsDefaults.currentTenant, + users: true, + groups: true, + ca: true, + intuneconfig: true, + intunecompliance: true, + intuneprotection: true, + antispam: true, + antiphishing: true, + CippWebhookAlerts: true, + CippScriptedAlerts: true, + CippCustomVariables: true, + }); + // Call onSuccess callback if provided + if (onSuccess) { + onSuccess(); + } + } + }, [createBackup.isSuccess, onSuccess]); + + const handleSubmit = () => { + formControl.trigger(); + if (!isValid) { + return; + } + const values = formControl.getValues(); + const startDate = new Date(); + startDate.setHours(0, 0, 0, 0); + const unixTime = Math.floor(startDate.getTime() / 1000) - 45; + const tenantFilter = values.tenantFilter || userSettingsDefaults.currentTenant; + + const shippedValues = { + TenantFilter: tenantFilter, + Name: `CIPP Backup - ${tenantFilter}`, + Command: { value: `New-CIPPBackup` }, + Parameters: { + backupType: "Scheduled", + ScheduledBackupValues: { ...omit(values, ["tenantFilter"]) }, + }, + ScheduledTime: unixTime, + Recurrence: { value: "1d" }, + }; + + createBackup.mutate({ + url: "/api/AddScheduledItem?hidden=true&DisallowDuplicateName=true", + data: shippedValues, + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset({ + tenantFilter: userSettingsDefaults.currentTenant, + users: true, + groups: true, + ca: true, + intuneconfig: true, + intunecompliance: true, + intuneprotection: true, + antispam: true, + antiphishing: true, + CippWebhookAlerts: true, + CippScriptedAlerts: true, + CippCustomVariables: true, + }); + }; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + + + + } + > + + + Backup Schedule Information + Create a scheduled backup task that will automatically backup your tenant configuration. + Backups are stored securely and can be restored using the restore functionality. + + + + + Tenant Selection + + + + + Identity + + + + + + + + + + Conditional Access + + + + + + + + Intune + + + + + + + + + + + + + + Email Security + + + + + + + + + + CIPP + + + + + + + + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippBitlockerKeySearch.jsx b/src/components/CippComponents/CippBitlockerKeySearch.jsx new file mode 100644 index 000000000000..90c643e1dd74 --- /dev/null +++ b/src/components/CippComponents/CippBitlockerKeySearch.jsx @@ -0,0 +1,288 @@ +import { useEffect, useRef, useState } from "react"; +import { + Button, + Box, + Typography, + Skeleton, + Grid, + Paper, + Divider, + Chip, + Alert, + CircularProgress, +} from "@mui/material"; +import { VpnKey, Computer, CheckCircle, Cancel, Info, Key } from "@mui/icons-material"; +import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; +import { CippCopyToClipBoard } from "./CippCopyToClipboard"; + +const getVolumeTypeLabel = (volumeType) => { + const types = { + 0: "Operating System Volume", + 1: "Fixed Data Volume", + 2: "Removable Data Volume", + 3: "Unknown", + }; + return types[volumeType] || `Type ${volumeType}`; +}; + +export const CippBitlockerKeySearch = ({ + initialSearchTerm = "", + initialSearchType = "keyId", + autoSearch = false, +}) => { + const searchTerm = initialSearchTerm; + const searchType = initialSearchType || "keyId"; + const hasAutoSearched = useRef(false); + + // State to store retrieved recovery keys by keyId + const [recoveryKeys, setRecoveryKeys] = useState({}); + const [loadingKeys, setLoadingKeys] = useState({}); + + const retrieveKeyMutation = ApiPostCall({}); + + const handleRetrieveKey = async (keyId, deviceId, tenant) => { + setLoadingKeys((prev) => ({ ...prev, [keyId]: true })); + + try { + const response = await retrieveKeyMutation.mutateAsync({ + url: "/api/ExecGetRecoveryKey", + data: { + GUID: deviceId, + RecoveryKeyType: "BitLocker", + tenantFilter: tenant, + }, + }); + + // Extract the key from the response + if (response?.data?.Results?.copyField) { + setRecoveryKeys((prev) => ({ ...prev, [keyId]: response.data.Results.copyField })); + } + } catch (error) { + console.error("Failed to retrieve key:", error); + } finally { + setLoadingKeys((prev) => ({ ...prev, [keyId]: false })); + } + }; + + const getBitlockerKeys = ApiGetCall({ + url: "/api/ExecBitlockerSearch", + data: { [searchType]: searchTerm }, + queryKey: `bitlocker-${searchType}-${searchTerm}`, + waiting: false, + }); + const { data, isSuccess, isFetching, refetch } = getBitlockerKeys; + const isLoading = isFetching; + + useEffect(() => { + hasAutoSearched.current = false; + }, [initialSearchTerm, initialSearchType]); + + useEffect(() => { + if (autoSearch && searchTerm && !hasAutoSearched.current) { + refetch(); + hasAutoSearched.current = true; + } + }, [autoSearch, refetch, searchTerm]); + + const results = data?.Results || []; + + const content = ( + + {isLoading && ( + + + + )} + + {isSuccess && ( + <> + + {results.map((result, index) => ( + + + {/* BitLocker Key Information */} + + + + BitLocker Key Information + + + + + + Key ID + + + + {result.keyId || "N/A"} + + + + + + + Volume Type + + + + + + + Created + + + {result.createdDateTime + ? new Date(result.createdDateTime).toLocaleString() + : "N/A"} + + + + + + Tenant + + {result.tenant || "N/A"} + + + + + Recovery Key + + + {recoveryKeys[result.keyId] ? ( + <> + + {recoveryKeys[result.keyId]} + + + + ) : ( + + )} + + + + {/* Device Information */} + {result.deviceFound && ( + <> + + + + + Device Information + + + + + + Device Name + + {result.deviceName || "N/A"} + + + + + Device ID + + + + {result.deviceId || "N/A"} + + + + + + + Operating System + + + {result.operatingSystem || "N/A"} + {result.osVersion && ` (${result.osVersion})`} + + + + + + Account Status + + + ) : ( + + ) + } + label={result.accountEnabled ? "Enabled" : "Disabled"} + size="small" + color={result.accountEnabled ? "success" : "default"} + /> + + + + + Trust Type + + {result.trustType || "N/A"} + + + + + Last Sign In + + + {result.lastSignIn ? new Date(result.lastSignIn).toLocaleString() : "N/A"} + + + + )} + + {!result.deviceFound && ( + + }> + Device information not found in cache. The device may have been deleted or + not yet synced. + + + )} + + + ))} + + + )} + + ); + return content; +}; + +export default CippBitlockerKeySearch; diff --git a/src/components/CippComponents/CippBreadcrumbNav.jsx b/src/components/CippComponents/CippBreadcrumbNav.jsx new file mode 100644 index 000000000000..98093aa34974 --- /dev/null +++ b/src/components/CippComponents/CippBreadcrumbNav.jsx @@ -0,0 +1,744 @@ +import { useEffect, useState, useRef } from "react"; +import { useRouter } from "next/router"; +import { Breadcrumbs, Link, Typography, Box, IconButton, Tooltip } from "@mui/material"; +import { NavigateNext, History, AccountTree } from "@mui/icons-material"; +import { nativeMenuItems } from "../../layouts/config"; +import { useSettings } from "../../hooks/use-settings"; + +const MAX_HISTORY_STORAGE = 20; // Maximum number of pages to keep in history +const MAX_BREADCRUMB_DISPLAY = 5; // Maximum number of breadcrumbs to display at once + +/** + * Load all tabOptions.json files dynamically + */ +async function loadTabOptions() { + const tabOptionPaths = [ + "/email/administration/exchange-retention", + "/cipp/custom-data", + "/cipp/super-admin", + "/tenant/standards", + "/tenant/manage", + "/tenant/administration/applications", + "/tenant/administration/tenants", + "/tenant/administration/audit-logs", + "/identity/administration/users/user", + "/tenant/administration/securescore", + "/tenant/gdap-management", + "/tenant/gdap-management/relationships/relationship", + "/cipp/settings", + ]; + + const tabOptions = []; + + for (const basePath of tabOptionPaths) { + try { + const module = await import(`../../pages${basePath}/tabOptions.json`); + const options = module.default || module; + + // Add each tab option with metadata + options.forEach((option) => { + tabOptions.push({ + title: option.label, + path: option.path, + type: "tab", + basePath: basePath, + }); + }); + } catch (error) { + // Silently skip if file doesn't exist or can't be loaded + } + } + + return tabOptions; +} + +export const CippBreadcrumbNav = () => { + const router = useRouter(); + const settings = useSettings(); + const [history, setHistory] = useState([]); + const [mode, setMode] = useState(settings.breadcrumbMode || "hierarchical"); + const [tabOptions, setTabOptions] = useState([]); + const lastRouteRef = useRef(null); + const titleCheckCountRef = useRef(0); + const titleCheckIntervalRef = useRef(null); + + // Helper function to filter out unnecessary query parameters + const getCleanQueryParams = (query) => { + const cleaned = { ...query }; + // Remove tenantFilter if it's "AllTenants" or not explicitly needed + if (cleaned.tenantFilter === "AllTenants" || cleaned.tenantFilter === undefined) { + delete cleaned.tenantFilter; + } + return cleaned; + }; + + // Helper function to clean page titles + const cleanPageTitle = (title) => { + if (!title) return title; + // Remove AllTenants and any surrounding separators + return title + .replace(/\s*-\s*AllTenants\s*/, "") + .replace(/AllTenants\s*-\s*/, "") + .replace(/AllTenants/, "") + .trim(); + }; + + // Load tab options on mount + useEffect(() => { + loadTabOptions().then(setTabOptions); + }, []); + + useEffect(() => { + // Only update when the route actually changes, not on every render + const currentRoute = router.asPath; + + // Skip if this is the same route as last time + if (lastRouteRef.current === currentRoute) { + return; + } + + lastRouteRef.current = currentRoute; + + // Clear any existing title check interval + if (titleCheckIntervalRef.current) { + clearInterval(titleCheckIntervalRef.current); + titleCheckIntervalRef.current = null; + } + + // Reset check counter + titleCheckCountRef.current = 0; + + // Function to check and update title + const checkTitle = () => { + titleCheckCountRef.current++; + + // Stop checking after 50 attempts (5 seconds) to prevent infinite intervals + if (titleCheckCountRef.current > 50) { + if (titleCheckIntervalRef.current) { + clearInterval(titleCheckIntervalRef.current); + titleCheckIntervalRef.current = null; + } + return; + } + + let pageTitle = document.title.replace(" - CIPP", "").trim(); + + // Remove tenant domain from title (e.g., "Groups - domain.onmicrosoft.com" -> "Groups") + // But only if it looks like a domain (contains a dot) + const parts = pageTitle.split(" - "); + if (parts.length > 1 && parts[parts.length - 1].includes(".")) { + pageTitle = parts.slice(0, -1).join(" - ").trim(); + } + + // Clean AllTenants from title + pageTitle = cleanPageTitle(pageTitle); + + // Skip if title is empty, generic, or error page + if ( + !pageTitle || + pageTitle === "CIPP" || + pageTitle.toLowerCase().includes("error") || + pageTitle === "404" || + pageTitle === "500" + ) { + return; + } + + // Normalize URL for comparison (remove trailing slashes and query params) + const normalizeUrl = (url) => { + // Remove query params and trailing slashes for comparison + return url.split("?")[0].replace(/\/$/, "").toLowerCase(); + }; + + const currentPage = { + title: pageTitle, + path: router.pathname, + query: { ...router.query }, + fullUrl: router.asPath, + timestamp: Date.now(), + }; + + const normalizedCurrentUrl = normalizeUrl(currentPage.fullUrl); + + setHistory((prevHistory) => { + // Check if last entry has same title AND similar path (prevent duplicate with same content) + const lastEntry = prevHistory[prevHistory.length - 1]; + if (lastEntry) { + const sameTitle = lastEntry.title.trim() === currentPage.title.trim(); + const samePath = normalizeUrl(lastEntry.fullUrl) === normalizedCurrentUrl; + + if (sameTitle && samePath) { + // Exact duplicate - don't add, just stop checking + if (titleCheckIntervalRef.current) { + clearInterval(titleCheckIntervalRef.current); + titleCheckIntervalRef.current = null; + } + return prevHistory; + } + + if (samePath && !sameTitle) { + // Same URL but title changed - update the entry + const updated = [...prevHistory]; + updated[prevHistory.length - 1] = { + ...currentPage, + query: getCleanQueryParams(currentPage.query), + }; + if (titleCheckIntervalRef.current) { + clearInterval(titleCheckIntervalRef.current); + titleCheckIntervalRef.current = null; + } + return updated; + } + } + + // Find if this URL exists anywhere EXCEPT the last position in history + const existingIndex = prevHistory.findIndex((entry, index) => { + // Skip the last entry since we already checked it above + if (index === prevHistory.length - 1) return false; + return normalizeUrl(entry.fullUrl) === normalizedCurrentUrl; + }); + + // URL not in history (except possibly as last entry which we handled) - add as new entry + if (existingIndex === -1) { + const cleanedCurrentPage = { + ...currentPage, + query: getCleanQueryParams(currentPage.query), + }; + const newHistory = [...prevHistory, cleanedCurrentPage]; + + // Keep only the last MAX_HISTORY_STORAGE pages + const trimmedHistory = + newHistory.length > MAX_HISTORY_STORAGE + ? newHistory.slice(-MAX_HISTORY_STORAGE) + : newHistory; + + // Don't stop checking yet - title might still be loading + return trimmedHistory; + } + + // URL exists in history but not as last entry - user navigated back + // Truncate history after this point and update the entry + if (titleCheckIntervalRef.current) { + clearInterval(titleCheckIntervalRef.current); + titleCheckIntervalRef.current = null; + } + const updated = prevHistory.slice(0, existingIndex + 1); + updated[existingIndex] = { + ...currentPage, + query: getCleanQueryParams(currentPage.query), + }; + return updated; + }); + }; + + // Start checking for title updates + titleCheckIntervalRef.current = setInterval(checkTitle, 100); + + return () => { + if (titleCheckIntervalRef.current) { + clearInterval(titleCheckIntervalRef.current); + titleCheckIntervalRef.current = null; + } + }; + }, [router.asPath, router.pathname, router.query]); + + const handleBreadcrumbClick = (index) => { + const page = history[index]; + if (page) { + const cleanedQuery = getCleanQueryParams(page.query); + router.push({ + pathname: page.path, + query: cleanedQuery, + }); + } + }; + + // State to track current page title for hierarchical mode + const [currentPageTitle, setCurrentPageTitle] = useState(null); + const hierarchicalTitleCheckRef = useRef(null); + const hierarchicalCheckCountRef = useRef(0); + + // Watch for title changes to update hierarchical breadcrumbs + useEffect(() => { + if (mode === "hierarchical") { + // Clear any existing interval + if (hierarchicalTitleCheckRef.current) { + clearInterval(hierarchicalTitleCheckRef.current); + hierarchicalTitleCheckRef.current = null; + } + + // Reset counter + hierarchicalCheckCountRef.current = 0; + + const updateTitle = () => { + hierarchicalCheckCountRef.current++; + + // Stop after 20 attempts (10 seconds) to prevent infinite checking + if (hierarchicalCheckCountRef.current > 20) { + if (hierarchicalTitleCheckRef.current) { + clearInterval(hierarchicalTitleCheckRef.current); + hierarchicalTitleCheckRef.current = null; + } + return; + } + + let pageTitle = document.title.replace(" - CIPP", "").trim(); + const parts = pageTitle.split(" - "); + const cleanTitle = + parts.length > 1 && parts[parts.length - 1].includes(".") + ? parts.slice(0, -1).join(" - ").trim() + : pageTitle; + + // Clean AllTenants from title + const finalTitle = cleanPageTitle(cleanTitle); + + if (finalTitle && finalTitle !== "CIPP" && !finalTitle.toLowerCase().includes("loading")) { + setCurrentPageTitle(finalTitle); + // Stop checking once we have a valid title + if (hierarchicalTitleCheckRef.current) { + clearInterval(hierarchicalTitleCheckRef.current); + hierarchicalTitleCheckRef.current = null; + } + } + }; + + // Initial update + updateTitle(); + + // Only start interval if we don't have a valid title yet + if (!currentPageTitle || currentPageTitle.toLowerCase().includes("loading")) { + hierarchicalTitleCheckRef.current = setInterval(updateTitle, 500); + } + + return () => { + if (hierarchicalTitleCheckRef.current) { + clearInterval(hierarchicalTitleCheckRef.current); + hierarchicalTitleCheckRef.current = null; + } + }; + } + }, [mode, router.pathname]); + + // Build hierarchical breadcrumbs from config.js navigation structure + const buildHierarchicalBreadcrumbs = () => { + const currentPath = router.pathname; + + // Helper to check if paths match (handles dynamic routes) + const pathsMatch = (menuPath, currentPath) => { + if (!menuPath) return false; + + // Exact match + if (menuPath === currentPath) return true; + + // Check if current path starts with menu path (for nested routes) + // e.g., menu: "/identity/administration/users" matches "/identity/administration/users/edit" + if (currentPath.startsWith(menuPath + "/")) return true; + + return false; + }; + + const findPathInMenu = (items, path = []) => { + for (const item of items) { + const currentBreadcrumb = [...path]; + + // Add current item to path if it has a title + // Include all items (headers, groups, and pages) to show full hierarchy + if (item.title) { + currentBreadcrumb.push({ + title: item.title, + path: item.path, + type: item.type, + query: {}, // Menu items don't have query params by default + }); + } + + // Check if this item matches the current path + if (item.path && pathsMatch(item.path, currentPath)) { + // If this is the current page, include current query params (cleaned) + if (item.path === currentPath) { + const lastItem = currentBreadcrumb[currentBreadcrumb.length - 1]; + if (lastItem) { + lastItem.query = getCleanQueryParams(router.query); + } + } + return currentBreadcrumb; + } + + // Recursively search children + if (item.items && item.items.length > 0) { + const result = findPathInMenu(item.items, currentBreadcrumb); + if (result.length > 0) { + return result; + } + } + } + return []; + }; + + let result = findPathInMenu(nativeMenuItems); + + // If we found a menu item, check if the current path matches any tab + // If so, tabOptions wins and we use its label + if (result.length > 0 && tabOptions.length > 0) { + const normalizedCurrentPath = currentPath.replace(/\/$/, ""); + + // Check if current path matches any tab (exact match) + const matchingTab = tabOptions.find((tab) => { + const normalizedTabPath = tab.path.replace(/\/$/, ""); + return normalizedTabPath === normalizedCurrentPath; + }); + + if (matchingTab) { + // Tab matches the current path - use tab's label instead of config's + result = result.map((item, idx) => { + if (idx === result.length - 1) { + return { + ...item, + title: matchingTab.title, + type: "tab", + }; + } + return item; + }); + } + } + + // If not found in main menu, check if it's a tab page + if (result.length === 0 && tabOptions.length > 0) { + const normalizedCurrentPath = currentPath.replace(/\/$/, ""); + + // Find matching tab option + const matchingTab = tabOptions.find((tab) => { + const normalizedTabPath = tab.path.replace(/\/$/, ""); + return normalizedTabPath === normalizedCurrentPath; + }); + + if (matchingTab) { + // Find the base page in the menu and build full path to it + const normalizedBasePath = matchingTab.basePath?.replace(/\/$/, ""); + + // Recursively find the base page and build breadcrumb path + const findBasePageWithPath = (items, path = []) => { + for (const item of items) { + const currentBreadcrumb = [...path]; + + // Add current item to path if it has a title + if (item.title) { + currentBreadcrumb.push({ + title: item.title, + path: item.path, + type: item.type, + query: {}, // Menu items don't have query params by default + }); + } + + // Check if this item matches the base path + if (item.path) { + const normalizedItemPath = item.path.replace(/\/$/, ""); + if ( + normalizedItemPath === normalizedBasePath || + normalizedItemPath.startsWith(normalizedBasePath) + ) { + return currentBreadcrumb; + } + } + + // Recursively search children + if (item.items && item.items.length > 0) { + const found = findBasePageWithPath(item.items, currentBreadcrumb); + if (found.length > 0) { + return found; + } + } + } + return []; + }; + + const basePagePath = findBasePageWithPath(nativeMenuItems); + + if (basePagePath.length > 0) { + result = basePagePath; + + // Add the tab as the final breadcrumb with current query params (cleaned) + result.push({ + title: matchingTab.title, + path: matchingTab.path, + type: "tab", + query: getCleanQueryParams(router.query), // Include current query params for tab page + }); + } + } + } + + // Check if we're on a nested page under a menu item (e.g., edit page) + if (result.length > 0) { + const lastItem = result[result.length - 1]; + if (lastItem.path && lastItem.path !== currentPath && currentPath.startsWith(lastItem.path)) { + // Use the tracked page title if available, otherwise fall back to document.title + let tabTitle = currentPageTitle || document.title.replace(" - CIPP", "").trim(); + + // Clean AllTenants from title + tabTitle = cleanPageTitle(tabTitle); + + // Add tab as an additional breadcrumb item + if ( + tabTitle && + tabTitle !== lastItem.title && + !tabTitle.toLowerCase().includes("loading") + ) { + result.push({ + title: tabTitle, + path: currentPath, + type: "tab", + query: getCleanQueryParams(router.query), // Include current query params (cleaned) + }); + } + } + } + + return result; + }; + + // Check if a path is valid and return its title from navigation or tabs + const getPathInfo = (path) => { + if (!path) return { isValid: false, title: null }; + + const normalizedPath = path.replace(/\/$/, ""); + + // Helper function to recursively search menu items + const findInMenu = (items) => { + for (const item of items) { + if (item.path) { + const normalizedItemPath = item.path.replace(/\/$/, ""); + if (normalizedItemPath === normalizedPath) { + return { isValid: true, title: item.title }; + } + } + if (item.items && item.items.length > 0) { + const found = findInMenu(item.items); + if (found.isValid) { + return found; + } + } + } + return { isValid: false, title: null }; + }; + + // Check if path exists in navigation + const menuResult = findInMenu(nativeMenuItems); + if (menuResult.isValid) { + return menuResult; + } + + // Check if path exists in tab options + const matchingTab = tabOptions.find((tab) => tab.path.replace(/\/$/, "") === normalizedPath); + if (matchingTab) { + return { isValid: true, title: matchingTab.title }; + } + + return { isValid: false, title: null }; + }; + + // Handle click for hierarchical breadcrumbs + const handleHierarchicalClick = (path, query) => { + if (path) { + const cleanedQuery = getCleanQueryParams(query); + if (cleanedQuery && Object.keys(cleanedQuery).length > 0) { + router.push({ + pathname: path, + query: cleanedQuery, + }); + } else { + router.push(path); + } + } + }; + + // Toggle between modes + const toggleMode = () => { + setMode((prevMode) => { + const newMode = prevMode === "hierarchical" ? "history" : "hierarchical"; + settings.handleUpdate({ breadcrumbMode: newMode }); + return newMode; + }); + }; + + // Render based on mode + if (mode === "hierarchical") { + let breadcrumbs = buildHierarchicalBreadcrumbs(); + + // Fallback: If no breadcrumbs found in navigation config, generate from URL path + if (breadcrumbs.length === 0) { + const pathSegments = router.pathname.split("/").filter((segment) => segment); + + if (pathSegments.length > 0) { + breadcrumbs = pathSegments.map((segment, index) => { + // Build the path up to this segment + const path = "/" + pathSegments.slice(0, index + 1).join("/"); + + // Format segment as title (replace hyphens with spaces, capitalize words) + const title = segment + .split("-") + .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) + .join(" "); + + return { + title, + path, + type: "fallback", + query: index === pathSegments.length - 1 ? getCleanQueryParams(router.query) : {}, + }; + }); + + // If we have a current page title from document.title, use it for the last breadcrumb + if ( + currentPageTitle && + currentPageTitle !== "CIPP" && + !currentPageTitle.toLowerCase().includes("loading") + ) { + breadcrumbs[breadcrumbs.length - 1].title = cleanPageTitle(currentPageTitle); + } + } + } + + // Don't show if still no breadcrumbs found + if (breadcrumbs.length === 0) { + return null; + } + + return ( + + + + + + + } + aria-label="page hierarchy" + sx={{ fontSize: "0.875rem", flexGrow: 1 }} + > + {breadcrumbs.map((crumb, index) => { + const isLast = index === breadcrumbs.length - 1; + const pathInfo = getPathInfo(crumb.path); + // Use title from nav/tabs if available, otherwise use the crumb's title + const displayTitle = pathInfo.title || crumb.title; + + // Items without paths (headers/groups) - show as text + if (!crumb.path) { + return ( + + {displayTitle} + + ); + } + + // Items with valid paths are clickable + // Items with invalid paths (fallback) are shown as plain text + if (pathInfo.isValid) { + return ( + handleHierarchicalClick(crumb.path, crumb.query)} + sx={{ + textDecoration: "none", + color: isLast ? "text.primary" : "text.secondary", + fontWeight: isLast ? 500 : 400, + "&:hover": { + textDecoration: "underline", + color: "primary.main", + }, + }} + > + {displayTitle} + + ); + } else { + // Invalid path - show as text only + return ( + + {displayTitle} + + ); + } + })} + + + ); + } + + // Default mode: history-based breadcrumbs + // Don't show breadcrumbs if we have no history + if (history.length === 0) { + return null; + } + + // Show only the last MAX_BREADCRUMB_DISPLAY items + const visibleHistory = history.slice(-MAX_BREADCRUMB_DISPLAY); + + return ( + + + + + + + } + aria-label="navigation history" + sx={{ fontSize: "0.875rem", flexGrow: 1 }} + > + {visibleHistory.map((page, index) => { + const isLast = index === visibleHistory.length - 1; + // Calculate the actual index in the full history + const actualIndex = history.length - visibleHistory.length + index; + + if (isLast) { + return ( + + {page.title} + + ); + } + + return ( + handleBreadcrumbClick(actualIndex)} + sx={{ + textDecoration: "none", + color: "text.secondary", + "&:hover": { + textDecoration: "underline", + color: "primary.main", + }, + }} + > + {page.title} + + ); + })} + + + ); +}; diff --git a/src/components/CippComponents/CippBulkInviteGuestDrawer.jsx b/src/components/CippComponents/CippBulkInviteGuestDrawer.jsx new file mode 100644 index 000000000000..d9d413888246 --- /dev/null +++ b/src/components/CippComponents/CippBulkInviteGuestDrawer.jsx @@ -0,0 +1,287 @@ +import { useState } from "react"; +import { Button, Link, Dialog, DialogActions, DialogContent, DialogTitle } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm, useWatch } from "react-hook-form"; +import { GroupAdd, Delete } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippDataTable } from "../CippTable/CippDataTable"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiPostCall } from "../../api/ApiCall"; +import { getCippValidator } from "../../utils/get-cipp-validator"; + +export const CippBulkInviteGuestDrawer = ({ + buttonText = "Bulk Invite Guests", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const [addRowDialogOpen, setAddRowDialogOpen] = useState(false); + const initialState = useSettings(); + + const fields = ["displayName", "mail", "redirectUri"]; + + const formControl = useForm({ + mode: "onBlur", + defaultValues: { + tenantFilter: initialState.currentTenant, + sendInvite: true, + message: "", + bulkGuests: [], + }, + }); + + const bulkGuestsData = useWatch({ control: formControl.control, name: "bulkGuests" }); + + const inviteGuestsBulk = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: [`Users-${initialState.currentTenant}`], + }); + + formControl.register("bulkGuests", { + validate: (value) => Array.isArray(value) && value.length > 0, + }); + + const handleRemoveItem = (row) => { + if (row === undefined) return false; + const currentData = formControl.getValues("bulkGuests") || []; + // Match Bulk User drawer behavior first (reference equality) + let index = currentData.findIndex((item) => item === row); + + // Fallback: table/CSV layers can change object references + if (index < 0) { + const normalize = (value) => + String(value ?? "") + .trim() + .toLowerCase(); + const targetDisplayName = normalize(row?.displayName); + const targetMail = normalize(row?.mail); + const targetRedirectUri = normalize(row?.redirectUri); + + index = currentData.findIndex((item) => { + return ( + normalize(item?.displayName) === targetDisplayName && + normalize(item?.mail) === targetMail && + normalize(item?.redirectUri) === targetRedirectUri + ); + }); + } + + if (index < 0) return false; + const newData = [...currentData]; + newData.splice(index, 1); + formControl.setValue("bulkGuests", newData, { shouldValidate: true }); + }; + + const handleAddItem = () => { + const newRowData = formControl.getValues("addrow"); + if (!newRowData) return; + + const nextRow = { + displayName: newRowData.displayName ?? "", + mail: newRowData.mail ?? "", + redirectUri: newRowData.redirectUri ?? "", + }; + + if (!nextRow.displayName || !nextRow.mail) { + return; + } + + const currentData = formControl.getValues("bulkGuests") || []; + formControl.setValue("bulkGuests", [...currentData, nextRow], { shouldValidate: true }); + setAddRowDialogOpen(false); + formControl.reset({ + ...formControl.getValues(), + addrow: {}, + }); + }; + + const handleSubmit = () => { + const formData = formControl.getValues(); + const tenantFilter = formData.tenantFilter; + + const payload = (formData.bulkGuests || []).map((row) => ({ + tenantFilter, + displayName: row?.displayName ?? "", + mail: row?.mail ?? "", + redirectUri: row?.redirectUri ?? "", + message: formData.message ?? "", + sendInvite: !!formData.sendInvite, + })); + + inviteGuestsBulk.mutate({ + url: "/api/AddGuest", + bulkRequest: true, + data: payload, + relatedQueryKeys: [`Users-${initialState.currentTenant}`], + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset({ + tenantFilter: initialState.currentTenant, + sendInvite: true, + message: "", + bulkGuests: [], + }); + }; + + const actions = [ + { + icon: , + label: "Delete Row", + confirmText: "Are you sure you want to delete this row?", + customFunction: handleRemoveItem, + noConfirm: true, + }, + ]; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + + + + } + > + + + + + + + + + + + + Download Example CSV + + + + + + + + + + + + + + + + + + + setAddRowDialogOpen(false)} + maxWidth="sm" + fullWidth + > + Add a new guest + + + + + + + !value || getCippValidator(value, "email"), + }} + /> + + + + + + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippBulkUserDrawer.jsx b/src/components/CippComponents/CippBulkUserDrawer.jsx new file mode 100644 index 000000000000..53d4317c07be --- /dev/null +++ b/src/components/CippComponents/CippBulkUserDrawer.jsx @@ -0,0 +1,274 @@ +import { useState } from "react"; +import { Button, Link, Dialog, DialogActions, DialogContent, DialogTitle } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm, useWatch } from "react-hook-form"; +import { GroupAdd, Delete } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippFormLicenseSelector } from "./CippFormLicenseSelector"; +import { CippDataTable } from "../CippTable/CippDataTable"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiPostCall } from "../../api/ApiCall"; +import { getCippTranslation } from "../../utils/get-cipp-translation"; +import countryList from "../../data/countryList.json"; + +export const CippBulkUserDrawer = ({ + buttonText = "Bulk Add Users", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const [addRowDialogOpen, setAddRowDialogOpen] = useState(false); + const initialState = useSettings(); + + const addedFields = initialState?.defaultAttributes + ? initialState.userAttributes.map((item) => item.label) + : []; + + const fields = [ + "givenName", + "surName", + "displayName", + "mailNickName", + "domain", + "JobTitle", + "streetAddress", + "PostalCode", + "City", + "State", + "Department", + "MobilePhone", + "businessPhones", + ...addedFields, + ]; + + const fieldValidators = { + givenName: { maxLength: { value: 64, message: "First Name cannot exceed 64 characters" } }, + surName: { maxLength: { value: 64, message: "Last Name cannot exceed 64 characters" } }, + displayName: { + required: "Display Name is required", + maxLength: { value: 256, message: "Display Name cannot exceed 256 characters" }, + }, + mailNickName: { + required: "Username is required", + maxLength: { value: 64, message: "Username cannot exceed 64 characters" }, + pattern: { + value: /^[A-Za-z0-9'.\-_!#^~]+$/, + message: "Username can only contain letters, numbers, and ' . - _ ! # ^ ~ characters", + }, + }, + JobTitle: { maxLength: { value: 128, message: "Job Title cannot exceed 128 characters" } }, + streetAddress: { + maxLength: { value: 1024, message: "Street Address cannot exceed 1024 characters" }, + }, + PostalCode: { maxLength: { value: 40, message: "Postal Code cannot exceed 40 characters" } }, + City: { maxLength: { value: 128, message: "City cannot exceed 128 characters" } }, + State: { maxLength: { value: 128, message: "State/Province cannot exceed 128 characters" } }, + Department: { maxLength: { value: 64, message: "Department cannot exceed 64 characters" } }, + MobilePhone: { maxLength: { value: 64, message: "Mobile # cannot exceed 64 characters" } }, + }; + + const formControl = useForm({ + mode: "onBlur", + defaultValues: { + tenantFilter: initialState.currentTenant, + usageLocation: initialState.usageLocation || "US", + bulkUser: [], + licenses: [], + }, + }); + + const bulkUserData = useWatch({ control: formControl.control, name: "bulkUser" }); + + const createBulkUsers = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: ["Users"], + }); + + // Register the bulkUser field with validation + formControl.register("bulkUser", { + validate: (value) => Array.isArray(value) && value.length > 0, + }); + + const handleRemoveItem = (row) => { + if (row === undefined) return false; + const currentData = formControl.getValues("bulkUser") || []; + const index = currentData.findIndex((item) => item === row); + const newData = [...currentData]; + newData.splice(index, 1); + formControl.setValue("bulkUser", newData, { shouldValidate: true }); + }; + + const handleAddItem = () => { + const newRowData = formControl.getValues("addrow"); + if (newRowData === undefined) return false; + const currentData = formControl.getValues("bulkUser") || []; + const newData = [...currentData, newRowData]; + formControl.setValue("bulkUser", newData, { shouldValidate: true }); + setAddRowDialogOpen(false); + formControl.reset({ + ...formControl.getValues(), + addrow: {}, + }); + }; + + const handleSubmit = () => { + const formData = formControl.getValues(); + createBulkUsers.mutate({ + url: "/api/AddUserBulk", + data: formData, + relatedQueryKeys: ["Users"], + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset({ + tenantFilter: initialState.currentTenant, + usageLocation: initialState.usageLocation || "US", + bulkUser: [], + licenses: [], + }); + }; + + const actions = [ + { + icon: , + label: "Delete Row", + confirmText: "Are you sure you want to delete this row?", + customFunction: handleRemoveItem, + noConfirm: true, + }, + ]; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + + + + } + > + + + ({ + label: Name, + value: Code, + }))} + formControl={formControl} + /> + + + + + + + + + Download Example CSV + + + + + + + + + + + + + + + + + + + setAddRowDialogOpen(false)} + maxWidth="md" + fullWidth + > + Add a new user + + + {fields.map((field) => ( + + + + ))} + + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippCADeployDrawer.jsx b/src/components/CippComponents/CippCADeployDrawer.jsx new file mode 100644 index 000000000000..6b2a4a633ff4 --- /dev/null +++ b/src/components/CippComponents/CippCADeployDrawer.jsx @@ -0,0 +1,230 @@ +import { useEffect, useState, useCallback } from "react"; +import { Button, Stack } from "@mui/material"; +import { RocketLaunch } from "@mui/icons-material"; +import { useForm, useWatch } from "react-hook-form"; +import { CippOffCanvas } from "./CippOffCanvas"; +import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; +import CippFormComponent from "./CippFormComponent"; +import CippJsonView from "../CippFormPages/CippJSONView"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; +import { CippFormTenantSelector } from "./CippFormTenantSelector"; +import { CippFormCondition } from "./CippFormCondition"; + +export const CippCADeployDrawer = ({ + buttonText = "Deploy CA Policy", + requiredPermissions = [], + PermissionButton = Button, + templateId = null, // New prop for pre-supplying template ID + open = null, // External control for drawer visibility + onClose = null, // External close handler +}) => { + const [internalDrawerVisible, setInternalDrawerVisible] = useState(false); + const formControl = useForm(); + const tenantFilter = useSettings()?.tenantFilter; + const CATemplates = ApiGetCall({ url: "/api/ListCATemplates", queryKey: "CATemplates" }); + const [JSONData, setJSONData] = useState(); + const watcher = useWatch({ control: formControl.control, name: "TemplateList" }); + const selectedReplaceMode = useWatch({ + control: formControl.control, + name: "replacename", + }); + + // Use external open state if provided, otherwise use internal state + const drawerVisible = open !== null ? open : internalDrawerVisible; + const isExternallyControlled = open !== null && onClose !== null; + + const updateTemplate = useCallback( + (templateGuid) => { + if (CATemplates.isSuccess && templateGuid) { + const template = CATemplates.data.find((template) => template.GUID === templateGuid); + if (template) { + setJSONData(template); + formControl.setValue("rawjson", JSON.stringify(template, null)); + } + } + }, + [CATemplates.isSuccess, CATemplates.data, formControl.setValue] + ); + + // Effect to set template when templateId prop is provided + useEffect(() => { + if (templateId && CATemplates.isSuccess) { + // Find the template to get the display name + const template = CATemplates.data.find((template) => template.GUID === templateId); + if (template) { + // Pre-select the template when drawer opens + formControl.setValue("TemplateList", { value: templateId, label: template.displayName }); + updateTemplate(templateId); + } + } + }, [templateId, CATemplates.isSuccess, formControl, updateTemplate]); + + useEffect(() => { + updateTemplate(watcher?.value); + }, [updateTemplate, watcher?.value]); + + const deployPolicy = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: ["CATemplates", `Conditional Access Policies - ${tenantFilter}`], + }); + + const handleSubmit = () => { + const formData = formControl.getValues(); + console.log("Submitting CA form data:", formData); + deployPolicy.mutate({ + url: "/api/AddCAPolicy", + relatedQueryKeys: ["CATemplates", "Conditional Access Policies"], + data: { ...formData }, + }); + }; + + const handleCloseDrawer = () => { + if (isExternallyControlled) { + onClose(); + } else { + setInternalDrawerVisible(false); + } + formControl.reset(); + }; + + return ( + <> + {!isExternallyControlled && ( + setInternalDrawerVisible(true)} + startIcon={} + > + {buttonText} + + )} + + + + + + +
    + } + > + + + + ({ + label: template.displayName, + value: template.GUID, + })) + : [] + } + /> + + + + + + + + + + + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippCalendarPermissionsDialog.jsx b/src/components/CippComponents/CippCalendarPermissionsDialog.jsx index 6f44cb6fd064..33f31e21196f 100644 --- a/src/components/CippComponents/CippCalendarPermissionsDialog.jsx +++ b/src/components/CippComponents/CippCalendarPermissionsDialog.jsx @@ -2,29 +2,13 @@ import { useEffect } from "react"; import { Box, Stack, Tooltip } from "@mui/material"; import CippFormComponent from "./CippFormComponent"; import { useWatch } from "react-hook-form"; -import { ApiGetCall } from "../../api/ApiCall"; -import { useSettings } from "../../hooks/use-settings"; -const CippCalendarPermissionsDialog = ({ formHook }) => { +const CippCalendarPermissionsDialog = ({ formHook, combinedOptions, isUserGroupLoading }) => { const permissionLevel = useWatch({ control: formHook.control, name: "Permissions", }); - const userSettingsDefaults = useSettings(); - - const usersList = ApiGetCall({ - url: "/api/ListGraphRequest", - data: { - Endpoint: `users`, - tenantFilter: userSettingsDefaults.currentTenant, - $select: "id,displayName,userPrincipalName,mail", - noPagination: true, - $top: 999, - }, - queryKey: `UserNames-${userSettingsDefaults.currentTenant}`, - }); - const isEditor = permissionLevel?.value === "Editor"; useEffect(() => { @@ -33,6 +17,15 @@ const CippCalendarPermissionsDialog = ({ formHook }) => { } }, [isEditor, formHook]); + // default SendNotificationToUser to false on mount + useEffect(() => { + formHook.setValue("SendNotificationToUser", false); + }, [formHook]); + + // Only certain permission levels support sending a notification when calendar permissions are added + const notifyAllowed = ["AvailabilityOnly", "LimitedDetails", "Reviewer", "Editor"]; + const isNotifyAllowed = notifyAllowed.includes(permissionLevel?.value ?? permissionLevel); + return ( @@ -40,20 +33,13 @@ const CippCalendarPermissionsDialog = ({ formHook }) => { type="autoComplete" label="Add Access" name="UserToGetPermissions" - multiple={false} + multiple={true} formControl={formHook} - isFetching={usersList.isFetching} - options={ - usersList?.data?.Results?.map((user) => ({ - value: user.userPrincipalName, - label: `${user.displayName} (${user.userPrincipalName})`, - })) || [] - } - required={true} - validators={{ - validate: (value) => (value ? true : "Select a user to assign permissions to"), - }} - placeholder="Select a user to assign permissions to" + isFetching={isUserGroupLoading} + options={combinedOptions} + creatable={false} + validators={{ required: "Select a user or group to assign permissions to" }} + placeholder="Select a user or group to assign permissions to" /> @@ -61,10 +47,8 @@ const CippCalendarPermissionsDialog = ({ formHook }) => { type="autoComplete" label="Permission Level" name="Permissions" - required={true} - validators={{ - validate: (value) => (value ? true : "Select the permission level for the calendar"), - }} + creatable={false} + validators={{ required: "Select the permission level for the calendar" }} options={[ { value: "Author", label: "Author" }, { value: "Contributor", label: "Contributor" }, @@ -76,6 +60,7 @@ const CippCalendarPermissionsDialog = ({ formHook }) => { { value: "Reviewer", label: "Reviewer" }, { value: "LimitedDetails", label: "Limited Details" }, { value: "AvailabilityOnly", label: "Availability Only" }, + { value: "None", label: "None" }, ]} multiple={false} formControl={formHook} @@ -94,6 +79,30 @@ const CippCalendarPermissionsDialog = ({ formHook }) => { name="CanViewPrivateItems" formControl={formHook} disabled={!isEditor} + sx={{ ml: 1.5, mt: 0, mb: 0 }} + /> + + + + + + + + diff --git a/src/components/CippComponents/CippCentralSearch.jsx b/src/components/CippComponents/CippCentralSearch.jsx index 54e957e2c1c1..e21849b63133 100644 --- a/src/components/CippComponents/CippCentralSearch.jsx +++ b/src/components/CippComponents/CippCentralSearch.jsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import React, { useState, useMemo, useEffect } from "react"; import { Button, Dialog, @@ -14,7 +14,8 @@ import { } from "@mui/material"; import { Grid } from "@mui/system"; import { useRouter } from "next/router"; -import { nativeMenuItems } from "/src/layouts/config"; +import { nativeMenuItems } from "../../layouts/config"; +import { usePermissions } from "../../hooks/use-permissions"; /** * Recursively collects only leaf items (those without sub-items). @@ -37,12 +38,200 @@ function getLeafItems(items = []) { return result; } +/** + * Load all tabOptions.json files dynamically + */ +async function loadTabOptions() { + const tabOptionPaths = [ + "/email/administration/exchange-retention", + "/cipp/custom-data", + "/cipp/super-admin", + "/tenant/standards", + "/tenant/manage", + "/tenant/administration/applications", + "/tenant/administration/tenants", + "/tenant/administration/audit-logs", + "/identity/administration/users/user", + "/tenant/administration/securescore", + "/tenant/gdap-management", + "/tenant/gdap-management/relationships/relationship", + "/cipp/settings", + ]; + + const tabOptions = []; + + for (const basePath of tabOptionPaths) { + try { + const module = await import(`../../pages${basePath}/tabOptions.json`); + const options = module.default || module; + + // Add each tab option with metadata + options.forEach((option) => { + tabOptions.push({ + title: option.label, + path: option.path, + type: "tab", + basePath: basePath, + }); + }); + } catch (error) { + // Silently skip if file doesn't exist or can't be loaded + console.debug(`Could not load tabOptions for ${basePath}:`, error); + } + } + + return tabOptions; +} + +/** + * Filter menu items based on user permissions and roles + */ +function filterItemsByPermissionsAndRoles(items, userPermissions, userRoles) { + return items.filter((item) => { + // Check permissions with pattern matching support + if (item.permissions && item.permissions.length > 0) { + const hasPermission = userPermissions?.some((userPerm) => { + return item.permissions.some((requiredPerm) => { + // Exact match + if (userPerm === requiredPerm) { + return true; + } + + // Pattern matching - check if required permission contains wildcards + if (requiredPerm.includes("*")) { + // Convert wildcard pattern to regex + const regexPattern = requiredPerm + .replace(/\\/g, "\\\\") // Escape backslashes + .replace(/\./g, "\\.") // Escape dots + .replace(/\*/g, ".*"); // Convert * to .* + const regex = new RegExp(`^${regexPattern}$`); + return regex.test(userPerm); + } + + return false; + }); + }); + if (!hasPermission) { + return false; + } + } + + return true; + }); +} + export const CippCentralSearch = ({ handleClose, open }) => { const router = useRouter(); const [searchValue, setSearchValue] = useState(""); + const { userPermissions, userRoles } = usePermissions(); + const [tabOptions, setTabOptions] = useState([]); - // Flatten the menu items once - const flattenedMenuItems = getLeafItems(nativeMenuItems); + // Load tab options on mount + useEffect(() => { + loadTabOptions().then(setTabOptions); + }, []); + + // Flatten and filter the menu items based on user permissions + const flattenedMenuItems = useMemo(() => { + const allLeafItems = getLeafItems(nativeMenuItems); + + // Helper to build full breadcrumb path + const buildBreadcrumbPath = (items, targetPath) => { + const searchRecursive = (items, currentPath = []) => { + for (const item of items) { + // Skip Dashboard root + const shouldAddToPath = item.title !== "Dashboard" || item.path !== "/"; + const newPath = shouldAddToPath ? [...currentPath, item.title] : currentPath; + + // Check if this item itself matches + if (item.path) { + const normalizedItemPath = item.path.replace(/\/$/, ""); + const normalizedTargetPath = targetPath.replace(/\/$/, ""); + + // Check if this item's path starts with target (item is under target path) + if (normalizedItemPath !== "/" && normalizedItemPath.startsWith(normalizedTargetPath)) { + // Return the full path + return newPath; + } + } + + // Check if this item's children match (for container items without paths) + if (item.items && item.items.length > 0) { + const childResult = searchRecursive(item.items, newPath); + if (childResult.length > 0) { + return childResult; + } + } + } + return []; + }; + + return searchRecursive(items); + }; + + const filteredMainMenu = filterItemsByPermissionsAndRoles( + allLeafItems, + userPermissions, + userRoles, + ).map((item) => { + const rawBreadcrumbs = buildBreadcrumbPath(nativeMenuItems, item.path) || []; + // Remove the leaf item's own title to avoid duplicate when rendering + const trimmedBreadcrumbs = + rawBreadcrumbs.length > 0 && rawBreadcrumbs[rawBreadcrumbs.length - 1] === item.title + ? rawBreadcrumbs.slice(0, -1) + : rawBreadcrumbs; + return { + ...item, + breadcrumbs: trimmedBreadcrumbs, + }; + }); + + // Index leaf items by path for direct permission lookup + const leafItemIndex = allLeafItems.reduce((acc, item) => { + if (item.path) acc[item.path.replace(/\/$/, "")] = item; + return acc; + }, {}); + + // Filter tab options based on the actual page item's permissions + const filteredTabOptions = tabOptions + .map((tab) => { + const normalizedTabPath = tab.path.replace(/\/$/, ""); + const normalizedBasePath = tab.basePath?.replace(/\/$/, ""); + + // Try exact match first + let pageItem = leafItemIndex[normalizedTabPath]; + + // Fallback: find any menu item whose path starts with the basePath + if (!pageItem && normalizedBasePath) { + pageItem = allLeafItems.find((item) => { + const normalizedItemPath = item.path?.replace(/\/$/, ""); + return normalizedItemPath && normalizedItemPath.startsWith(normalizedBasePath); + }); + } + + if (!pageItem) return null; // No matching page definition + + // Permission/role check using the page item directly + const hasAccessToPage = + filterItemsByPermissionsAndRoles([pageItem], userPermissions, userRoles).length > 0; + if (!hasAccessToPage) return null; + + // Build breadcrumbs using the pageItem's path (which exists in menu tree) + const breadcrumbs = buildBreadcrumbPath(nativeMenuItems, pageItem.path) || []; + // Remove duplicate last crumb if equal to tab title (will be appended during render) + const trimmedBreadcrumbs = + breadcrumbs.length > 0 && breadcrumbs[breadcrumbs.length - 1] === tab.title + ? breadcrumbs.slice(0, -1) + : breadcrumbs; + return { + ...tab, + breadcrumbs: trimmedBreadcrumbs, + }; + }) + .filter(Boolean); + + return [...filteredMainMenu, ...filteredTabOptions]; + }, [userPermissions, userRoles, tabOptions]); const handleChange = (event) => { setSearchValue(event.target.value); @@ -55,13 +244,17 @@ export const CippCentralSearch = ({ handleClose, open }) => { } }; - // Filter leaf items by matching title or path + // Filter leaf items by matching title, path, or breadcrumbs const normalizedSearch = searchValue.trim().toLowerCase(); const filteredItems = flattenedMenuItems.filter((leaf) => { const inTitle = leaf.title?.toLowerCase().includes(normalizedSearch); const inPath = leaf.path?.toLowerCase().includes(normalizedSearch); + const inBreadcrumbs = leaf.breadcrumbs?.some((crumb) => + crumb?.toLowerCase().includes(normalizedSearch), + ); + const inScope = (leaf.scope === "global" ? "global" : "tenant").includes(normalizedSearch); // If there's no search value, show no results (you could change this logic) - return normalizedSearch ? inTitle || inPath : false; + return normalizedSearch ? inTitle || inPath || inBreadcrumbs || inScope : false; }); // Helper to boldโ€highlight the matched text @@ -75,10 +268,18 @@ export const CippCentralSearch = ({ handleClose, open }) => { ) : ( part - ) + ), ); }; + // Helper to get item type label + const getItemTypeLabel = (item) => { + if (item.type === "tab") { + return "Tab"; + } + return "Page"; + }; + // Click handler: shallow navigate with Next.js const handleCardClick = (path) => { router.push(path, undefined, { shallow: true }); @@ -110,15 +311,57 @@ export const CippCentralSearch = ({ handleClose, open }) => { {searchValue.trim().length > 0 ? ( filteredItems.length > 0 ? ( - {filteredItems.map((item, index) => ( - + {filteredItems.map((item, index) => { + const isGlobal = item.scope === "global"; + return ( + handleCardClick(item.path)} aria-label={`Navigate to ${item.title}`} > - {highlightMatch(item.title)} + + {highlightMatch(item.title)} + + {getItemTypeLabel(item)} + + + {isGlobal ? "Global" : "Tenant"} + + + {item.breadcrumbs && item.breadcrumbs.length > 0 && ( + + {item.breadcrumbs.map((crumb, idx) => ( + + {highlightMatch(crumb)} + {idx < item.breadcrumbs.length - 1 && " > "} + + ))} + {" > "} + {highlightMatch(item.title)} + + )} Path: {highlightMatch(item.path)} @@ -126,7 +369,8 @@ export const CippCentralSearch = ({ handleClose, open }) => { - ))} + ); + })} ) : ( No results found. diff --git a/src/components/CippComponents/CippCodeBlock.jsx b/src/components/CippComponents/CippCodeBlock.jsx index d1836e9aa66d..2896c6cb8db8 100644 --- a/src/components/CippComponents/CippCodeBlock.jsx +++ b/src/components/CippComponents/CippCodeBlock.jsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import { useState } from "react"; import { atomDark } from "react-syntax-highlighter/dist/cjs/styles/prism"; import SyntaxHighlighter from "react-syntax-highlighter"; import { CippCopyToClipBoard } from "./CippCopyToClipboard"; @@ -16,7 +16,7 @@ const CodeContainer = styled("div")` padding-bottom: 1rem; .cipp-code-copy-button { position: absolute; - right: 0.5rem; + right: 1rem; /* Moved further left to avoid Monaco scrollbar */ top: 0.5rem; z-index: 1; /* Ensure the button is above the code block */ } @@ -31,6 +31,7 @@ export const CippCodeBlock = (props) => { wrapLongLines = true, type = "syntax", editorHeight = "500px", + readOnly = false, ...other } = props; const [codeCopied, setCodeCopied] = useState(false); @@ -48,13 +49,14 @@ export const CippCodeBlock = (props) => { {type === "editor" && ( diff --git a/src/components/CippComponents/CippComponentDialog.jsx b/src/components/CippComponents/CippComponentDialog.jsx index 9f8c618ad179..03d4d64dcdaa 100644 --- a/src/components/CippComponents/CippComponentDialog.jsx +++ b/src/components/CippComponents/CippComponentDialog.jsx @@ -7,7 +7,7 @@ export const CippComponentDialog = (props) => {
    {title} - {...children} + {children} + + + } + > + + + + + + + + {/* TemplateList */} + + option, + url: "/api/ListContactTemplates", + }} + placeholder="Select a template or enter PowerShell JSON manually" + /> + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippDevOptions.jsx b/src/components/CippComponents/CippDevOptions.jsx index dab86d6c454a..7bddbbbc126a 100644 --- a/src/components/CippComponents/CippDevOptions.jsx +++ b/src/components/CippComponents/CippDevOptions.jsx @@ -1,6 +1,6 @@ import { useSettings } from "../../hooks/use-settings"; import { Button, Card, CardHeader, Divider, CardContent, SvgIcon } from "@mui/material"; -import { CodeBracketIcon, CogIcon } from "@heroicons/react/24/outline"; +import { CodeBracketIcon } from "@heroicons/react/24/outline"; export const CippDevOptions = () => { const settings = useSettings(); diff --git a/src/components/CippComponents/CippDomainServiceConfigurationRecords.jsx b/src/components/CippComponents/CippDomainServiceConfigurationRecords.jsx new file mode 100644 index 000000000000..a6a75fd2d4f3 --- /dev/null +++ b/src/components/CippComponents/CippDomainServiceConfigurationRecords.jsx @@ -0,0 +1,134 @@ +import React, { useState } from "react"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiGetCall } from "../../api/ApiCall"; +import { + Card, + CardContent, + CardHeader, + Stack, + Box, + IconButton, + Tooltip, + Typography, + Chip, + CircularProgress, +} from "@mui/material"; +import { ContentCopy, Check } from "@mui/icons-material"; + +const DnsRecordField = ({ label, value, copyable = true }) => { + const [copied, setCopied] = useState(false); + + const handleCopy = () => { + navigator.clipboard.writeText(value); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + }; + + return ( + + + + {label} + + + {value} + + + {copyable && ( + + + {copied ? : } + + + )} + + ); +}; + +const renderRecordDetails = (record) => { + switch (record.recordType) { + case "Mx": + return ( + <> + + + + ); + case "Txt": + return ; + case "CName": + return ; + case "Srv": + return ( + <> + + + + + + + + ); + default: + return null; + } +}; + +export const CippDomainServiceConfigurationRecords = ({ row }) => { + const tenantFilter = useSettings().currentTenant; + + const recordsQuery = ApiGetCall({ + url: "/api/ListGraphRequest", + queryKey: `domain-service-config-${row.id}`, + waiting: true, + data: { + Endpoint: `domains/${row.id}/serviceConfigurationRecords`, + tenantFilter: tenantFilter, + }, + }); + + if (recordsQuery.isLoading) { + return ( + + + + ); + } + + if (recordsQuery.isError) { + return Failed to load records; + } + + const records = recordsQuery.data?.Results || []; + + if (records.length === 0) { + return No service configuration records found; + } + + return ( + + {records.map((record) => ( + + + {record.label} + + + + } + subheader={`TTL: ${record.ttl} | Optional: ${record.isOptional ? "Yes" : "No"}`} + sx={{ pb: 1 }} + /> + + {renderRecordDetails(record)} + + + ))} + + ); +}; diff --git a/src/components/CippComponents/CippDomainVerificationRecords.jsx b/src/components/CippComponents/CippDomainVerificationRecords.jsx new file mode 100644 index 000000000000..2a8a741cd264 --- /dev/null +++ b/src/components/CippComponents/CippDomainVerificationRecords.jsx @@ -0,0 +1,133 @@ +import React, { useState } from "react"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiGetCall } from "../../api/ApiCall"; +import { + Card, + CardContent, + CardHeader, + Stack, + Box, + IconButton, + Tooltip, + Typography, + Chip, + CircularProgress, +} from "@mui/material"; +import { ContentCopy, Check } from "@mui/icons-material"; + +const DnsRecordField = ({ label, value, copyable = true }) => { + const [copied, setCopied] = useState(false); + + const handleCopy = () => { + navigator.clipboard.writeText(value); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + }; + + return ( + + + + {label} + + + {value} + + + {copyable && ( + + + {copied ? : } + + + )} + + ); +}; + +const renderRecordDetails = (record) => { + switch (record.recordType) { + case "Txt": + return ; + case "Mx": + return ( + <> + + + + ); + case "CName": + return ; + case "Srv": + return ( + <> + + + + + + + + ); + default: + return null; + } +}; + +export const CippDomainVerificationRecords = ({ row }) => { + const tenantFilter = useSettings().currentTenant; + + const recordsQuery = ApiGetCall({ + url: "/api/ListGraphRequest", + queryKey: `domain-verification-${row.id}`, + waiting: true, + data: { + Endpoint: `domains/${row.id}/verificationDnsRecords`, + tenantFilter: tenantFilter, + }, + }); + + if (recordsQuery.isLoading) { + return ( + + + + ); + } + + if (recordsQuery.isError) { + return Failed to load records; + } + + const records = recordsQuery.data?.Results || []; + + if (records.length === 0) { + return No verification records found; + } + + return ( + + {records.map((record) => ( + + + {record.label} + + + } + subheader={`TTL: ${record.ttl} | Optional: ${record.isOptional ? "Yes" : "No"}`} + sx={{ pb: 1 }} + /> + + {renderRecordDetails(record)} + + + ))} + + ); +}; diff --git a/src/components/CippComponents/CippDropzone.jsx b/src/components/CippComponents/CippDropzone.jsx index 6e400ef31e2c..72a1e2a6b70c 100644 --- a/src/components/CippComponents/CippDropzone.jsx +++ b/src/components/CippComponents/CippDropzone.jsx @@ -1,4 +1,3 @@ -import React, { useCallback, useMemo, useState } from "react"; import PropTypes from "prop-types"; //import { CippContentCard } from 'src/components/layout' import { useDropzone } from "react-dropzone"; diff --git a/src/components/CippComponents/CippExchangeActions.jsx b/src/components/CippComponents/CippExchangeActions.jsx index 8b5a56ebae52..a783b263a339 100644 --- a/src/components/CippComponents/CippExchangeActions.jsx +++ b/src/components/CippComponents/CippExchangeActions.jsx @@ -2,10 +2,7 @@ import { Archive, MailOutline, - Person, - Room, Visibility, - VisibilityOff, PhonelinkLock, Key, PostAdd, @@ -16,11 +13,136 @@ import { DataUsage, MailLock, SettingsEthernet, + CalendarMonth, + PersonAdd, + Email, } from "@mui/icons-material"; +import { useSettings } from "../../hooks/use-settings.js"; +import { useMemo } from "react"; export const CippExchangeActions = () => { - // const tenant = useSettings().currentTenant; + const tenant = useSettings().currentTenant; + + // API configuration for all user selection fields + const userApiConfig = useMemo( + () => ({ + url: "/api/ListGraphRequest", + dataKey: "Results", + labelField: (option) => `${option.displayName} (${option.userPrincipalName})`, + valueField: "userPrincipalName", + queryKey: `users-${tenant}`, + data: { + Endpoint: "users", + tenantFilter: tenant, + $select: "id,displayName,userPrincipalName,mail", + $top: 999, + }, + }), + [tenant] + ); + return [ + { + label: "Bulk Add Mailbox Permissions", + type: "POST", + url: "/api/ExecModifyMBPerms", + icon: , + data: { + userID: "UPN", + }, + confirmText: "Add the specified permissions to selected mailboxes?", + multiPost: false, + data: {}, + fields: [ + { + type: "autoComplete", + name: "fullAccessUser", + label: "Add Full Access User", + multiple: true, + creatable: false, + api: userApiConfig, + }, + { + type: "switch", + name: "autoMap", + label: "Enable Automapping", + defaultValue: true, + labelLocation: "behind", + }, + { + type: "autoComplete", + name: "sendAsUser", + label: "Add Send As User", + multiple: true, + creatable: false, + api: userApiConfig, + }, + { + type: "autoComplete", + name: "sendOnBehalfUser", + label: "Add Send On Behalf User", + multiple: true, + creatable: false, + api: userApiConfig, + }, + ], + customDataformatter: (rows, action, formData) => { + const mailboxArray = Array.isArray(rows) ? rows : [rows]; + + // Create bulk request array - one object per mailbox + const bulkRequestData = mailboxArray.map((mailbox) => { + const permissions = []; + const autoMap = formData.autoMap === undefined ? true : formData.autoMap; + + // Add type: "user" to match format + const addTypeToUsers = (users) => { + return users.map((user) => ({ + ...user, + type: "user", + })); + }; + + // Handle FullAccess - formData.fullAccessUser is an array since multiple: true + if (formData.fullAccessUser && formData.fullAccessUser.length > 0) { + permissions.push({ + UserID: addTypeToUsers(formData.fullAccessUser), + PermissionLevel: "FullAccess", + Modification: "Add", + AutoMap: autoMap, + }); + } + + // Handle SendAs - formData.sendAsUser is an array since multiple: true + if (formData.sendAsUser && formData.sendAsUser.length > 0) { + permissions.push({ + UserID: addTypeToUsers(formData.sendAsUser), + PermissionLevel: "SendAs", + Modification: "Add", + }); + } + + // Handle SendOnBehalf - formData.sendOnBehalfUser is an array since multiple: true + if (formData.sendOnBehalfUser && formData.sendOnBehalfUser.length > 0) { + permissions.push({ + UserID: addTypeToUsers(formData.sendOnBehalfUser), + PermissionLevel: "SendOnBehalf", + Modification: "Add", + }); + } + + return { + userID: mailbox.UPN, + permissions: permissions, + }; + }); + + return { + mailboxRequests: bulkRequestData, + tenantFilter: tenant, + }; + }, + color: "primary", + }, { label: "Edit permissions", link: "/identity/administration/users/user/exchange?userId=[ExternalDirectoryObjectId]", @@ -44,43 +166,30 @@ export const CippExchangeActions = () => { icon: , }, { - label: "Convert to User Mailbox", + label: "Convert Mailbox", type: "POST", + icon: , url: "/api/ExecConvertMailbox", - icon: , - data: { - ID: "UPN", - MailboxType: "!Regular", - }, - confirmText: "Are you sure you want to convert [UPN] to a user mailbox?", - condition: (row) => row.recipientTypeDetails !== "UserMailbox", - }, - { - label: "Convert to Shared Mailbox", - type: "POST", - icon: , - url: "/api/ExecConvertMailbox", - data: { - ID: "UPN", - MailboxType: "!Shared", - }, - confirmText: "Are you sure you want to convert [UPN] to a shared mailbox?", - condition: (row) => row.recipientTypeDetails !== "SharedMailbox", - }, - { - label: "Convert to Room Mailbox", - type: "POST", - url: "/api/ExecConvertMailbox", - icon: , - data: { - ID: "UPN", - MailboxType: "!Room", - }, - confirmText: "Are you sure you want to convert [UPN] to a room mailbox?", - condition: (row) => row.recipientTypeDetails !== "RoomMailbox", + data: { ID: "UPN" }, + fields: [ + { + type: "radio", + name: "MailboxType", + label: "Mailbox Type", + options: [ + { label: "User Mailbox", value: "Regular" }, + { label: "Shared Mailbox", value: "Shared" }, + { label: "Room Mailbox", value: "Room" }, + { label: "Equipment Mailbox", value: "Equipment" }, + ], + validators: { required: "Please select a mailbox type" }, + }, + ], + confirmText: + "Pick the type of mailbox you want to convert [UPN] of mailbox type [recipientTypeDetails] to:", + multiPost: false, }, { - //tested label: "Enable Online Archive", type: "POST", icon: , @@ -90,6 +199,50 @@ export const CippExchangeActions = () => { multiPost: false, condition: (row) => row.ArchiveGuid === "00000000-0000-0000-0000-000000000000", }, + { + label: "Set Retention Policy", + type: "POST", + url: "/api/ExecSetMailboxRetentionPolicies", + icon: , + confirmText: "Set the specified retention policy for selected mailboxes?", + multiPost: false, + fields: [ + { + type: "autoComplete", + name: "policyName", + label: "Retention Policy", + multiple: false, + creatable: false, + validators: { required: "Please select a retention policy" }, + api: { + url: "/api/ExecManageRetentionPolicies", + labelField: "Name", + valueField: "Name", + queryKey: `RetentionPolicies-${tenant}`, + data: { + tenantFilter: tenant, + }, + }, + }, + ], + customDataformatter: (rows, action, formData) => { + const mailboxArray = Array.isArray(rows) ? rows : [rows]; + + // Extract mailbox identities - using UPN as the identifier + const mailboxes = mailboxArray.map((mailbox) => mailbox.UPN); + + // Handle autocomplete selection - could be string or object + const policyName = + typeof formData.policyName === "object" ? formData.policyName.value : formData.policyName; + + return { + PolicyName: policyName, + Mailboxes: mailboxes, + tenantFilter: tenant, + }; + }, + color: "primary", + }, { label: "Enable Auto-Expanding Archive", type: "POST", @@ -102,30 +255,27 @@ export const CippExchangeActions = () => { condition: (row) => row.ArchiveGuid !== "00000000-0000-0000-0000-000000000000", }, { - label: "Hide from Global Address List", - type: "POST", - url: "/api/ExecHideFromGAL", - icon: , - data: { - ID: "UPN", - HidefromGAL: true, - }, - confirmText: - "Are you sure you want to hide [UPN] from the global address list? This will not work if the user is AD Synced.", - condition: (row) => row.HiddenFromAddressListsEnabled === false, - }, - { - label: "Unhide from Global Address List", + label: "Set Global Address List visibility", type: "POST", url: "/api/ExecHideFromGAL", icon: , data: { ID: "UPN", - HidefromGAL: false, }, + fields: [ + { + type: "radio", + name: "HidefromGAL", + label: "Global Address List visibility", + options: [ + { label: "Hidden", value: true }, + { label: "Shown", value: false }, + ], + validators: { required: "Please select a global address list state" }, + }, + ], confirmText: - "Are you sure you want to unhide [UPN] from the global address list? This will not work if the user is AD Synced.", - condition: (row) => row.HiddenFromAddressListsEnabled === true, + "Are you sure you want to set the global address list state for [UPN]? Changes can take up to 72 hours to take effect.", }, { label: "Start Managed Folder Assistant", @@ -148,22 +298,26 @@ export const CippExchangeActions = () => { multiPost: false, }, { - label: "Copy Sent Items to for Delegated Mailboxes", + label: "Set Copy Sent Items for Delegated Mailboxes", type: "POST", - url: "/api/ExecCopyForSent", - data: { ID: "UPN", MessageCopyForSentAsEnabled: true }, - confirmText: "Are you sure you want to enable Copy Sent Items on [UPN]?", icon: , - condition: (row) => row.MessageCopyForSentAsEnabled === false, - }, - { - label: "Disable Copy Sent Items for Delegated Mailboxes", - type: "POST", + condition: (row) => + row.recipientTypeDetails === "UserMailbox" || row.recipientTypeDetails === "SharedMailbox", url: "/api/ExecCopyForSent", - data: { ID: "UPN", MessageCopyForSentAsEnabled: false }, - confirmText: "Are you sure you want to disable Copy Sent Items on [UPN]?", - icon: , - condition: (row) => row.MessageCopyForSentAsEnabled === true, + data: { ID: "UPN" }, + fields: [ + { + type: "radio", + name: "messageCopyState", + label: "Copy Sent Items", + options: [ + { label: "Enabled", value: true }, + { label: "Disabled", value: false }, + ], + validators: { required: "Please select a copy sent items state" }, + }, + ], + confirmText: "Are you sure you want to set Copy Sent Items for [UPN]?", }, { label: "Set Litigation Hold", @@ -215,6 +369,7 @@ export const CippExchangeActions = () => { name: "locale", type: "textField", placeholder: "e.g. en-US", + validators: { required: "Please enter a locale" }, }, ], }, @@ -253,6 +408,7 @@ export const CippExchangeActions = () => { name: "quota", type: "textField", placeholder: "e.g. 1000MB, 10GB,1TB", + validators: { required: "Please enter a quota" }, }, ], }, @@ -272,6 +428,7 @@ export const CippExchangeActions = () => { name: "quota", type: "textField", placeholder: "e.g. 1000MB, 10GB,1TB", + validators: { required: "Please enter a quota" }, }, ], }, @@ -288,6 +445,110 @@ export const CippExchangeActions = () => { name: "quota", type: "textField", placeholder: "e.g. 1000MB, 10GB,1TB", + validators: { required: "Please enter a quota" }, + }, + ], + }, + { + label: "Set Calendar Processing", + type: "POST", + url: "/api/ExecSetCalendarProcessing", + data: { UPN: "UPN" }, + confirmText: "Configure calendar processing settings for [UPN]", + icon: , + condition: (row) => + row.recipientTypeDetails === "RoomMailbox" || + row.recipientTypeDetails === "EquipmentMailbox", + fields: [ + { + label: "Automatically Process Meeting Requests", + name: "automaticallyProcess", + type: "switch", + }, + { + label: "Automatically Accept Meeting Requests", + name: "automaticallyAccept", + type: "switch", + }, + { + label: "Allow Conflicts", + name: "allowConflicts", + type: "switch", + }, + { + label: "Maximum Number of Conflicts", + name: "maxConflicts", + type: "number", + placeholder: "e.g. 2", + }, + { + label: "Allow Recurring Meetings", + name: "allowRecurringMeetings", + type: "switch", + }, + { + label: "Schedule Only During Work Hours", + name: "scheduleOnlyDuringWorkHours", + type: "switch", + }, + { + label: "Maximum Duration (Minutes)", + name: "maximumDurationInMinutes", + type: "number", + placeholder: "e.g. 240", + }, + { + label: "Minimum Duration (Minutes)", + name: "minimumDurationInMinutes", + type: "number", + placeholder: "e.g. 30", + }, + { + label: "Booking Window (Days)", + name: "bookingWindowInDays", + type: "number", + placeholder: "e.g. 30", + }, + { + label: "Add Organizer to Subject", + name: "addOrganizerToSubject", + type: "switch", + }, + { + label: "Delete Comments", + name: "deleteComments", + type: "switch", + }, + { + label: "Delete Subject", + name: "deleteSubject", + type: "switch", + }, + { + label: "Remove Private Property", + name: "removePrivateProperty", + type: "switch", + }, + { + label: "Remove Canceled Meetings", + name: "removeCanceledMeetings", + type: "switch", + }, + { + label: "Remove Old Meeting Messages", + name: "removeOldMeetingMessages", + type: "switch", + }, + { + label: "Process External Meeting Messages", + name: "processExternalMeetingMessages", + type: "switch", + }, + { + label: "Additional Response", + name: "additionalResponse", + type: "textField", + placeholder: "Additional text to add to responses", }, ], }, diff --git a/src/components/CippComponents/CippFolderNavigation.jsx b/src/components/CippComponents/CippFolderNavigation.jsx new file mode 100644 index 000000000000..5904a70b06b1 --- /dev/null +++ b/src/components/CippComponents/CippFolderNavigation.jsx @@ -0,0 +1,428 @@ +import { useState, useMemo } from "react"; +import { + Box, + Typography, + List, + ListItem, + ListItemIcon, + ListItemText, + ListItemButton, + Breadcrumbs, + Link, + Stack, + TextField, + InputAdornment, + IconButton, + Chip, + Slide, + Button, +} from "@mui/material"; +import { + Folder, + InsertDriveFile, + Search, + Clear, + NavigateNext, + Home, + Visibility, + SubdirectoryArrowLeft, +} from "@mui/icons-material"; +import { alpha, styled } from "@mui/material/styles"; + +const StyledListItem = styled(ListItemButton)(({ theme }) => ({ + borderRadius: theme.shape.borderRadius, + margin: theme.spacing(0.25, 0), + padding: theme.spacing(1, 2), + "&:hover": { + backgroundColor: alpha(theme.palette.primary.main, 0.08), + }, + "&.Mui-selected": { + backgroundColor: alpha(theme.palette.primary.main, 0.12), + "&:hover": { + backgroundColor: alpha(theme.palette.primary.main, 0.16), + }, + }, +})); + +const FileListItem = styled(Box)(({ theme }) => ({ + padding: theme.spacing(1, 2), + border: `1px solid ${theme.palette.divider}`, +})); + +const NavigationContainer = styled(Box)(({ theme }) => ({ + position: "relative", + overflow: "hidden", + height: "100%", + minHeight: 400, + backgroundColor: theme.palette.background.paper, + borderRadius: theme.shape.borderRadius, + border: `1px solid ${theme.palette.divider}`, + display: "flex", + flexDirection: "column", +})); + +const SlideView = styled(Box)(({ theme }) => ({ + position: "absolute", + top: 0, + left: 0, + right: 0, + bottom: 0, + backgroundColor: theme.palette.background.paper, + display: "flex", + flexDirection: "column", +})); + +export const CippFolderNavigation = ({ + data = [], + onFileSelect, + selectedFile = null, + searchable = true, + showFileInfo = true, + onImportFile, + onViewFile, + isImporting = false, +}) => { + const [currentPath, setCurrentPath] = useState([]); + const [searchTerm, setSearchTerm] = useState(""); + const [slideDirection, setSlideDirection] = useState("left"); + + // Build folder structure from flat file list + const folderStructure = useMemo(() => { + const structure = { folders: {}, files: [] }; + + data.forEach((file) => { + const pathParts = file.path.split("/"); + let current = structure; + + // Build folder hierarchy + for (let i = 0; i < pathParts.length - 1; i++) { + const folderName = pathParts[i]; + if (!current.folders[folderName]) { + current.folders[folderName] = { + folders: {}, + files: [], + name: folderName, + path: pathParts.slice(0, i + 1).join("/"), + }; + } + current = current.folders[folderName]; + } + + // Add file to the final folder + current.files.push({ + ...file, + name: pathParts[pathParts.length - 1], + }); + }); + + return structure; + }, [data]); + + // Get current folder based on currentPath + const getCurrentFolder = () => { + let current = folderStructure; + for (const pathPart of currentPath) { + current = current.folders[pathPart]; + if (!current) break; + } + return current || { folders: {}, files: [] }; + }; + + // Filter files based on search term (only when searching) + const getFilteredContent = () => { + if (!searchTerm) { + return getCurrentFolder(); + } + + // When searching, show all matching files across all folders + const allFiles = data.filter((file) => + file.path.toLowerCase().includes(searchTerm.toLowerCase()) + ); + + return { + folders: {}, + files: allFiles.map((file) => ({ + ...file, + name: file.path.split("/").pop(), + })), + }; + }; + + const currentFolder = getFilteredContent(); + + const navigateToFolder = (folderName) => { + setSlideDirection("left"); + setCurrentPath((prev) => [...prev, folderName]); + }; + + const navigateBack = () => { + if (currentPath.length > 0) { + setSlideDirection("right"); + setCurrentPath((prev) => prev.slice(0, -1)); + } + }; + + const navigateTo = (index) => { + if (index < currentPath.length) { + const direction = index < currentPath.length - 1 ? "right" : "left"; + setSlideDirection(direction); + setCurrentPath((prev) => prev.slice(0, index + 1)); + } else if (index === -1) { + setSlideDirection("right"); + setCurrentPath([]); + } + }; + + const handleFileClick = (file) => { + if (onFileSelect) { + onFileSelect(file); + } + }; + + const formatFileSize = (bytes) => { + if (bytes === 0) return "0 B"; + const k = 1024; + const sizes = ["B", "KB", "MB", "GB"]; + const i = Math.floor(Math.log(bytes) / Math.log(k)); + return `${parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i]}`; + }; + + const getFileIcon = (fileName) => { + return ; + }; + + const clearSearch = () => { + setSearchTerm(""); + }; + + const folders = Object.values(currentFolder.folders || {}); + const files = currentFolder.files || []; + + return ( + + {searchable && ( + + setSearchTerm(e.target.value)} + InputProps={{ + startAdornment: ( + + + + ), + endAdornment: searchTerm && ( + + + + + + ), + }} + /> + + )} + + + + + {/* Header with navigation */} + + {searchTerm ? ( + Search Results ({files.length}) + ) : ( + } + sx={{ fontSize: "0.875rem" }} + > + navigateTo(-1)} + sx={{ + display: "flex", + alignItems: "center", + textDecoration: "none", + "&:hover": { textDecoration: "underline" }, + }} + > + + + {currentPath.map((folder, index) => ( + navigateTo(index)} + sx={{ + textDecoration: "none", + "&:hover": { textDecoration: "underline" }, + }} + > + {folder} + + ))} + + )} + + + {/* Content */} + + + {/* Show ".." folder for navigation back when not at root and not searching */} + {!searchTerm && currentPath.length > 0 && ( + + + + + + + + Parent folder + + + } + /> + + + )} + + {/* Show folders first (only when not searching) */} + {!searchTerm && + folders.map((folder) => ( + navigateToFolder(folder.name)}> + + + + + {folder.name} + {folder.files.length > 0 && ( + + )} + + } + /> + + + ))} + + {/* Show files */} + {files.map((file) => ( + + + {/* File Icon and Info */} + handleFileClick(file)} + > + + {getFileIcon(file.name)} + + + + {file.name} + + + {searchTerm && ( + <> + + {file.path.substring(0, file.path.lastIndexOf("/")) || "root"} + + + โ€ข + + + )} + {showFileInfo && ( + + {formatFileSize(file.size)} + + )} + + + + + {/* Action Buttons */} + + + + + + + ))} + + {/* Empty state */} + {folders.length === 0 && files.length === 0 && ( + + + {searchTerm + ? `No files found matching "${searchTerm}"` + : "This folder is empty"} + + + )} + + + + + + + {!searchTerm && data.length === 0 && ( + + + No files available + + + )} + + ); +}; diff --git a/src/components/CippComponents/CippFormComponent.jsx b/src/components/CippComponents/CippFormComponent.jsx index 44f5d7b3a77e..f2953353b26b 100644 --- a/src/components/CippComponents/CippFormComponent.jsx +++ b/src/components/CippComponents/CippFormComponent.jsx @@ -8,8 +8,13 @@ import { FormControl, FormLabel, RadioGroup, + Button, + Box, + Input, + Tooltip, } from "@mui/material"; import { CippAutoComplete } from "./CippAutocomplete"; +import { CippTextFieldWithVariables } from "./CippTextFieldWithVariables"; import { Controller, useFormState } from "react-hook-form"; import { DateTimePicker } from "@mui/x-date-pickers"; // Make sure to install @mui/x-date-pickers import CSVReader from "../CSVReader"; @@ -25,6 +30,8 @@ import { import StarterKit from "@tiptap/starter-kit"; import { CippDataTable } from "../CippTable/CippDataTable"; import React from "react"; +import { CloudUpload } from "@mui/icons-material"; +import { Stack } from "@mui/system"; // Helper function to convert bracket notation to dot notation // Improved to correctly handle nested bracket notations @@ -47,6 +54,9 @@ export const CippFormComponent = (props) => { labelLocation = "behind", // Default location for switches defaultValue, helperText, + disableVariables = false, + includeSystemVariables = false, + row, ...other } = props; const { errors } = useFormState({ control: formControl.control }); @@ -77,6 +87,13 @@ export const CippFormComponent = (props) => { }; switch (type) { + case "heading": + return ( + + {label} + + ); + case "hidden": return ( { )} /> - - {get(errors, convertedName, {})?.message} - + {get(errors, convertedName, {})?.message && ( + + {get(errors, convertedName, {})?.message} + + )} ); case "textField": return ( <> -
    - -
    - - {get(errors, convertedName, {})?.message} - + +
    + + !disableVariables ? ( + + ) : ( + + ) + } + /> +
    +
    + {get(errors, convertedName, {})?.message && ( + + {get(errors, convertedName, {})?.message} + + )} + {helperText && ( + + {helperText} + + )} + + ); + case "textFieldWithVariables": + return ( + <> + +
    + ( + + )} + /> +
    +
    + {get(errors, convertedName, {})?.message && ( + + {get(errors, convertedName, {})?.message} + + )} + {helperText && ( + + {helperText} + + )} ); case "password": return ( <>
    - + + +
    - - {get(errors, convertedName, {})?.message} - + {get(errors, convertedName, {})?.message && ( + + {get(errors, convertedName, {})?.message} + + )} + {helperText && ( + + {helperText} + + )} ); case "number": return ( <>
    - + + +
    - - {get(errors, convertedName, {})?.message} - + {get(errors, convertedName, {})?.message && ( + + {get(errors, convertedName, {})?.message} + + )} + {helperText && ( + + {helperText} + + )} ); @@ -184,21 +296,23 @@ export const CippFormComponent = (props) => { renderSwitchWithLabel( + />, ) } /> - - {get(errors, convertedName, {})?.message} - + {get(errors, convertedName, {})?.message && ( + + {get(errors, convertedName, {})?.message} + + )} {helperText && ( {helperText} @@ -214,9 +328,11 @@ export const CippFormComponent = (props) => { - - {get(errors, convertedName, {})?.message} - + {get(errors, convertedName, {})?.message && ( + + {get(errors, convertedName, {})?.message} + + )} ); @@ -224,7 +340,16 @@ export const CippFormComponent = (props) => { return ( <> - {label} + + + {label} + {helperText && ( + + {helperText} + + )} + + { render={({ field }) => { return ( field.onChange(e.target.value)} + onBlur={field.onBlur} {...other} > {props.options.map((option, idx) => ( @@ -250,9 +377,11 @@ export const CippFormComponent = (props) => { }} /> - - {get(errors, convertedName, {})?.message} - + {get(errors, convertedName, {})?.message && ( + + {get(errors, convertedName, {})?.message} + + )} ); @@ -273,45 +402,73 @@ export const CippFormComponent = (props) => { label={label} multiple={false} onChange={(value) => field.onChange(value?.value)} - helperText={helperText} + onBlur={field.onBlur} /> )} /> - - {get(errors, convertedName, {}).message} - + {get(errors, convertedName, {})?.message && ( + + {get(errors, convertedName, {})?.message} + + )} ); - case "autoComplete": + case "autoComplete": { + // Resolve options if it's a function + const resolvedOptions = + typeof other.options === "function" ? other.options(row) : other.options; + + // Wrap validate function to pass row as third parameter + const resolvedValidators = validators + ? { + ...validators, + validate: + typeof validators.validate === "function" + ? (value, formValues) => validators.validate(value, formValues, row) + : validators.validate, + } + : validators; + return ( - <> -
    - ( - field.onChange(value)} - helperText={helperText} - /> - )} - /> -
    - - {get(errors, convertedName, {}).message} - - +
    + ( + field.onChange(value)} + onBlur={field.onBlur} + /> + )} + /> + + {get(errors, convertedName, {})?.message && ( + + {get(errors, convertedName, {})?.message} + + )} + {helperText && ( + + {helperText} + + )} +
    ); + } + + case "richText": { + const editorInstanceRef = React.useRef(null); + const lastSetValue = React.useRef(null); - case "richText": return ( <>
    @@ -319,30 +476,56 @@ export const CippFormComponent = (props) => { name={convertedName} control={formControl.control} rules={validators} - render={({ field }) => ( - <> - {label} - { - field.onChange(editor.getHTML()); - }} - label={label} - renderControls={() => ( - - - - - - - )} - /> - - )} + render={({ field }) => { + const { value, onChange, ref } = field; + + // Update content when value changes externally + React.useEffect(() => { + if ( + editorInstanceRef.current && + typeof value === "string" && + value !== lastSetValue.current + ) { + editorInstanceRef.current.commands.setContent(value || "", false); + lastSetValue.current = value; + } + }, [value]); + + return ( + <> + {label} + { + editorInstanceRef.current = editor; + // Set initial content when editor is created + if (typeof value === "string") { + editor.commands.setContent(value || "", false); + lastSetValue.current = value; + } + }} + onUpdate={({ editor }) => { + const newValue = editor.getHTML(); + lastSetValue.current = newValue; + onChange(newValue); + }} + label={label} + renderControls={() => ( + + + + + + + )} + /> + + ); + }} />
    @@ -350,7 +533,7 @@ export const CippFormComponent = (props) => { ); - + } case "CSVReader": const remapData = (data, nameToCSVMapping) => { if (nameToCSVMapping && data) { @@ -359,7 +542,7 @@ export const CippFormComponent = (props) => { acc[csvHeader] = internalKey; return acc; }, - {} + {}, ); return data.map((row) => { @@ -414,47 +597,156 @@ export const CippFormComponent = (props) => { control={formControl.control} rules={validators} render={({ field }) => ( - { - if (date) { - const unixTimestamp = Math.floor(date.getTime() / 1000); // Convert to Unix timestamp - field.onChange(unixTimestamp); // Pass the Unix timestamp to the form - } else { - field.onChange(null); // Handle the case where no date is selected - } - }} - ampm={false} - minutesStep={15} - inputFormat="yyyy/MM/dd HH:mm" // Display format - renderInput={(inputProps) => ( - + + { + if (date) { + const unixTimestamp = Math.floor(date.getTime() / 1000); // Convert to Unix timestamp + field.onChange(unixTimestamp); // Pass the Unix timestamp to the form + } else { + field.onChange(null); // Handle the case where no date is selected + } + }} + onClose={field.onBlur} + ampm={false} + minutesStep={15} + inputFormat="yyyy/MM/dd HH:mm" // Display format + renderInput={(inputProps) => ( + + )} {...other} - fullWidth - error={!!errors[convertedName]} - helperText={get(errors, convertedName, {})?.message} - variant="filled" /> - )} - {...other} - /> + + + )} /> + {helperText && ( + + {helperText} + + )} {get(errors, convertedName, {})?.message} ); + case "file": + return ( + <> +
    + ( + + + {label} + + document.getElementById(`file-input-${convertedName}`).click()} + > + + + {field.value ? field.value.name : "Click to upload file or drag and drop"} + + {field.value && ( + + Size: {(field.value.size / 1024).toFixed(2)} KB + + )} + + { + const file = e.target.files[0]; + field.onChange(file); + if (other.onChange) { + other.onChange(file); + } + }} + onBlur={field.onBlur} + /> + + )} + /> +
    + {get(errors, convertedName, {})?.message && ( + + {get(errors, convertedName, {})?.message} + + )} + {helperText && ( + + {helperText} + + )} + + ); + default: return null; } diff --git a/src/components/CippComponents/CippFormCondition.jsx b/src/components/CippComponents/CippFormCondition.jsx index fc121753b9ab..dd9a48cbf95d 100644 --- a/src/components/CippComponents/CippFormCondition.jsx +++ b/src/components/CippComponents/CippFormCondition.jsx @@ -13,11 +13,12 @@ export const CippFormCondition = (props) => { children, formControl, disabled = false, + clearOnHide = true, // New prop to control whether to clear values when hidden } = props; if ( field === undefined || - compareValue === undefined || + (compareValue === undefined && compareType !== "hasValue") || children === undefined || formControl === undefined ) { @@ -45,7 +46,12 @@ export const CippFormCondition = (props) => { if (propertyName && propertyName !== "value") { watchedValue = get(watcher, propertyName); - compareTargetValue = get(compareValue, propertyName); + // Only extract from compareValue if it's an object, otherwise use as-is + if (typeof compareValue === "object" && compareValue !== null) { + compareTargetValue = get(compareValue, propertyName); + } else { + compareTargetValue = compareValue; + } } /*console.log("CippFormCondition: ", { @@ -142,10 +148,18 @@ export const CippFormCondition = (props) => { watcher.length >= compareValue ); case "hasValue": - return ( - (watcher !== undefined && watcher !== null && watcher !== "") || - (watcher?.value !== undefined && watcher?.value !== null && watcher?.value !== "") - ); + // Check watchedValue (the extracted value based on propertyName) + // For simple values (strings, numbers) + if (watchedValue === undefined || watchedValue === null || watchedValue === "") { + return false; + } + // If it's an array, check if it has elements + if (Array.isArray(watchedValue)) { + return watchedValue.length > 0; + } + console.log("watched value:", watchedValue); + // For any other truthy value (objects, numbers, strings), consider it as having a value + return true; case "labelEq": return Array.isArray(watcher) && watcher.some((item) => item?.label === compareValue); case "labelContains": @@ -156,9 +170,19 @@ export const CippFormCondition = (props) => { ) ); case "valueEq": - return Array.isArray(watcher) && watcher.some((item) => item?.value === compareValue); + if (Array.isArray(watcher)) { + return watcher.some((item) => item?.value === compareValue); + } else if (typeof watcher === "object" && watcher !== null) { + return watcher?.value === compareValue; + } + return false; case "valueNotEq": - return Array.isArray(watcher) && watcher.some((item) => item?.value !== compareValue); + if (Array.isArray(watcher)) { + return watcher.some((item) => item?.value !== compareValue); + } else if (typeof watcher === "object" && watcher !== null) { + return watcher?.value !== compareValue; + } + return false; case "valueContains": return ( Array.isArray(watcher) && @@ -166,6 +190,24 @@ export const CippFormCondition = (props) => { (item) => typeof item?.value === "string" && item.value.includes(compareValue) ) ); + case "isOneOf": + // Check if the watched value is one of the values in the compareValue array + if (!Array.isArray(compareValue)) { + console.warn( + "CippFormCondition: isOneOf compareType requires compareValue to be an array" + ); + return false; + } + return compareValue.some((value) => isEqual(watchedValue, value)); + case "isNotOneOf": + // Check if the watched value is NOT one of the values in the compareValue array + if (!Array.isArray(compareValue)) { + console.warn( + "CippFormCondition: isNotOneOf compareType requires compareValue to be an array" + ); + return false; + } + return !compareValue.some((value) => isEqual(watchedValue, value)); default: return false; } @@ -173,7 +215,7 @@ export const CippFormCondition = (props) => { // Reset field values when condition is not met and action is "hide" useEffect(() => { - if (action === "hide" && !isConditionMet()) { + if (action === "hide" && !isConditionMet() && clearOnHide) { const fieldNames = extractFieldNames(children); // Reset each field @@ -187,7 +229,7 @@ export const CippFormCondition = (props) => { } }); } - }, [watcher, action]); + }, [watcher, action, clearOnHide]); const disableChildren = (children) => { return React.Children.map(children, (child) => { diff --git a/src/components/CippComponents/CippFormContactSelector.jsx b/src/components/CippComponents/CippFormContactSelector.jsx index d912bc526be5..ec79ea8424bd 100644 --- a/src/components/CippComponents/CippFormContactSelector.jsx +++ b/src/components/CippComponents/CippFormContactSelector.jsx @@ -1,4 +1,3 @@ -import React from "react"; import { CippFormComponent } from "./CippFormComponent"; import { useWatch } from "react-hook-form"; import { useSettings } from "../../hooks/use-settings"; @@ -13,6 +12,7 @@ export const CippFormContactSelector = ({ select, addedField, valueField, + dataFilter = null, ...other }) => { const currentTenant = useWatch({ control: formControl.control, name: "tenantFilter" }); @@ -28,9 +28,18 @@ export const CippFormContactSelector = ({ addedField: addedField, tenantFilter: currentTenant ? currentTenant.value : selectedTenant, url: "/api/ListContacts", - labelField: (option) => `${option.displayName} (${option.mail})`, - valueField: valueField ? valueField : "id", + labelField: (option) => + `${option.displayName || option.DisplayName} (${ + option.mail || option.WindowsEmailAddress + })`, + valueField: valueField ? valueField : "WindowsEmailAddress" || "mail", queryKey: `listcontacts-${currentTenant?.value ? currentTenant.value : selectedTenant}`, + dataFilter: (options) => { + if (dataFilter) { + return options.filter(dataFilter); + } + return options; + }, }} creatable={false} {...other} diff --git a/src/components/CippComponents/CippFormDomainSelector.jsx b/src/components/CippComponents/CippFormDomainSelector.jsx index db0b1af339ff..71b6e9753455 100644 --- a/src/components/CippComponents/CippFormDomainSelector.jsx +++ b/src/components/CippComponents/CippFormDomainSelector.jsx @@ -1,41 +1,64 @@ -import React from "react"; -import { CippFormComponent } from "./CippFormComponent"; -import { useWatch } from "react-hook-form"; -import { useSettings } from "../../hooks/use-settings"; - -export const CippFormDomainSelector = ({ - formControl, - name, - label, - allTenants = false, - type = "multiple", - ...other -}) => { - const currentTenant = useWatch({ control: formControl.control, name: "tenantFilter" }); - const selectedTenant = useSettings().currentTenant; - return ( - `${option.id}`, - valueField: "id", - data: { - Endpoint: "domains", - manualPagination: true, - $count: true, - $top: 99, - }, - }} - {...other} - /> - ); -}; +import { CippFormComponent } from "./CippFormComponent"; +import { useWatch } from "react-hook-form"; +import { useSettings } from "../../hooks/use-settings"; +import { useMemo } from "react"; + +export const CippFormDomainSelector = ({ + formControl, + name, + label, + allTenants = false, + type = "multiple", + multiple = false, + preselectDefaultDomain = true, + ...other +}) => { + const currentTenant = useWatch({ control: formControl.control, name: "tenantFilter" }); + const selectedTenant = useSettings().currentTenant; + + const apiConfig = useMemo( + () => ({ + autoSelectFirstItem: preselectDefaultDomain && !multiple, + tenantFilter: currentTenant ? currentTenant.value : selectedTenant, + queryKey: `listDomains-${currentTenant?.value ? currentTenant.value : selectedTenant}`, + url: "/api/ListGraphRequest", + dataKey: "Results", + labelField: (option) => `${option.id}`, + valueField: "id", + addedField: { + isDefault: "isDefault", + isInitial: "isInitial", + isVerified: "isVerified", + }, + data: { + Endpoint: "domains", + manualPagination: true, + $count: true, + $top: 99, + }, + dataFilter: (domains) => { + // Always sort domains so that the default domain appears first + return domains + .filter((domain) => domain?.addedFields?.isVerified === true) + .sort((a, b) => { + if (a.addedFields?.isDefault === true) return -1; + if (b.addedFields?.isDefault === true) return 1; + return 0; + }); + }, + }), + [currentTenant, selectedTenant, preselectDefaultDomain, multiple] + ); + + return ( + + ); +}; diff --git a/src/components/CippComponents/CippFormGroupSelector.jsx b/src/components/CippComponents/CippFormGroupSelector.jsx new file mode 100644 index 000000000000..ff8eb4ac6dc5 --- /dev/null +++ b/src/components/CippComponents/CippFormGroupSelector.jsx @@ -0,0 +1,47 @@ +import { CippFormComponent } from "./CippFormComponent"; +import { useWatch } from "react-hook-form"; +import { useSettings } from "../../hooks/use-settings"; + +export const CippFormGroupSelector = ({ + formControl, + name, + label, + allTenants = false, + multiple = false, + type = "multiple", + select, + addedField, + creatable = false, + ...other +}) => { + const currentTenant = useWatch({ control: formControl.control, name: "tenantFilter" }); + const selectedTenant = useSettings().currentTenant; + return ( + option.displayName, + valueField: "id", + queryKey: `ListGroups-${currentTenant?.value ? currentTenant.value : selectedTenant}`, + data: { + Endpoint: "groups", + manualPagination: true, + $select: select ? select : "id,displayName,description", + $count: true, + $orderby: "displayName", + $top: 999, + }, + }} + creatable={creatable} + {...other} + /> + ); +}; diff --git a/src/components/CippComponents/CippFormInputArray.jsx b/src/components/CippComponents/CippFormInputArray.jsx index 1eabcbefcb0d..159b11b36119 100644 --- a/src/components/CippComponents/CippFormInputArray.jsx +++ b/src/components/CippComponents/CippFormInputArray.jsx @@ -1,4 +1,4 @@ -import { Button, TextField, IconButton, Typography, SvgIcon } from "@mui/material"; +import { TextField, IconButton, Typography, Box } from "@mui/material"; import { Controller, useFieldArray } from "react-hook-form"; import { Add, Remove } from "@mui/icons-material"; @@ -7,68 +7,111 @@ const convertBracketsToDots = (name) => { return name.replace(/\[(\d+)\]/g, ".$1"); // Replace [0] with .0 }; -export const CippFormInputArray = ({ formControl, name, label, validators, ...other }) => { +export const CippFormInputArray = ({ + formControl, + name, + label, + validators, + mode = "keyValue", // Default to keyValue for backward compatibility + placeholder, + keyPlaceholder = "Key", + valuePlaceholder = "Value", + ...other +}) => { // Convert the name from bracket notation to dot notation const convertedName = convertBracketsToDots(name); + // Determine initial value based on mode + const getInitialValue = () => { + if (mode === "simple") { + return ""; + } else { + return { Key: "", Value: "" }; + } + }; + // Use `useFieldArray` to manage dynamic field arrays const { fields, append, remove } = useFieldArray({ control: formControl.control, - name: convertedName, // Specify the converted name for useFieldArray + name: convertedName, }); + // Render simple mode (single input field) + const renderSimpleField = (field, index) => ( + + ( + + )} + /> + remove(index)} aria-label="remove item" size="small"> + + + + ); + + // Render key-value mode (two input fields) - original functionality + const renderKeyValueField = (field, index) => ( + + ( + + )} + /> + ( + + )} + /> + remove(index)} aria-label="remove item" size="small"> + + + + ); + return ( - <> -
    + + {label && {label}} - append({ Key: "", Value: "" })} variant="outlined"> + append(getInitialValue())} variant="outlined" size="small"> -
    + - {fields.map((field, index) => ( -
    - ( - - )} - /> - ( - - )} - /> - remove(index)} aria-label="remove item"> - - - - -
    - ))} - + {fields.map((field, index) => + mode === "simple" ? renderSimpleField(field, index) : renderKeyValueField(field, index) + )} + ); }; diff --git a/src/components/CippComponents/CippFormLicenseSelector.jsx b/src/components/CippComponents/CippFormLicenseSelector.jsx index 0f8e1a6b867b..1bd640850857 100644 --- a/src/components/CippComponents/CippFormLicenseSelector.jsx +++ b/src/components/CippComponents/CippFormLicenseSelector.jsx @@ -1,4 +1,3 @@ -import React from "react"; import { CippFormComponent } from "./CippFormComponent"; import { getCippLicenseTranslation } from "../../utils/get-cipp-license-translation"; import { useSettings } from "../../hooks/use-settings"; diff --git a/src/components/CippComponents/CippFormTenantSelector.jsx b/src/components/CippComponents/CippFormTenantSelector.jsx index dbde6a84b073..4f39e48868d4 100644 --- a/src/components/CippComponents/CippFormTenantSelector.jsx +++ b/src/components/CippComponents/CippFormTenantSelector.jsx @@ -1,8 +1,8 @@ -import React, { useEffect, useState } from "react"; +import { useEffect, useState } from "react"; import { CippFormComponent } from "./CippFormComponent"; import { useSettings } from "../../hooks/use-settings"; import { GroupHeader, GroupItems } from "../CippComponents/CippAutocompleteGrouping"; -import { ApiGetCall } from "/src/api/ApiCall"; +import { ApiGetCall } from "../../api/ApiCall"; export const CippFormTenantSelector = ({ formControl, @@ -15,7 +15,8 @@ export const CippFormTenantSelector = ({ disableClearable = true, preselectedEnabled = false, removeOptions = [], - includeGroups = false, // New parameter + includeGroups = false, + includeOffboardingDefaults = false, ...other }) => { const validators = () => { @@ -28,10 +29,30 @@ export const CippFormTenantSelector = ({ }; const currentTenant = useSettings()?.currentTenant; + // Build the API URL with query parameters to support tenant specific offboarding config + const buildApiUrl = () => { + const baseUrl = allTenants ? "/api/ListTenants?AllTenantSelector=true" : "/api/ListTenants"; + const params = new URLSearchParams(); + + if (allTenants) { + params.append("AllTenantSelector", "true"); + } + + if (includeOffboardingDefaults) { + params.append("IncludeOffboardingDefaults", "true"); + } + + return params.toString() + ? `${baseUrl.split("?")[0]}?${params.toString()}` + : baseUrl.split("?")[0]; + }; + // Fetch tenant list const tenantList = ApiGetCall({ - url: allTenants ? "/api/ListTenants?AllTenantSelector=true" : "/api/ListTenants", - queryKey: allTenants ? "ListTenants-FormAllTenantSelector" : "ListTenants-FormnotAllTenants", + url: buildApiUrl(), + queryKey: allTenants + ? `ListTenants-FormAllTenantSelector${includeOffboardingDefaults ? "-WithOffboarding" : ""}` + : `ListTenants-FormnotAllTenants${includeOffboardingDefaults ? "-WithOffboarding" : ""}`, }); // Fetch tenant group list if includeGroups is true @@ -46,28 +67,34 @@ export const CippFormTenantSelector = ({ useEffect(() => { if (tenantList.isSuccess && (!includeGroups || tenantGroupList.isSuccess)) { - const tenantData = tenantList.data.map((tenant) => ({ - value: tenant[valueField], - label: `${tenant.displayName} (${tenant.defaultDomainName})`, - type: "Tenant", - addedFields: { - defaultDomainName: tenant.defaultDomainName, - displayName: tenant.displayName, - customerId: tenant.customerId, - }, - })); - - const groupData = includeGroups - ? tenantGroupList?.data?.Results?.map((group) => ({ - value: group.Id, - label: group.Name, - type: "Group", + const tenantData = Array.isArray(tenantList.data) + ? tenantList.data.map((tenant) => ({ + value: tenant[valueField], + label: `${tenant.displayName} (${tenant.defaultDomainName})`, + type: "Tenant", + addedFields: { + defaultDomainName: tenant.defaultDomainName, + displayName: tenant.displayName, + customerId: tenant.customerId, + ...(includeOffboardingDefaults && { + offboardingDefaults: tenant.offboardingDefaults, + }), + }, })) : []; + const groupData = + includeGroups && Array.isArray(tenantGroupList?.data?.Results) + ? tenantGroupList.data.Results.map((group) => ({ + value: group.Id, + label: group.Name, + type: "Group", + })) + : []; + setOptions([...tenantData, ...groupData]); } - }, [tenantList.isSuccess, tenantGroupList.isSuccess, includeGroups]); + }, [tenantList.isSuccess, tenantGroupList.isSuccess, includeGroups, includeOffboardingDefaults]); return ( {params.children} : params.children}
  • )} + isFetching={tenantList.isFetching || tenantGroupList.isFetching} {...other} /> ); diff --git a/src/components/CippComponents/CippFormUserAndGroupSelector.jsx b/src/components/CippComponents/CippFormUserAndGroupSelector.jsx new file mode 100644 index 000000000000..b2fef52aa1a5 --- /dev/null +++ b/src/components/CippComponents/CippFormUserAndGroupSelector.jsx @@ -0,0 +1,66 @@ +import { CippFormComponent } from "./CippFormComponent"; +import { useWatch } from "react-hook-form"; +import { useSettings } from "../../hooks/use-settings"; + +export const CippFormUserAndGroupSelector = ({ + formControl, + name, + label, + allTenants = false, + multiple = false, + type = "multiple", + addedField, + valueField, + dataFilter = null, + showRefresh = false, + ...other +}) => { + const currentTenant = useWatch({ control: formControl.control, name: "tenantFilter" }); + const selectedTenant = useSettings().currentTenant; + return ( + { + // If it's a group (no userPrincipalName), just show displayName + if (!option.userPrincipalName) { + return `${option.displayName}`; + } + // If it's a user, show displayName and userPrincipalName + return `${option.displayName} (${option.userPrincipalName})`; + }, + valueField: valueField ? valueField : "id", + queryKey: `ListUsersAndGroups-${ + currentTenant?.value ? currentTenant.value : selectedTenant + }`, + data: { + TenantFilter: currentTenant ? currentTenant.value : selectedTenant, + }, + dataFilter: (options) => { + if (dataFilter) { + return options.filter(dataFilter); + } + return options; + }, + showRefresh: showRefresh, + }} + groupBy={(option) => { + // Group by type - Users or Groups + if (option["@odata.type"] === "#microsoft.graph.group") { + return "Groups"; + } + return "Users"; + }} + creatable={false} + {...other} + /> + ); +}; diff --git a/src/components/CippComponents/CippFormUserSelector.jsx b/src/components/CippComponents/CippFormUserSelector.jsx index be303767317b..18a2e8d13fa9 100644 --- a/src/components/CippComponents/CippFormUserSelector.jsx +++ b/src/components/CippComponents/CippFormUserSelector.jsx @@ -1,4 +1,3 @@ -import React from "react"; import { CippFormComponent } from "./CippFormComponent"; import { useWatch } from "react-hook-form"; import { useSettings } from "../../hooks/use-settings"; @@ -13,6 +12,8 @@ export const CippFormUserSelector = ({ select, addedField, valueField, + dataFilter = null, + showRefresh = false, ...other }) => { const currentTenant = useWatch({ control: formControl.control, name: "tenantFilter" }); @@ -31,7 +32,9 @@ export const CippFormUserSelector = ({ dataKey: "Results", labelField: (option) => `${option.displayName} (${option.userPrincipalName})`, valueField: valueField ? valueField : "id", - queryKey: `ListUsers-${currentTenant?.value ? currentTenant.value : selectedTenant}`, + queryKey: `ListUsers-${currentTenant?.value ? currentTenant.value : selectedTenant}-${ + select ? select : "default" + }`, data: { Endpoint: "users", manualPagination: true, @@ -40,6 +43,13 @@ export const CippFormUserSelector = ({ $orderby: "displayName", $top: 999, }, + dataFilter: (options) => { + if (dataFilter) { + return options.filter(dataFilter); + } + return options; + }, + showRefresh: showRefresh, }} creatable={false} {...other} diff --git a/src/components/CippComponents/CippForwardingSection.jsx b/src/components/CippComponents/CippForwardingSection.jsx new file mode 100644 index 000000000000..24a18345ddc5 --- /dev/null +++ b/src/components/CippComponents/CippForwardingSection.jsx @@ -0,0 +1,98 @@ +import { Stack, Button } from "@mui/material"; +import CippFormComponent from "./CippFormComponent"; +import { CippFormCondition } from "./CippFormCondition"; +import { Grid } from "@mui/system"; +import { CippApiResults } from "./CippApiResults"; +import { getCippValidator } from "../../utils/get-cipp-validator"; + +const CippForwardingSection = ({ formControl, usersList, contactsList, postRequest, handleSubmit }) => { + + const internalAddressOptions = [ + // Add users + ...(usersList?.data?.Results?.map((user) => ({ + value: user.userPrincipalName, + label: `${user.displayName} (${user.userPrincipalName}) - User`, + })) || []), + // Add contacts + ...(contactsList?.data?.Results?.map((contact) => ({ + value: contact.mail || contact.emailAddress, + label: `${contact.displayName} (${contact.mail || contact.emailAddress}) - Contact`, + })) || []) + ]; + + return ( + + + + + + + + + getCippValidator(value, "email"), + }} + /> + + + + + + + + + + + + + ); +}; + +export default CippForwardingSection; diff --git a/src/components/CippComponents/CippGeoLocation.jsx b/src/components/CippComponents/CippGeoLocation.jsx index 633ce3ee60cd..1621f602ba1d 100644 --- a/src/components/CippComponents/CippGeoLocation.jsx +++ b/src/components/CippComponents/CippGeoLocation.jsx @@ -1,21 +1,34 @@ -import React, { useEffect, useState } from "react"; -import { Card, CardContent, CardHeader, Skeleton } from "@mui/material"; +import { useEffect, useState } from "react"; +import { Skeleton } from "@mui/material"; import { Grid } from "@mui/system"; import dynamic from "next/dynamic"; -import { ApiPostCall } from "/src/api/ApiCall"; +import { ApiPostCall } from "../../api/ApiCall"; import { CippPropertyList } from "./CippPropertyList"; import { getCippTranslation } from "../../utils/get-cipp-translation"; import { getCippFormatting } from "../../utils/get-cipp-formatting"; const CippMap = dynamic(() => import("./CippMap"), { ssr: false }); -export default function CippGeoLocation({ ipAddress, cardProps }) { +export default function CippGeoLocation({ + ipAddress, + cardProps, + showIpAddress = false, + displayIpAddress = null, +}) { const [locationInfo, setLocationInfo] = useState(null); const markerProperties = ["timezone", "as", "proxy", "hosting", "mobile"]; const includeProperties = ["org", "city", "region", "country", "zip"]; - const initialPropertyList = includeProperties.map((key) => ({ - label: getCippTranslation(key), - value: "", + + // Use displayIpAddress if provided, otherwise use ipAddress + const ipToDisplay = displayIpAddress || ipAddress; + + // Add IP address to properties if showIpAddress is true + const initialIncludeProperties = showIpAddress + ? ["ipAddress", ...includeProperties] + : includeProperties; + const initialPropertyList = initialIncludeProperties.map((key) => ({ + label: getCippTranslation(key === "ipAddress" ? "IP Address" : key), + value: key === "ipAddress" ? ipToDisplay : "", })); const [properties, setProperties] = useState(initialPropertyList); @@ -28,6 +41,16 @@ export default function CippGeoLocation({ ipAddress, cardProps }) { onResult: (result) => { setLocationInfo(result); var propertyList = []; + + // Add IP address property if showIpAddress is true + if (showIpAddress) { + propertyList.push({ + label: getCippTranslation("IP Address"), + value: getCippFormatting(ipToDisplay, "ipAddress"), + }); + } + + // Add other properties includeProperties.map((key) => { propertyList.push({ label: getCippTranslation(key), @@ -61,7 +84,7 @@ export default function CippGeoLocation({ ipAddress, cardProps }) { return ( - + {geoLookup.isPending ? ( ) : ( @@ -78,7 +101,7 @@ export default function CippGeoLocation({ ipAddress, cardProps }) { )} - + { + // Watch for changes in the resource type field + const selectedResource = useWatch({ + control: formControl.control, + name: resourceFieldName, + }); + + // Extract the value whether selectedResource is an object or string + const resourceValue = selectedResource?.value || selectedResource; + + const getHelperText = () => { + if (helperText) return helperText; + + if (!resourceValue) { + return "Select a resource type above to view available attributes"; + } + + return "Select which attributes to monitor for changes"; + }; + + const api = resourceValue + ? { + url: "/api/ListGraphRequest", + queryKey: `graph-properties-${resourceValue}`, + data: { + Endpoint: resourceValue, + ListProperties: true, + IgnoreErrors: true, + }, + labelField: (item) => item, + valueField: (item) => item, + dataKey: "Results", + } + : null; + + return ( + + ); +}; + +export default CippGraphAttributeSelector; diff --git a/src/components/CippComponents/CippGraphResourceSelector.jsx b/src/components/CippComponents/CippGraphResourceSelector.jsx new file mode 100644 index 000000000000..f2c2015c61f8 --- /dev/null +++ b/src/components/CippComponents/CippGraphResourceSelector.jsx @@ -0,0 +1,132 @@ +import { useWatch } from "react-hook-form"; +import CippFormComponent from "./CippFormComponent"; + +/** + * A form component for selecting specific resources from a Graph API endpoint + * @param {Object} props - Component props + * @param {Object} props.formControl - React Hook Form control object + * @param {string} props.name - Field name for the form + * @param {string} props.resourceFieldName - Name of the field that contains the selected resource type + * @param {string} props.label - Label for the field + * @param {string} props.helperText - Helper text for the field + * @param {boolean} props.multiple - Whether to allow multiple selections + * @param {boolean} props.required - Whether the field is required + * @param {Object} props.gridProps - Grid props to pass to the wrapper + */ +const CippGraphResourceSelector = ({ + formControl, + name, + resourceFieldName = "DeltaResource", + tenantFilterFieldName = "tenantFilter", + label = "Filter Specific Resources (Optional)", + helperText, + multiple = true, + required = false, + ...otherProps +}) => { + // Watch for changes in the resource type field + const selectedResource = useWatch({ + control: formControl.control, + name: resourceFieldName, + }); + + // Watch for changes in the tenant filter field + const tenantFilter = useWatch({ + control: formControl.control, + name: tenantFilterFieldName, + }); + + // Extract the value whether selectedResource is an object or string + const resourceValue = selectedResource?.value || selectedResource; + + // Extract the tenant filter value - handle both object and string formats + const tenantFilterValue = tenantFilter?.value || tenantFilter; + + const getHelperText = () => { + if (helperText) return helperText; + + if (!resourceValue) { + return "Select a resource type above to filter specific resources"; + } + + if ( + !tenantFilterValue || + tenantFilterValue === "AllTenants" || + (tenantFilter && typeof tenantFilter === "object" && tenantFilter.type === "Group") + ) { + return "Resource filtering is not available for All Tenants or tenant groups"; + } + + if (multiple) { + return "Optionally select specific resources to monitor (will create filter with OR statements: id eq 'id1' or id eq 'id2')"; + } + + return "Optionally select a specific resource to monitor"; + }; + + // Check if we should make the API call + const shouldFetchResources = () => { + // Must have a resource type selected + if (!resourceValue) return false; + + // Must have a tenant filter + if (!tenantFilterValue) return false; + + // Cannot be null or undefined + if (tenantFilterValue === null || tenantFilterValue === undefined) return false; + + // Cannot be AllTenants + if (tenantFilterValue === "AllTenants") return false; + + // Cannot be a tenant group (check if tenantFilter object has type: "Group") + if (tenantFilter && typeof tenantFilter === "object" && tenantFilter.type === "Group") + return false; + + return true; + }; + + const isDisabled = !resourceValue || !shouldFetchResources(); + + const api = shouldFetchResources() + ? { + url: "/api/ListGraphRequest", + queryKey: `graph-resources-${resourceValue}-${tenantFilterValue}`, + data: { + Endpoint: resourceValue, + IgnoreErrors: true, + $select: "id,displayName", + $top: 100, + tenantFilter: tenantFilterValue, + }, + labelField: (item) => item.displayName || item.id, + valueField: "id", + dataKey: "Results", + waiting: true, + } + : null; + + return ( + + ); +}; + +export default CippGraphResourceSelector; diff --git a/src/components/CippComponents/CippHVEUserDrawer.jsx b/src/components/CippComponents/CippHVEUserDrawer.jsx new file mode 100644 index 000000000000..3c4ba53ca852 --- /dev/null +++ b/src/components/CippComponents/CippHVEUserDrawer.jsx @@ -0,0 +1,171 @@ +import React, { useState } from "react"; +import { Button, Alert, Box } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm } from "react-hook-form"; +import { PersonAdd } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiPostCall } from "../../api/ApiCall"; + +export const CippHVEUserDrawer = ({ + buttonText = "Add HVE User", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const userSettingsDefaults = useSettings(); + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + tenantFilter: userSettingsDefaults.currentTenant, + displayName: "", + password: "", + primarySMTPAddress: "", + }, + }); + + const createHVEUser = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: ["Mailboxes"], + }); + + const handleSubmit = () => { + const formData = formControl.getValues(); + const postData = { + tenantFilter: formData.tenantFilter, + displayName: formData.displayName, + password: formData.password, + primarySMTPAddress: formData.primarySMTPAddress, + }; + createHVEUser.mutate({ + url: "/api/ExecHVEUser", + data: postData, + relatedQueryKeys: ["Mailboxes"], + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset({ + tenantFilter: userSettingsDefaults.currentTenant, + displayName: "", + password: "", + primarySMTPAddress: "", + }); + }; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + + + + } + > + + + + + HVE SMTP Configuration Settings: + +
  • + Server: smtp-hve.office365.com +
  • +
  • + Port: 587 +
  • +
  • + Encryption: STARTTLS +
  • +
  • + TLS Support: TLS 1.2 and TLS 1.3 +
  • +
    + + Use these settings to configure your email client for HVE access. + +
    +
    +
    + + + + + + + + + + + + + + +
    +
    + + ); +}; diff --git a/src/components/CippComponents/CippIntunePolicyActions.jsx b/src/components/CippComponents/CippIntunePolicyActions.jsx new file mode 100644 index 000000000000..531245e94625 --- /dev/null +++ b/src/components/CippComponents/CippIntunePolicyActions.jsx @@ -0,0 +1,238 @@ +import { Book, LaptopChromebook } from "@mui/icons-material"; +import { GlobeAltIcon, TrashIcon, UserIcon, UserGroupIcon } from "@heroicons/react/24/outline"; + +const assignmentModeOptions = [ + { label: "Replace existing assignments", value: "replace" }, + { label: "Append to existing assignments", value: "append" }, +]; + +const assignmentFilterTypeOptions = [ + { label: "Include - Apply policy to devices matching filter", value: "include" }, + { label: "Exclude - Apply policy to devices NOT matching filter", value: "exclude" }, +]; + +/** + * Get assignment actions for Intune policies + * @param {string} tenant - The tenant filter + * @param {string} policyType - The policy type (URLName, deviceCompliancePolicies, etc.) + * @param {object} options - Additional options + * @param {string} options.platformType - Platform type for app protection policies (deviceAppManagement) + * @param {boolean} options.includeCreateTemplate - Whether to include create template action (default: true) + * @param {boolean} options.includeDelete - Whether to include delete action (default: true) + * @param {string} options.deleteUrlName - URLName for delete action (default: same as policyType) + * @param {object} options.templateData - Data for template creation + * @returns {Array} Array of action objects + */ +export const useCippIntunePolicyActions = (tenant, policyType, options = {}) => { + const { + platformType = null, + includeCreateTemplate = true, + includeDelete = true, + deleteUrlName = policyType, + templateData = null, + } = options; + + const getAssignmentFields = () => [ + { + type: "radio", + name: "assignmentMode", + label: "Assignment mode", + options: assignmentModeOptions, + defaultValue: "replace", + helperText: + "Replace will overwrite existing assignments. Append keeps current assignments and adds/overwrites only for the selected groups.", + }, + { + type: "autoComplete", + name: "assignmentFilter", + label: "Assignment Filter (Optional)", + multiple: false, + creatable: false, + api: { + url: "/api/ListAssignmentFilters", + queryKey: `ListAssignmentFilters-${tenant}`, + labelField: (filter) => filter.displayName, + valueField: "displayName", + }, + }, + { + type: "radio", + name: "assignmentFilterType", + label: "Assignment Filter Mode", + options: assignmentFilterTypeOptions, + defaultValue: "include", + helperText: "Choose whether to include or exclude devices matching the filter.", + }, + ]; + + const getCustomDataFormatter = (assignTo) => (row, action, formData) => { + const rows = Array.isArray(row) ? row : [row]; + return rows.map((item) => ({ + tenantFilter: tenant === "AllTenants" && item?.Tenant ? item.Tenant : tenant, + ID: item?.id, + type: item?.URLName || policyType, + ...(platformType && { platformType }), + AssignTo: assignTo, + assignmentMode: formData?.assignmentMode || "replace", + AssignmentFilterName: formData?.assignmentFilter?.value || null, + AssignmentFilterType: formData?.assignmentFilter?.value + ? formData?.assignmentFilterType || "include" + : null, + })); + }; + + const getCustomDataFormatterForGroups = () => (row, action, formData) => { + const rows = Array.isArray(row) ? row : [row]; + const selectedGroups = Array.isArray(formData?.groupTargets) ? formData.groupTargets : []; + return rows.map((item) => ({ + tenantFilter: tenant === "AllTenants" && item?.Tenant ? item.Tenant : tenant, + ID: item?.id, + type: item?.URLName || policyType, + ...(platformType && { platformType }), + GroupIds: selectedGroups.map((group) => group.value).filter(Boolean), + GroupNames: selectedGroups.map((group) => group.label).filter(Boolean), + assignmentMode: formData?.assignmentMode || "replace", + AssignmentFilterName: formData?.assignmentFilter?.value || null, + AssignmentFilterType: formData?.assignmentFilter?.value + ? formData?.assignmentFilterType || "include" + : null, + })); + }; + + const actions = []; + + // Create template action + if (includeCreateTemplate) { + actions.push({ + label: "Create template based on policy", + type: "POST", + url: "/api/AddIntuneTemplate", + data: templateData || { + ID: "id", + URLName: policyType === "URLName" ? "URLName" : policyType, + }, + confirmText: "Are you sure you want to create a template based on this policy?", + icon: , + color: "info", + multiPost: false, + }); + } + + // Assign to All Users + actions.push({ + label: "Assign to All Users", + type: "POST", + url: "/api/ExecAssignPolicy", + data: { + AssignTo: "allLicensedUsers", + ID: "id", + type: policyType === "URLName" ? "URLName" : policyType, + ...(platformType && { platformType: "!deviceAppManagement" }), + }, + multiPost: false, + fields: getAssignmentFields(), + customDataformatter: getCustomDataFormatter("allLicensedUsers"), + confirmText: 'Are you sure you want to assign "[displayName]" to all users?', + icon: , + color: "info", + }); + + // Assign to All Devices + actions.push({ + label: "Assign to All Devices", + type: "POST", + url: "/api/ExecAssignPolicy", + data: { + AssignTo: "AllDevices", + ID: "id", + type: policyType === "URLName" ? "URLName" : policyType, + ...(platformType && { platformType: "!deviceAppManagement" }), + }, + multiPost: false, + fields: getAssignmentFields(), + customDataformatter: getCustomDataFormatter("AllDevices"), + confirmText: 'Are you sure you want to assign "[displayName]" to all devices?', + icon: , + color: "info", + }); + + // Assign Globally (All Users / All Devices) + actions.push({ + label: "Assign Globally (All Users / All Devices)", + type: "POST", + url: "/api/ExecAssignPolicy", + data: { + AssignTo: "AllDevicesAndUsers", + ID: "id", + type: policyType === "URLName" ? "URLName" : policyType, + ...(platformType && { platformType: "!deviceAppManagement" }), + }, + multiPost: false, + fields: getAssignmentFields(), + customDataformatter: getCustomDataFormatter("AllDevicesAndUsers"), + confirmText: 'Are you sure you want to assign "[displayName]" to all users and devices?', + icon: , + color: "info", + }); + + // Assign to Custom Group + actions.push({ + label: "Assign to Custom Group", + type: "POST", + url: "/api/ExecAssignPolicy", + icon: , + color: "info", + confirmText: 'Select the target groups for "[displayName]".', + multiPost: false, + fields: [ + { + type: "autoComplete", + name: "groupTargets", + label: "Group(s)", + multiple: true, + creatable: false, + allowResubmit: true, + validators: { required: "Please select at least one group" }, + api: { + url: "/api/ListGraphRequest", + dataKey: "Results", + queryKey: `ListPolicyAssignmentGroups-${tenant}`, + labelField: (group) => + group.id ? `${group.displayName} (${group.id})` : group.displayName, + valueField: "id", + addedField: { + description: "description", + }, + data: { + Endpoint: "groups", + manualPagination: true, + $select: "id,displayName,description", + $orderby: "displayName", + $top: 999, + $count: true, + }, + }, + }, + ...getAssignmentFields(), + ], + customDataformatter: getCustomDataFormatterForGroups(), + }); + + // Delete action + if (includeDelete) { + actions.push({ + label: "Delete Policy", + type: "POST", + url: "/api/RemovePolicy", + data: { + ID: "id", + URLName: deleteUrlName === "URLName" ? "URLName" : deleteUrlName, + }, + confirmText: "Are you sure you want to delete this policy?", + icon: , + color: "danger", + }); + } + + return actions; +}; diff --git a/src/components/CippComponents/CippInviteGuestDrawer.jsx b/src/components/CippComponents/CippInviteGuestDrawer.jsx new file mode 100644 index 000000000000..badfaaa01567 --- /dev/null +++ b/src/components/CippComponents/CippInviteGuestDrawer.jsx @@ -0,0 +1,180 @@ +import { useState, useEffect } from "react"; +import { Button } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm, useFormState } from "react-hook-form"; +import { Send } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiPostCall } from "../../api/ApiCall"; +import { getCippValidator } from "../../utils/get-cipp-validator"; + +export const CippInviteGuestDrawer = ({ + buttonText = "Invite Guest", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const userSettingsDefaults = useSettings(); + + const formControl = useForm({ + mode: "onBlur", + defaultValues: { + tenantFilter: userSettingsDefaults.currentTenant, + displayName: "", + mail: "", + redirectUri: "", + message: "", + sendInvite: true, + }, + }); + + const { isValid } = useFormState({ control: formControl.control }); + + const inviteGuest = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: [`Users-${userSettingsDefaults.currentTenant}`], + }); + + // Reset form fields on successful invitation + useEffect(() => { + if (inviteGuest.isSuccess) { + formControl.reset(); + } + }, [inviteGuest.isSuccess, formControl]); + + const handleSubmit = () => { + formControl.trigger(); + // Check if the form is valid before proceeding + if (!isValid) { + return; + } + const formData = formControl.getValues(); + inviteGuest.mutate({ + url: "/api/AddGuest", + data: formData, + relatedQueryKeys: [`Users-${userSettingsDefaults.currentTenant}`], + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset({ + tenantFilter: userSettingsDefaults.currentTenant, + displayName: "", + mail: "", + redirectUri: "", + message: "", + sendInvite: true, + }); + }; + + const handleOpenDrawer = () => { + formControl.reset({ + tenantFilter: userSettingsDefaults.currentTenant, + displayName: "", + mail: "", + redirectUri: "", + message: "", + sendInvite: true, + }); + setDrawerVisible(true); + }; + + return ( + <> + } + > + {buttonText} + + + + + + } + > + + + + + + !value || getCippValidator(value, "email"), + }} + /> + + + + + + + + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippMailboxPermissionsDialog.jsx b/src/components/CippComponents/CippMailboxPermissionsDialog.jsx index 52b2f3cb7372..8306089a8008 100644 --- a/src/components/CippComponents/CippMailboxPermissionsDialog.jsx +++ b/src/components/CippComponents/CippMailboxPermissionsDialog.jsx @@ -1,54 +1,46 @@ import { Box, Stack } from "@mui/material"; +import { useEffect } from "react"; import CippFormComponent from "./CippFormComponent"; import { useWatch } from "react-hook-form"; -import { ApiGetCall } from "../../api/ApiCall"; -import { useSettings } from "../../hooks/use-settings"; -const CippMailboxPermissionsDialog = ({ formHook }) => { +const CippMailboxPermissionsDialog = ({ + formHook, + combinedOptions, + isUserGroupLoading, + defaultAutoMap = false +}) => { const fullAccess = useWatch({ control: formHook.control, name: "permissions.AddFullAccess", }); - const userSettingsDefaults = useSettings(); - - const usersList = ApiGetCall({ - url: "/api/ListGraphRequest", - data: { - Endpoint: `users`, - tenantFilter: userSettingsDefaults.currentTenant, - $select: "id,displayName,userPrincipalName,mail", - noPagination: true, - $top: 999, - }, - queryKey: `UserNames-${userSettingsDefaults.currentTenant}`, - }); + // Set the default AutoMap value when component mounts + useEffect(() => { + formHook.setValue("permissions.AutoMap", defaultAutoMap); + }, [formHook, defaultAutoMap]); return ( - + ({ - value: user.userPrincipalName, - label: `${user.displayName} (${user.userPrincipalName})`, - })) || [] - } + isFetching={isUserGroupLoading} + creatable={false} + options={combinedOptions} + /> + + + - {fullAccess && ( - - )} { label="Add Send-as Permissions" name="permissions.AddSendAs" formControl={formHook} - isFetching={usersList.isFetching} - options={ - usersList?.data?.Results?.map((user) => ({ - value: user.userPrincipalName, - label: `${user.displayName} (${user.userPrincipalName})`, - })) || [] - } + isFetching={isUserGroupLoading} + creatable={false} + options={combinedOptions} /> @@ -71,13 +59,9 @@ const CippMailboxPermissionsDialog = ({ formHook }) => { label="Add Send On Behalf Permissions" name="permissions.AddSendOnBehalf" formControl={formHook} - isFetching={usersList.isFetching} - options={ - usersList?.data?.Results?.map((user) => ({ - value: user.userPrincipalName, - label: `${user.displayName} (${user.userPrincipalName})`, - })) || [] - } + isFetching={isUserGroupLoading} + creatable={false} + options={combinedOptions} /> diff --git a/src/components/CippComponents/CippMailboxRestoreDrawer.jsx b/src/components/CippComponents/CippMailboxRestoreDrawer.jsx new file mode 100644 index 000000000000..ab8923e2c1b7 --- /dev/null +++ b/src/components/CippComponents/CippMailboxRestoreDrawer.jsx @@ -0,0 +1,539 @@ +import { useEffect, useState } from "react"; +import { useForm, useWatch, useFormState } from "react-hook-form"; +import { + Button, + Drawer, + Box, + Typography, + IconButton, + Alert, + Divider, + CircularProgress, + Card, + CardContent, + Chip, + Tooltip, +} from "@mui/material"; +import { Grid } from "@mui/system"; +import { + Close as CloseIcon, + RestoreFromTrash, + DeleteForever, + Archive, + Storage, + AccountBox, +} from "@mui/icons-material"; +import { useSettings } from "../../hooks/use-settings"; +import { getCippTranslation } from "../../utils/get-cipp-translation"; +import CippFormComponent from "./CippFormComponent"; +import { CippApiResults } from "./CippApiResults"; +import { ApiPostCall } from "../../api/ApiCall"; + +const wellKnownFolders = [ + "Inbox", + "SentItems", + "DeletedItems", + "Calendar", + "Contacts", + "Drafts", + "Journal", + "Tasks", + "Notes", + "JunkEmail", + "CommunicationHistory", + "Voicemail", + "Fax", + "Conflicts", + "SyncIssues", + "LocalFailures", + "ServerFailures", +].map((folder) => ({ value: `#${folder}#`, label: getCippTranslation(folder) })); + +export const CippMailboxRestoreDrawer = ({ + buttonText = "New Restore Job", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const userSettingsDefaults = useSettings(); + const tenantDomain = userSettingsDefaults.currentTenant; + + const formControl = useForm({ + mode: "onBlur", + defaultValues: { + tenantFilter: tenantDomain, + }, + }); + + const createRestore = ApiPostCall({ + relatedQueryKeys: ["MailboxRestores*"], + datafromurl: true, + }); + + const { isValid, isDirty } = useFormState({ control: formControl.control }); + + const sourceMailbox = useWatch({ control: formControl.control, name: "SourceMailbox" }); + const targetMailbox = useWatch({ control: formControl.control, name: "TargetMailbox" }); + + // Helper function to check if archive is active (GUID exists and is not all zeros) + const hasActiveArchive = (mailbox) => { + const archiveGuid = mailbox?.addedFields?.ArchiveGuid; + return ( + archiveGuid && + archiveGuid !== "00000000-0000-0000-0000-000000000000" && + archiveGuid.replace(/0/g, "").replace(/-/g, "") !== "" + ); + }; + + useEffect(() => { + if (sourceMailbox && targetMailbox) { + const sourceUPN = sourceMailbox.value; + const targetUPN = targetMailbox.value; + const randomGUID = crypto.randomUUID(); + formControl.setValue("RequestName", `Restore ${sourceUPN} to ${targetUPN} (${randomGUID})`, { + shouldDirty: true, + shouldValidate: true, + }); + } + }, [sourceMailbox?.value, targetMailbox?.value]); + + useEffect(() => { + if (createRestore.isSuccess) { + formControl.reset(); + } + }, [createRestore.isSuccess]); + + const handleSubmit = () => { + const values = formControl.getValues(); + const shippedValues = { + TenantFilter: tenantDomain, + RequestName: values.RequestName, + SourceMailbox: values.SourceMailbox?.addedFields?.ExchangeGuid ?? values.SourceMailbox?.value, + TargetMailbox: values.TargetMailbox?.addedFields?.ExchangeGuid ?? values.TargetMailbox?.value, + BadItemLimit: values.BadItemLimit, + LargeItemLimit: values.LargeItemLimit, + AcceptLargeDataLoss: values.AcceptLargeDataLoss, + AssociatedMessagesCopyOption: values.AssociatedMessagesCopyOption, + ExcludeFolders: values.ExcludeFolders, + IncludeFolders: values.IncludeFolders, + BatchName: values.BatchName, + CompletedRequestAgeLimit: values.CompletedRequestAgeLimit, + ConflictResolutionOption: values.ConflictResolutionOption, + SourceRootFolder: values.SourceRootFolder, + TargetRootFolder: values.TargetRootFolder, + TargetType: values.TargetType, + ExcludeDumpster: values.ExcludeDumpster, + SourceIsArchive: values.SourceIsArchive, + TargetIsArchive: values.TargetIsArchive, + }; + + createRestore.mutate({ + url: "/api/ExecMailboxRestore", + data: shippedValues, + }); + }; + + const handleCloseDrawer = () => { + formControl.reset(); + setDrawerVisible(false); + }; + + return ( + <> + } + onClick={() => setDrawerVisible(true)} + requiredPermissions={requiredPermissions} + > + {buttonText} + + + + + + New Mailbox Restore + + + + + + + + + + Use this form to restore a mailbox from a soft-deleted state to the target + mailbox. Use the optional settings to tailor the restore request for your needs. + + + + + Restore Settings + + + + `${option.displayName} (${option.UPN})`, + valueField: "UPN", + addedField: { + displayName: "displayName", + ExchangeGuid: "ExchangeGuid", + recipientTypeDetails: "recipientTypeDetails", + ArchiveStatus: "ArchiveStatus", + ArchiveGuid: "ArchiveGuid", + ProhibitSendQuota: "ProhibitSendQuota", + TotalItemSize: "TotalItemSize", + ItemCount: "ItemCount", + WhenSoftDeleted: "WhenSoftDeleted", + }, + url: "/api/ListMailboxes?SoftDeletedMailbox=true", + queryKey: `ListMailboxes-${tenantDomain}-SoftDeleted`, + showRefresh: true, + }} + validators={{ + validate: (value) => (value ? true : "Please select a source mailbox."), + }} + /> + + + {sourceMailbox && ( + + + {sourceMailbox.addedFields?.recipientTypeDetails && ( + + } + label={sourceMailbox.addedFields.recipientTypeDetails} + size="small" + color="info" + variant="outlined" + /> + + )} + + } + label={ + hasActiveArchive(sourceMailbox) + ? "Archive Active" + : "Archive Not Available" + } + size="small" + color={hasActiveArchive(sourceMailbox) ? "success" : "warning"} + variant="outlined" + /> + + + + )} + + + `${option.displayName} (${option.UPN})`, + valueField: "UPN", + addedField: { + displayName: "displayName", + ExchangeGuid: "ExchangeGuid", + recipientTypeDetails: "recipientTypeDetails", + ArchiveStatus: "ArchiveStatus", + ArchiveGuid: "ArchiveGuid", + ProhibitSendQuota: "ProhibitSendQuota", + TotalItemSize: "TotalItemSize", + ItemCount: "ItemCount", + }, + url: "/api/ListMailboxes", + data: { UseReportDB: true }, + showRefresh: true, + }} + validators={{ + validate: (value) => (value ? true : "Please select a target mailbox."), + }} + /> + + + {targetMailbox && ( + + + {targetMailbox.addedFields?.recipientTypeDetails && ( + + } + label={targetMailbox.addedFields.recipientTypeDetails} + size="small" + color="info" + variant="outlined" + /> + + )} + + } + label={ + hasActiveArchive(targetMailbox) + ? "Archive Active" + : "Archive Not Available" + } + size="small" + color={hasActiveArchive(targetMailbox) ? "success" : "warning"} + variant="outlined" + /> + + {targetMailbox.addedFields?.TotalItemSize && ( + + } + label={targetMailbox.addedFields.TotalItemSize} + size="small" + color="info" + variant="outlined" + /> + + )} + + + )} + + + + + + + + + + + Optional Settings + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippMap.jsx b/src/components/CippComponents/CippMap.jsx index 7f5be9bb4b92..5efed559ef70 100644 --- a/src/components/CippComponents/CippMap.jsx +++ b/src/components/CippComponents/CippMap.jsx @@ -1,11 +1,18 @@ import "leaflet/dist/leaflet.css"; import "react-leaflet-markercluster/styles"; -import "leaflet-defaulticon-compatibility/dist/leaflet-defaulticon-compatibility.webpack.css"; -import "leaflet-defaulticon-compatibility"; import { useEffect, useRef } from "react"; import { MapContainer, Marker, Popup, TileLayer } from "react-leaflet"; +import L from "leaflet"; import MarkerClusterGroup from "react-leaflet-markercluster"; +// Fix leaflet icon paths for Turbopack/Next.js +delete L.Icon.Default.prototype._getIconUrl; +L.Icon.Default.mergeOptions({ + iconRetinaUrl: "https://unpkg.com/leaflet@1.9.4/dist/images/marker-icon-2x.png", + iconUrl: "https://unpkg.com/leaflet@1.9.4/dist/images/marker-icon.png", + shadowUrl: "https://unpkg.com/leaflet@1.9.4/dist/images/marker-shadow.png", +}); + export default function CippMap({ markers = [], zoom = 11, diff --git a/src/components/CippComponents/CippMessageViewer.jsx b/src/components/CippComponents/CippMessageViewer.jsx index fb9d68c338f9..557f63daa7af 100644 --- a/src/components/CippComponents/CippMessageViewer.jsx +++ b/src/components/CippComponents/CippMessageViewer.jsx @@ -43,7 +43,7 @@ import { CippTimeAgo } from "./CippTimeAgo"; import { CippCodeBlock } from "./CippCodeBlock"; import DOMPurify from "dompurify"; import ReactHtmlParser from "react-html-parser"; -import { FileDropzone } from "/src/components/file-dropzone.js"; +import { FileDropzone } from "../file-dropzone.js"; import CippPageCard from "../CippCards/CippPageCard"; import { MoonIcon, @@ -51,7 +51,7 @@ import { ShieldExclamationIcon, SunIcon, } from "@heroicons/react/24/outline"; -import { useSettings } from "/src/hooks/use-settings"; +import { useSettings } from "../../hooks/use-settings"; import CippForefrontHeaderDialog from "./CippForefrontHeaderDialog"; export const CippMessageViewer = ({ emailSource }) => { @@ -69,9 +69,7 @@ export const CippMessageViewer = ({ emailSource }) => { const currentTheme = useSettings()?.currentTheme?.value; const [darkMode, setDarkMode] = useState(currentTheme === "dark"); - const emailStyle = ( - - ); + const emailStyle = ; const theme = createTheme({ palette: { @@ -133,7 +131,7 @@ export const CippMessageViewer = ({ emailSource }) => { fileBytes = new Uint8Array( atob(attachment.data64) .split("") - .map((c) => c.charCodeAt(0)) + .map((c) => c.charCodeAt(0)), ); } @@ -163,7 +161,12 @@ export const CippMessageViewer = ({ emailSource }) => { } else if (contentType.includes("text")) { const textContent = fileBytes; setDialogContent( - + , ); setDialogTitle(fileName); setDialogOpen(true); @@ -188,7 +191,9 @@ export const CippMessageViewer = ({ emailSource }) => { } const showEmailModal = (emailSource, title = "Email Source") => { - setDialogContent(); + setDialogContent( + , + ); setDialogTitle(title); setDialogOpen(true); }; @@ -276,7 +281,7 @@ export const CippMessageViewer = ({ emailSource }) => { return React.cloneElement(element, { children: React.Children.map( element.props.children, - replaceCidWithBase64 + replaceCidWithBase64, ), }); } @@ -333,7 +338,7 @@ export const CippMessageViewer = ({ emailSource }) => { justifyContent: "space-between", }} > - + @@ -354,10 +359,10 @@ export const CippMessageViewer = ({ emailSource }) => { const color = noResults ? "" : allPass - ? "green" - : somePass - ? "orange" - : "red"; + ? "green" + : somePass + ? "orange" + : "red"; const icon = noResults ? ( ) : allPass ? ( @@ -377,8 +382,8 @@ export const CippMessageViewer = ({ emailSource }) => { allPass ? "All authentication checks successful" : somePass - ? "Some authentication checks failed" - : "None of the authentication checks passed" + ? "Some authentication checks failed" + : "None of the authentication checks passed" } - DMARC: ${dmarcPass ? "pass" : "fail"}, DKIM: ${ dkimPass ? "pass" : "fail" }, SPF: ${spfPass ? "pass" : "fail"}, ARC: ${ @@ -417,7 +422,7 @@ export const CippMessageViewer = ({ emailSource }) => { )} - + {emlContent.date && isValidDate(emlContent.date) @@ -436,7 +441,7 @@ export const CippMessageViewer = ({ emailSource }) => { {emlContent.attachments && emlContent.attachments.length > 0 && ( - + {emlContent?.attachments?.map((attachment, index) => ( @@ -484,7 +489,7 @@ export const CippMessageViewer = ({ emailSource }) => { {(emlContent?.text || emlContent?.html) && ( - + {messageHtml ? ( {emailStyle} diff --git a/src/components/CippComponents/CippNotificationForm.jsx b/src/components/CippComponents/CippNotificationForm.jsx index 0eef55732c76..9f499e4ac4c1 100644 --- a/src/components/CippComponents/CippNotificationForm.jsx +++ b/src/components/CippComponents/CippNotificationForm.jsx @@ -5,6 +5,7 @@ import CippFormComponent from "./CippFormComponent"; import { ApiGetCall } from "../../api/ApiCall"; import { useDialog } from "../../hooks/use-dialog"; import { CippApiDialog } from "./CippApiDialog"; +import { useFormState } from "react-hook-form"; export const CippNotificationForm = ({ formControl, @@ -19,6 +20,8 @@ export const CippNotificationForm = ({ queryKey: "ListNotificationConfig", }); + const formState = useFormState({ control: formControl.control }); + // Define log types and severity types const logTypes = [ { label: "Updates Status", value: "Updates" }, @@ -54,7 +57,7 @@ export const CippNotificationForm = ({ .filter(Boolean); const Severity = listNotificationConfig.data?.Severity?.map((sev) => - severityTypes.find((stype) => stype.value === sev) + severityTypes.find((stype) => stype.value === sev), ).filter(Boolean); formControl.reset({ @@ -74,7 +77,7 @@ export const CippNotificationForm = ({ <> - + - + - + - + - + {showTestButton && ( - - @@ -179,6 +188,7 @@ export const CippNotificationForm = ({ text: "This is a test from Notification Settings", }), }} + allowResubmit={true} /> )} diff --git a/src/components/CippComponents/CippOffCanvas.jsx b/src/components/CippComponents/CippOffCanvas.jsx index 6031f6497a27..abbe5aa682a4 100644 --- a/src/components/CippComponents/CippOffCanvas.jsx +++ b/src/components/CippComponents/CippOffCanvas.jsx @@ -1,9 +1,11 @@ -import { Drawer, Box, IconButton } from "@mui/material"; +import { Drawer, Box, IconButton, Typography, Divider } from "@mui/material"; import { CippPropertyListCard } from "../CippCards/CippPropertyListCard"; import { getCippTranslation } from "../../utils/get-cipp-translation"; import { getCippFormatting } from "../../utils/get-cipp-formatting"; import { useMediaQuery, Grid } from "@mui/system"; import CloseIcon from "@mui/icons-material/Close"; +import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp"; +import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; export const CippOffCanvas = (props) => { const { @@ -16,6 +18,13 @@ export const CippOffCanvas = (props) => { isFetching, children, size = "sm", + footer, + onNavigateUp, + onNavigateDown, + canNavigateUp = false, + canNavigateDown = false, + contentPadding = 2, + keepMounted = false, } = props; const mdDown = useMediaQuery((theme) => theme.breakpoints.down("md")); @@ -73,47 +82,107 @@ export const CippOffCanvas = (props) => { sx: { width: drawerWidth }, }} ModalProps={{ - keepMounted: false, + keepMounted: keepMounted, }} anchor={"right"} open={visible} onClose={onClose} > - - - - {/* Force vertical stacking in a column layout */} + {title} + + {(canNavigateUp || canNavigateDown) && ( + <> + + + + + + + + )} + + + + + + - - + + {extendedInfo.length > 0 && ( - + + + )} + + + {/* Render children if provided, otherwise render default content */} + {typeof children === "function" ? children(extendedData) : children} + + - - - {typeof children === "function" ? children(extendedData) : children} - - - + + + {/* Footer section */} + {footer && ( + + {footer} + + )} diff --git a/src/components/CippComponents/CippOffboardingDefaultSettings.jsx b/src/components/CippComponents/CippOffboardingDefaultSettings.jsx new file mode 100644 index 000000000000..7ad68f3b74cb --- /dev/null +++ b/src/components/CippComponents/CippOffboardingDefaultSettings.jsx @@ -0,0 +1,222 @@ +import { CippPropertyListCard } from "../../components/CippCards/CippPropertyListCard"; +import CippFormComponent from "../../components/CippComponents/CippFormComponent"; +import { Typography, Box } from "@mui/material"; + +export const CippOffboardingDefaultSettings = (props) => { + const { formControl, defaultsSource = null, title = "Offboarding Default Settings" } = props; + + const getSourceIndicator = () => { + // Only show the indicator if defaultsSource is explicitly provided (for wizard, not tenant config) + if (!defaultsSource || defaultsSource === null) return null; + + let sourceText = ""; + let color = "text.secondary"; + + switch (defaultsSource) { + case "tenant": + sourceText = "Using Tenant Defaults"; + color = "primary.main"; + break; + case "user": + sourceText = "Using User Defaults"; + color = "info.main"; + break; + case "none": + default: + sourceText = "Using Default Settings"; + color = "text.secondary"; + break; + } + + return ( + + + {sourceText} + + + ); + }; + + return ( + <> + {getSourceIndicator()} + + ), + }, + { + label: "Remove from all groups", + value: ( + + ), + }, + { + label: "Hide from Global Address List", + value: ( + + ), + }, + { + label: "Remove Licenses", + value: ( + + ), + }, + { + label: "Cancel all calendar invites", + value: ( + + ), + }, + { + label: "Revoke all sessions", + value: ( + + ), + }, + { + label: "Remove users mailbox permissions", + value: ( + + ), + }, + { + label: "Remove users calendar permissions", + value: ( + + ), + }, + { + label: "Remove all Rules", + value: ( + + ), + }, + { + label: "Reset Password", + value: ( + + ), + }, + { + label: "Keep copy of forwarded mail in source mailbox", + value: ( + + ), + }, + { + label: "Delete user", + value: ( + + ), + }, + { + label: "Remove all Mobile Devices", + value: ( + + ), + }, + { + label: "Disable Sign in", + value: ( + + ), + }, + { + label: "Remove all MFA Devices", + value: ( + + ), + }, + { + label: "Remove Teams Phone DID", + value: ( + + ), + }, + { + label: "Clear Immutable ID", + value: ( + + ), + }, + ]} + /> + + ); +}; diff --git a/src/components/CippComponents/CippPermissionPreview.jsx b/src/components/CippComponents/CippPermissionPreview.jsx index 9f2afeb69e06..ad1bb530020c 100644 --- a/src/components/CippComponents/CippPermissionPreview.jsx +++ b/src/components/CippComponents/CippPermissionPreview.jsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useCallback } from "react"; +import { useState, useEffect, useCallback } from "react"; import { Alert, Skeleton, @@ -9,15 +9,18 @@ import { List, ListItem, ListItemText, - Divider, Tab, Tabs, Chip, SvgIcon, + Accordion, + AccordionSummary, + AccordionDetails, } from "@mui/material"; -import { ApiGetCall } from "/src/api/ApiCall"; import { ShieldCheckIcon } from "@heroicons/react/24/outline"; +import { ExpandMore } from "@mui/icons-material"; import { CippCardTabPanel } from "./CippCardTabPanel"; +import { ApiGetCall } from "../../api/ApiCall"; const CippPermissionPreview = ({ permissions, @@ -25,6 +28,8 @@ const CippPermissionPreview = ({ isLoading = false, maxHeight = "100%", showAppIds = true, + galleryTemplate = null, + applicationManifest = null, }) => { const [selectedPermissionTab, setSelectedPermissionTab] = useState(0); const [servicePrincipalDetails, setServicePrincipalDetails] = useState({}); @@ -117,7 +122,6 @@ const CippPermissionPreview = ({ // Better checks for permissions object to prevent rendering errors if (isLoading || loadingDetails) { - return ( <> {title} @@ -126,7 +130,7 @@ const CippPermissionPreview = ({ ); } - if (!permissions) { + if (!permissions && !galleryTemplate && !applicationManifest) { return ( Select a template with permissions to see what will be consented. @@ -134,6 +138,165 @@ const CippPermissionPreview = ({ ); } + // If we have gallery template data, show that instead of permissions + if (galleryTemplate) { + return ( + + {title} + + + {/* App Logo and Name */} + + {galleryTemplate.addedFields?.logoUrl && ( + + {galleryTemplate.addedFields?.displayName { + e.target.style.display = "none"; + }} + /> + + )} + + + {galleryTemplate.addedFields?.displayName || galleryTemplate.label} + + {galleryTemplate.addedFields?.publisher && ( + + by {galleryTemplate.addedFields.publisher} + + )} + + + + {/* Description */} + {galleryTemplate.addedFields?.description && ( + + + {galleryTemplate.addedFields.description} + + + )} + + {/* Categories */} + {galleryTemplate.addedFields?.categories && + galleryTemplate.addedFields.categories.length > 0 && ( + + + Categories: + + + {galleryTemplate.addedFields.categories.map((category, idx) => ( + + ))} + + + )} + + {/* SSO Modes */} + {galleryTemplate.addedFields?.supportedSingleSignOnModes && + galleryTemplate.addedFields.supportedSingleSignOnModes.length > 0 && ( + + + Supported SSO Modes: + + + {galleryTemplate.addedFields.supportedSingleSignOnModes.map((mode, idx) => ( + + ))} + + + )} + + {/* Provisioning Types */} + {galleryTemplate.addedFields?.supportedProvisioningTypes && + galleryTemplate.addedFields.supportedProvisioningTypes.length > 0 && ( + + + Supported Provisioning: + + + {galleryTemplate.addedFields.supportedProvisioningTypes.map((type, idx) => ( + + ))} + + + )} + + {/* Home Page URL */} + {galleryTemplate.addedFields?.homePageUrl && ( + + + Home Page: + + + {galleryTemplate.addedFields.homePageUrl} + + + )} + + {/* Template ID */} + + + Template ID: {galleryTemplate.value} + + + + {/* Auto-consent note */} + + Gallery templates will automatically consent to the required permissions defined in + the template's app registration. No manual permission configuration needed. + + + + + ); + } + + // If we have application manifest data, show that instead of permissions + if (applicationManifest) { + return ( + + ); + } + // Ensure permissions is an object and has entries if ( typeof permissions !== "object" || @@ -378,4 +541,293 @@ const CippPermissionPreview = ({ ); }; +// Component to handle individual service principal resource details +const ServicePrincipalResourceDetails = ({ + resource, + servicePrincipalId, + expandedResource, + handleAccordionChange, +}) => { + // Fetch individual service principal details using ApiGetCall + const { + data: servicePrincipalData, + isSuccess: spDetailSuccess, + isFetching: spDetailFetching, + isLoading: spDetailLoading, + } = ApiGetCall({ + url: "/api/ExecServicePrincipals", + data: { Id: servicePrincipalId }, + queryKey: `execServicePrincipal-details-${servicePrincipalId}`, + waiting: !!servicePrincipalId, + }); + + const spDetails = servicePrincipalData?.Results; + + // Helper to get permission details + const getPermissionDetails = (permissionId, type) => { + if (!spDetails) return { name: permissionId, description: "Loading..." }; + + if (type === "Role") { + const foundRole = spDetails.appRoles?.find((role) => role.id === permissionId); + return { + name: foundRole?.value || permissionId, + description: foundRole?.description || "No description available", + }; + } else { + const foundScope = spDetails.publishedPermissionScopes?.find( + (scope) => scope.id === permissionId + ); + return { + name: foundScope?.value || permissionId, + description: + foundScope?.userConsentDescription || + foundScope?.description || + "No description available", + }; + } + }; + + const resourceName = spDetails?.displayName || resource.resourceAppId; + const appPermissions = resource.resourceAccess?.filter((access) => access.type === "Role") || []; + const delegatedPermissions = + resource.resourceAccess?.filter((access) => access.type === "Scope") || []; + + return ( + + }> + + + {spDetailLoading || spDetailFetching ? "Loading..." : resourceName} + + + + + + } + title="Application/Delegated Permissions" + /> + + + + + {(spDetailLoading || spDetailFetching) && ( + + )} + + {spDetailSuccess && spDetails && ( + <> + {appPermissions.length > 0 && ( + + + Application Permissions ({appPermissions.length}) + + + {appPermissions.map((permission, idx) => { + const permDetails = getPermissionDetails(permission.id, "Role"); + return ( + + + + ); + })} + + + )} + + {delegatedPermissions.length > 0 && ( + + + Delegated Permissions ({delegatedPermissions.length}) + + + {delegatedPermissions.map((permission, idx) => { + const permDetails = getPermissionDetails(permission.id, "Scope"); + return ( + + + + ); + })} + + + )} + + )} + + + ); +}; + +// Component to handle Application Manifest preview with detailed permission expansion +const ApplicationManifestPreview = ({ applicationManifest, title, maxHeight }) => { + const [expandedResource, setExpandedResource] = useState(false); + + // Get unique resource IDs from required resource access + const resourceIds = + applicationManifest.requiredResourceAccess?.map((resource) => resource.resourceAppId) || []; + + // Fetch the service principal list to get object IDs + const { + data: servicePrincipals = [], + isSuccess: spSuccess, + isFetching: spFetching, + isLoading: spLoading, + } = ApiGetCall({ + url: "/api/ExecServicePrincipals", + data: { Select: "appId,displayName,id" }, + queryKey: "execServicePrincipalList-cipp-permission-preview", + waiting: true, + }); + + // Helper to get service principal ID by appId + const getServicePrincipalId = (appId) => { + if (spSuccess && servicePrincipals?.Results) { + const sp = servicePrincipals.Results.find((sp) => sp.appId === appId); + return sp?.id || null; + } + return null; + }; + + const handleAccordionChange = (panel) => (event, newExpanded) => { + setExpandedResource(newExpanded ? panel : false); + }; + + return ( + + {title} + + + {/* App Basic Info */} + + + {applicationManifest.displayName || "Custom Application"} + + {applicationManifest.description && ( + + {applicationManifest.description} + + )} + + + {/* Application Properties */} + + + Application Properties: + + + {applicationManifest.signInAudience && ( + + + + )} + {applicationManifest.web?.redirectUris && + applicationManifest.web.redirectUris.length > 0 && ( + + + + )} + + + + {/* Required Resource Access with detailed permissions */} + {applicationManifest.requiredResourceAccess && + applicationManifest.requiredResourceAccess.length > 0 && ( + + + Required Permissions: + + {(spLoading || spFetching) && ( + + )} + {spSuccess && + servicePrincipals?.Results && + applicationManifest.requiredResourceAccess.map((resource, index) => { + const servicePrincipalId = getServicePrincipalId(resource.resourceAppId); + + return ( + + ); + })} + + )} + + {/* Custom application note */} + {/* Validation warning for signInAudience */} + {applicationManifest.signInAudience && + applicationManifest.signInAudience !== "AzureADMyOrg" && ( + + + Invalid signInAudience: "{applicationManifest.signInAudience}" + + + For security reasons, Application Manifests must have signInAudience set to + "AzureADMyOrg" or not defined in the JSON. This template cannot be deployed with + the current signInAudience value. + + + )} + + + This application will be created from a custom manifest. All permissions and + configuration are defined within the manifest JSON. + + + + + ); +}; + export default CippPermissionPreview; diff --git a/src/components/CippComponents/CippPermissionSetDrawer.jsx b/src/components/CippComponents/CippPermissionSetDrawer.jsx new file mode 100644 index 000000000000..cd432409a144 --- /dev/null +++ b/src/components/CippComponents/CippPermissionSetDrawer.jsx @@ -0,0 +1,206 @@ +import React, { useState, useEffect, useMemo } from "react"; +import { Button, Typography, Alert, Box, Stack } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm } from "react-hook-form"; +import { Edit, Add } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippApiResults } from "./CippApiResults"; +import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; +import CippAppPermissionBuilder from "./CippAppPermissionBuilder"; + +export const CippPermissionSetDrawer = ({ + buttonText = "New Permission Set", + isEditMode = false, + templateId = null, + requiredPermissions = [], + PermissionButton = Button, + onSuccess = () => {}, + drawerVisible: controlledDrawerVisible, + setDrawerVisible: controlledSetDrawerVisible, + rowAction = false, +}) => { + const [internalDrawerVisible, internalSetDrawerVisible] = useState(false); + const drawerVisible = + controlledDrawerVisible !== undefined ? controlledDrawerVisible : internalDrawerVisible; + const setDrawerVisible = + controlledSetDrawerVisible !== undefined + ? controlledSetDrawerVisible + : internalSetDrawerVisible; + + const [initialPermissions, setInitialPermissions] = useState(null); + const [refetchKey, setRefetchKey] = useState(0); + + // Fetch existing template data in edit mode + const templateInfo = ApiGetCall({ + url: templateId ? `/api/ExecAppPermissionTemplate?TemplateId=${templateId}` : null, + queryKey: templateId ? ["execAppPermissionTemplate", templateId, refetchKey] : null, + waiting: !!drawerVisible && !!isEditMode && !!templateId, + }); + + // Default form values + const defaultFormValues = useMemo( + () => ({ + templateName: "", + }), + [] + ); + + const formControl = useForm({ + mode: "onChange", + defaultValues: defaultFormValues, + }); + + // API call for submit + const updatePermissions = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: ["ExecAppPermissionTemplate", "execAppPermissionTemplate"], + }); + + // Process template data for editing + useEffect(() => { + if (isEditMode && templateInfo.isSuccess && templateInfo.data) { + const template = Array.isArray(templateInfo.data) ? templateInfo.data[0] : templateInfo.data; + + if (template) { + setInitialPermissions({ + TemplateId: template.TemplateId, + Permissions: template.Permissions, + TemplateName: template.TemplateName, + }); + formControl.setValue("templateName", template.TemplateName, { + shouldValidate: true, + shouldDirty: false, + }); + } + } else if (!isEditMode && drawerVisible) { + // Initialize with empty structure for new templates + setInitialPermissions({ + Permissions: {}, + TemplateName: "New Permission Set", + }); + formControl.setValue("templateName", "New Permission Set"); + } + }, [templateInfo.isSuccess, templateInfo.data, isEditMode, drawerVisible]); + + const handleUpdatePermissions = (data) => { + let payload = { + ...data, + }; + + if (isEditMode && templateId) { + // For editing, include the template ID + payload.TemplateId = templateId; + } + + // Use the current value from the text field + payload.TemplateName = formControl.getValues("templateName"); + + updatePermissions.mutate( + { + url: "/api/ExecAppPermissionTemplate?Action=Save", + data: payload, + queryKey: "execAppPermissionTemplate", + }, + { + onSuccess: (data) => { + if (onSuccess) { + onSuccess(data); + } + // Refresh the data + setRefetchKey((prev) => prev + 1); + + // Close the drawer after successful save + setDrawerVisible(false); + + // Reset form for next use + if (!isEditMode) { + formControl.reset(defaultFormValues); + setInitialPermissions(null); + } + }, + } + ); + }; + + const handleDrawerClose = () => { + setDrawerVisible(false); + if (!isEditMode) { + formControl.reset(defaultFormValues); + setInitialPermissions(null); + } + }; + + return ( + <> + {!rowAction && ( + setDrawerVisible(true)} + startIcon={isEditMode ? : } + requiredPermissions={requiredPermissions} + > + {buttonText} + + )} + + + + + {isEditMode + ? "Modify the permissions in this permission set. Any changes will affect all applications using this permission set." + : "Create a new permission set to define a collection of application permissions."} + + + + Permission sets allow you to define collections of permissions that can be applied to + applications consistently. + + + + + {templateInfo.isFetching && isEditMode && ( + Loading permission set data... + )} + + {initialPermissions && !templateInfo.isFetching && ( + <> + + Choose the permissions you want to assign to this permission set. Microsoft Graph + is the default Service Principal added and you can choose to add additional + Service Principals as needed. Note that some Service Principals do not have any + published permissions to choose from. + + + + + )} + + + + + + + ); +}; + +export default CippPermissionSetDrawer; diff --git a/src/components/CippComponents/CippPolicyDeployDrawer.jsx b/src/components/CippComponents/CippPolicyDeployDrawer.jsx new file mode 100644 index 000000000000..669ef80075fb --- /dev/null +++ b/src/components/CippComponents/CippPolicyDeployDrawer.jsx @@ -0,0 +1,270 @@ +import { useEffect, useState } from "react"; +import { Button, Stack, Box } from "@mui/material"; +import { RocketLaunch } from "@mui/icons-material"; +import { useForm, useWatch, useFormState } from "react-hook-form"; +import { CippOffCanvas } from "./CippOffCanvas"; +import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; +import CippFormComponent from "./CippFormComponent"; +import CippJsonView from "../CippFormPages/CippJSONView"; +import { Grid } from "@mui/system"; +import { CippFormCondition } from "./CippFormCondition"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; +import { CippFormTenantSelector } from "./CippFormTenantSelector"; + +const assignmentFilterTypeOptions = [ + { label: "Include - Apply policy to devices matching filter", value: "include" }, + { label: "Exclude - Apply policy to devices NOT matching filter", value: "exclude" }, +]; + +export const CippPolicyDeployDrawer = ({ + buttonText = "Deploy Policy", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const formControl = useForm({ + mode: "onChange", + }); + const { isValid } = useFormState({ control: formControl.control }); + const tenantFilter = useSettings()?.tenantFilter; + const selectedTenants = useWatch({ control: formControl.control, name: "tenantFilter" }) || []; + const CATemplates = ApiGetCall({ url: "/api/ListIntuneTemplates", queryKey: "IntuneTemplates" }); + const [JSONData, setJSONData] = useState(); + const watcher = useWatch({ control: formControl.control, name: "TemplateList" }); + const jsonWatch = useWatch({ control: formControl.control, name: "RAWJson" }); + useEffect(() => { + if (CATemplates.isSuccess && watcher?.value) { + const template = CATemplates.data?.find((template) => template.GUID === watcher.value); + if (template) { + const jsonTemplate = template.RAWJson ? JSON.parse(template.RAWJson) : null; + setJSONData(jsonTemplate); + formControl.setValue("RAWJson", template.RAWJson); + formControl.setValue("displayName", template.Displayname); + formControl.setValue("description", template.Description); + formControl.setValue("TemplateType", template.Type); + } + } + }, [watcher]); + const deployPolicy = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: [ + "IntuneTemplates", + `Configuration Policies - ${tenantFilter}`, + `Compliance Policies - ${tenantFilter}`, + `Protection Policies - ${tenantFilter}`, + ], + }); + + const handleSubmit = () => { + formControl.trigger(); + // Check if the form is valid before proceeding + if (!isValid) { + return; + } + + const formData = formControl.getValues(); + const assignmentFilterName = formData?.assignmentFilter?.value || null; + const assignmentFilterType = assignmentFilterName + ? formData?.assignmentFilterType || "include" + : null; + console.log("Submitting form data:", formData); + deployPolicy.mutate({ + url: "/api/AddPolicy", + relatedQueryKeys: [ + "IntuneTemplates", + "Configuration Policies", + "Compliance Policies", + "Protection Policies", + ], + data: { + ...formData, + AssignmentFilterName: assignmentFilterName, + AssignmentFilterType: assignmentFilterType, + }, + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset(); + }; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + + + + } + > + + + ({ + label: template.Displayname, + value: template.GUID, + })) + : [] + } + /> + + + + + + + + + + + + + + + filter.displayName, + valueField: "displayName", + }} + /> + + + + + + + {(() => { + const rawJson = jsonWatch ? jsonWatch : ""; + const placeholderMatches = [...rawJson.matchAll(/%(\w+)%/g)].map((m) => m[1]); + const uniquePlaceholders = Array.from(new Set(placeholderMatches)); + if (uniquePlaceholders.length === 0 || selectedTenants.length === 0) { + return null; + } + return uniquePlaceholders.map((placeholder) => ( + + {selectedTenants.map((tenant, idx) => ( + + ))} + + )); + })()} + + + + + + ); +}; diff --git a/src/components/CippComponents/CippPolicyImportDrawer.jsx b/src/components/CippComponents/CippPolicyImportDrawer.jsx new file mode 100644 index 000000000000..a069c9585f92 --- /dev/null +++ b/src/components/CippComponents/CippPolicyImportDrawer.jsx @@ -0,0 +1,534 @@ +import { useState } from "react"; +import { + Button, + Stack, + TextField, + Typography, + Box, + Dialog, + DialogTitle, + DialogContent, + DialogActions, + Skeleton, +} from "@mui/material"; +import { CloudUpload, Search, Visibility } from "@mui/icons-material"; +import { useForm, useWatch } from "react-hook-form"; +import { CippOffCanvas } from "./CippOffCanvas"; +import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; +import CippFormComponent from "./CippFormComponent"; +import CippJsonView from "../CippFormPages/CippJSONView"; +import { CippApiResults } from "./CippApiResults"; +import { CippFormTenantSelector } from "./CippFormTenantSelector"; +import { CippFolderNavigation } from "./CippFolderNavigation"; + +export const CippPolicyImportDrawer = ({ + buttonText = "Browse Catalog", + requiredPermissions = [], + PermissionButton = Button, + mode = "Intune", +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const [searchQuery, setSearchQuery] = useState(""); + const [viewDialogOpen, setViewDialogOpen] = useState(false); + const [viewingPolicy, setViewingPolicy] = useState(null); + const [selectedFile, setSelectedFile] = useState(null); + const formControl = useForm(); + + const selectedSource = useWatch({ control: formControl.control, name: "policySource" }); + const tenantFilter = useWatch({ control: formControl.control, name: "tenantFilter" }); + + // API calls + const communityRepos = ApiGetCall({ + url: "/api/ListCommunityRepos", + queryKey: "CommunityRepos-List", + }); + + const tenantPolicies = ApiGetCall({ + url: + mode === "ConditionalAccess" + ? `/api/ListCATemplates?TenantFilter=${tenantFilter?.value || ""}` + : mode === "Standards" + ? `/api/listStandardTemplates?TenantFilter=${tenantFilter?.value || ""}` + : `/api/ListIntunePolicy?type=ESP&TenantFilter=${tenantFilter?.value || ""}`, + queryKey: `TenantPolicies-${mode}-${tenantFilter?.value || "none"}`, + // Enable fetching only after a tenant is selected when source is tenant + waiting: selectedSource?.value === "tenant" && !!tenantFilter?.value, + }); + + const repoPolicies = ApiGetCall({ + url: `/api/ExecGitHubAction?Action=GetFileTree&FullName=${ + selectedSource?.value || "" + }&Branch=main`, + queryKey: `RepoPolicies-${mode}-${selectedSource?.value || "none"}`, + waiting: !!(selectedSource?.value && selectedSource?.value !== "tenant"), + }); + + const repositoryFiles = ApiGetCall({ + url: `/api/ExecGitHubAction?Action=GetFileTree&FullName=${ + selectedSource?.value || "" + }&Branch=main`, + queryKey: `RepositoryFiles-${selectedSource?.value || "none"}`, + waiting: !!(selectedSource?.value && selectedSource?.value !== "tenant"), + }); + + const importPolicy = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: + mode === "ConditionalAccess" + ? ["ListCATemplates-table"] + : mode === "Standards" + ? ["listStandardTemplates"] + : ["ListIntuneTemplates-table", "ListIntuneTemplates-autcomplete"], + }); + + const viewPolicyQuery = ApiPostCall({ + onResult: (resp) => { + let content = resp?.Results?.content?.trim() || "{}"; + content = content.replace( + /^[\u0000-\u001F\u007F-\u009F]+|[\u0000-\u001F\u007F-\u009F]+$/g, + "" + ); + try { + setViewingPolicy(JSON.parse(content)); + } catch (e) { + console.error("Invalid JSON content:", e); + setViewingPolicy({}); + } + }, + }); + + const handleImportPolicy = (policy) => { + if (!policy) return; + + try { + if (selectedSource?.value === "tenant") { + // For tenant policies, use appropriate API based on mode + if (mode === "ConditionalAccess") { + // For Conditional Access, convert RawJSON to object and send the contents + let policyData = policy; + + // If the policy has RawJSON, parse it and use that as the data + if (policy.RawJSON) { + try { + policyData = JSON.parse(policy.RawJSON); + } catch (e) { + console.error("Failed to parse RawJSON:", e); + policyData = policy; + } + } + + // Send the object contents directly with tenantFilter + const caTemplateData = { + tenantFilter: tenantFilter?.value, + ...policyData, + }; + + importPolicy.mutate({ + url: "/api/AddCATemplate", + data: caTemplateData, + }); + } else if (mode === "Standards") { + // For Standards templates, clone the template + importPolicy.mutate({ + url: "/api/AddStandardTemplate", + data: { + tenantFilter: tenantFilter?.value, + templateId: policy.GUID, + clone: true, + }, + }); + } else { + // For Intune policies, use existing format + importPolicy.mutate({ + url: "/api/AddIntuneTemplate", + data: { + tenantFilter: tenantFilter?.value, + ID: policy.id, + URLName: policy.URLName || "GroupPolicyConfigurations", + }, + }); + } + } else { + // For community repository files, use ExecCommunityRepo + importPolicy.mutate({ + url: "/api/ExecCommunityRepo", + data: { + tenantFilter: tenantFilter?.value || "AllTenants", + Action: "ImportTemplate", + FullName: selectedSource?.value, + Path: policy.path, + Branch: "main", + Type: mode, + }, + }); + } + } catch (error) { + console.error("Error importing policy:", error); + } + }; + + const handleViewPolicy = (policy) => { + if (!policy) return; + + try { + if (selectedSource?.value !== "tenant" && selectedSource?.value) { + // For community repository files, fetch the file content + viewPolicyQuery.mutate({ + url: "/api/ExecGitHubAction", + data: { + Action: "GetFileContents", + FullName: selectedSource.value, + Path: policy.path || "", + Branch: "main", + }, + }); + } else { + // For tenant policies, use the policy object directly + setViewingPolicy(policy || {}); + } + setViewDialogOpen(true); + } catch (error) { + console.error("Error viewing policy:", error); + } + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + setSearchQuery(""); + setViewingPolicy(null); + setSelectedFile(null); + // Don't reset form at all to avoid any potential issues + }; + + const handleFileSelect = (file) => { + setSelectedFile(file); + }; + + const handleCloseViewDialog = () => { + setViewDialogOpen(false); + setViewingPolicy(null); + }; + + const formatPolicyName = (policy) => { + // Safety check + if (!policy) return "Unnamed Policy"; + + // For tenant policies, use displayName or name + if (policy.displayName || policy.name) { + return policy.displayName || policy.name; + } + + // For repository files, format the path nicely + if (policy.path) { + try { + // Remove file extension + let name = policy.path.replace(/\.(json|yaml|yml)$/i, ""); + + // Remove directory path, keep only filename + name = name.split("/").pop(); + + // Replace underscores with spaces and clean up + name = name.replace(/_/g, " "); + + // Remove common prefixes like "CIPP_" + name = name.replace(/^CIPP\s*/i, ""); + + // Capitalize first letter of each word + name = name.replace(/\b\w/g, (l) => l.toUpperCase()); + + return name || "Unnamed Policy"; + } catch (error) { + console.warn("Error formatting policy name:", error); + return policy.path || "Unnamed Policy"; + } + } + + return "Unnamed Policy"; + }; + + // Get policies based on source + let availablePolicies = []; + if (selectedSource?.value === "tenant" && tenantPolicies.isSuccess && tenantFilter?.value) { + const tpData = tenantPolicies.data; + if (Array.isArray(tpData)) { + availablePolicies = tpData; + } else if (Array.isArray(tpData?.Results)) { + availablePolicies = tpData.Results; + } else if (tpData?.Results && typeof tpData.Results === "object") { + // Handle edge case where Results might be an object of keyed items + availablePolicies = Object.values(tpData.Results).filter(Boolean); + } else { + availablePolicies = []; + } + } else if ( + selectedSource?.value && + selectedSource?.value !== "tenant" && + repoPolicies.isSuccess + ) { + const repoData = repoPolicies.data?.Results || repoPolicies.data || []; + availablePolicies = Array.isArray(repoData) ? repoData : []; + } + + const filteredPolicies = (() => { + if (!Array.isArray(availablePolicies)) return []; + + if (!searchQuery?.trim()) return availablePolicies; + + return availablePolicies.filter((policy) => { + if (!policy) return false; + const searchLower = searchQuery.toLowerCase(); + return ( + policy.displayName?.toLowerCase().includes(searchLower) || + policy.description?.toLowerCase().includes(searchLower) || + policy.name?.toLowerCase().includes(searchLower) || + policy.path?.toLowerCase().includes(searchLower) + ); + }); + })(); + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + + + } + > + + + ({ + label: `${repo?.Name || "Unknown"} (${repo?.URL || "Unknown"})`, + value: repo?.FullName || "", + })).filter((option) => option.value) + : []), + { label: "Get template from existing tenant", value: "tenant" }, + ]} + /> + + {selectedSource?.value === "tenant" && ( + + + + )} + + + {/* Content based on source */} + + {selectedSource?.value === "tenant" ? ( + // Tenant policies - show traditional list + <> + setSearchQuery(e.target.value)} + InputProps={{ + startAdornment: , + }} + placeholder="Search by policy name or description..." + /> + + Available Policies ({filteredPolicies.length}) + + {tenantPolicies.isLoading ? ( + <> + {[...Array(3)].map((_, index) => ( + + + + + + + + + ))} + + ) : Array.isArray(filteredPolicies) && filteredPolicies.length > 0 ? ( + filteredPolicies.map((policy, index) => { + if (!policy) return null; + return ( + + + + + + + {formatPolicyName(policy)} + + {policy?.description && ( + + {policy.description} + + )} + + + + ); + }) + ) : ( + + No policies available. + + )} + + + + ) : selectedSource?.value ? ( + // Repository source - show iOS-style folder navigation + <> + + Browse Repository Files + + {repositoryFiles.isLoading ? ( + + {/* Navigation skeleton */} + + + + + {/* File/folder list skeleton */} + + {[...Array(5)].map((_, index) => ( + + + + + + + + + ))} + + + ) : repositoryFiles.isSuccess ? ( + + + + ) : ( + + Unable to load repository files. + + )} + + + + + + ) : ( + + Please select a policy source to continue. + + )} + + + + + + + + + + Policy Details + + {viewPolicyQuery.isPending ? ( + + + + ) : ( + + )} + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippRestoreBackupDrawer.jsx b/src/components/CippComponents/CippRestoreBackupDrawer.jsx new file mode 100644 index 000000000000..b8782aa6d401 --- /dev/null +++ b/src/components/CippComponents/CippRestoreBackupDrawer.jsx @@ -0,0 +1,384 @@ +import React, { useState, useEffect } from "react"; +import { Button, Box, Typography, Alert, AlertTitle, Divider, Chip, Stack } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm, useFormState } from "react-hook-form"; +import { SettingsBackupRestore } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippFormCondition } from "./CippFormCondition"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiPostCall } from "../../api/ApiCall"; + +export const CippRestoreBackupDrawer = ({ + buttonText = "Restore Backup", + backupName = null, + backupData = null, + requiredPermissions = [], + PermissionButton = Button, + ...props +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const userSettingsDefaults = useSettings(); + const tenantFilter = userSettingsDefaults.currentTenant || ""; + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + tenantFilter: tenantFilter, + users: true, + groups: true, + ca: true, + intuneconfig: true, + intunecompliance: true, + intuneprotection: true, + antispam: true, + antiphishing: true, + CippWebhookAlerts: true, + CippScriptedAlerts: true, + CippCustomVariables: true, + CippStandards: true, + overwrite: false, + webhook: false, + email: false, + psa: false, + backup: backupName ? { value: backupName, label: backupName } : null, + }, + }); + + const restoreBackup = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: [`BackupTasks-${tenantFilter}`], + }); + + const { isValid, isDirty } = useFormState({ control: formControl.control }); + + useEffect(() => { + if (restoreBackup.isSuccess) { + formControl.reset({ + tenantFilter: tenantFilter, + users: true, + groups: true, + ca: true, + intuneconfig: true, + intunecompliance: true, + intuneprotection: true, + antispam: true, + antiphishing: true, + CippWebhookAlerts: true, + CippScriptedAlerts: true, + CippCustomVariables: true, + CippStandards: true, + overwrite: false, + webhook: false, + email: false, + psa: false, + backup: backupName ? { value: backupName, label: backupName } : null, + }); + } + }, [restoreBackup.isSuccess]); + + const handleSubmit = () => { + formControl.trigger(); + if (!isValid) { + return; + } + const values = formControl.getValues(); + const startDate = new Date(); + const unixTime = Math.floor(startDate.getTime() / 1000) - 45; + + // If in AllTenants context, use the tenant from the backup data + let tenantFilterValue = tenantFilter; + if (tenantFilter === "AllTenants" && backupData?.tenantSource) { + tenantFilterValue = backupData.tenantSource; + } + + const shippedValues = { + TenantFilter: tenantFilterValue, + Name: `CIPP Restore ${tenantFilterValue}`, + Command: { value: `New-CIPPRestore` }, + Parameters: { + Type: "Scheduled", + RestoreValues: { + backup: values.backup?.value || values.backup, + users: values.users, + groups: values.groups, + ca: values.ca, + intuneconfig: values.intuneconfig, + intunecompliance: values.intunecompliance, + intuneprotection: values.intuneprotection, + antispam: values.antispam, + antiphishing: values.antiphishing, + CippWebhookAlerts: values.CippWebhookAlerts, + CippScriptedAlerts: values.CippScriptedAlerts, + CippCustomVariables: values.CippCustomVariables, + overwrite: values.overwrite, + }, + }, + ScheduledTime: unixTime, + PostExecution: { + Webhook: values.webhook, + Email: values.email, + PSA: values.psa, + }, + DisallowDuplicateName: true, + }; + + restoreBackup.mutate({ + url: "/api/AddScheduledItem", + data: shippedValues, + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset({ + tenantFilter: tenantFilter, + users: true, + groups: true, + ca: true, + intuneconfig: true, + intunecompliance: true, + intuneprotection: true, + antispam: true, + antiphishing: true, + CippWebhookAlerts: true, + CippScriptedAlerts: true, + CippCustomVariables: true, + CippStandards: true, + overwrite: false, + webhook: false, + email: false, + psa: false, + backup: backupName ? { value: backupName, label: backupName } : null, + }); + }; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + {...props} + > + {buttonText} + + + + + + } + > + + + Use this form to restore a backup for a tenant. Please select the backup and restore + options. + + + + {/* Backup Selector */} + + { + const match = option.BackupName.match(/.*_(\d{4}-\d{2}-\d{2})-(\d{2})(\d{2})/); + const dateTime = match + ? `${match[1]} @ ${match[2]}:${match[3]}` + : option.BackupName; + const tenantDisplay = + tenantFilter === "AllTenants" ? ` (${option.TenantFilter})` : ""; + return `${dateTime}${tenantDisplay}`; + }, + valueField: "BackupName", + data: { + Type: "Scheduled", + NameOnly: true, + tenantFilter: tenantFilter, + }, + }} + formControl={formControl} + required={true} + validators={{ + validate: (value) => !!value || "Please select a backup", + }} + /> + + + {/* Restore Settings */} + + Restore Settings + + + {/* Identity */} + + Identity + + + + + {/* Conditional Access */} + + Conditional Access + + + + {/* Intune */} + + Intune + + + + + + {/* Email Security */} + + Email Security + + + + + {/* CIPP */} + + CIPP + + + + + + {/* Overwrite Existing Entries */} + + + + + + Warning: Overwriting existing entries will remove the current + settings and replace them with the backup settings. If you have selected to + restore users, all properties will be overwritten with the backup settings. To + prevent and skip already existing entries, deselect the setting from the list + above, or disable overwrite. + + + + + + {/* Send Results To */} + + Send Restore results to: + + + + + + + + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippRestoreWizard.jsx b/src/components/CippComponents/CippRestoreWizard.jsx new file mode 100644 index 000000000000..e2218d4d7e88 --- /dev/null +++ b/src/components/CippComponents/CippRestoreWizard.jsx @@ -0,0 +1,557 @@ +import { + Alert, + AlertTitle, + Box, + Button, + Checkbox, + Chip, + CircularProgress, + Collapse, + Dialog, + DialogActions, + DialogContent, + DialogTitle, + Divider, + FormControlLabel, + FormGroup, + IconButton, + Stack, + Step, + StepLabel, + Stepper, + Tooltip, + Typography, + useMediaQuery, +} from "@mui/material"; +import { + CheckCircle, + DeselectOutlined, + DoneAll, + Error as ErrorIcon, + ExpandLess, + ExpandMore, + NavigateBefore, + NavigateNext, + SettingsBackupRestore, + UploadFile, + Warning, +} from "@mui/icons-material"; +import { ApiPostCall } from "../../api/ApiCall"; +import { CippApiResults } from "./CippApiResults"; +import { useState, useEffect, useMemo } from "react"; + +const TABLE_LABELS = { + AppPermissions: "App Permissions", + CommunityRepos: "Community Repositories", + Config: "CIPP Configuration", + CustomData: "Custom Data", + CustomRoles: "Custom Roles", + Domains: "Domains", + ExcludedLicenses: "Excluded Licenses", + GDAPRoleTemplates: "GDAP Role Templates", + GDAPRoles: "GDAP Roles", + GraphPresets: "Graph Explorer Presets", + ScheduledTasks: "Scheduled Tasks", + SchedulerConfig: "Scheduler Configuration", + TenantGroupMembers: "Tenant Group Members", + TenantGroups: "Tenant Groups", + WebhookRules: "Webhook Rules", + "templates:AppApprovalTemplate": "App Approval Templates", + "templates:AssignmentFilterTemplate": "Assignment Filter Templates", + "templates:BPATemplate": "BPA Templates", + "templates:CATemplate": "Conditional Access Templates", + "templates:ConnectionfilterTemplate": "Connection Filter Templates", + "templates:ContactTemplate": "Contact Templates", + "templates:ExConnectorTemplate": "Exchange Connector Templates", + "templates:GroupTemplate": "Group Templates", + "templates:IntuneReusableSettingTemplate": "Intune Reusable Setting Templates", + "templates:IntuneTemplate": "Intune Templates", + "templates:JITAdminTemplate": "JIT Admin Templates", + "templates:ReportingTemplate": "Reporting Templates", + "templates:RoleTemplate": "Role Templates", + "templates:SafeLinksTemplate": "Safe Links Templates", + "templates:SpamfilterTemplate": "Spam Filter Templates", + "templates:StandardsTemplateV2": "Standards Templates", + "templates:Templates": "App Permission Templates", + "templates:TransportTemplate": "Transport Rule Templates", + "templates:UserDefaultTemplate": "User Default Templates", + "templates:settings": "Template Settings", +}; + +const getItemCategoryKey = (item) => { + if (item.table === "templates") { + return `templates:${item.PartitionKey ?? "unknown"}`; + } + return item.table; +}; + +const IGNORED_CATEGORY_KEYS = new Set(); + +// Returns the best human-readable display name for a backup item +const getItemDisplayName = (item) => { + // For templates, the name is inside the JSON payload + if (item.table === "templates" && item.JSON) { + try { + const inner = JSON.parse(item.JSON); + const name = + inner.displayName || + inner.DisplayName || + inner.Displayname || + inner.templateName || + inner.name || + inner.Name; + if (name && typeof name === "string" && name.trim()) return name.trim(); + } catch { + // fall through + } + } + // Try common named properties across all tables + const candidates = [ + item.displayName, + item.name, + item.Name, + item.Product_Display_Name, + item.GroupName, + item.RoleName, + item.customerId, + ]; + for (const c of candidates) { + if (c && typeof c === "string" && c.trim()) return c.trim(); + } + // Fall back to cleaned RowKey + const rowKey = item.RowKey ?? ""; + if (item.table === "templates" && item.PartitionKey) { + const stripped = rowKey + .replace(new RegExp(`\\.${item.PartitionKey}\\.json$`), "") + .replace(/\.json$/, ""); + return stripped || rowKey; + } + return rowKey.replace(/\.json$/, "") || rowKey; +}; + +const WIZARD_STEPS = ["Validation", "Select Categories", "Confirm & Restore"]; + +export const CippRestoreWizard = ({ + open, + onClose, + validationResult, + backupFile, + backupData, + backupName, + isLoading = false, +}) => { + const mdDown = useMediaQuery((theme) => theme.breakpoints.down("md")); + const [step, setStep] = useState(0); + const [selectedCategories, setSelectedCategories] = useState({}); + const [expandedCategories, setExpandedCategories] = useState({}); + + const handleToggleExpand = (key) => + setExpandedCategories((prev) => ({ ...prev, [key]: !prev[key] })); + + const restoreAction = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: ["BackupList"], + }); + + const categories = useMemo(() => { + if (!Array.isArray(backupData)) return []; + const counts = {}; + backupData.forEach((item) => { + const key = getItemCategoryKey(item); + counts[key] = (counts[key] || 0) + 1; + }); + return Object.entries(counts) + .filter(([key]) => !IGNORED_CATEGORY_KEYS.has(key)) + .sort((a, b) => (TABLE_LABELS[a[0]] || a[0]).localeCompare(TABLE_LABELS[b[0]] || b[0])) + .map(([key, count]) => ({ key, label: TABLE_LABELS[key] || key, count })); + }, [backupData]); + + useEffect(() => { + if (open) { + setStep(0); + setExpandedCategories({}); + restoreAction.reset(); + } + }, [open]); + + useEffect(() => { + if (categories.length > 0) { + const all = {}; + categories.forEach((c) => { + all[c.key] = true; + }); + setSelectedCategories(all); + } else { + setSelectedCategories({}); + } + }, [categories]); + + const selectedCount = Object.values(selectedCategories).filter(Boolean).length; + const totalCount = categories.length; + + const filteredData = useMemo( + () => + Array.isArray(backupData) + ? backupData.filter((item) => selectedCategories[getItemCategoryKey(item)]) + : [], + [backupData, selectedCategories], + ); + + const handleSelectAll = () => { + const all = {}; + categories.forEach((c) => { + all[c.key] = true; + }); + setSelectedCategories(all); + }; + + const handleDeselectAll = () => setSelectedCategories({}); + + const handleToggleCategory = (key) => + setSelectedCategories((prev) => ({ ...prev, [key]: !prev[key] })); + + const handleConfirmRestore = () => { + const selectedTypes = Object.keys(selectedCategories).filter((k) => selectedCategories[k]); + if (backupName) { + // Blob backup: let the API fetch and filter server-side + restoreAction.mutate({ + url: "/api/ExecRestoreBackup", + data: { BackupName: backupName, SelectedTypes: selectedTypes }, + }); + } else { + // File upload: post the filtered data directly + restoreAction.mutate({ + url: "/api/ExecRestoreBackup", + data: filteredData, + }); + } + }; + + // Step 0 โ€” Validation summary + const StepValidation = () => ( + + {backupFile && ( + + + + Backup Source + + (theme.palette.mode === "dark" ? "grey.800" : "grey.50"), + borderRadius: 1, + border: (theme) => `1px solid ${theme.palette.divider}`, + }} + > + + + Name: {backupFile.name} + + {backupFile.size != null && ( + + Size: {(backupFile.size / 1024 / 1024).toFixed(2)} MB + + )} + {backupFile.lastModified && ( + + Date: {backupFile.lastModified.toLocaleString()} + + )} + + + + )} + + {validationResult && + (validationResult.isValid ? ( + }> + Validation Passed + + {validationResult.validRows} valid rows across {categories.length} categories. + {validationResult.repaired && " Minor issues were automatically repaired."} + + {validationResult.warnings?.length > 0 && ( + + {validationResult.warnings.map((w, i) => ( + + โš  {w} + + ))} + + )} + + ) : ( + }> + Validation Failed + + This backup cannot be restored safely. + + {validationResult.errors?.map((err, i) => ( + + โ€ข {err} + + ))} + + ))} + + ); + + // Step 1 โ€” Category selection + const StepSelectCategories = () => ( + + + + {selectedCount} of {totalCount} categories selected ({filteredData.length} items) + + + + + + + + + + {categories.map((cat) => { + const items = Array.isArray(backupData) + ? backupData.filter((item) => getItemCategoryKey(item) === cat.key) + : []; + const isExpanded = !!expandedCategories[cat.key]; + return ( + + + handleToggleCategory(cat.key)} + size="small" + /> + } + label={ + + + {cat.label} + + + + } + /> + + handleToggleExpand(cat.key)}> + {isExpanded ? ( + + ) : ( + + )} + + + + + (theme.palette.mode === "dark" ? "grey.900" : "grey.50"), + borderRadius: 1, + border: (theme) => `1px solid ${theme.palette.divider}`, + }} + > + {items.map((item, i) => { + const name = getItemDisplayName(item); + const sub = + name !== item.RowKey && item.RowKey + ? item.RowKey.replace(/\.json$/, "") + : null; + return ( + + + {name} + + {sub && ( + + {sub} + + )} + + ); + })} + + + + ); + })} + + + + ); + + // Step 2 โ€” Confirm and results + const StepConfirm = () => ( + + {!restoreAction.isSuccess && ( + }> + Confirm Restore + This will overwrite your current CIPP configuration for the selected categories. This + action cannot be undone. + + )} + + + {selectedCount} {selectedCount === 1 ? "category" : "categories"} ({filteredData.length}{" "} + items) selected for restore: + + + {categories + .filter((c) => selectedCategories[c.key]) + .map((c) => ( + + ))} + + + + + ); + + const StepComponents = [StepValidation, StepSelectCategories, StepConfirm]; + const CurrentStep = StepComponents[step]; + + const canProceed = + step === 0 ? validationResult?.isValid : step === 1 ? selectedCount > 0 : false; + + return ( + + + + Restore Backup + + {!isLoading && ( + <> + + + + {WIZARD_STEPS.map((label) => ( + + {label} + + ))} + + + + )} + + {isLoading ? ( + + + + Loading backup… + + + ) : ( + + )} + + + + {!isLoading && step > 0 && !restoreAction.isSuccess && ( + + )} + {!isLoading && step < WIZARD_STEPS.length - 1 && ( + + )} + {!isLoading && step === WIZARD_STEPS.length - 1 && !restoreAction.isSuccess && ( + + )} + + + ); +}; + +export default CippRestoreWizard; diff --git a/src/components/CippComponents/CippReusableSettingsDeployDrawer.jsx b/src/components/CippComponents/CippReusableSettingsDeployDrawer.jsx new file mode 100644 index 000000000000..007de36b32f1 --- /dev/null +++ b/src/components/CippComponents/CippReusableSettingsDeployDrawer.jsx @@ -0,0 +1,168 @@ +import { useEffect, useState } from "react"; +import { Button, Stack } from "@mui/material"; +import { RocketLaunch } from "@mui/icons-material"; +import { useForm, useWatch, useFormState } from "react-hook-form"; +import { CippOffCanvas } from "./CippOffCanvas"; +import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; +import CippFormComponent from "./CippFormComponent"; +import CippJsonView from "../CippFormPages/CippJSONView"; +import { Grid } from "@mui/system"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; +import { CippFormTenantSelector } from "./CippFormTenantSelector"; +import { PermissionButton as PermissionAwareButton } from "../../utils/permissions"; + +export const CippReusableSettingsDeployDrawer = ({ + buttonText = "Deploy Reusable Settings", + requiredPermissions = [], + PermissionButton = PermissionAwareButton, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const formControl = useForm({ mode: "onChange" }); + const { isValid } = useFormState({ control: formControl.control }); + const tenantFilter = useSettings()?.tenantFilter; + const selectedTemplate = useWatch({ control: formControl.control, name: "TemplateList" }); + const rawJson = useWatch({ control: formControl.control, name: "rawJSON" }); + const selectedTenants = useWatch({ control: formControl.control, name: "tenantFilter" }); + + const templates = ApiGetCall({ url: "/api/ListIntuneReusableSettingTemplates", queryKey: "ListIntuneReusableSettingTemplates" }); + + const getRawJson = (source) => source?.RawJSON ?? source?.RAWJson ?? source?.rawJSON ?? ""; + + useEffect(() => { + if (templates.isSuccess && selectedTemplate?.value) { + const match = templates.data?.find((t) => t.GUID === selectedTemplate.value); + if (match) { + const rawJsonValue = getRawJson(match); + formControl.setValue("rawJSON", rawJsonValue); + formControl.setValue("TemplateId", match.GUID); + } + } + }, [templates.isSuccess, templates.data, selectedTemplate, formControl]); + + const effectiveTenants = Array.isArray(selectedTenants) && selectedTenants.length > 0 + ? selectedTenants + : tenantFilter + ? [tenantFilter] + : []; + + const deploy = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: [ + "ListIntuneReusableSettingTemplates", + `ListIntuneReusableSettings-${effectiveTenants.join(",")}`, + ], + }); + + const handleSubmit = async () => { + const isFormValid = await formControl.trigger(); + if (!isFormValid) { + return; + } + const values = formControl.getValues(); + deploy.mutate({ + url: "/api/AddIntuneReusableSetting", + data: { + tenantFilter: effectiveTenants, + TemplateId: values?.TemplateList?.value, + rawJSON: values?.rawJSON, + }, + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset(); + deploy.reset(); + }; + + const safeJson = () => { + if (!rawJson) return null; + try { + return JSON.parse(rawJson); + } catch (e) { + return null; + } + }; + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + + + + } + > + + + ({ + label: + t.displayName || + t.DisplayName || + t.templateName || + t.TemplateName || + t.name || + `Template ${t.GUID}`, + value: t.GUID, + })) + : [] + } + validators={{ required: { value: true, message: "Template selection is required" } }} + /> + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippRoleOverview.jsx b/src/components/CippComponents/CippRoleOverview.jsx new file mode 100644 index 000000000000..f7f4b1848466 --- /dev/null +++ b/src/components/CippComponents/CippRoleOverview.jsx @@ -0,0 +1,125 @@ +import React from "react"; +import { Box, Typography, Chip, Paper, Grid, Tooltip } from "@mui/material"; +import { + CheckCircle, + Cancel, + Warning, + Security, + Info, +} from "@mui/icons-material"; + +/** + * Visual Role Overview Component + * Displays all roles in a grid with visual status indicators + */ +export const CippRoleOverview = ({ roles = [], onRoleClick }) => { + if (!roles || roles.length === 0) return null; + + const getRoleStatus = (role) => { + if (role.isUserHasAccess) { + return { + icon: , + color: "success", + label: "Has Access", + bgColor: "success.light", + }; + } else if (role.isAssigned) { + return { + icon: , + color: "warning", + label: "Assigned but No Access", + bgColor: "warning.light", + }; + } else if (role.roleExistsInRelationship) { + return { + icon: , + color: "info", + label: "In Relationship but Not Assigned", + bgColor: "info.light", + }; + } else { + return { + icon: , + color: "default", + label: "Not In Any Relationship", + bgColor: "grey.200", + }; + } + }; + + return ( + + {roles.map((role) => { + const status = getRoleStatus(role); + return ( + + + onRoleClick && onRoleClick(role)} + > + + + + + + + {role.roleName} + + + {role.accessPaths && role.accessPaths.length > 0 && ( + + {role.accessPaths.length} access path{role.accessPaths.length !== 1 ? "s" : ""} + + )} + {role.relationshipsWithRole && role.relationshipsWithRole.length > 0 && ( + + {role.relationshipsWithRole.length} group{role.relationshipsWithRole.length !== 1 ? "s" : ""} + + )} + + + + + + ); + })} + + ); +}; diff --git a/src/components/CippComponents/CippSankey.jsx b/src/components/CippComponents/CippSankey.jsx new file mode 100644 index 000000000000..eb583b801ac4 --- /dev/null +++ b/src/components/CippComponents/CippSankey.jsx @@ -0,0 +1,75 @@ +import { ResponsiveSankey } from "@nivo/sankey"; +import { useSettings } from "../../hooks/use-settings"; + +export const CippSankey = ({ data, onNodeClick, onLinkClick }) => { + const settings = useSettings(); + const isDark = settings.currentTheme?.value === "dark"; + + const theme = { + tooltip: { + container: { + background: isDark ? "rgba(33, 33, 33, 0.95)" : "rgba(255, 255, 255, 0.95)", + color: isDark ? "#ffffff" : "#000000", + border: isDark ? "1px solid #555" : "1px solid #ccc", + borderRadius: "4px", + boxShadow: "0 2px 8px rgba(0, 0, 0, 0.15)", + fontSize: "12px", + padding: "8px 12px", + }, + }, + labels: { + text: { + fontSize: 12, + }, + }, + }; + + return ( +
    + node.nodeColor} + nodeOpacity={1} + nodeHoverOthersOpacity={0.35} + nodeThickness={18} + nodeSpacing={24} + nodeBorderWidth={0} + nodeBorderColor={{ + from: "color", + modifiers: [["darker", 0.8]], + }} + nodeBorderRadius={3} + linkOpacity={0.5} + linkHoverOthersOpacity={0.1} + linkContract={3} + linkBlendMode={isDark ? "lighten" : "multiply"} + enableLinkGradient={true} + labelPosition="inside" + labelOrientation="horizontal" + labelPadding={16} + labelTextColor={isDark ? "#ffffff" : "#000000"} + sort="input" + legends={[]} + valueFormat={(value) => `${value}`} + isInteractive={true} + onClick={(node, event) => { + if (onNodeClick && node.id) { + onNodeClick(node); + } else if (onLinkClick && node.source) { + onLinkClick(node); + } + }} + /> +
    + ); +}; diff --git a/src/components/CippComponents/CippScheduledTaskActions.jsx b/src/components/CippComponents/CippScheduledTaskActions.jsx new file mode 100644 index 000000000000..1e37c3b151b1 --- /dev/null +++ b/src/components/CippComponents/CippScheduledTaskActions.jsx @@ -0,0 +1,68 @@ +import { EyeIcon, TrashIcon } from "@heroicons/react/24/outline"; +import { CopyAll, Edit, PlayArrow } from "@mui/icons-material"; +import { usePermissions } from "../../hooks/use-permissions"; + +export const CippScheduledTaskActions = (drawerHandlers = {}, { hideActions = [] } = {}) => { + const { checkPermissions } = usePermissions(); + const canWriteScheduler = checkPermissions(["CIPP.Scheduler.ReadWrite"]); + const canReadScheduler = checkPermissions(["CIPP.Scheduler.Read", "CIPP.Scheduler.ReadWrite"]); + + return [ + { + label: "View Task Details", + link: "/cipp/scheduler/task?id=[RowKey]", + icon: , + condition: () => canReadScheduler, + }, + { + label: "Run Now", + type: "POST", + url: "/api/AddScheduledItem", + data: { RowKey: "RowKey", RunNow: true }, + icon: , + confirmText: "Are you sure you want to run [Name]?", + allowResubmit: true, + condition: () => canWriteScheduler, + }, + { + label: "Edit Job", + customFunction: + drawerHandlers.openEditDrawer || + ((row) => { + window.location.href = `/cipp/scheduler/job?id=${row.RowKey}`; + }), + multiPost: false, + icon: , + color: "success", + showInActionsMenu: true, + noConfirm: true, + condition: () => canWriteScheduler, + }, + { + label: "Clone Job", + customFunction: + drawerHandlers.openCloneDrawer || + ((row) => { + window.location.href = `/cipp/scheduler/job?id=${row.RowKey}&Clone=True`; + }), + multiPost: false, + icon: , + color: "success", + showInActionsMenu: true, + noConfirm: true, + condition: () => canWriteScheduler, + }, + { + label: "Delete Job", + icon: , + type: "POST", + url: "/api/RemoveScheduledItem", + data: { id: "RowKey" }, + confirmText: "Are you sure you want to delete this job?", + multiPost: false, + condition: () => canWriteScheduler, + }, + ].filter((action) => !hideActions.includes(action.label)); +}; + +export default CippScheduledTaskActions; diff --git a/src/components/CippComponents/CippSchedulerDrawer.jsx b/src/components/CippComponents/CippSchedulerDrawer.jsx new file mode 100644 index 000000000000..98510e77ce53 --- /dev/null +++ b/src/components/CippComponents/CippSchedulerDrawer.jsx @@ -0,0 +1,97 @@ +import { useState, useEffect } from "react"; +import { Button, Box, Typography, Alert, AlertTitle } from "@mui/material"; +import { useForm, useFormState } from "react-hook-form"; +import { CalendarDaysIcon } from "@heroicons/react/24/outline"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippSchedulerForm from "../CippFormPages/CippSchedulerForm"; +import { useSettings } from "../../hooks/use-settings"; + +export const CippSchedulerDrawer = ({ + buttonText = "Add Task", + requiredPermissions = [], + PermissionButton = Button, + onSuccess, + onClose, + taskId = null, + cloneMode = false, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const [formKey, setFormKey] = useState(0); + const userSettingsDefaults = useSettings(); + + const formControl = useForm({ + mode: "onBlur", + defaultValues: { + tenantFilter: userSettingsDefaults.currentTenant, + Recurrence: { value: "0", label: "Once" }, + taskType: { value: "scheduled", label: "Scheduled Task" }, + }, + }); + + const handleCloseDrawer = () => { + setDrawerVisible(false); + // Increment form key to force complete remount when reopening + setFormKey((prev) => prev + 1); + // Call onClose callback if provided (to clear parent state) + if (onClose) { + onClose(); + } + // Add a small delay before resetting to ensure drawer is closed + setTimeout(() => { + // Reset form to default values + formControl.reset({ + tenantFilter: userSettingsDefaults.currentTenant, + Recurrence: { value: "0", label: "Once" }, + taskType: { value: "scheduled", label: "Scheduled Task" }, + }); + }, 100); + }; + + const handleOpenDrawer = () => { + setDrawerVisible(true); + }; + + // Auto-open drawer if taskId is provided (for edit mode) + useEffect(() => { + if (taskId) { + setDrawerVisible(true); + } + }, [taskId]); + + return ( + <> + } + > + {buttonText} + + + + + Task Configuration + {taskId && cloneMode + ? "Clone this task with the same configuration. Modify the settings as needed and save to create a new task." + : taskId + ? "Edit the task configuration. Changes will be applied when you save." + : "Create a scheduled task or event-triggered task. Scheduled tasks run PowerShell commands at specified times, while triggered tasks respond to events like Azure AD changes."} + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippSettingsSideBar.jsx b/src/components/CippComponents/CippSettingsSideBar.jsx index 3a3c998c7c38..368ca3f19696 100644 --- a/src/components/CippComponents/CippSettingsSideBar.jsx +++ b/src/components/CippComponents/CippSettingsSideBar.jsx @@ -14,9 +14,10 @@ import CippFormComponent from "./CippFormComponent"; import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; import { getCippError } from "../../utils/get-cipp-error"; import { useFormState } from "react-hook-form"; +import { useEffect } from "react"; export const CippSettingsSideBar = (props) => { - const { formcontrol, ...others } = props; + const { formcontrol, initialUserType, ...others } = props; const { isDirty, isValid } = useFormState({ control: formcontrol.control }); const currentUser = ApiGetCall({ @@ -26,15 +27,111 @@ export const CippSettingsSideBar = (props) => { const saveSettingsPost = ApiPostCall({ url: "/api/ExecUserSettings", + relatedQueryKeys: "userSettings", }); + + // Set the correct default value once we have the initial user type and current user data + useEffect(() => { + if (initialUserType && currentUser.data?.clientPrincipal?.userDetails) { + const defaultUserOption = + initialUserType === "currentUser" + ? { + label: "Current User", + value: currentUser.data.clientPrincipal.userDetails, + } + : { + label: "All Users", + value: "allUsers", + }; + + // Only set if not already set to avoid infinite loops + const currentUserValue = formcontrol.getValues("user"); + if (!currentUserValue || currentUserValue.value !== defaultUserOption.value) { + formcontrol.setValue("user", defaultUserOption); + } + } + }, [initialUserType, currentUser.data?.clientPrincipal?.userDetails, formcontrol]); + const handleSaveChanges = () => { + const formValues = formcontrol.getValues(); + + // Only include the specific form fields from preferences.js to avoid unmapped data + const currentSettings = { + // General Settings + usageLocation: formValues.usageLocation, + tablePageSize: formValues.tablePageSize, + userAttributes: formValues.userAttributes, + + // Table Filter Preferences + persistFilters: formValues.persistFilters, + + // Navigation Settings + bookmarkSidebar: formValues.bookmarkSidebar, + bookmarkPopover: formValues.bookmarkPopover, + bookmarkReorderMode: formValues.bookmarkReorderMode, + compactNav: formValues.compactNav, + + // Portal Links Configuration + portalLinks: { + M365_Portal: formValues.portalLinks?.M365_Portal, + Exchange_Portal: formValues.portalLinks?.Exchange_Portal, + Entra_Portal: formValues.portalLinks?.Entra_Portal, + Teams_Portal: formValues.portalLinks?.Teams_Portal, + Azure_Portal: formValues.portalLinks?.Azure_Portal, + Intune_Portal: formValues.portalLinks?.Intune_Portal, + SharePoint_Admin: formValues.portalLinks?.SharePoint_Admin, + Security_Portal: formValues.portalLinks?.Security_Portal, + Compliance_Portal: formValues.portalLinks?.Compliance_Portal, + Power_Platform_Portal: formValues.portalLinks?.Power_Platform_Portal, + Power_BI_Portal: formValues.portalLinks?.Power_BI_Portal, + }, + + // Offboarding Defaults + offboardingDefaults: { + ConvertToShared: formValues.offboardingDefaults?.ConvertToShared, + RemoveGroups: formValues.offboardingDefaults?.RemoveGroups, + HideFromGAL: formValues.offboardingDefaults?.HideFromGAL, + RemoveLicenses: formValues.offboardingDefaults?.RemoveLicenses, + removeCalendarInvites: formValues.offboardingDefaults?.removeCalendarInvites, + RevokeSessions: formValues.offboardingDefaults?.RevokeSessions, + removePermissions: formValues.offboardingDefaults?.removePermissions, + RemoveRules: formValues.offboardingDefaults?.RemoveRules, + ResetPass: formValues.offboardingDefaults?.ResetPass, + KeepCopy: formValues.offboardingDefaults?.KeepCopy, + DeleteUser: formValues.offboardingDefaults?.DeleteUser, + RemoveMobile: formValues.offboardingDefaults?.RemoveMobile, + DisableSignIn: formValues.offboardingDefaults?.DisableSignIn, + RemoveMFADevices: formValues.offboardingDefaults?.RemoveMFADevices, + RemoveTeamsPhoneDID: formValues.offboardingDefaults?.RemoveTeamsPhoneDID, + ClearImmutableId: formValues.offboardingDefaults?.ClearImmutableId, + }, + }; + const shippedValues = { user: formcontrol.getValues("user").value, - currentSettings: formcontrol.getValues(), + currentSettings: currentSettings, }; saveSettingsPost.mutate({ url: "/api/ExecUserSettings", data: shippedValues }); }; + // Create user options based on current user data + const getUserOptions = () => { + if (!currentUser.data?.clientPrincipal?.userDetails) { + return []; + } + + return [ + { + label: "Current User", + value: currentUser.data.clientPrincipal.userDetails, + }, + { + label: "All Users", + value: "allUsers", + }, + ]; + }; + return ( <> @@ -51,15 +148,8 @@ export const CippSettingsSideBar = (props) => { disableClearable={true} name="user" formControl={formcontrol} - defaultValue={{ - label: "Current User", - value: currentUser.data?.clientPrincipal?.userDetails, - }} multiple={false} - options={[ - { label: "Current User", value: currentUser.data?.clientPrincipal?.userDetails }, - { label: "All Users", value: "allUsers" }, - ]} + options={getUserOptions()} /> {saveSettingsPost.isError && ( diff --git a/src/components/CippComponents/CippSharedMailboxDrawer.jsx b/src/components/CippComponents/CippSharedMailboxDrawer.jsx new file mode 100644 index 000000000000..2efaed2a67f7 --- /dev/null +++ b/src/components/CippComponents/CippSharedMailboxDrawer.jsx @@ -0,0 +1,139 @@ +import { useEffect, useState } from "react"; +import { Button } from "@mui/material"; +import { useForm } from "react-hook-form"; +import { Add } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippFormDomainSelector } from "./CippFormDomainSelector"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiPostCall } from "../../api/ApiCall"; +import { Grid } from "@mui/system"; + +export const CippSharedMailboxDrawer = ({ + buttonText = "Add Shared Mailbox", + requiredPermissions = [], + PermissionButton = Button, +}) => { + const [drawerVisible, setDrawerVisible] = useState(false); + const tenantDomain = useSettings().currentTenant; + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + displayName: "", + username: "", + domain: null, + }, + }); + + const createSharedMailbox = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: ["Mailboxes"], + }); + + const handleSubmit = () => { + const formData = formControl.getValues(); + const postData = { + tenantID: tenantDomain, + displayName: formData.displayName, + username: formData.username, + domain: formData.domain?.value, + }; + createSharedMailbox.mutate({ + url: "/api/AddSharedMailbox", + data: postData, + relatedQueryKeys: ["Mailboxes"], + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset({ + displayName: "", + username: "", + domain: null, + }); + }; + + // Reset form on successful creation, preserving the selected domain + useEffect(() => { + if (createSharedMailbox.isSuccess) { + const domain = formControl.getValues("domain"); + formControl.reset({ + displayName: "", + username: "", + domain: domain, + }); + } + }, [createSharedMailbox.isSuccess, formControl]); + + return ( + <> + setDrawerVisible(true)} + startIcon={} + > + {buttonText} + + + + + + } + > + + + + + + + + + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippSpeedDial.jsx b/src/components/CippComponents/CippSpeedDial.jsx index 4313ace7a7ef..345632e8ba9e 100644 --- a/src/components/CippComponents/CippSpeedDial.jsx +++ b/src/components/CippComponents/CippSpeedDial.jsx @@ -39,7 +39,12 @@ const CippSpeedDial = ({ return acc; }, {}); - const handleSpeedDialClose = () => { + const handleSpeedDialClose = (event, reason) => { + if (reason === "toggle") { + setSpeedDialOpen(false); + setIsHovering(false); + return; + } if (!isHovering) { setTimeout(() => { setSpeedDialOpen(false); diff --git a/src/components/CippComponents/CippSponsor.jsx b/src/components/CippComponents/CippSponsor.jsx new file mode 100644 index 000000000000..1a39eb361013 --- /dev/null +++ b/src/components/CippComponents/CippSponsor.jsx @@ -0,0 +1,104 @@ +import { useMemo, useState, useEffect } from "react"; +import { usePathname } from "next/navigation"; +import { Box, Divider, Tooltip, Typography } from "@mui/material"; +import { useSettings } from "../../hooks/use-settings"; +import sponsorsData from "../../data/sponsors.json"; + +// Filter sponsors by date (runs once on module load) +const getActiveSponsors = () => { + const now = new Date(); + return sponsorsData.filter((sponsor) => { + if (!sponsor.startDate && !sponsor.endDate) { + return true; + } + const startDate = sponsor.startDate ? new Date(sponsor.startDate) : null; + const endDate = sponsor.endDate ? new Date(sponsor.endDate) : null; + const afterStart = !startDate || now >= startDate; + const beforeEnd = !endDate || now <= endDate; + return afterStart && beforeEnd; + }); +}; + +// Select random sponsor based on priority (runs once on module load) +const selectRandomSponsor = (sponsors) => { + if (sponsors.length === 0) return null; + + let totalPriority = 0; + for (let i = 0; i < sponsors.length; i++) { + totalPriority += sponsors[i].priority; + } + let random = Math.floor(Math.random() * totalPriority); + let runningTotal = 0; + for (let i = 0; i < sponsors.length; i++) { + runningTotal += sponsors[i].priority; + if (random < runningTotal) { + return sponsors[i]; + } + } + return null; +}; + +const activeSponsors = getActiveSponsors(); + +export const CippSponsor = () => { + const pathname = usePathname(); + const [selectedSponsor, setSelectedSponsor] = useState(() => selectRandomSponsor(activeSponsors)); + const currentSettings = useSettings(); + const theme = currentSettings?.currentTheme?.value; + + useEffect(() => { + setSelectedSponsor(selectRandomSponsor(activeSponsors)); + }, [pathname]); + + // Get the appropriate image based on current theme + const randomimg = useMemo(() => { + if (!selectedSponsor) return null; + return { + link: selectedSponsor.link, + imagesrc: theme === "light" ? selectedSponsor.imagesrcLight : selectedSponsor.imagesrcDark, + altText: selectedSponsor.altText, + tooltip: selectedSponsor.tooltip, + }; + }, [selectedSponsor, theme]); + + // Don't render if no sponsors are available + if (!randomimg) { + return null; + } + + return ( + <> + + + This application is sponsored by + + + + {randomimg.altText} window.open(randomimg.link)} + /> + + + + ); +}; diff --git a/src/components/CippComponents/CippTableDialog.jsx b/src/components/CippComponents/CippTableDialog.jsx index 59ec73436efd..e31d4485263b 100644 --- a/src/components/CippComponents/CippTableDialog.jsx +++ b/src/components/CippComponents/CippTableDialog.jsx @@ -1,28 +1,30 @@ -import { Button, Dialog, DialogActions, DialogContent, DialogTitle } from "@mui/material"; -import { Stack } from "@mui/system"; -import { CippDataTable } from "../CippTable/CippDataTable"; - -export const CippTableDialog = (props) => { - const { createDialog, title, fields, api, simpleColumns, ...other } = props; - return ( - - {title} - - - - - - - - - - ); -}; +import { Button, Dialog, DialogActions, DialogContent, DialogTitle } from "@mui/material"; +import { Stack } from "@mui/system"; +import { CippDataTable } from "../CippTable/CippDataTable"; + +export const CippTableDialog = (props) => { + const { createDialog, title, fields, api, simpleColumns, ...other } = props; + + return ( + + {title} + + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippTablePage.jsx b/src/components/CippComponents/CippTablePage.jsx index eb75f6cc1ad1..b95db81b5a0c 100644 --- a/src/components/CippComponents/CippTablePage.jsx +++ b/src/components/CippComponents/CippTablePage.jsx @@ -1,10 +1,9 @@ import { Alert, Card, Divider } from "@mui/material"; import { Box, Container, Stack } from "@mui/system"; -import Head from "next/head"; import { CippDataTable } from "../CippTable/CippDataTable"; import { useSettings } from "../../hooks/use-settings"; import { CippHead } from "./CippHead"; -import { useState } from "react"; +import { useState, useEffect } from "react"; export const CippTablePage = (props) => { const { @@ -25,11 +24,14 @@ export const CippTablePage = (props) => { tableFilter, tenantInTitle = true, filters, - sx = { flexGrow: 1, py: 4 }, + initialFilters, + sx = {}, ...other } = props; const tenant = useSettings().currentTenant; - const [tableFilters] = useState(filters || []); + + // Use initialFilters if provided, otherwise use regular filters + const activeFilters = initialFilters || filters; return ( <> @@ -64,13 +66,7 @@ export const CippTablePage = (props) => { columns={columns} columnsFromApi={columnsFromApi} offCanvas={offCanvas} - filters={tableFilters} - initialState={{ - columnFilters: filters ? filters.map(filter => ({ - id: filter.id || filter.columnId, - value: filter.value - })) : [] - }} + filters={activeFilters} {...other} /> diff --git a/src/components/CippComponents/CippTemplateEditor.jsx b/src/components/CippComponents/CippTemplateEditor.jsx new file mode 100644 index 000000000000..bb2c38af8b53 --- /dev/null +++ b/src/components/CippComponents/CippTemplateEditor.jsx @@ -0,0 +1,317 @@ +import React, { useEffect, useState } from "react"; +import { Box, Typography, Divider } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm } from "react-hook-form"; +import CippFormPage from "../CippFormPages/CippFormPage"; +import CippFormComponent from "./CippFormComponent"; +import CippFormSkeleton from "../CippFormPages/CippFormSkeleton"; +import { ApiGetCall } from "../../api/ApiCall"; +import { getCippTranslation } from "../../utils/get-cipp-translation"; + +const CippTemplateEditor = ({ + templateId, + templateType, + apiConfig, + schemaConfig, + blacklistConfig, + priorityFields = [], + title, + backButtonTitle, + customDataFormatter, +}) => { + const [templateData, setTemplateData] = useState(null); + + // Default blacklist patterns that apply to all template types + const defaultBlacklistPatterns = [ + "id", + "createdDateTime", + "modifiedDateTime", + "@odata.*", + "GUID", + "Type", + "times", + "tenantFilter", + "*Id", + "*DateTime", + ]; + + // Combine default and custom blacklist patterns + const blacklistedFields = [ + ...defaultBlacklistPatterns, + ...(blacklistConfig?.patterns || []), + ]; + + const formControl = useForm({ mode: "onChange" }); + + // Fetch the template data + const templateQuery = ApiGetCall({ + url: `${apiConfig.fetchUrl}?${apiConfig.idParam}=${templateId}`, + queryKey: `${templateType}-${templateId}`, + enabled: !!templateId, + }); + + // Function to check if a field matches any blacklisted pattern (including wildcards) + const isFieldBlacklisted = (fieldName) => { + return blacklistedFields.some(pattern => { + if (pattern.includes('*')) { + // Convert wildcard pattern to regex + const regexPattern = pattern + .replace(/\*/g, '.*') + .replace(/\./g, '\\.'); + const regex = new RegExp(`^${regexPattern}$`, 'i'); + return regex.test(fieldName); + } + return pattern === fieldName; + }); + }; + + useEffect(() => { + if (templateQuery.isSuccess && templateQuery.data) { + // Find the template with matching ID + const template = Array.isArray(templateQuery.data) + ? templateQuery.data.find((t) => t[apiConfig.idParam] === templateId) + : templateQuery.data; + + if (template) { + setTemplateData(template); + // Set form values excluding blacklisted fields + const formValues = {}; + Object.keys(template).forEach((key) => { + if (!isFieldBlacklisted(key)) { + formValues[key] = template[key]; + } + }); + formControl.reset(formValues); + } + } + }, [templateQuery.isSuccess, templateQuery.data, templateId]); + + const renderFormField = (key, value, path = "") => { + const fieldPath = path ? `${path}.${key}` : key; + + if (isFieldBlacklisted(key)) { + return null; + } + + // Check for custom schema handling + const schemaField = schemaConfig?.fields?.[key.toLowerCase()]; + if (schemaField) { + return ( + + + + ); + } + + // Special handling for complex array fields (like LocationInfo and GroupInfo) + if (schemaConfig?.complexArrayFields?.some(pattern => + key.toLowerCase().includes(pattern.toLowerCase()) + )) { + // Don't render if value is null, undefined, empty array, or contains only null/empty items + if ( + !value || + (Array.isArray(value) && value.length === 0) || + (Array.isArray(value) && + value.every( + (item) => + item === null || + item === undefined || + (typeof item === "string" && item.trim() === "") || + (typeof item === "object" && item !== null && Object.keys(item).length === 0) + )) + ) { + return null; + } + + return ( + + + {getCippTranslation(key)} + + + + {Array.isArray(value) ? ( + value + .filter( + (item) => + item !== null && + item !== undefined && + !(typeof item === "string" && item.trim() === "") && + !(typeof item === "object" && item !== null && Object.keys(item).length === 0) + ) + .map((item, index) => ( + + + {getCippTranslation(key)} {index + 1} + + + {typeof item === "object" && item !== null ? ( + Object.entries(item).map(([subKey, subValue]) => + renderFormField(subKey, subValue, `${fieldPath}.${index}`) + ) + ) : ( + + + + )} + + + )) + ) : ( + + + No {getCippTranslation(key)} data available + + + )} + + + ); + } + + // Generic field type handling + if (typeof value === "boolean") { + return ( + + + + ); + } + + if (typeof value === "string") { + return ( + + + + ); + } + + if (Array.isArray(value) && value.every((item) => typeof item === "string")) { + return ( + + ({ label: item, value: item }))} + /> + + ); + } + + if (typeof value === "object" && value !== null && !Array.isArray(value)) { + return ( + + + {getCippTranslation(key)} + + + + {Object.entries(value).map(([subKey, subValue]) => + renderFormField(subKey, subValue, fieldPath) + )} + + + ); + } + + // For other types (numbers, complex arrays, etc.), render as text field + return ( + + + + ); + }; + + const defaultDataFormatter = (values) => { + return { + [apiConfig.idParam]: templateId, + ...values, + }; + }; + + if (templateQuery.isLoading) { + return ( + + + + ); + } + + if (templateQuery.isError || !templateData) { + return ( + + + Error loading template or template not found. + + + ); + } + + return ( + + + + Edit the properties of this template. Only editable properties are shown below. + + + + {templateData && ( + <> + {/* Render priority fields first */} + {priorityFields.map(fieldName => + templateData[fieldName] !== undefined && + renderFormField(fieldName, templateData[fieldName]) + )} + + {/* Render all other fields except priority fields */} + {Object.entries(templateData) + .filter(([key]) => !priorityFields.includes(key)) + .map(([key, value]) => renderFormField(key, value))} + + )} + + + + ); +}; + +export default CippTemplateEditor; \ No newline at end of file diff --git a/src/components/CippComponents/CippTemplateFieldRenderer.jsx b/src/components/CippComponents/CippTemplateFieldRenderer.jsx new file mode 100644 index 000000000000..1757e400acda --- /dev/null +++ b/src/components/CippComponents/CippTemplateFieldRenderer.jsx @@ -0,0 +1,790 @@ +import React, { useMemo } from "react"; +import { Typography, Divider } from "@mui/material"; +import { Grid } from "@mui/system"; +import CippFormComponent from "./CippFormComponent"; +import { getCippTranslation } from "../../utils/get-cipp-translation"; +import intuneCollection from "../../data/intuneCollection.json"; + +const CippTemplateFieldRenderer = ({ + templateData, + formControl, + templateType = "conditionalAccess", +}) => { + const intuneDefinitionMap = useMemo(() => { + const map = new Map(); + (intuneCollection || []).forEach((def) => { + if (def?.id) { + map.set(def.id, def); + } + }); + return map; + }, []); + // Default blacklisted fields with wildcard support + const defaultBlacklistedFields = [ + "id", + "isAssigned", + "createdDateTime", + "modifiedDateTime", + "@odata.*", + "GUID", + "Type", + "times", + "tenantFilter", + "*Id", + "*DateTime", + ]; + + // Template-specific configurations + const templateConfigs = { + conditionalAccess: { + blacklistedFields: [ + ...defaultBlacklistedFields, + "membershipKind", + "countryLookupMethod", + "applicationFilter", + "includeAuthenticationContextClassReferences", + ], + priorityFields: ["displayName", "state", "DisplayName", "Name", "displayname"], + complexArrayFields: ["locationinfo", "groupinfo"], + schemaFields: { + operator: { + multiple: false, + options: [ + { label: "OR", value: "OR" }, + { label: "AND", value: "AND" }, + ], + }, + builtincontrols: { + multiple: true, + options: [ + { label: "Block", value: "block" }, + { label: "Multi-factor Authentication", value: "mfa" }, + { label: "Compliant Device", value: "compliantDevice" }, + { label: "Domain Joined Device", value: "domainJoinedDevice" }, + { label: "Approved Application", value: "approvedApplication" }, + { label: "Compliant Application", value: "compliantApplication" }, + { label: "Password Change", value: "passwordChange" }, + { label: "Unknown Future Value", value: "unknownFutureValue" }, + ], + }, + authenticationtype: { + multiple: false, + options: [ + { + label: "Primary and Secondary Authentication", + value: "primaryAndSecondaryAuthentication", + }, + { label: "Secondary Authentication", value: "secondaryAuthentication" }, + { label: "Unknown Future Value", value: "unknownFutureValue" }, + ], + }, + frequencyinterval: { + multiple: false, + options: [ + { label: "Time Based", value: "timeBased" }, + { label: "Every Time", value: "everyTime" }, + { label: "Unknown Future Value", value: "unknownFutureValue" }, + ], + }, + state: { + multiple: false, + options: [ + { label: "Enabled", value: "enabled" }, + { label: "Disabled", value: "disabled" }, + { label: "Enabled for Reporting", value: "enabledForReportingButNotEnforced" }, + ], + }, + }, + }, + intune: { + blacklistedFields: [ + ...defaultBlacklistedFields, + "deviceManagementApplicabilityRuleOsEdition", + "deviceManagementApplicabilityRuleOsVersion", + "deviceManagementApplicabilityRuleDeviceMode", + "roleScopeTagIds", + "supportsScopeTags", + "deviceSettingStateSummaries", + "RAWJson", // Handle RAWJson specially + ], + priorityFields: ["displayName", "description", "DisplayName", "Name", "displayname"], + complexArrayFields: ["assignments", "devicestatusoverview"], + schemaFields: { + devicecompliancepolicystate: { + multiple: false, + options: [ + { label: "Unknown", value: "unknown" }, + { label: "Compliant", value: "compliant" }, + { label: "Noncompliant", value: "noncompliant" }, + { label: "Conflict", value: "conflict" }, + { label: "Error", value: "error" }, + { label: "In Grace Period", value: "inGracePeriod" }, + { label: "Config Manager", value: "configManager" }, + ], + }, + // Common device policy enum values + applicationguardenabledoptions: { + multiple: false, + options: [ + { label: "Not Configured", value: "notConfigured" }, + { label: "Enabled for Edge", value: "enabledForEdge" }, + { label: "Enabled for Office", value: "enabledForOffice" }, + { label: "Enabled for Edge and Office", value: "enabledForEdgeAndOffice" }, + ], + }, + firewallcertificaterevocationlistcheckmethod: { + multiple: false, + options: [ + { label: "Device Default", value: "deviceDefault" }, + { label: "None", value: "none" }, + { label: "Attempt", value: "attempt" }, + { label: "Require", value: "require" }, + ], + }, + firewallpacketqueueingmethod: { + multiple: false, + options: [ + { label: "Device Default", value: "deviceDefault" }, + { label: "Disabled", value: "disabled" }, + { label: "Queue Inbound", value: "queueInbound" }, + { label: "Queue Outbound", value: "queueOutbound" }, + { label: "Queue Both", value: "queueBoth" }, + ], + }, + startupmode: { + multiple: false, + options: [ + { label: "Manual", value: "manual" }, + { label: "Automatic", value: "automatic" }, + { label: "Disabled", value: "disabled" }, + ], + }, + applicationguardblockclipboardsharing: { + multiple: false, + options: [ + { label: "Not Configured", value: "notConfigured" }, + { label: "Block Both", value: "blockBoth" }, + { label: "Block Host to Container", value: "blockHostToContainer" }, + { label: "Block Container to Host", value: "blockContainerToHost" }, + { label: "Block None", value: "blockNone" }, + ], + }, + bitlockerrecoverypasswordrotation: { + multiple: false, + options: [ + { label: "Not Configured", value: "notConfigured" }, + { label: "Disabled", value: "disabled" }, + { label: "Enabled for Azure AD Joined", value: "enabledForAzureAd" }, + { + label: "Enabled for Azure AD and Hybrid Joined", + value: "enabledForAzureAdAndHybrid", + }, + ], + }, + bitlockerprebootrecoverymsgurloption: { + multiple: false, + options: [ + { label: "Default", value: "default" }, + { label: "Use Custom", value: "useCustom" }, + { label: "No URL", value: "noUrl" }, + ], + }, + }, + }, + exchange: { + blacklistedFields: [ + ...defaultBlacklistedFields, + "ExchangeVersion", + "DistinguishedName", + "ObjectCategory", + "WhenChanged", + "WhenCreated", + ], + priorityFields: ["Name", "Identity"], + complexArrayFields: ["accepteddomains", "remotedomain"], + schemaFields: {}, + }, + }; + + // Get configuration for the current template type + const config = templateConfigs[templateType] || templateConfigs.conditionalAccess; + const { blacklistedFields, priorityFields, complexArrayFields, schemaFields } = config; + + // Function to check if a field matches any blacklisted pattern (including wildcards) + const isFieldBlacklisted = (fieldName) => { + return blacklistedFields.some((pattern) => { + if (pattern.includes("*")) { + // Convert wildcard pattern to regex + const regexPattern = pattern.replace(/\*/g, ".*").replace(/\./g, "\\."); + const regex = new RegExp(`^${regexPattern}$`, "i"); + return regex.test(fieldName); + } + return pattern === fieldName; + }); + }; + + // Parse RAWJson for Intune templates + const parseIntuneRawJson = (templateData) => { + if (templateType === "intune" && templateData.RAWJson) { + try { + const parsedJson = JSON.parse(templateData.RAWJson); + return { + ...templateData, + parsedRAWJson: parsedJson, + }; + } catch (error) { + console.warn("Failed to parse RAWJson:", error); + return templateData; + } + } + return templateData; + }; + + // Reset form with filtered values when templateData changes + React.useEffect(() => { + if (templateData && formControl) { + const processedData = parseIntuneRawJson(templateData); + const formValues = {}; + + Object.keys(processedData).forEach((key) => { + if (!isFieldBlacklisted(key)) { + formValues[key] = processedData[key]; + } + }); + formControl.reset(formValues); + } + }, [templateData]); + + const renderFormField = (key, value, path = "") => { + const fieldPath = path ? `${path}.${key}` : key; + + if (isFieldBlacklisted(key)) { + return null; + } + + // Render Intune group setting collections with child-friendly fields instead of raw [object Object] + if ( + templateType === "intune" && + key.toLowerCase() === "groupsettingcollectionvalue" && + Array.isArray(value) + ) { + return ( + + + {getCippTranslation(key)} + + + + {value.map((groupEntry, groupIndex) => ( + + + {`Entry ${groupIndex + 1}`} + + + {(groupEntry?.children || []).map((child, childIndex) => { + const childPath = `${fieldPath}.${groupIndex}.children.${childIndex}`; + const intuneDefinition = intuneDefinitionMap.get(child?.settingDefinitionId); + const childLabel = + intuneDefinition?.displayName || child?.settingDefinitionId || `Child ${ + childIndex + 1 + }`; + + if (child?.simpleSettingValue) { + return ( + + + + ); + } + + if (child?.choiceSettingValue) { + const options = + intuneDefinition?.options?.map((option) => ({ + label: option.displayName || option.id, + value: option.id, + })) || []; + + return ( + + + + ); + } + + return ( + + + Unsupported group entry type โ€” edit in JSON if needed. + + + ); + })} + + + ))} + + + ); + } + + // Check for custom schema handling + const schemaField = schemaFields[key.toLowerCase()]; + if (schemaField) { + return ( + + + + ); + } + + // Special handling for Intune RAWJson structure + if (templateType === "intune" && key === "parsedRAWJson" && value) { + // Check if this is a classic policy (has 'added' array) - these are not editable + if (value.added) { + return ( + + + This is a legacy policy and the settings cannot be edited through the form interface. + + + ); + } + + // Handle modern policies with settings array + if (value.settings && Array.isArray(value.settings)) { + return ( + + + Policy Settings + + + + {value.settings.map((setting, index) => { + const settingInstance = setting.settingInstance; + if (!settingInstance) return null; + + // Handle different setting types + if (settingInstance.choiceSettingValue) { + // Find the setting definition in the intune collection + const intuneObj = intuneDefinitionMap.get(settingInstance.settingDefinitionId); + + const label = intuneObj?.displayName || `Setting ${index + 1}`; + const options = + intuneObj?.options?.map((option) => ({ + label: option.displayName || option.id, + value: option.id, + })) || []; + + return ( + + + + ); + } + + if (settingInstance.simpleSettingValue) { + // Find the setting definition in the intune collection + const intuneObj = intuneDefinitionMap.get(settingInstance.settingDefinitionId); + + const label = intuneObj?.displayName || `Setting ${index + 1}`; + + return ( + + + + ); + } + + // Handle group setting collections + if (settingInstance.groupSettingCollectionValue) { + // Find the setting definition in the intune collection + const intuneObj = intuneCollection.find( + (item) => item.id === settingInstance.settingDefinitionId + ); + + const label = intuneObj?.displayName || `Group Setting Collection ${index + 1}`; + + return ( + + + {label} + + + Definition ID: {settingInstance.settingDefinitionId} + + {/* Group collections are complex - show as read-only for now */} + + Complex group setting collection - view in JSON mode for details + + + ); + } + + return null; + })} + + + ); + } + + // Handle OMA settings + if (value.omaSettings && Array.isArray(value.omaSettings)) { + return ( + + + OMA Settings + + + + {value.omaSettings.map((omaSetting, index) => ( + + + {omaSetting.displayName || `OMA Setting ${index + 1}`} + + + + + + + + + + + ))} + + + ); + } + + // Handle device policies (direct configuration properties) + if (!value.settings && !value.omaSettings && !value.added) { + return ( + + + Device Policy Configuration + + + + {Object.entries(value) + .filter(([deviceKey]) => !isFieldBlacklisted(deviceKey)) + .map(([deviceKey, deviceValue]) => + renderFormField(deviceKey, deviceValue, fieldPath) + )} + + + ); + } + + // Fallback for other RAWJson structures + return ( + + + Policy Configuration + + + + This policy structure is not supported for editing. + + + ); + } + + // Special handling for complex array fields + if (complexArrayFields.some((pattern) => key.toLowerCase().includes(pattern.toLowerCase()))) { + // Don't render if value is null, undefined, empty array, or contains only null/empty items + if ( + !value || + (Array.isArray(value) && value.length === 0) || + (Array.isArray(value) && + value.every( + (item) => + item === null || + item === undefined || + (typeof item === "string" && item.trim() === "") || + (typeof item === "object" && item !== null && Object.keys(item).length === 0) + )) + ) { + return null; + } + + return ( + + + {getCippTranslation(key)} + + + + {Array.isArray(value) ? ( + value + .filter( + (item) => + item !== null && + item !== undefined && + !(typeof item === "string" && item.trim() === "") && + !(typeof item === "object" && item !== null && Object.keys(item).length === 0) + ) + .map((item, index) => ( + + + {getCippTranslation(key)} {index + 1} + + + {typeof item === "object" && item !== null ? ( + Object.entries(item).map(([subKey, subValue]) => + renderFormField(subKey, subValue, `${fieldPath}.${index}`) + ) + ) : ( + + + + )} + + + )) + ) : ( + + + No {getCippTranslation(key)} data available + + + )} + + + ); + } + + // Generic field type handling + if (typeof value === "boolean") { + return ( + + + + ); + } + + if (typeof value === "string") { + const alwaysTextFields = [ + "displayname", + "displayName", + "name", + "description", + "identity", + "title", + ]; + + const isAlwaysTextField = alwaysTextFields.some( + (field) => key.toLowerCase() === field.toLowerCase() + ); + + // Check if this looks like an enum value (common patterns in device policies) + const enumPatterns = [ + "notConfigured", + "deviceDefault", + "manual", + "automatic", + "disabled", + "enabled", + "blocked", + "allowed", + "required", + "none", + "lockWorkstation", + ]; + + const looksLikeEnum = enumPatterns.some((pattern) => + value.toLowerCase().includes(pattern.toLowerCase()) + ); + + if (!isAlwaysTextField && looksLikeEnum) { + // Create basic options based on common patterns + const commonOptions = [ + { label: "Not Configured", value: "notConfigured" }, + { label: "Device Default", value: "deviceDefault" }, + { label: "Manual", value: "manual" }, + { label: "Automatic", value: "automatic" }, + { label: "Disabled", value: "disabled" }, + { label: "Enabled", value: "enabled" }, + { label: "Blocked", value: "blocked" }, + { label: "Allowed", value: "allowed" }, + { label: "Required", value: "required" }, + { label: "None", value: "none" }, + ].filter( + (option) => + // Only include options that make sense for this field + option.value === value || + key.toLowerCase().includes(option.value.toLowerCase()) || + option.value === "notConfigured" // Always include notConfigured + ); + + return ( + + + + ); + } + + return ( + + + + ); + } + + if (Array.isArray(value) && value.every((item) => typeof item === "string")) { + return ( + + ({ label: item, value: item }))} + /> + + ); + } + + if (typeof value === "object" && value !== null && !Array.isArray(value)) { + return ( + + + {getCippTranslation(key)} + + + + {Object.entries(value).map(([subKey, subValue]) => + renderFormField(subKey, subValue, fieldPath) + )} + + + ); + } + + // For other types (numbers, complex arrays, etc.), render as text field + return ( + + + + ); + }; + + if (!templateData) { + return null; + } + + // Process template data (parse RAWJson for Intune templates) + const processedData = parseIntuneRawJson(templateData); + + return ( + + {/* Render priority fields first */} + {priorityFields.map( + (fieldName) => + processedData[fieldName] !== undefined && + renderFormField(fieldName, processedData[fieldName]) + )} + + {/* Render all other fields except priority fields */} + {Object.entries(processedData) + .filter(([key]) => !priorityFields.includes(key)) + .map(([key, value]) => renderFormField(key, value))} + + ); +}; + +export default CippTemplateFieldRenderer; diff --git a/src/components/CippComponents/CippTenantGroupOffCanvas.jsx b/src/components/CippComponents/CippTenantGroupOffCanvas.jsx new file mode 100644 index 000000000000..05ed8e18f836 --- /dev/null +++ b/src/components/CippComponents/CippTenantGroupOffCanvas.jsx @@ -0,0 +1,275 @@ +import React from "react"; +import { + Box, + Typography, + Card, + CardContent, + Chip, + Alert, + AlertTitle, + useTheme, + Stack, +} from "@mui/material"; +import { Groups, Business, Rule, Info } from "@mui/icons-material"; +import { CippDataTable } from "../CippTable/CippDataTable"; + +export const CippTenantGroupOffCanvas = ({ data }) => { + const theme = useTheme(); + + if (!data) { + return ( + + No group data available + + ); + } + + const isDynamic = data.GroupType === "dynamic"; + const hasMembers = data.Members && data.Members.length > 0; + const hasDynamicRules = + data.DynamicRules && + ((Array.isArray(data.DynamicRules) && data.DynamicRules.length > 0) || + (!Array.isArray(data.DynamicRules) && Object.keys(data.DynamicRules).length > 0)); + + const renderDynamicRules = () => { + if (!hasDynamicRules) { + return ( + + No Dynamic Rules + This dynamic group has no rules configured. + + ); + } + + const operatorDisplay = { + eq: "equals", + ne: "not equals", + in: "in", + notIn: "not in", + contains: "contains", + startsWith: "starts with", + endsWith: "ends with", + }; + + // Handle both single rule object and array of rules + const rules = Array.isArray(data.DynamicRules) ? data.DynamicRules : [data.DynamicRules]; + + const renderRule = (rule, index) => ( + + + Rule {rules.length > 1 ? `${index + 1}:` : "Configuration:"} + + + Property: {rule.property} + + + Operator: {operatorDisplay[rule.operator] || rule.operator} + + + Value(s): + + {Array.isArray(rule.value) ? ( + + {rule.value.map((item, valueIndex) => ( + + ))} + + ) : ( + + )} + + ); + + const renderRulesWithLogic = () => { + if (rules.length === 1) { + return renderRule(rules[0], 0); + } + + return rules.map((rule, index) => ( + + {renderRule(rule, index)} + {index < rules.length - 1 && ( + + + + )} + + )); + }; + + return ( + + + + + Dynamic Rules + {rules.length > 1 && ( + + )} + + {renderRulesWithLogic()} + + + ); + }; + + const renderMembers = () => { + if (!hasMembers) { + return ( + + No Members + {isDynamic + ? "This dynamic group has no members that match the current rules." + : "This static group has no members assigned."} + + ); + } + + const memberColumns = ["displayName", "defaultDomainName", "customerId"]; + + return ( + + , + }} + /> + + ); + }; + + return ( + + {/* Header Section */} + + + + + + {data.Name} + + + + + ID: {data.Id} + + + + + + {data.Description && ( + + Description + {data.Description} + + )} + + + {/* Content Sections */} + + {/* Dynamic Rules Section (only for dynamic groups) */} + {isDynamic && {renderDynamicRules()}} + + {/* Members Section */} + {renderMembers()} + + {/* Additional Info */} + + + + + Additional Information + + + + + Group Type + + {isDynamic ? "Dynamic" : "Static"} + + + + Member Count + + + {data.Members?.length || 0} tenant{(data.Members?.length || 0) !== 1 ? "s" : ""} + + + {isDynamic && ( + <> + + + Rule Logic + + + {data.RuleLogic?.toUpperCase() || "AND"} + + + + + Has Rules + + {hasDynamicRules ? "Yes" : "No"} + + + )} + + + + + + ); +}; diff --git a/src/components/CippComponents/CippTenantGroupRuleBuilder.jsx b/src/components/CippComponents/CippTenantGroupRuleBuilder.jsx new file mode 100644 index 000000000000..e61aaf768be5 --- /dev/null +++ b/src/components/CippComponents/CippTenantGroupRuleBuilder.jsx @@ -0,0 +1,266 @@ +import React, { useState, useMemo } from "react"; +import { Box, Button, IconButton, Typography, Alert, Paper } from "@mui/material"; +import { Grid } from "@mui/system"; +import { Add as AddIcon, Delete as DeleteIcon } from "@mui/icons-material"; +import CippFormComponent from "./CippFormComponent"; +import { CippFormCondition } from "./CippFormCondition"; +import { useWatch } from "react-hook-form"; +import { + getTenantGroupPropertyOptions, + getTenantGroupOperatorOptions, + getTenantGroupValueOptions, + getTenantGroupsQuery, +} from "../../utils/get-cipp-tenant-group-options"; +import { ApiGetCallWithPagination } from "../../api/ApiCall"; + +const CippTenantGroupRuleBuilder = ({ formControl, name = "dynamicRules" }) => { + const [ruleCount, setRuleCount] = useState(1); + + // Watch the rules array to get current values + const watchedRules = useWatch({ + control: formControl.control, + name: name, + defaultValue: [{}], + }); + + // Watch the logic operator + const ruleLogic = useWatch({ + control: formControl.control, + name: "ruleLogic", + defaultValue: "and", + }); + + const propertyOptions = getTenantGroupPropertyOptions(); + + // Fetch tenant groups using ApiGetCallWithPagination + const tenantGroupsQuery = ApiGetCallWithPagination(getTenantGroupsQuery()); + + const tenantGroupOptions = useMemo(() => { + if (tenantGroupsQuery.isSuccess && tenantGroupsQuery.data?.pages) { + // Flatten all pages and extract Results + const allGroups = tenantGroupsQuery.data.pages.flatMap((page) => page?.Results || []); + return allGroups + .filter((group) => group.GroupType === "static") + .map((group) => ({ + label: group.Name || group.displayName, + value: group.Id || group.RowKey, + type: group.GroupType, + })) + .sort((a, b) => a.label.localeCompare(b.label)); + } + return []; + }, [tenantGroupsQuery.isSuccess, tenantGroupsQuery.data]); + + const addRule = () => { + const currentRules = formControl.getValues(name) || []; + const newRules = [...currentRules, {}]; + formControl.setValue(name, newRules); + setRuleCount(ruleCount + 1); + }; + + const removeRule = (index) => { + const currentRules = formControl.getValues(name) || []; + const newRules = currentRules.filter((_, i) => i !== index); + formControl.setValue(name, newRules); + setRuleCount(Math.max(1, ruleCount - 1)); + }; + + const getValueOptions = (ruleIndex) => { + const rules = watchedRules || []; + const rule = rules[ruleIndex]; + const propertyType = rule?.property?.type; + + // Return tenant group options for tenantGroup type + if (propertyType === "tenantGroup") { + return tenantGroupOptions; + } + + return getTenantGroupValueOptions(propertyType); + }; + + const getOperatorOptions = (ruleIndex) => { + const rules = watchedRules || []; + const rule = rules[ruleIndex]; + const propertyType = rule?.property?.type; + return getTenantGroupOperatorOptions(propertyType); + }; + + const renderRule = (ruleIndex) => { + const isFirstRule = ruleIndex === 0; + const canRemove = (watchedRules?.length || 0) > 1; + + return ( + + {!isFirstRule && ( + + {(ruleLogic || "and").toUpperCase()} + + )} + + + {/* Property Selection */} + + + + + {/* Operator Selection */} + + + + + + + {/* Value Selection - Conditional based on property type */} + + + {/* Custom Variable - Two-field input */} + {watchedRules?.[ruleIndex]?.property?.type === "customVariable" ? ( + + + { + if (typeof option === "string") return option; + return option.Name || option; + }, + valueField: (option) => { + if (typeof option === "string") return option; + return option.Name || option; + }, + queryKey: "CustomVariables-TenantSpecific", + dataKey: "Results", + }} + /> + + + + + + ) : ( + + )} + + + + {/* Remove Rule Button */} + + {canRemove && ( + removeRule(ruleIndex)} size="small"> + + + )} + + + + ); + }; + + return ( + + + Dynamic Rules + + + + Define rules to automatically include tenants in this group. Rules are combined with the + selected logic operator. Examples: "Available License equals Microsoft 365 E3"{" "} + {(ruleLogic || "and").toUpperCase()} "Delegated Access Status equals Direct Tenant" + {" | "} + "Member of Tenant Group equals 'Production Tenants'" + {" | "} + "Custom Variable: Environment equals Production" + + + {/* Logic Operator Selection */} + + + + + {/* Render existing rules */} + {(watchedRules || [{}]).map((_, index) => renderRule(index))} + + {/* Add Rule Button */} + + + + + ); +}; + +export default CippTenantGroupRuleBuilder; diff --git a/src/components/CippComponents/CippTenantLookup.jsx b/src/components/CippComponents/CippTenantLookup.jsx new file mode 100644 index 000000000000..a1f8b3680cfc --- /dev/null +++ b/src/components/CippComponents/CippTenantLookup.jsx @@ -0,0 +1,415 @@ +import React, { useState, useEffect } from "react"; +import { + Box, + Button, + Typography, + Skeleton, + Chip, + Grid, + Paper, + Divider, + useTheme, + TextField, + InputAdornment, +} from "@mui/material"; +import { + Search, + Public, + Language, + LocationOn, + Cloud, +} from "@mui/icons-material"; +import { useForm, useWatch } from "react-hook-form"; +import CippButtonCard from "../CippCards/CippButtonCard"; +import { ApiGetCall } from "../../api/ApiCall"; +import { CippCopyToClipBoard } from "./CippCopyToClipboard"; + +// Region icon mapping +const getRegionIcon = (region) => { + const regionUpper = region?.toUpperCase(); + switch (regionUpper) { + case "EU": + return ; + case "US": + return ; + case "ASIA": + return ; + case "GCC": + case "GCC-HIGH": + return ; + case "DE": + return ; + case "CN": + return ; + default: + return ; + } +}; + +// Region color mapping +const getRegionColor = (region) => { + const regionUpper = region?.toUpperCase(); + switch (regionUpper) { + case "EU": + return "primary"; + case "US": + return "success"; + case "ASIA": + return "warning"; + case "GCC": + case "GCC-HIGH": + return "info"; + case "DE": + return "secondary"; + case "CN": + return "error"; + default: + return "default"; + } +}; + +export const CippTenantLookup = () => { + const formControl = useForm({ mode: "onBlur" }); + const domain = useWatch({ control: formControl.control, name: "domain" }); + + const getTenant = ApiGetCall({ + url: "/api/ListExternalTenantInfo", + data: { tenant: domain }, + queryKey: `tenant-${domain}`, + waiting: false, + }); + + const theme = useTheme(); + const tenantData = getTenant.data; + const graphData = tenantData?.GraphRequest; + const openIdData = tenantData?.OpenIdConfig; + const brandingData = tenantData?.UserTenantBranding?.[0]; + const [illustrationUrl, setIllustrationUrl] = useState(null); + const [tileLogoUrl, setTileLogoUrl] = useState(null); + + // Fetch illustration as blob and convert to object URL + useEffect(() => { + let currentObjectUrl = null; + + if (brandingData?.Illustration && typeof brandingData.Illustration === "string" && brandingData.Illustration.trim() !== "") { + const fetchIllustration = async () => { + try { + const response = await fetch(brandingData.Illustration); + if (response.ok && response.headers.get("content-type")?.startsWith("image/")) { + const blob = await response.blob(); + if (blob.size > 0) { + currentObjectUrl = URL.createObjectURL(blob); + setIllustrationUrl(currentObjectUrl); + } else { + setIllustrationUrl(null); + } + } else { + setIllustrationUrl(null); + } + } catch (error) { + console.error("Failed to fetch illustration:", error); + setIllustrationUrl(null); + } + }; + fetchIllustration(); + } else { + setIllustrationUrl(null); + } + + // Cleanup: revoke object URL when component unmounts or illustration changes + return () => { + if (currentObjectUrl) { + URL.revokeObjectURL(currentObjectUrl); + } + }; + }, [brandingData?.Illustration]); + + // Cleanup illustration URL on unmount + useEffect(() => { + return () => { + if (illustrationUrl) { + URL.revokeObjectURL(illustrationUrl); + } + }; + }, [illustrationUrl]); + + // Fetch tile logo as blob and convert to object URL (respects theme, falls back to available logo) + useEffect(() => { + let currentObjectUrl = null; + const isDarkMode = theme.palette.mode === "dark"; + + // Determine which logo to use: prefer theme-appropriate, but fall back to whichever is available + let logoUrl = null; + if (isDarkMode) { + logoUrl = brandingData?.TileDarkLogo || brandingData?.TileLogo; + } else { + logoUrl = brandingData?.TileLogo || brandingData?.TileDarkLogo; + } + + if (logoUrl && typeof logoUrl === "string" && logoUrl.trim() !== "") { + const fetchLogo = async () => { + try { + const response = await fetch(logoUrl); + if (response.ok && response.headers.get("content-type")?.startsWith("image/")) { + const blob = await response.blob(); + if (blob.size > 0) { + currentObjectUrl = URL.createObjectURL(blob); + setTileLogoUrl(currentObjectUrl); + } else { + setTileLogoUrl(null); + } + } else { + setTileLogoUrl(null); + } + } catch (error) { + console.error("Failed to fetch tile logo:", error); + setTileLogoUrl(null); + } + }; + fetchLogo(); + } else { + setTileLogoUrl(null); + } + + // Cleanup: revoke object URL when component unmounts or logo changes + return () => { + if (currentObjectUrl) { + URL.revokeObjectURL(currentObjectUrl); + } + }; + }, [brandingData?.TileLogo, brandingData?.TileDarkLogo, theme.palette.mode]); + + // Cleanup tile logo URL on unmount + useEffect(() => { + return () => { + if (tileLogoUrl) { + URL.revokeObjectURL(tileLogoUrl); + } + }; + }, [tileLogoUrl]); + + return ( + + + {/* Search Section */} + + { + e.preventDefault(); + if (domain && !getTenant.isFetching) { + getTenant.refetch(); + } + }} + sx={{ width: "100%", maxWidth: "600px", display: "flex", gap: 1 }} + > + formControl.setValue("domain", e.target.value)} + InputProps={{ + startAdornment: ( + + + + ), + sx: { + "& .MuiInputAdornment-root": { + marginTop: "0 !important", + alignSelf: "center", + }, + }, + }} + /> + + + + + {/* Results Section */} + {getTenant.isFetching ? ( + + + + Fetching Results + + + + + + ) : tenantData ? ( + <> + + + + + {/* Preview Container with Illustration Background */} + + + {/* Overlay Content */} + + {/* Tenant Details Container */} + + + Tenant Information + + + + + Tenant Name + + + + {domain || "Not Available"} + + {domain && } + + + + + Default Domain Name + + + + {graphData?.defaultDomainName || "Not Available"} + + {graphData?.defaultDomainName && } + + + + + Tenant ID + + + + {graphData?.tenantId || "Not Available"} + + {graphData?.tenantId && } + + + + + Tenant Region + + {openIdData?.tenant_region_scope ? ( + + ) : ( + + Not Available + + )} + + + + + {/* Tile Logo Container */} + {(brandingData?.TileLogo || brandingData?.TileDarkLogo) && ( + + + Tenant Logo + + {tileLogoUrl ? ( + { + e.target.style.display = "none"; + }} + /> + ) : ( + + )} + + )} + + + + + ) : null} + + + ); +}; + +export default CippTenantLookup; diff --git a/src/components/CippComponents/CippTenantSelector.jsx b/src/components/CippComponents/CippTenantSelector.jsx index cb3db82c1645..f215f9879006 100644 --- a/src/components/CippComponents/CippTenantSelector.jsx +++ b/src/components/CippComponents/CippTenantSelector.jsx @@ -2,25 +2,39 @@ import PropTypes from "prop-types"; import { CippAutoComplete } from "../CippComponents/CippAutocomplete"; import { ApiGetCall } from "../../api/ApiCall"; import { IconButton, SvgIcon, Tooltip, Box } from "@mui/material"; -import { FilePresent, Laptop, Mail, Refresh, Share, Shield, ShieldMoon } from "@mui/icons-material"; +import { + FilePresent, + Laptop, + Mail, + Refresh, + Share, + Shield, + ShieldMoon, + PrecisionManufacturing, + BarChart, +} from "@mui/icons-material"; import { BuildingOfficeIcon, GlobeAltIcon, ServerIcon, UsersIcon, } from "@heroicons/react/24/outline"; -import { useEffect, useState } from "react"; +import React, { useEffect, useState, useMemo, useCallback, useRef } from "react"; import { useRouter } from "next/router"; import { CippOffCanvas } from "./CippOffCanvas"; import { useSettings } from "../../hooks/use-settings"; import { getCippError } from "../../utils/get-cipp-error"; +import { useQueryClient } from "@tanstack/react-query"; -export const CippTenantSelector = (props) => { +export const CippTenantSelector = React.forwardRef((props, ref) => { const { width, allTenants = false, multiple = false, refreshButton, tenantButton } = props; //get the current tenant from SearchParams called 'tenantFilter' const router = useRouter(); const settings = useSettings(); + const queryClient = useQueryClient(); const tenant = router.query.tenantFilter ? router.query.tenantFilter : settings.currentTenant; + const routerUpdateTimeoutRef = useRef(null); + // Fetch tenant list const tenantList = ApiGetCall({ url: "/api/listTenants", @@ -43,12 +57,134 @@ export const CippTenantSelector = (props) => { toast: true, }); + // Filter portal actions based on user preferences + const filteredPortalActions = useMemo(() => { + // Define all available portal actions with current tenant data + const allPortalActions = [ + { + key: "M365_Portal", + label: "M365 Admin Portal", + link: `https://admin.cloud.microsoft/?delegatedOrg=${currentTenant?.addedFields?.initialDomainName}`, + icon: , + }, + { + key: "Exchange_Portal", + label: "Exchange Portal", + link: `https://admin.cloud.microsoft/exchange?delegatedOrg=${currentTenant?.addedFields?.initialDomainName}`, + icon: , + }, + { + key: "Entra_Portal", + label: "Entra Portal", + link: `https://entra.microsoft.com/${currentTenant?.value}`, + icon: , + }, + { + key: "Teams_Portal", + label: "Teams Portal", + link: `https://admin.teams.microsoft.com/?delegatedOrg=${currentTenant?.addedFields?.initialDomainName}`, + icon: , + }, + { + key: "Azure_Portal", + label: "Azure Portal", + link: `https://portal.azure.com/${currentTenant?.value}`, + icon: , + }, + { + key: "Intune_Portal", + label: "Intune Portal", + link: `https://intune.microsoft.com/${currentTenant?.value}`, + icon: , + }, + { + key: "SharePoint_Admin", + label: "SharePoint Portal", + link: `/api/ListSharePointAdminUrl?tenantFilter=${currentTenant?.value}`, + icon: , + external: true, + }, + { + key: "Security_Portal", + label: "Security Portal", + link: `https://security.microsoft.com/?tid=${currentTenant?.addedFields?.customerId}`, + icon: , + }, + { + key: "Compliance_Portal", + label: "Compliance Portal", + link: `https://purview.microsoft.com/?tid=${currentTenant?.addedFields?.customerId}`, + icon: , + }, + { + key: "Power_Platform_Portal", + label: "Power Platform Portal", + link: `https://admin.powerplatform.microsoft.com/account/login/${currentTenant?.addedFields?.customerId}`, + icon: , + }, + { + key: "Power_BI_Portal", + label: "Power BI Portal", + link: `https://app.powerbi.com/admin-portal?ctid=${currentTenant?.addedFields?.customerId}`, + icon: , + }, + ]; + + // Default to all links enabled (final fallback) + const defaultLinks = { + M365_Portal: true, + Exchange_Portal: true, + Entra_Portal: true, + Teams_Portal: true, + Azure_Portal: true, + Intune_Portal: true, + SharePoint_Admin: true, + Security_Portal: true, + Compliance_Portal: true, + Power_Platform_Portal: true, + Power_BI_Portal: true, + }; + + let portalLinks; + if (settings.UserSpecificSettings?.portalLinks) { + portalLinks = { ...defaultLinks, ...settings.UserSpecificSettings.portalLinks }; + } else if (settings.portalLinks) { + portalLinks = { ...defaultLinks, ...settings.portalLinks }; + } else { + portalLinks = defaultLinks; + } + + const filteredActions = allPortalActions.filter((action) => { + const isEnabled = portalLinks[action.key] === true; + return isEnabled; + }); + + // insert a Manage Tenant link at the start + filteredActions.unshift({ + key: "Manage_Tenant", + label: "Manage Tenant", + link: `/tenant/manage/edit?tenantFilter=${currentTenant?.value}`, + icon: , + }); + + return filteredActions; + }, [currentTenant, settings]); + // This effect handles updates when the tenant is changed via dropdown selection useEffect(() => { if (!router.isReady) return; if (currentTenant?.value) { const query = { ...router.query }; if (query.tenantFilter !== currentTenant.value) { + // Clear any pending timeout + if (routerUpdateTimeoutRef.current) { + clearTimeout(routerUpdateTimeoutRef.current); + } + + // Cancel all in-flight queries before changing tenant + queryClient.cancelQueries(); + + // Update router only - let the URL watcher handle settings query.tenantFilter = currentTenant.value; router.replace( { @@ -59,41 +195,47 @@ export const CippTenantSelector = (props) => { { shallow: true } ); } - settings.handleUpdate({ - currentTenant: currentTenant.value, - }); - //if we have a tenantfilter, we add the tenantfilter to the title of the tab/page so its "Tenant - original title". } }, [currentTenant?.value]); - // This effect handles when the URL parameter changes externally + // This effect handles when the URL parameter changes (from deep link or user selection) + // This is the single source of truth for tenant changes useEffect(() => { if (!router.isReady || !tenantList.isSuccess) return; - // Get the current tenant from URL or settings - const urlTenant = router.query.tenantFilter || settings.currentTenant; + const urlTenant = router.query.tenantFilter; - // Only update if there's a URL tenant and it's different from our current state - if (urlTenant && (!currentTenant || urlTenant !== currentTenant.value)) { + // Only process if we have a URL tenant + if (urlTenant) { // Find the tenant in our list const matchingTenant = tenantList.data.find( ({ defaultDomainName }) => defaultDomainName === urlTenant ); if (matchingTenant) { - setSelectedTenant({ - value: urlTenant, - label: `${matchingTenant.displayName} (${urlTenant})`, - addedFields: { - defaultDomainName: matchingTenant.defaultDomainName, - displayName: matchingTenant.displayName, - customerId: matchingTenant.customerId, - initialDomainName: matchingTenant.initialDomainName, - }, - }); + // Update local state if different + if (!currentTenant || urlTenant !== currentTenant.value) { + setSelectedTenant({ + value: urlTenant, + label: `${matchingTenant.displayName} (${urlTenant})`, + addedFields: { + defaultDomainName: matchingTenant.defaultDomainName, + displayName: matchingTenant.displayName, + customerId: matchingTenant.customerId, + initialDomainName: matchingTenant.initialDomainName, + }, + }); + } + + // Update settings if different (null filter in settings-context prevents saving null) + if (settings.currentTenant !== urlTenant) { + settings.handleUpdate({ + currentTenant: urlTenant, + }); + } } } - }, [router.isReady, router.query.tenantFilter, tenantList.isSuccess, settings.currentTenant]); + }, [router.isReady, router.query.tenantFilter, tenantList.isSuccess]); // This effect ensures the tenant filter parameter is included in the URL when missing useEffect(() => { @@ -111,7 +253,7 @@ export const CippTenantSelector = (props) => { { shallow: true } ); } - }, [router.isReady, router.query, settings.currentTenant]); + }, [router.isReady, router.query.tenantFilter, settings.currentTenant]); useEffect(() => { if (tenant && currentTenant?.value && currentTenant?.value !== "AllTenants") { @@ -145,6 +287,15 @@ export const CippTenantSelector = (props) => { } }, [tenant, tenantList.isSuccess, currentTenant]); + // Cleanup on unmount + useEffect(() => { + return () => { + if (routerUpdateTimeoutRef.current) { + clearTimeout(routerUpdateTimeoutRef.current); + } + }; + }, []); + return ( <> { )} { onChange={(nv) => setSelectedTenant(nv)} options={ tenantList.isSuccess && tenantList.data && tenantList.data.length > 0 - ? tenantList.data.map(({ customerId, displayName, defaultDomainName }) => ({ + ? tenantList.data.map(({ customerId, displayName, defaultDomainName, initialDomainName }) => ({ value: defaultDomainName, label: `${displayName} (${defaultDomainName})`, - addedField: { - defaultDomainName: "defaultDomainName", - displayName: "displayName", - customerId: "customerId", + addedFields: { + defaultDomainName: defaultDomainName, + displayName: displayName, + customerId: customerId, + initialDomainName: initialDomainName, }, })) : [] @@ -240,58 +393,13 @@ export const CippTenantSelector = (props) => { "onPremisesLastSyncDateTime", "onPremisesLastPasswordSyncDateTime", ]} - actions={[ - { - label: "M365 Admin Portal", - link: `https://admin.cloud.microsoft/?delegatedOrg=${currentTenant?.addedFields?.initialDomainName}`, - icon: , - }, - { - label: "Exchange Portal", - link: `https://admin.cloud.microsoft/exchange?delegatedOrg=${currentTenant?.addedFields?.initialDomainName}`, - icon: , - }, - { - label: "Entra Portal", - link: `https://entra.microsoft.com/${currentTenant?.value}`, - icon: , - }, - { - label: "Teams Portal", - link: `https://admin.teams.microsoft.com/?delegatedOrg=${currentTenant?.addedFields?.initialDomainName}`, - icon: , - }, - { - label: "Azure Portal", - link: `https://portal.azure.com/${currentTenant?.value}`, - icon: , - }, - { - label: "Intune Portal", - link: `https://intune.microsoft.com/${currentTenant?.value}`, - icon: , - }, - { - label: "SharePoint Portal", - link: `/api/ListSharePointAdminUrl?tenantFilter=${currentTenant?.value}`, - icon: , - external: true, - }, - { - label: "Security Portal", - link: `https://security.microsoft.com/?tid=${currentTenant?.addedFields?.customerId}`, - icon: , - }, - { - label: "Compliance Portal", - link: `https://purview.microsoft.com/?tid=${currentTenant?.addedFields?.customerId}`, - icon: , - }, - ]} + actions={filteredPortalActions} /> ); -}; +}); + +CippTenantSelector.displayName = "CippTenantSelector"; CippTenantSelector.propTypes = { allTenants: PropTypes.bool, diff --git a/src/components/CippComponents/CippTextFieldWithVariables.jsx b/src/components/CippComponents/CippTextFieldWithVariables.jsx new file mode 100644 index 000000000000..80d720ac9440 --- /dev/null +++ b/src/components/CippComponents/CippTextFieldWithVariables.jsx @@ -0,0 +1,214 @@ +import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; +import { TextField } from "@mui/material"; +import { CippVariableAutocomplete } from "./CippVariableAutocomplete"; +import { useSettings } from "../../hooks/use-settings.js"; + +/** + * Enhanced TextField that supports custom variable autocomplete + * Triggers when user types % character + */ +export const CippTextFieldWithVariables = ({ + value = "", + onChange, + includeSystemVariables = false, + ...textFieldProps +}) => { + const [showAutocomplete, setShowAutocomplete] = useState(false); + const [autocompleteAnchor, setAutocompleteAnchor] = useState(null); + const [searchQuery, setSearchQuery] = useState(""); + const [cursorPosition, setCursorPosition] = useState(0); + const textFieldRef = useRef(null); + + const settings = useSettings(); + // Memoize tenant filter to prevent unnecessary re-renders + const tenantFilter = useMemo(() => settings?.currentTenant || null, [settings?.currentTenant]); + + // Safely close autocomplete + const closeAutocomplete = useCallback(() => { + setShowAutocomplete(false); + setSearchQuery(""); + setAutocompleteAnchor(null); + }, []); + + // Track cursor position + const handleSelectionChange = () => { + if (textFieldRef.current) { + setCursorPosition(textFieldRef.current.selectionStart || 0); + } + }; + + // Get cursor position for floating autocomplete + const getCursorPosition = () => { + if (!textFieldRef.current) return { top: 0, left: 0 }; + + const rect = textFieldRef.current.getBoundingClientRect(); + return { + top: rect.bottom + window.scrollY, + left: rect.left + window.scrollX + cursorPosition * 8, // Approximate character width + }; + }; + + // Handle input changes and detect % trigger + const handleInputChange = (event) => { + const newValue = event.target.value; + const cursorPos = event.target.selectionStart; + + // Update cursor position state immediately + setCursorPosition(cursorPos); + + // Call parent onChange + if (onChange) { + onChange(event); + } + + // Check if % was just typed + if (newValue[cursorPos - 1] === "%") { + // Position autocomplete near cursor + setAutocompleteAnchor(textFieldRef.current); + setSearchQuery(""); + setShowAutocomplete(true); + } else if (showAutocomplete) { + // Update search query if autocomplete is open + const lastPercentIndex = newValue.lastIndexOf("%", cursorPos - 1); + if (lastPercentIndex !== -1) { + const query = newValue.substring(lastPercentIndex + 1, cursorPos); + setSearchQuery(query); + + // Close autocomplete if user typed space or special characters (except %) + if (query.includes(" ") || /[^a-zA-Z0-9_]/.test(query)) { + closeAutocomplete(); + } + } else { + closeAutocomplete(); + } + } + }; + + // Handle variable selection + const handleVariableSelect = useCallback( + (variableString) => { + if (!onChange) { + return; + } + + // Use the value prop instead of DOM value since we're in a controlled component + const currentValue = value || ""; + + // Get fresh cursor position from the DOM + let cursorPos = cursorPosition; + if (textFieldRef.current) { + const inputElement = textFieldRef.current.querySelector("input") || textFieldRef.current; + if (inputElement && typeof inputElement.selectionStart === "number") { + cursorPos = inputElement.selectionStart; + } + } + + // Find the % that triggered the autocomplete + const lastPercentIndex = currentValue.lastIndexOf("%", cursorPos - 1); + + if (lastPercentIndex !== -1) { + // Replace from % to cursor position with the selected variable + const beforePercent = currentValue.substring(0, lastPercentIndex); + const afterCursor = currentValue.substring(cursorPos); + const newValue = beforePercent + variableString + afterCursor; + + // Create synthetic event for onChange + const syntheticEvent = { + target: { + name: textFieldRef.current?.name || "", + value: newValue, + }, + }; + + onChange(syntheticEvent); + + // Set cursor position after the inserted variable + setTimeout(() => { + if (textFieldRef.current) { + const newCursorPos = lastPercentIndex + variableString.length; + + // Access the actual input element for Material-UI TextField + const inputElement = + textFieldRef.current.querySelector("input") || textFieldRef.current; + if (inputElement && inputElement.setSelectionRange) { + inputElement.setSelectionRange(newCursorPos, newCursorPos); + inputElement.focus(); + } + setCursorPosition(newCursorPos); + } + }, 0); + } + + closeAutocomplete(); + }, + [value, cursorPosition, onChange, closeAutocomplete] + ); + + // Handle key events + const handleKeyDown = (event) => { + if (showAutocomplete) { + // Let the autocomplete handle arrow keys and enter + if (["ArrowDown", "ArrowUp", "Enter", "Tab"].includes(event.key)) { + return; // Let autocomplete handle these + } + + // Close autocomplete on Escape + if (event.key === "Escape") { + closeAutocomplete(); + event.preventDefault(); + } + } + + // Call original onKeyDown if provided + if (textFieldProps.onKeyDown) { + textFieldProps.onKeyDown(event); + } + }; + + // Close autocomplete when clicking outside + useEffect(() => { + const handleClickOutside = (event) => { + if ( + showAutocomplete && + textFieldRef.current && + !textFieldRef.current.contains(event.target) + ) { + // Check if click is on autocomplete dropdown + const autocompleteElement = document.querySelector("[data-cipp-autocomplete]"); + if (autocompleteElement && autocompleteElement.contains(event.target)) { + return; // Don't close if clicking inside autocomplete + } + + closeAutocomplete(); + } + }; + + document.addEventListener("mousedown", handleClickOutside); + return () => document.removeEventListener("mousedown", handleClickOutside); + }, [showAutocomplete]); + + return ( + <> + + + + + ); +}; diff --git a/src/components/CippComponents/CippTranslations.jsx b/src/components/CippComponents/CippTranslations.jsx index ebdbca9238bf..af96b19cd027 100644 --- a/src/components/CippComponents/CippTranslations.jsx +++ b/src/components/CippComponents/CippTranslations.jsx @@ -36,6 +36,8 @@ export const CippTranslations = { portal_security: "Security Portal", portal_compliance: "Compliance Portal", portal_sharepoint: "SharePoint Portal", + portal_platform: "Power Platform Portal", + portal_bi: "Power BI Portal", "@odata.type": "Type", roleDefinitionId: "GDAP Role", FromIP: "From IP", @@ -49,4 +51,12 @@ export const CippTranslations = { sendtoIntegration: "Send Notifications to Integration", includeTenantId: "Include Tenant ID in Notifications", logsToInclude: "Logs to Include in notifications", + assignmentFilterManagementType: "Filter Type", + microsoftSupport: "Microsoft Support", + syndicatePartner: "Syndicate Partner", + breadthPartner: "Breadth Partner", + breadthPartnerDelegatedAdmin: "Breadth Partner (Delegated)", + resellerPartnerDelegatedAdmin: "Direct Reseller", + valueAddedResellerPartnerDelegatedAdmin: "Indirect Reseller", + unknownFutureValue: "Unknown", }; diff --git a/src/components/CippComponents/CippTransportRuleDrawer.jsx b/src/components/CippComponents/CippTransportRuleDrawer.jsx new file mode 100644 index 000000000000..37e4bcf308fb --- /dev/null +++ b/src/components/CippComponents/CippTransportRuleDrawer.jsx @@ -0,0 +1,1668 @@ +import React, { useState, useEffect, useMemo, useCallback, cloneElement } from "react"; +import { Button, Divider, Typography, Alert, Box } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm, useWatch } from "react-hook-form"; +import { RocketLaunch, Edit } from "@mui/icons-material"; +import { CippOffCanvas } from "./CippOffCanvas"; +import CippFormComponent from "./CippFormComponent"; +import { CippFormDomainSelector } from "./CippFormDomainSelector"; +import { CippApiResults } from "./CippApiResults"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; +import { useQueryClient } from "@tanstack/react-query"; + +export const CippTransportRuleDrawer = ({ + buttonText = "New Transport Rule", + isEditMode = false, + ruleId = null, + requiredPermissions = [], + PermissionButton = Button, + onSuccess = () => {}, + drawerVisible: controlledDrawerVisible, + setDrawerVisible: controlledSetDrawerVisible, + rowAction = false, +}) => { + const currentTenant = useSettings().currentTenant; + const [internalDrawerVisible, internalSetDrawerVisible] = useState(false); + const drawerVisible = controlledDrawerVisible !== undefined ? controlledDrawerVisible : internalDrawerVisible; + const setDrawerVisible = controlledSetDrawerVisible !== undefined ? controlledSetDrawerVisible : internalSetDrawerVisible; + + // Fetch existing rule data in edit mode + const ruleInfo = ApiGetCall({ + url: `/api/ListTransportRules?tenantFilter=${currentTenant}&id=${ruleId}`, + queryKey: `ListTransportRules-${ruleId}`, + waiting: !!drawerVisible || !!isEditMode || !!ruleId, + }); + + // Fetch all rules for priority suggestion in create mode (shares cache key with list page) + const allRulesInfo = ApiGetCall({ + url: `/api/ListTransportRules?tenantFilter=${currentTenant}`, + queryKey: `List Transport Rules For Priority - ${currentTenant}`, + waiting: !!drawerVisible, + }); + + // Default form values + const defaultFormValues = useMemo( + () => ({ + Enabled: true, + Mode: { value: "Enforce", label: "Enforce" }, + StopRuleProcessing: false, + SenderAddressLocation: { value: "Header", label: "Header" }, + applyToAllMessages: false, + tenantFilter: currentTenant, + Name: "", + Priority: "", + Comments: "", + conditionType: [], + actionType: [], + exceptionType: [], + }), + [currentTenant] + ); + + const formControl = useForm({ + mode: "onChange", + defaultValues: defaultFormValues, + }); + + const [selectedConditions, setSelectedConditions] = useState([]); + const [selectedActions, setSelectedActions] = useState([]); + const [selectedExceptions, setSelectedExceptions] = useState([]); + + const conditionTypeWatch = useWatch({ control: formControl.control, name: "conditionType" }); + const actionTypeWatch = useWatch({ control: formControl.control, name: "actionType" }); + const exceptionTypeWatch = useWatch({ control: formControl.control, name: "exceptionType" }); + const applyToAllMessagesWatch = useWatch({ control: formControl.control, name: "applyToAllMessages" }); + + // API call for submit + const submitRule = ApiPostCall({ + urlFromData: true, + }); + + // Helper to convert ISO8601 date string to Unix timestamp (seconds) + const iso8601ToUnixTimestamp = (dateString) => { + if (!dateString) return ""; + const d = new Date(dateString); + if (isNaN(d.getTime())) return ""; + return Math.floor(d.getTime() / 1000); + }; + + // Helper to convert Enable/Disable into a usable bool for switches + const boolHelper = (boolValue) => { + if (boolValue === "Enabled") return true; + return false; + }; + + // Memoize processed rule data + const processedRuleData = useMemo(() => { + if (!ruleInfo.isSuccess || !ruleInfo.data || !isEditMode) { + return null; + } + + const rule = ruleInfo.data?.Results + ? (Array.isArray(ruleInfo.data.Results) ? ruleInfo.data.Results[0] : ruleInfo.data.Results) + : (Array.isArray(ruleInfo.data) ? ruleInfo.data[0] : ruleInfo.data); + + if (!rule) { + return null; + } + + // Map of condition field names to their display labels + const conditionFieldMap = { + From: "The sender is...", + FromScope: "The sender is located...", + FromMemberOf: "The sender is a member of...", + SentTo: "The recipient is...", + SentToScope: "The recipient is located...", + SentToMemberOf: "The recipient is a member of...", + SubjectContainsWords: "Subject contains words...", + SubjectMatchesPatterns: "Subject matches patterns...", + SubjectOrBodyContainsWords: "Subject or body contains words...", + SubjectOrBodyMatchesPatterns: "Subject or body matches patterns...", + FromAddressContainsWords: "Sender address contains words...", + FromAddressMatchesPatterns: "Sender address matches patterns...", + AttachmentContainsWords: "Attachment content contains words...", + AttachmentMatchesPatterns: "Attachment content matches patterns...", + AttachmentNameMatchesPatterns: "Attachment name matches patterns...", + AttachmentPropertyContainsWords: "Attachment properties contain words...", + AttachmentExtensionMatchesWords: "Attachment extension is...", + AttachmentHasExecutableContent: "Attachment has executable content", + AttachmentIsPasswordProtected: "Attachment is password protected", + AttachmentIsUnsupported: "Attachment type is unsupported", + AttachmentProcessingLimitExceeded: "Attachment processing limit exceeded", + AttachmentSizeOver: "Attachment size is greater than...", + MessageSizeOver: "Message size is greater than...", + SCLOver: "SCL is greater than or equal to...", + WithImportance: "Message importance is...", + MessageTypeMatches: "Message type is...", + SenderDomainIs: "Sender domain is...", + RecipientDomainIs: "Recipient domain is...", + SenderIpRanges: "Sender IP address belongs to any of these ranges...", + HeaderContainsWords: "Message header contains words...", + HeaderMatchesPatterns: "Message header matches patterns...", + AnyOfToHeader: "Any To header contains...", + AnyOfToHeaderMemberOf: "Any To header is a member of...", + AnyOfCcHeader: "Any Cc header contains...", + AnyOfCcHeaderMemberOf: "Any Cc header is a member of...", + AnyOfToCcHeader: "Any To or Cc header contains...", + AnyOfToCcHeaderMemberOf: "Any To or Cc header is a member of...", + RecipientAddressContainsWords: "Recipient address contains words...", + RecipientAddressMatchesPatterns: "Recipient address matches patterns...", + AnyOfRecipientAddressContainsWords: "Any recipient address contains words...", + AnyOfRecipientAddressMatchesPatterns: "Any recipient address matches patterns...", + }; + + const actionFieldMap = { + DeleteMessage: "Delete the message without notifying anyone", + Quarantine: "Quarantine the message", + RedirectMessageTo: "Redirect the message to...", + RouteMessageOutboundConnector: "Route the message using the connector named...", + BlindCopyTo: "Add recipients to the Bcc box...", + CopyTo: "Add recipients to the Cc box...", + ModerateMessageByUser: "Forward the message for approval to...", + ModerateMessageByManager: "Forward the message for approval to the sender's manager", + RejectMessageReasonText: "Reject the message with explanation...", + PrependSubject: "Prepend the subject with...", + SetSCL: "Set spam confidence level (SCL) to...", + SetHeaderName: "Set message header...", + RemoveHeader: "Remove message header...", + ApplyClassification: "Apply message classification...", + ApplyHtmlDisclaimerText: "Apply HTML disclaimer...", + GenerateIncidentReport: "Generate incident report and send to...", + GenerateNotification: "Notify the sender with a message...", + ApplyOME: "Apply Office 365 Message Encryption", + }; + + // Detect active conditions + const activeConditions = []; + Object.keys(conditionFieldMap).forEach(field => { + const value = rule[field]; + if (value !== null && value !== undefined && value !== false && value !== "") { + activeConditions.push({ + value: field, + label: conditionFieldMap[field] + }); + } + }); + + // Detect active actions + const activeActions = []; + Object.keys(actionFieldMap).forEach(field => { + const value = rule[field]; + if (field === "RejectMessageReasonText" && (rule.RejectMessageReasonText || rule.RejectMessageEnhancedStatusCode)) { + activeActions.push({ value: "RejectMessage", label: actionFieldMap[field] }); + } else if (field === "SetHeaderName" && (rule.SetHeaderName || rule.SetHeaderValue)) { + activeActions.push({ value: "SetHeader", label: actionFieldMap[field] }); + } else if (field === "ApplyHtmlDisclaimerText" && rule.ApplyHtmlDisclaimerText) { + activeActions.push({ value: "ApplyHtmlDisclaimer", label: actionFieldMap[field] }); + } else if (field === "ModerateMessageByManager" && value === true) { + activeActions.push({ value: field, label: actionFieldMap[field] }); + } else if (value !== null && value !== undefined && value !== false && value !== "" && + field !== "RejectMessageReasonText" && field !== "SetHeaderName" && + field !== "ApplyHtmlDisclaimerText" && field !== "ModerateMessageByManager") { + activeActions.push({ value: field, label: actionFieldMap[field] }); + } + }); + + // Detect active exceptions + const activeExceptions = []; + Object.keys(conditionFieldMap).forEach(field => { + const exceptionField = `ExceptIf${field}`; + const value = rule[exceptionField]; + if (value !== null && value !== undefined && value !== false && value !== "") { + activeExceptions.push({ + value: exceptionField, + label: conditionFieldMap[field] + }); + } + }); + + // Build form data + const formData = { + Name: rule.Name || "", + Priority: rule.Priority ?? "", + Comments: rule.Comments || "", + Enabled: boolHelper(rule.State), + Mode: rule.Mode ? { value: rule.Mode, label: rule.Mode } : { value: "Enforce", label: "Enforce" }, + SetAuditSeverity: rule.SetAuditSeverity + ? { value: rule.SetAuditSeverity, label: rule.SetAuditSeverity } + : undefined, + SenderAddressLocation: rule.SenderAddressLocation + ? { value: rule.SenderAddressLocation, label: rule.SenderAddressLocation } + : { value: "Header", label: "Header" }, + StopRuleProcessing: rule.StopRuleProcessing || false, + ActivationDate: iso8601ToUnixTimestamp(rule.ActivationDate), + ExpiryDate: iso8601ToUnixTimestamp(rule.ExpiryDate), + applyToAllMessages: activeConditions.length === 0, + conditionType: activeConditions, + actionType: activeActions, + exceptionType: activeExceptions, + tenantFilter: currentTenant, + }; + + // Add all condition values + Object.keys(conditionFieldMap).forEach(field => { + if (rule[field] !== null && rule[field] !== undefined) { + if (field === "FromScope" || field === "SentToScope") { + formData[field] = rule[field] + ? { value: rule[field], label: rule[field] === "InOrganization" ? "Inside the organization" : "Outside the organization" } + : undefined; + } else if (field === "WithImportance") { + formData[field] = rule[field] + ? { value: rule[field], label: rule[field] } + : undefined; + } else if (field === "MessageTypeMatches") { + formData[field] = rule[field] + ? { value: rule[field], label: rule[field] } + : undefined; + } else if (field === "SCLOver") { + formData[field] = rule[field] !== null + ? { value: rule[field].toString(), label: rule[field].toString() } + : undefined; + } else if (field === "SenderIpRanges") { + // Transform array of IP strings to autocomplete format + if (Array.isArray(rule[field])) { + formData[field] = rule[field].map(ip => ({ value: ip, label: ip })); + } else { + formData[field] = rule[field]; + } + } else if ( + // Fields that use creatable autocomplete with API (users/groups) + field === "From" || field === "SentTo" || + field === "AnyOfToHeader" || field === "AnyOfCcHeader" || field === "AnyOfToCcHeader" || + field === "FromMemberOf" || field === "SentToMemberOf" || + field === "AnyOfToHeaderMemberOf" || field === "AnyOfCcHeaderMemberOf" || field === "AnyOfToCcHeaderMemberOf" + ) { + // Transform array of email/UPN strings to autocomplete format + if (Array.isArray(rule[field])) { + formData[field] = rule[field].map(item => ({ value: item, label: item })); + } else { + formData[field] = rule[field]; + } + } else { + formData[field] = rule[field]; + } + } + if (field === "HeaderContainsWords" && rule.HeaderContainsMessageHeader) { + formData.HeaderContainsWordsMessageHeader = rule.HeaderContainsMessageHeader; + } + if (field === "HeaderMatchesPatterns" && rule.HeaderMatchesMessageHeader) { + formData.HeaderMatchesPatternsMessageHeader = rule.HeaderMatchesMessageHeader; + } + }); + + // Add all action values + if (rule.RejectMessageReasonText) formData.RejectMessageReasonText = rule.RejectMessageReasonText; + if (rule.RejectMessageEnhancedStatusCode) formData.RejectMessageEnhancedStatusCode = rule.RejectMessageEnhancedStatusCode; + if (rule.SetHeaderName) formData.SetHeaderName = rule.SetHeaderName; + if (rule.SetHeaderValue) formData.SetHeaderValue = rule.SetHeaderValue; + if (rule.ApplyHtmlDisclaimerText) formData.ApplyHtmlDisclaimerText = rule.ApplyHtmlDisclaimerText; + if (rule.ApplyHtmlDisclaimerLocation) { + formData.ApplyHtmlDisclaimerLocation = { value: rule.ApplyHtmlDisclaimerLocation, label: rule.ApplyHtmlDisclaimerLocation }; + } + if (rule.ApplyHtmlDisclaimerFallbackAction) { + formData.ApplyHtmlDisclaimerFallbackAction = { value: rule.ApplyHtmlDisclaimerFallbackAction, label: rule.ApplyHtmlDisclaimerFallbackAction }; + } + if (rule.IncidentReportContent) { + const incidentReportContentValues = Array.isArray(rule.IncidentReportContent) + ? rule.IncidentReportContent + : rule.IncidentReportContent + .split(",") + .map((item) => item.trim()) + .filter(Boolean); + formData.IncidentReportContent = incidentReportContentValues.map((item) => ({ value: item, label: item })); + } + + Object.keys(actionFieldMap).forEach(field => { + if (rule[field] !== null && rule[field] !== undefined && !formData[field]) { + if (field === "SetSCL" && rule[field] !== null) { + formData[field] = { value: rule[field].toString(), label: rule[field].toString() }; + } else if (field === "RouteMessageOutboundConnector") { + formData[field] = { value: rule[field], label: rule[field] }; + } else { + formData[field] = rule[field]; + } + } + }); + + // Add all exception values + Object.keys(conditionFieldMap).forEach(field => { + const exceptionField = `ExceptIf${field}`; + if (rule[exceptionField] !== null && rule[exceptionField] !== undefined) { + if (field === "FromScope" || field === "SentToScope") { + formData[exceptionField] = rule[exceptionField] + ? { value: rule[exceptionField], label: rule[exceptionField] === "InOrganization" ? "Inside the organization" : "Outside the organization" } + : undefined; + } else if (field === "WithImportance") { + formData[exceptionField] = rule[exceptionField] + ? { value: rule[exceptionField], label: rule[exceptionField] } + : undefined; + } else if (field === "MessageTypeMatches") { + formData[exceptionField] = rule[exceptionField] + ? { value: rule[exceptionField], label: rule[exceptionField] } + : undefined; + } else if (field === "SCLOver") { + formData[exceptionField] = rule[exceptionField] !== null + ? { value: rule[exceptionField].toString(), label: rule[exceptionField].toString() } + : undefined; + } else if (field === "SenderIpRanges") { + // Transform array of IP strings to autocomplete format + if (Array.isArray(rule[exceptionField])) { + formData[exceptionField] = rule[exceptionField].map(ip => ({ value: ip, label: ip })); + } else { + formData[exceptionField] = rule[exceptionField]; + } + } else if ( + // Fields that use creatable autocomplete with API (users/groups) + field === "From" || field === "SentTo" || + field === "AnyOfToHeader" || field === "AnyOfCcHeader" || field === "AnyOfToCcHeader" || + field === "FromMemberOf" || field === "SentToMemberOf" || + field === "AnyOfToHeaderMemberOf" || field === "AnyOfCcHeaderMemberOf" || field === "AnyOfToCcHeaderMemberOf" + ) { + // Transform array of email/UPN strings to autocomplete format + if (Array.isArray(rule[exceptionField])) { + formData[exceptionField] = rule[exceptionField].map(item => ({ value: item, label: item })); + } else { + formData[exceptionField] = rule[exceptionField]; + } + } else { + formData[exceptionField] = rule[exceptionField]; + } + } + if (field === "HeaderContainsWords" && rule[`ExceptIfHeaderContainsMessageHeader`]) { + formData.ExceptIfHeaderContainsWordsMessageHeader = rule.ExceptIfHeaderContainsMessageHeader; + } + if (field === "HeaderMatchesPatterns" && rule[`ExceptIfHeaderMatchesMessageHeader`]) { + formData.ExceptIfHeaderMatchesPatternsMessageHeader = rule.ExceptIfHeaderMatchesMessageHeader; + } + }); + + return formData; + }, [ruleInfo.isSuccess, ruleInfo.data, currentTenant, isEditMode]); + + // Reset form with processed data + const resetForm = useCallback(() => { + if (processedRuleData) { + formControl.reset(processedRuleData); + } + }, [processedRuleData, formControl]); + + useEffect(() => { + if (drawerVisible && isEditMode) { + resetForm(); + } + }, [resetForm, drawerVisible, isEditMode]); + + useEffect(() => { + if (!drawerVisible || isEditMode || !Array.isArray(allRulesInfo.data?.Results)) { + return; + } + + const priorities = allRulesInfo.data.Results + .map((rule) => Number(rule?.Priority)) + .filter((priority) => Number.isFinite(priority)); + + if (!priorities.length) { + return; + } + + const currentPriority = formControl.getValues("Priority"); + if (currentPriority === "" || currentPriority === null || currentPriority === undefined) { + formControl.setValue("Priority", Math.max(...priorities) + 1, { + shouldDirty: false, + shouldTouch: false, + }); + } + }, [drawerVisible, isEditMode, allRulesInfo.data, formControl]); + + // Custom data formatter for API submission + const customDataFormatter = useCallback( + (values) => { + const rule = ruleInfo.data?.Results + ? (Array.isArray(ruleInfo.data.Results) ? ruleInfo.data.Results[0] : ruleInfo.data.Results) + : (Array.isArray(ruleInfo.data) ? ruleInfo.data[0] : ruleInfo.data); + + const apiData = { + tenantFilter: currentTenant, + Name: values.Name, + Priority: values.Priority, + Comments: values.Comments, + State: values.Enabled ? "Enabled" : "Disabled", + Mode: values.Mode?.value || values.Mode, + SetAuditSeverity: values.SetAuditSeverity?.value || values.SetAuditSeverity, + SenderAddressLocation: values.SenderAddressLocation?.value || values.SenderAddressLocation, + StopRuleProcessing: values.StopRuleProcessing, + ActivationDate: values.ActivationDate, + ExpiryDate: values.ExpiryDate, + }; + + if (isEditMode && rule) { + apiData.ruleId = rule.Guid || rule.Identity || rule.Name; + } + + const conditionTypes = values.conditionType || []; + conditionTypes.forEach(condition => { + const conditionValue = condition.value || condition; + if (values[conditionValue] !== undefined) { + const fieldValue = values[conditionValue]; + + // Handle single object with value property + if (fieldValue && typeof fieldValue === 'object' && !Array.isArray(fieldValue) && fieldValue.value !== undefined) { + apiData[conditionValue] = fieldValue.value; + } + // Handle array of objects with value property (for creatable autocomplete fields) + else if (Array.isArray(fieldValue)) { + apiData[conditionValue] = fieldValue.map(item => { + if (item && typeof item === 'object' && item.value !== undefined) { + return item.value; + } + return item; + }); + } + // Handle plain values + else { + apiData[conditionValue] = fieldValue; + } + } + if (conditionValue === "HeaderContainsWords" && values.HeaderContainsWordsMessageHeader) { + apiData.HeaderContainsMessageHeader = values.HeaderContainsWordsMessageHeader; + apiData.HeaderContainsWords = values.HeaderContainsWords; + } + if (conditionValue === "HeaderMatchesPatterns" && values.HeaderMatchesPatternsMessageHeader) { + apiData.HeaderMatchesMessageHeader = values.HeaderMatchesPatternsMessageHeader; + apiData.HeaderMatchesPatterns = values.HeaderMatchesPatterns; + } + }); + + const actionTypes = values.actionType || []; + actionTypes.forEach(action => { + const actionValue = action.value || action; + + if (actionValue === "RejectMessage") { + if (values.RejectMessageReasonText) { + apiData.RejectMessageReasonText = values.RejectMessageReasonText; + } + if (values.RejectMessageEnhancedStatusCode) { + apiData.RejectMessageEnhancedStatusCode = values.RejectMessageEnhancedStatusCode; + } + } else if (actionValue === "SetHeader") { + if (values.SetHeaderName) apiData.SetHeaderName = values.SetHeaderName; + if (values.SetHeaderValue) apiData.SetHeaderValue = values.SetHeaderValue; + } else if (actionValue === "ApplyHtmlDisclaimer") { + if (values.ApplyHtmlDisclaimerText) { + apiData.ApplyHtmlDisclaimerText = values.ApplyHtmlDisclaimerText; + } + if (values.ApplyHtmlDisclaimerLocation) { + const location = values.ApplyHtmlDisclaimerLocation; + apiData.ApplyHtmlDisclaimerLocation = location?.value || location; + } + if (values.ApplyHtmlDisclaimerFallbackAction) { + const fallback = values.ApplyHtmlDisclaimerFallbackAction; + apiData.ApplyHtmlDisclaimerFallbackAction = fallback?.value || fallback; + } + } else if (actionValue === "GenerateIncidentReport") { + if (values.GenerateIncidentReport !== undefined) { + const fieldValue = values.GenerateIncidentReport; + apiData.GenerateIncidentReport = + fieldValue && typeof fieldValue === "object" && fieldValue.value !== undefined + ? fieldValue.value + : fieldValue; + } + if (values.IncidentReportContent !== undefined) { + const fieldValue = values.IncidentReportContent; + const incidentReportValues = Array.isArray(fieldValue) + ? fieldValue.map((item) => { + if (item && typeof item === "object" && item.value !== undefined) { + return item.value; + } + return item; + }) + : [fieldValue]; + apiData.IncidentReportContent = incidentReportValues.filter(Boolean).join(","); + } + } else if (values[actionValue] !== undefined) { + const fieldValue = values[actionValue]; + + // Handle single object with value property + if (fieldValue && typeof fieldValue === 'object' && !Array.isArray(fieldValue) && fieldValue.value !== undefined) { + apiData[actionValue] = fieldValue.value; + } + // Handle array of objects with value property (for creatable autocomplete fields) + else if (Array.isArray(fieldValue)) { + apiData[actionValue] = fieldValue.map(item => { + if (item && typeof item === 'object' && item.value !== undefined) { + return item.value; + } + return item; + }); + } + // Handle plain values + else { + apiData[actionValue] = fieldValue; + } + } + }); + + const exceptionTypes = values.exceptionType || []; + exceptionTypes.forEach(exception => { + const exceptionValue = exception.value || exception; + if (values[exceptionValue] !== undefined) { + const fieldValue = values[exceptionValue]; + + // Handle single object with value property + if (fieldValue && typeof fieldValue === 'object' && !Array.isArray(fieldValue) && fieldValue.value !== undefined) { + apiData[exceptionValue] = fieldValue.value; + } + // Handle array of objects with value property (for creatable autocomplete fields) + else if (Array.isArray(fieldValue)) { + apiData[exceptionValue] = fieldValue.map(item => { + if (item && typeof item === 'object' && item.value !== undefined) { + return item.value; + } + return item; + }); + } + // Handle plain values + else { + apiData[exceptionValue] = fieldValue; + } + } + if (exceptionValue === "ExceptIfHeaderContainsWords" && values.ExceptIfHeaderContainsWordsMessageHeader) { + apiData.ExceptIfHeaderContainsMessageHeader = values.ExceptIfHeaderContainsWordsMessageHeader; + apiData.ExceptIfHeaderContainsWords = values.ExceptIfHeaderContainsWords; + } + if (exceptionValue === "ExceptIfHeaderMatchesPatterns" && values.ExceptIfHeaderMatchesPatternsMessageHeader) { + apiData.ExceptIfHeaderMatchesMessageHeader = values.ExceptIfHeaderMatchesPatternsMessageHeader; + apiData.ExceptIfHeaderMatchesPatterns = values.ExceptIfHeaderMatchesPatterns; + } + }); + + return apiData; + }, + [currentTenant, ruleInfo.data, isEditMode] + ); + + // Helper function to get field names for a condition + const getConditionFieldNames = (conditionValue) => { + const fields = [conditionValue]; + if (conditionValue === "HeaderContainsWords") { + fields.push("HeaderContainsWordsMessageHeader"); + } else if (conditionValue === "HeaderMatchesPatterns") { + fields.push("HeaderMatchesPatternsMessageHeader"); + } + return fields; + }; + + // Helper function to get field names for an action + const getActionFieldNames = (actionValue) => { + const fields = []; + switch (actionValue) { + case "RejectMessage": + fields.push("RejectMessageReasonText", "RejectMessageEnhancedStatusCode"); + break; + case "SetHeader": + fields.push("SetHeaderName", "SetHeaderValue"); + break; + case "ApplyHtmlDisclaimer": + fields.push("ApplyHtmlDisclaimerText", "ApplyHtmlDisclaimerLocation", "ApplyHtmlDisclaimerFallbackAction"); + break; + default: + fields.push(actionValue); + } + return fields; + }; + + // Update selected conditions and clean up removed ones + useEffect(() => { + const newConditions = conditionTypeWatch || []; + const newConditionValues = newConditions.map(c => c.value || c); + const oldConditionValues = selectedConditions.map(c => c.value || c); + + const removedConditions = oldConditionValues.filter( + oldVal => !newConditionValues.includes(oldVal) + ); + + removedConditions.forEach(conditionValue => { + const fieldNames = getConditionFieldNames(conditionValue); + fieldNames.forEach(fieldName => { + formControl.setValue(fieldName, undefined); + }); + }); + + setSelectedConditions(newConditions); + }, [conditionTypeWatch]); + + // Update selected actions and clean up removed ones + useEffect(() => { + const newActions = actionTypeWatch || []; + const newActionValues = newActions.map(a => a.value || a); + const oldActionValues = selectedActions.map(a => a.value || a); + + const removedActions = oldActionValues.filter( + oldVal => !newActionValues.includes(oldVal) + ); + + removedActions.forEach(actionValue => { + const fieldNames = getActionFieldNames(actionValue); + fieldNames.forEach(fieldName => { + formControl.setValue(fieldName, undefined); + }); + }); + + setSelectedActions(newActions); + }, [actionTypeWatch]); + + // Update selected exceptions and clean up removed ones + useEffect(() => { + const newExceptions = exceptionTypeWatch || []; + const newExceptionValues = newExceptions.map(e => e.value || e); + const oldExceptionValues = selectedExceptions.map(e => e.value || e); + + const removedExceptions = oldExceptionValues.filter( + oldVal => !newExceptionValues.includes(oldVal) + ); + + removedExceptions.forEach(exceptionValue => { + const baseCondition = exceptionValue.replace("ExceptIf", ""); + const fieldNames = getConditionFieldNames(baseCondition).map( + field => field.includes("MessageHeader") ? `ExceptIf${field}` : exceptionValue + ); + fieldNames.forEach(fieldName => { + formControl.setValue(fieldName, undefined); + }); + }); + + setSelectedExceptions(newExceptions); + }, [exceptionTypeWatch]); + + // Handle "Apply to all messages" logic + useEffect(() => { + if (applyToAllMessagesWatch) { + formControl.setValue("conditionType", []); + setSelectedConditions([]); + } + }, [applyToAllMessagesWatch, formControl]); + + // Disable "Apply to all messages" when conditions are selected + useEffect(() => { + if (conditionTypeWatch && conditionTypeWatch.length > 0) { + formControl.setValue("applyToAllMessages", false); + } + }, [conditionTypeWatch, formControl]); + + // Condition options + const conditionOptions = [ + { value: "From", label: "The sender is..." }, + { value: "FromScope", label: "The sender is located..." }, + { value: "FromMemberOf", label: "The sender is a member of..." }, + { value: "SentTo", label: "The recipient is..." }, + { value: "SentToScope", label: "The recipient is located..." }, + { value: "SentToMemberOf", label: "The recipient is a member of..." }, + { value: "SubjectContainsWords", label: "Subject contains words..." }, + { value: "SubjectMatchesPatterns", label: "Subject matches patterns..." }, + { value: "SubjectOrBodyContainsWords", label: "Subject or body contains words..." }, + { value: "SubjectOrBodyMatchesPatterns", label: "Subject or body matches patterns..." }, + { value: "FromAddressContainsWords", label: "Sender address contains words..." }, + { value: "FromAddressMatchesPatterns", label: "Sender address matches patterns..." }, + { value: "AttachmentContainsWords", label: "Attachment content contains words..." }, + { value: "AttachmentMatchesPatterns", label: "Attachment content matches patterns..." }, + { value: "AttachmentNameMatchesPatterns", label: "Attachment name matches patterns..." }, + { value: "AttachmentPropertyContainsWords", label: "Attachment properties contain words..." }, + { value: "AttachmentExtensionMatchesWords", label: "Attachment extension is..." }, + { value: "AttachmentHasExecutableContent", label: "Attachment has executable content" }, + { value: "AttachmentIsPasswordProtected", label: "Attachment is password protected" }, + { value: "AttachmentIsUnsupported", label: "Attachment type is unsupported" }, + { value: "AttachmentProcessingLimitExceeded", label: "Attachment processing limit exceeded" }, + { value: "AttachmentSizeOver", label: "Attachment size is greater than..." }, + { value: "MessageSizeOver", label: "Message size is greater than..." }, + { value: "SCLOver", label: "SCL is greater than or equal to..." }, + { value: "WithImportance", label: "Message importance is..." }, + { value: "MessageTypeMatches", label: "Message type is..." }, + { value: "SenderDomainIs", label: "Sender domain is..." }, + { value: "RecipientDomainIs", label: "Recipient domain is..." }, + { value: "SenderIpRanges", label: "Sender IP address belongs to any of these ranges..." }, + { value: "HeaderContainsWords", label: "Message header contains words..." }, + { value: "HeaderMatchesPatterns", label: "Message header matches patterns..." }, + { value: "AnyOfToHeader", label: "Any To header contains..." }, + { value: "AnyOfToHeaderMemberOf", label: "Any To header is a member of..." }, + { value: "AnyOfCcHeader", label: "Any Cc header contains..." }, + { value: "AnyOfCcHeaderMemberOf", label: "Any Cc header is a member of..." }, + { value: "AnyOfToCcHeader", label: "Any To or Cc header contains..." }, + { value: "AnyOfToCcHeaderMemberOf", label: "Any To or Cc header is a member of..." }, + { value: "RecipientAddressContainsWords", label: "Recipient address contains words..." }, + { value: "RecipientAddressMatchesPatterns", label: "Recipient address matches patterns..." }, + { value: "AnyOfRecipientAddressContainsWords", label: "Any recipient address contains words..." }, + { value: "AnyOfRecipientAddressMatchesPatterns", label: "Any recipient address matches patterns..." }, + ]; + + // Action options + const actionOptions = [ + { value: "DeleteMessage", label: "Delete the message without notifying anyone" }, + { value: "Quarantine", label: "Quarantine the message" }, + { value: "RedirectMessageTo", label: "Redirect the message to..." }, + { value: "RouteMessageOutboundConnector", label: "Route the message using the connector named..." }, + { value: "BlindCopyTo", label: "Add recipients to the Bcc box..." }, + { value: "CopyTo", label: "Add recipients to the Cc box..." }, + { value: "ModerateMessageByUser", label: "Forward the message for approval to..." }, + { value: "ModerateMessageByManager", label: "Forward the message for approval to the sender's manager" }, + { value: "RejectMessage", label: "Reject the message with explanation..." }, + { value: "PrependSubject", label: "Prepend the subject with..." }, + { value: "SetSCL", label: "Set spam confidence level (SCL) to..." }, + { value: "SetHeader", label: "Set message header..." }, + { value: "RemoveHeader", label: "Remove message header..." }, + { value: "ApplyClassification", label: "Apply message classification..." }, + { value: "ApplyHtmlDisclaimer", label: "Apply HTML disclaimer..." }, + { value: "GenerateIncidentReport", label: "Generate incident report and send to..." }, + { value: "GenerateNotification", label: "Notify the sender with a message..." }, + { value: "ApplyOME", label: "Apply Office 365 Message Encryption" }, + ]; + const incidentReportContentOptions = [ + { value: "Sender", label: "Sender" }, + { value: "Recipients", label: "Recipients" }, + { value: "Subject", label: "Subject" }, + { value: "CC", label: "CC" }, + { value: "BCC", label: "BCC" }, + { value: "Severity", label: "Severity" }, + { value: "RuleDetections", label: "RuleDetections" }, + { value: "FalsePositive", label: "FalsePositive" }, + { value: "IdMatch", label: "IdMatch" }, + { value: "AttachOriginalMail", label: "AttachOriginalMail" }, + ]; + + const renderConditionField = (condition) => { + const conditionValue = condition.value || condition; + const conditionLabel = condition.label || condition; + + switch (conditionValue) { + case "From": + case "SentTo": + case "AnyOfToHeader": + case "AnyOfCcHeader": + case "AnyOfToCcHeader": + return ( + + `${option.displayName} (${option.userPrincipalName})`, + valueField: "userPrincipalName", + dataKey: "Results", + }} + /> + + ); + + case "FromMemberOf": + case "SentToMemberOf": + case "AnyOfToHeaderMemberOf": + case "AnyOfCcHeaderMemberOf": + case "AnyOfToCcHeaderMemberOf": + return ( + + `${option.displayName}${option.mail ? ` (${option.mail})` : ''}`, + valueField: "mail", + dataKey: "Results", + }} + /> + + ); + + case "FromScope": + case "SentToScope": + return ( + + + + ); + + case "WithImportance": + return ( + + + + ); + + case "MessageTypeMatches": + return ( + + + + ); + + case "SCLOver": + return ( + + ({ + value: i.toString(), + label: i.toString(), + }))} + /> + + ); + + case "AttachmentSizeOver": + case "MessageSizeOver": + return ( + + + + ); + + case "AttachmentHasExecutableContent": + case "AttachmentIsPasswordProtected": + case "AttachmentIsUnsupported": + case "AttachmentProcessingLimitExceeded": + return ( + + + + ); + + case "AttachmentNameMatchesPatterns": + case "AttachmentPropertyContainsWords": + return ( + + + + ); + + case "SenderDomainIs": + case "RecipientDomainIs": + return ( + + + + ); + + case "SenderIpRanges": + return ( + + + + ); + + case "HeaderContainsWords": + case "HeaderMatchesPatterns": + return ( + + + + + + + + + + + ); + + default: + return ( + + + + ); + } + }; + + const renderActionField = (action) => { + const actionValue = action.value || action; + const actionLabel = action.label || action; + + switch (actionValue) { + case "DeleteMessage": + case "Quarantine": + case "ModerateMessageByManager": + case "ApplyOME": + return ( + + + + ); + + case "RedirectMessageTo": + case "BlindCopyTo": + case "CopyTo": + case "ModerateMessageByUser": + return ( + + `${option.displayName} (${option.userPrincipalName})`, + valueField: "userPrincipalName", + dataKey: "Results", + }} + /> + + ); + + case "GenerateIncidentReport": + return ( + + + + `${option.displayName} (${option.userPrincipalName})`, + valueField: "userPrincipalName", + dataKey: "Results", + }} + /> + + + + + + + ); + + case "RouteMessageOutboundConnector": + return ( + + `${option.Name}`, + valueField: "Name", + dataFilter: (options) => + options.filter((option) => option.rawData?.cippconnectortype === "outbound"), + }} + /> + + ); + + case "SetSCL": + return ( + + ({ + value: i.toString(), + label: i.toString(), + })), + ]} + /> + + ); + + case "RejectMessage": + return ( + + + + + + + + + + + ); + + case "SetHeader": + return ( + + + + + + + + + + + ); + + case "RemoveHeader": + return ( + + + + ); + + case "ApplyHtmlDisclaimer": + return ( + + + + + + + + + + + + + + ); + + case "PrependSubject": + case "ApplyClassification": + case "GenerateNotification": + return ( + + + + ); + + default: + return ( + + + + ); + } + }; + + const renderExceptionField = (exception) => { + const exceptionValue = exception.value || exception; + const baseCondition = exceptionValue.replace("ExceptIf", ""); + const exceptionLabel = exception.label || exception; + + const mockCondition = { value: baseCondition, label: exceptionLabel }; + const field = renderConditionField(mockCondition); + + if (field) { + return cloneElement(field, { + key: exceptionValue, + children: React.Children.map(field.props.children, (child) => { + if (child?.type === CippFormComponent) { + return cloneElement(child, { + name: exceptionValue, + }); + } + if (child?.type === Grid && child.props.container) { + return cloneElement(child, { + children: React.Children.map(child.props.children, (gridChild) => { + if (gridChild?.props?.children?.type === CippFormComponent) { + const formComponent = gridChild.props.children; + const originalName = formComponent.props.name; + const newName = originalName.includes("MessageHeader") + ? `ExceptIf${originalName}` + : exceptionValue; + return cloneElement(gridChild, { + children: cloneElement(formComponent, { + name: newName, + }), + }); + } + return gridChild; + }), + }); + } + return child; + }), + }); + } + return null; + }; + + const handleSubmit = () => { + formControl.trigger(); + const formData = formControl.getValues(); + const apiData = customDataFormatter(formData); + + submitRule.mutate({ + url: "/api/AddEditTransportRule", + data: apiData, + }); + }; + + const handleCloseDrawer = () => { + setDrawerVisible(false); + formControl.reset(defaultFormValues); + setSelectedConditions([]); + setSelectedActions([]); + setSelectedExceptions([]); + }; + + const rule = ruleInfo.data?.Results + ? (Array.isArray(ruleInfo.data.Results) ? ruleInfo.data.Results[0] : ruleInfo.data.Results) + : (Array.isArray(ruleInfo.data) ? ruleInfo.data[0] : ruleInfo.data); + + const queryClient = useQueryClient(); + + useEffect(() => { + if (submitRule.isSuccess) { + queryClient.invalidateQueries({ queryKey: [`ListTransportRules-${ruleId}`]}); + queryClient.invalidateQueries({ queryKey: [`Transport Rules - ${currentTenant}`]}); + onSuccess(); + } + }, [submitRule.isSuccess, queryClient, ruleId, currentTenant, onSuccess]); + + return ( + <> + {rowAction === false && !drawerVisible && ( + setDrawerVisible(true)} + startIcon={isEditMode ? : } + > + {buttonText} + + )} + + + + + } + > + + {/* Basic Information */} + + + Basic Information + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {/* Conditions */} + + + Apply this rule if... + + + + + + + + {applyToAllMessagesWatch && ( + + + This rule will apply to ALL inbound and outbound messages + for the entire organization. + + + )} + + {!applyToAllMessagesWatch && ( + <> + + + Select one or more conditions to target specific messages. If you want this rule to + apply to all messages, enable "Apply to all messages" above. + + + + + + + + {selectedConditions.map((condition) => renderConditionField(condition))} + + )} + + + + {/* Actions */} + + + Do the following... + + + + + + + + {selectedActions.map((action) => renderActionField(action))} + + + + {/* Exceptions */} + + + Except if... (optional) + + + + + ({ + value: `ExceptIf${opt.value}`, + label: opt.label, + }))} + /> + + + {selectedExceptions.map((exception) => renderExceptionField(exception))} + + + + {/* Advanced Settings */} + + + Advanced Settings + + + + + + + + + + + + + + + + + + + + + + + + ); +}; diff --git a/src/components/CippComponents/CippUserActions.jsx b/src/components/CippComponents/CippUserActions.jsx index 5f6c190e474b..0b365b506c77 100644 --- a/src/components/CippComponents/CippUserActions.jsx +++ b/src/components/CippComponents/CippUserActions.jsx @@ -1,7 +1,7 @@ +import { useEffect } from "react"; import { EyeIcon, MagnifyingGlassIcon, TrashIcon } from "@heroicons/react/24/outline"; import { Archive, - Block, Clear, CloudDone, Edit, @@ -9,21 +9,266 @@ import { ForwardToInbox, GroupAdd, LockClock, - LockOpen, LockPerson, LockReset, MeetingRoom, - NoMeetingRoom, Password, PersonOff, PhonelinkLock, PhonelinkSetup, Shortcut, + EditAttributes, + CloudSync, } from "@mui/icons-material"; -import { useSettings } from "/src/hooks/use-settings.js"; +import { getCippLicenseTranslation } from "../../utils/get-cipp-license-translation"; +import { useSettings } from "../../hooks/use-settings.js"; +import { usePermissions } from "../../hooks/use-permissions"; +import { Tooltip, Box } from "@mui/material"; +import CippFormComponent from "./CippFormComponent"; +import { useWatch } from "react-hook-form"; -export const CippUserActions = () => { +// Separate component for Manage Licenses form to avoid hook issues +const ManageLicensesForm = ({ formControl, tenant }) => { + const licenseOperation = useWatch({ + control: formControl.control, + name: "LicenseOperation", + }); + + const removeAllLicenses = useWatch({ + control: formControl.control, + name: "RemoveAllLicenses", + }); + + const replaceAllLicenses = useWatch({ + control: formControl.control, + name: "ReplaceAllLicenses", + }); + + // Handle both string values and object values with .value property + const licenseOpValue = licenseOperation?.value || licenseOperation; + + const isRemoveOperation = licenseOpValue === "Remove"; + const isReplaceOperation = licenseOpValue === "Replace"; + const showLicensesToRemove = isRemoveOperation && !removeAllLicenses; + const showLicensesToReplace = isReplaceOperation && !replaceAllLicenses; + + // Clear fields when operation changes to prevent stale data submission + useEffect(() => { + if (licenseOpValue) { + // Clear all license-related fields when switching operations + if (licenseOpValue === "Add") { + // Clear Remove/Replace specific fields + formControl.setValue("RemoveAllLicenses", false); + formControl.setValue("ReplaceAllLicenses", false); + formControl.setValue("LicensesToRemove", []); + formControl.setValue("LicensesToReplace", []); + } else if (licenseOpValue === "Remove") { + // Clear Add/Replace specific fields + formControl.setValue("ReplaceAllLicenses", false); + formControl.setValue("LicensesToReplace", []); + formControl.setValue("Licenses", []); + } else if (licenseOpValue === "Replace") { + // Clear Remove specific fields + formControl.setValue("RemoveAllLicenses", false); + formControl.setValue("LicensesToRemove", []); + } + } + }, [licenseOpValue, formControl]); + + // Clear LicensesToReplace when ReplaceAllLicenses is toggled + useEffect(() => { + if (isReplaceOperation && replaceAllLicenses) { + formControl.setValue("LicensesToReplace", []); + } + }, [replaceAllLicenses, isReplaceOperation, formControl]); + + return ( + <> + + + {isRemoveOperation && ( + + )} + + {isReplaceOperation && ( + + )} + + {showLicensesToRemove && ( + option.displayName || option.skuPartNumber, + valueField: "skuId", + queryKey: `ListLicenses-${tenant}`, + }} + /> + )} + + {showLicensesToReplace && ( + option.displayName || option.skuPartNumber, + valueField: "skuId", + queryKey: `ListLicenses-${tenant}`, + }} + /> + )} + + {(licenseOpValue === "Add" || isReplaceOperation) && ( + + `${option.displayName || option.skuPartNumber} (${ + option.availableUnits || 0 + } available)`, + valueField: "skuId", + queryKey: `ListLicenses-Available-${tenant}`, + }} + /> + )} + + ); +}; + +// Separate component for Out of Office form to avoid hook issues +const OutOfOfficeForm = ({ formControl }) => { + // Watch the Auto Reply State value + const autoReplyState = useWatch({ + control: formControl.control, + name: "AutoReplyState", + }); + + // Calculate if date fields should be disabled + const areDateFieldsDisabled = autoReplyState?.value !== "Scheduled"; + + return ( + <> + + + + + + + + + + + + + + + + + + + ); +}; + +export const useCippUserActions = () => { const tenant = useSettings().currentTenant; + + const { checkPermissions } = usePermissions(); + const canWriteUser = checkPermissions(["Identity.User.ReadWrite"]); + const canWriteMailbox = checkPermissions(["Exchange.Mailbox.ReadWrite"]); + const canWriteGroup = checkPermissions(["Identity.Group.ReadWrite"]); + return [ { //tested @@ -40,6 +285,7 @@ export const CippUserActions = () => { icon: , color: "success", target: "_self", + condition: () => canWriteUser, }, { //tested @@ -47,19 +293,40 @@ export const CippUserActions = () => { type: "GET", icon: , link: "/identity/administration/users/user/bec?userId=[id]", - confirmText: "Are you sure you want to research this compromised account?", + confirmText: + "Are you sure you want to research if [userPrincipalName] is a compromised account?", multiPost: false, }, { //tested - label: "Create Temporary Access Password", type: "POST", icon: , url: "/api/ExecCreateTAP", data: { ID: "userPrincipalName" }, - confirmText: "Are you sure you want to create a Temporary Access Password?", + fields: [ + { + type: "number", + name: "lifetimeInMinutes", + label: "Lifetime (Minutes)", + placeholder: "Leave blank for default", + }, + { + type: "switch", + name: "isUsableOnce", + label: "One-time use only", + }, + { + type: "datePicker", + name: "startDateTime", + label: "Start Date/Time (leave blank for immediate)", + dateTimeType: "datetime", + }, + ], + confirmText: + "Are you sure you want to create a Temporary Access Password for [userPrincipalName]?", multiPost: false, + condition: () => canWriteUser, }, { //tested @@ -68,8 +335,9 @@ export const CippUserActions = () => { icon: , url: "/api/ExecResetMFA", data: { ID: "userPrincipalName" }, - confirmText: "Are you sure you want to reset MFA for this user?", + confirmText: "Are you sure you want to reset MFA for [userPrincipalName]?", multiPost: false, + condition: () => canWriteUser, }, { //tested @@ -78,7 +346,7 @@ export const CippUserActions = () => { icon: , url: "/api/ExecSendPush", data: { UserEmail: "userPrincipalName" }, - confirmText: "Are you sure you want to send an MFA request?", + confirmText: "Are you sure you want to send an MFA request to [userPrincipalName]?", multiPost: false, }, { @@ -87,7 +355,7 @@ export const CippUserActions = () => { type: "POST", icon: , url: "/api/ExecPerUserMFA", - data: { userId: "userPrincipalName" }, + data: { userId: "id", userPrincipalName: "userPrincipalName" }, fields: [ { type: "autoComplete", @@ -100,29 +368,37 @@ export const CippUserActions = () => { ], multiple: false, creatable: false, + validators: { required: "Please select an MFA state" }, }, ], confirmText: "Are you sure you want to set per-user MFA for these users?", multiPost: false, + condition: () => canWriteUser, }, { //tested - label: "Convert to Shared Mailbox", - type: "POST", - icon: , - url: "/api/ExecConvertMailbox", - data: { ID: "userPrincipalName", MailboxType: "!Shared" }, - confirmText: "Are you sure you want to convert this user to a shared mailbox?", - multiPost: false, - }, - { - label: "Convert to User Mailbox", + label: "Convert Mailbox", type: "POST", icon: , url: "/api/ExecConvertMailbox", - data: { ID: "userPrincipalName", MailboxType: "!Regular" }, - confirmText: "Are you sure you want to convert this user to a user mailbox?", + data: { ID: "userPrincipalName" }, + fields: [ + { + type: "radio", + name: "MailboxType", + label: "Mailbox Type", + options: [ + { label: "User Mailbox", value: "Regular" }, + { label: "Shared Mailbox", value: "Shared" }, + { label: "Room Mailbox", value: "Room" }, + { label: "Equipment Mailbox", value: "Equipment" }, + ], + validators: { required: "Please select a mailbox type" }, + }, + ], + confirmText: "Pick the type of mailbox you want to convert [userPrincipalName] to:", multiPost: false, + condition: () => canWriteMailbox, }, { //tested @@ -131,8 +407,9 @@ export const CippUserActions = () => { icon: , url: "/api/ExecEnableArchive", data: { ID: "userPrincipalName" }, - confirmText: "Are you sure you want to enable the online archive for this user?", + confirmText: "Are you sure you want to enable the online archive for [userPrincipalName]?", multiPost: false, + condition: (row) => canWriteMailbox, }, { //tested @@ -142,52 +419,98 @@ export const CippUserActions = () => { url: "/api/ExecSetOoO", data: { userId: "userPrincipalName", - AutoReplyState: { value: "Enabled" }, tenantFilter: "Tenant", }, - fields: [{ type: "richText", name: "input", label: "Out of Office Message" }], + children: ({ formHook: formControl }) => , confirmText: "Are you sure you want to set the out of office?", multiPost: false, - }, - - { - label: "Disable Out of Office", - type: "POST", - icon: , - url: "/api/ExecSetOoO", - data: { - userId: "userPrincipalName", - AutoReplyState: { value: "Disabled" }, - }, - confirmText: "Are you sure you want to disable the out of office?", - multiPost: false, + condition: () => canWriteMailbox, }, { label: "Add to Group", type: "POST", icon: , url: "/api/EditGroup", - data: { addMember: "userPrincipalName" }, + customDataformatter: (row, action, formData) => { + // Build the member list from selected users + let addMember = []; + if (Array.isArray(row)) { + row + .map((r) => ({ + label: r.displayName, + value: r.id, + addedFields: { + id: r.id, + userPrincipalName: r.userPrincipalName, + displayName: r.displayName, + }, + })) + .forEach((r) => addMember.push(r)); + } else { + addMember.push({ + label: row.displayName, + value: row.id, + addedFields: { + id: row.id, + userPrincipalName: row.userPrincipalName, + displayName: row.displayName, + }, + }); + } + + // Handle multiple groups - return an array of requests (one per group) + const selectedGroups = Array.isArray(formData.groupId) + ? formData.groupId + : [formData.groupId]; + + return selectedGroups.map((group) => ({ + addMember: addMember, + tenantFilter: tenant, + groupId: group, + })); + }, fields: [ { type: "autoComplete", name: "groupId", - label: "Select a group to add the user to", - multiple: false, + label: "Select groups to add the user to", + multiple: true, creatable: false, + validators: { required: "Please select at least one group" }, api: { url: "/api/ListGroups", - labelField: "displayName", + labelField: (option) => + option?.calculatedGroupType + ? `${option.displayName} (${option.calculatedGroupType})` + : (option?.displayName ?? ""), valueField: "id", addedField: { - groupType: "calculatedGroupType", + groupType: "groupType", groupName: "displayName", }, queryKey: `groups-${tenant}`, + showRefresh: true, }, }, ], - confirmText: "Are you sure you want to add the user to this group?", + confirmText: "Are you sure you want to add [userPrincipalName] to the selected groups?", + multiPost: false, + allowResubmit: true, + condition: () => canWriteGroup, + }, + { + label: "Manage Licenses", + type: "POST", + url: "/api/ExecBulkLicense", + icon: , + data: { userIds: "id" }, + multiPost: true, + allowResubmit: true, + children: ({ formHook: formControl }) => ( + + ), + confirmText: "Are you sure you want to manage licenses for the selected users?", + condition: () => canWriteUser, }, { label: "Disable Email Forwarding", @@ -199,8 +522,9 @@ export const CippUserActions = () => { userid: "userPrincipalName", ForwardOption: "!disabled", }, - confirmText: "Are you sure you want to disable forwarding of this user's emails?", + confirmText: "Are you sure you want to disable forwarding of [userPrincipalName]'s emails?", multiPost: false, + condition: () => canWriteMailbox, }, { label: "Pre-provision OneDrive", @@ -208,8 +532,9 @@ export const CippUserActions = () => { icon: , url: "/api/ExecOneDriveProvision", data: { UserPrincipalName: "userPrincipalName" }, - confirmText: "Are you sure you want to pre-provision OneDrive for this user?", + confirmText: "Are you sure you want to pre-provision OneDrive for [userPrincipalName]?", multiPost: false, + condition: () => canWriteUser, }, { label: "Add OneDrive Shortcut", @@ -226,7 +551,8 @@ export const CippUserActions = () => { name: "siteUrl", label: "Select a Site", multiple: false, - creatable: false, + creatable: true, + validators: { required: "Please select or enter a SharePoint site URL" }, api: { url: "/api/ListSites", data: { type: "SharePointSiteUsage", URLOnly: true }, @@ -238,40 +564,29 @@ export const CippUserActions = () => { ], confirmText: "Select a SharePoint site to create a shortcut for:", multiPost: false, + condition: () => canWriteUser, }, { - label: "Block Sign In", + label: "Set Sign In State", type: "POST", - icon: , + icon: , url: "/api/ExecDisableUser", data: { ID: "id" }, - confirmText: "Are you sure you want to block the sign-in for this user?", - multiPost: false, - condition: (row) => row.accountEnabled, - }, - { - label: "Unblock Sign In", - type: "POST", - icon: , - url: "/api/ExecDisableUser", - data: { ID: "id", Enable: true }, - confirmText: "Are you sure you want to unblock sign-in for this user?", - multiPost: false, - condition: (row) => !row.accountEnabled, - }, - { - label: "Reset Password (Must Change)", - type: "POST", - icon: , - url: "/api/ExecResetPass", - data: { - MustChange: true, - ID: "userPrincipalName", - displayName: "displayName", - }, - confirmText: - "Are you sure you want to reset the password for this user? The user must change their password at next logon.", + fields: [ + { + type: "radio", + name: "Enable", + label: "Sign In State", + options: [ + { label: "Enabled", value: true }, + { label: "Disabled", value: false }, + ], + validators: { required: "Please select a sign-in state" }, + }, + ], + confirmText: "Are you sure you want to set the sign-in state for [userPrincipalName]?", multiPost: false, + condition: () => canWriteUser, }, { label: "Reset Password", @@ -279,35 +594,42 @@ export const CippUserActions = () => { icon: , url: "/api/ExecResetPass", data: { - MustChange: false, ID: "userPrincipalName", displayName: "displayName", }, - confirmText: "Are you sure you want to reset the password for this user?", + fields: [ + { + type: "switch", + name: "MustChange", + label: "Must Change Password at Next Logon", + }, + ], + confirmText: "Are you sure you want to reset the password for [userPrincipalName]?", multiPost: false, + condition: () => canWriteUser, }, { - label: "Set Password Never Expires", + label: "Set Password Expiration", type: "POST", icon: , url: "/api/ExecPasswordNeverExpires", data: { userId: "id", userPrincipalName: "userPrincipalName" }, fields: [ { - type: "autoComplete", + type: "radio", name: "PasswordPolicy", label: "Password Policy", options: [ { label: "Disable Password Expiration", value: "DisablePasswordExpiration" }, { label: "Enable Password Expiration", value: "None" }, ], - multiple: false, - creatable: false, + validators: { required: "Please select a password policy" }, }, ], confirmText: - "Set Password Never Expires state for this user. If the password of the user is older than the set expiration date of the organization, the user will be prompted to change their password at their next login.", + "Set Password Never Expires state for [userPrincipalName]. If the password of the user is older than the set expiration date of the organization, the user will be prompted to change their password at their next login.", multiPost: false, + condition: () => canWriteUser, }, { label: "Clear Immutable ID", @@ -317,9 +639,46 @@ export const CippUserActions = () => { data: { ID: "id", }, - confirmText: "Are you sure you want to clear the Immutable ID for this user?", + confirmText: "Are you sure you want to clear the Immutable ID for [userPrincipalName]?", + multiPost: false, + condition: (row) => !row?.onPremisesSyncEnabled && row?.onPremisesImmutableId && canWriteUser, + }, + { + label: "Set Source of Authority", + type: "POST", + url: "/api/ExecSetCloudManaged", + icon: , + data: { + ID: "id", + displayName: "displayName", + type: "!User", + }, + fields: [ + { + type: "radio", + name: "isCloudManaged", + label: "Source of Authority", + options: [ + { label: "Cloud Managed", value: true }, + { label: "On-Premises Managed", value: false }, + ], + validators: { required: "Please select a source of authority" }, + }, + ], + confirmText: + "Are you sure you want to change the source of authority for [userPrincipalName]? Setting it to On-Premises Managed will take until the next sync cycle to show the change.", + multiPost: false, + }, + { + label: "Reprocess License Assignments", + type: "POST", + icon: , + url: "/api/ExecReprocessUserLicenses", + data: { ID: "id", userPrincipalName: "userPrincipalName" }, + confirmText: + "Are you sure you want to reprocess license assignments for [userPrincipalName]?", multiPost: false, - condition: (row) => !row.onPremisesSyncEnabled && row?.onPremisesImmutableId, + condition: (row) => canWriteUser, }, { label: "Revoke all user sessions", @@ -327,8 +686,9 @@ export const CippUserActions = () => { icon: , url: "/api/ExecRevokeSessions", data: { ID: "id", Username: "userPrincipalName" }, - confirmText: "Are you sure you want to revoke all sessions for this user?", + confirmText: "Are you sure you want to revoke all sessions for [userPrincipalName]?", multiPost: false, + condition: () => canWriteUser, }, { label: "Delete User", @@ -336,10 +696,42 @@ export const CippUserActions = () => { icon: , url: "/api/RemoveUser", data: { ID: "id", userPrincipalName: "userPrincipalName" }, - confirmText: "Are you sure you want to delete this user?", + confirmText: "Are you sure you want to delete [userPrincipalName]?", multiPost: false, + condition: () => canWriteUser, + }, + { + label: "Edit Properties", + icon: , + multiPost: true, + noConfirm: true, + customFunction: (users, action, formData) => { + // Handle both single user and multiple users + const userData = Array.isArray(users) ? users : [users]; + + // Store users in session storage to avoid URL length limits + sessionStorage.setItem("patchWizardUsers", JSON.stringify(userData)); + + // Use Next.js router for internal navigation + import("next/router") + .then(({ default: router }) => { + router.push("/identity/administration/users/patch-wizard"); + }) + .catch(() => { + // Fallback to window.location if router is not available + window.location.href = "/identity/administration/users/patch-wizard"; + }); + }, + condition: () => canWriteUser, }, ]; }; +// Legacy wrapper function for backward compatibility - but this should not be used +// Instead, components should use the useCippUserActions hook +export const CippUserActions = () => { + console.warn("CippUserActions() function is deprecated. Use useCippUserActions() hook instead."); + return useCippUserActions(); +}; + export default CippUserActions; diff --git a/src/components/CippComponents/CippUserPhotoManager.jsx b/src/components/CippComponents/CippUserPhotoManager.jsx new file mode 100644 index 000000000000..3d927b2376fb --- /dev/null +++ b/src/components/CippComponents/CippUserPhotoManager.jsx @@ -0,0 +1,417 @@ +import React, { useState, useRef } from "react"; +import { + Box, + Button, + Avatar, + Stack, + Typography, + Alert, + CircularProgress, + IconButton, + Tooltip, + FormControl, + FormLabel, +} from "@mui/material"; +import { PhotoCamera, Delete, AccountCircle } from "@mui/icons-material"; +import { ApiPostCall } from "../../api/ApiCall"; +import PropTypes from "prop-types"; + +export const CippUserPhotoManager = ({ + userId, + tenantFilter, + currentPhotoUrl, + onPhotoChange, + compact = false, +}) => { + const [selectedFile, setSelectedFile] = useState(null); + const [previewUrl, setPreviewUrl] = useState(null); + const [uploadError, setUploadError] = useState(null); + const fileInputRef = useRef(null); + + // API mutation for setting photo + const setPhotoMutation = ApiPostCall({ + urlFromData: true, + }); + + // API mutation for removing photo + const removePhotoMutation = ApiPostCall({ + urlFromData: true, + }); + + const handleFileSelect = (event) => { + const file = event.target.files[0]; + setUploadError(null); + + if (!file) { + return; + } + + // Validate file type + const validTypes = ["image/jpeg", "image/jpg", "image/png"]; + if (!validTypes.includes(file.type)) { + setUploadError("Please select a valid image file (JPEG or PNG)"); + return; + } + + // Validate file size (4MB max for Microsoft Graph) + const maxSize = 4 * 1024 * 1024; // 4MB + if (file.size > maxSize) { + setUploadError( + `File size exceeds 4MB limit. Current size: ${(file.size / (1024 * 1024)).toFixed(2)}MB` + ); + return; + } + + setSelectedFile(file); + + // Create preview + const reader = new FileReader(); + reader.onloadend = () => { + setPreviewUrl(reader.result); + }; + reader.readAsDataURL(file); + }; + + const handleUpload = async () => { + if (!selectedFile) { + return; + } + + setUploadError(null); + + try { + // Convert file to base64 + const reader = new FileReader(); + reader.onloadend = async () => { + const base64Data = reader.result; + + // Upload the photo + await setPhotoMutation.mutateAsync({ + url: "/api/ExecSetUserPhoto", + data: { + userId: userId, + tenantFilter: tenantFilter, + action: "set", + photoData: base64Data, + }, + }); + + // Clear the selection and preview + setSelectedFile(null); + setPreviewUrl(null); + if (fileInputRef.current) { + fileInputRef.current.value = ""; + } + + // Notify parent component + if (onPhotoChange) { + onPhotoChange(); + } + }; + reader.onerror = () => { + setUploadError("Failed to read file"); + }; + reader.readAsDataURL(selectedFile); + } catch (error) { + setUploadError(error.message || "Failed to upload photo"); + } + }; + + const handleRemovePhoto = async () => { + setUploadError(null); + + try { + await removePhotoMutation.mutateAsync({ + url: "/api/ExecSetUserPhoto", + data: { + userId: userId, + tenantFilter: tenantFilter, + action: "remove", + }, + }); + + // Clear any preview + setSelectedFile(null); + setPreviewUrl(null); + if (fileInputRef.current) { + fileInputRef.current.value = ""; + } + + // Notify parent component + if (onPhotoChange) { + onPhotoChange(); + } + } catch (error) { + setUploadError(error.message || "Failed to remove photo"); + } + }; + + const handleCancel = () => { + setSelectedFile(null); + setPreviewUrl(null); + setUploadError(null); + if (fileInputRef.current) { + fileInputRef.current.value = ""; + } + }; + + const isLoading = setPhotoMutation.isPending || removePhotoMutation.isPending; + + // Compact mode - inline with form fields + if (compact) { + return ( + + Profile Picture + + {/* Avatar */} + + + + + {/* Hidden file input */} + + + {/* Action buttons */} + + {!selectedFile ? ( + <> + + {currentPhotoUrl && ( + + )} + + ) : ( + <> + + + + )} + + + {/* Status indicator */} + + {setPhotoMutation.isSuccess && ( + + โœ“ Photo updated + + )} + {removePhotoMutation.isSuccess && ( + + โœ“ Photo removed + + )} + {uploadError && ( + + {uploadError} + + )} + {setPhotoMutation.isError && ( + + {setPhotoMutation.error?.message || "Upload failed"} + + )} + {removePhotoMutation.isError && ( + + {removePhotoMutation.error?.message || "Remove failed"} + + )} + + + + Supported: JPEG, PNG (Max 4MB) + + + ); + } + + // Full mode - standalone card view + return ( + + + {/* Avatar Preview */} + + + + + + {/* Camera overlay button when not in upload mode */} + {!selectedFile && ( + + fileInputRef.current?.click()} + disabled={isLoading} + > + + + + )} + + + {/* Hidden file input */} + + + {/* Action buttons */} + {!selectedFile ? ( + + + {currentPhotoUrl && ( + + )} + + ) : ( + + + + + )} + + {/* Success/Error Messages */} + {setPhotoMutation.isSuccess && ( + + Profile picture updated successfully! + + )} + {removePhotoMutation.isSuccess && ( + + Profile picture removed successfully! + + )} + {uploadError && ( + + {uploadError} + + )} + {setPhotoMutation.isError && ( + + {setPhotoMutation.error?.message || "Failed to upload photo"} + + )} + {removePhotoMutation.isError && ( + + {removePhotoMutation.error?.message || "Failed to remove photo"} + + )} + + {/* Helper text */} + + Supported formats: JPEG, PNG (Max size: 4MB) + + + + ); +}; + +CippUserPhotoManager.propTypes = { + userId: PropTypes.string.isRequired, + tenantFilter: PropTypes.string.isRequired, + currentPhotoUrl: PropTypes.string, + onPhotoChange: PropTypes.func, + compact: PropTypes.bool, +}; diff --git a/src/components/CippComponents/CippVariableAutocomplete.jsx b/src/components/CippComponents/CippVariableAutocomplete.jsx new file mode 100644 index 000000000000..49e89fda27ee --- /dev/null +++ b/src/components/CippComponents/CippVariableAutocomplete.jsx @@ -0,0 +1,342 @@ +import React, { useState, useEffect, useRef, useMemo, useCallback } from "react"; +import { + Paper, + Typography, + Box, + Chip, + Popper, + ListItem, + useTheme, + CircularProgress, +} from "@mui/material"; +import { ApiGetCall } from "../../api/ApiCall"; +import { useSettings } from "../../hooks/use-settings.js"; +import { getCippError } from "../../utils/get-cipp-error"; + +/** + * Autocomplete component specifically for custom variables + * Shows when user types % in a text field + */ +export const CippVariableAutocomplete = React.memo( + ({ + open, + anchorEl, + onClose, + onSelect, + searchQuery = "", + tenantFilter = null, + includeSystemVariables = false, + position = { top: 0, left: 0 }, // Cursor position for floating box + }) => { + const theme = useTheme(); + const settings = useSettings(); + + // State management similar to CippAutocomplete + const [variables, setVariables] = useState([]); + const [getRequestInfo, setGetRequestInfo] = useState({ url: "", waiting: false, queryKey: "" }); + const [filteredVariables, setFilteredVariables] = useState([]); + const [selectedIndex, setSelectedIndex] = useState(0); // For keyboard navigation + + // Get current tenant like CippAutocomplete does + const currentTenant = tenantFilter || settings.currentTenant; + + // API call using the same pattern as CippAutocomplete + const actionGetRequest = ApiGetCall({ + ...getRequestInfo, + }); + + // Setup API request when component mounts or tenant changes + useEffect(() => { + if (open) { + // Normalize tenant filter + const normalizedTenantFilter = currentTenant === "AllTenants" ? null : currentTenant; + + // Build API URL + let apiUrl = "/api/ListCustomVariables"; + const params = new URLSearchParams(); + + if (normalizedTenantFilter) { + params.append("tenantFilter", normalizedTenantFilter); + } + + if (!includeSystemVariables) { + params.append("includeSystem", "false"); + } + + if (params.toString()) { + apiUrl += `?${params.toString()}`; + } + + // Generate query key + const queryKey = `CustomVariables-${normalizedTenantFilter || "global"}-${ + includeSystemVariables ? "withSystem" : "noSystem" + }`; + + setGetRequestInfo({ + url: apiUrl, + waiting: true, + queryKey: queryKey, + staleTime: Infinity, // Never goes stale like in the updated hook + refetchOnMount: false, + refetchOnReconnect: false, + refetchOnWindowFocus: false, + }); + } + }, [open, currentTenant, includeSystemVariables]); + + // Process API response like CippAutocomplete does + useEffect(() => { + if (actionGetRequest.isSuccess && actionGetRequest.data?.Results) { + const processedVariables = actionGetRequest.data.Results.map((variable) => ({ + // Core properties + name: variable.Name, + variable: variable.Variable, + label: variable.Variable, // What shows in autocomplete + value: variable.Variable, // What gets inserted + + // Metadata for display and filtering + description: variable.Description, + type: variable.Type, // 'reserved' or 'custom' + category: variable.Category, // 'system', 'tenant', 'partner', 'cipp', 'global', 'tenant-custom' + + // Custom variable specific + ...(variable.Type === "custom" && { + customValue: variable.Value, + scope: variable.Scope, + }), + + // For grouping in autocomplete + group: + variable.Type === "reserved" + ? `Reserved (${variable.Category})` + : variable.category === "global" + ? "Global Custom Variables" + : "Tenant Custom Variables", + })); + + setVariables(processedVariables); + } + + if (actionGetRequest.isError) { + setVariables([ + { + label: getCippError(actionGetRequest.error), + value: "error", + name: "error", + variable: "error", + description: "Error loading variables", + }, + ]); + } + }, [actionGetRequest.isSuccess, actionGetRequest.isError, actionGetRequest.data]); + + // Filter variables based on search query + useEffect(() => { + if (!searchQuery) { + setFilteredVariables(variables); + setSelectedIndex(0); // Reset selection when filtering + return; + } + + const lowerQuery = searchQuery.toLowerCase(); + const filtered = variables.filter( + (variable) => + variable.name?.toLowerCase().includes(lowerQuery) || + variable.description?.toLowerCase().includes(lowerQuery) + ); + setFilteredVariables(filtered); + setSelectedIndex(0); // Reset selection when filtering + }, [searchQuery, variables]); + + const handleSelect = (event, value) => { + if (value && onSelect) { + onSelect(value.variable); // Pass the full variable string like %tenantname% + } + onClose(); + }; + + // Keyboard navigation handlers + const handleKeyDown = useCallback( + (event) => { + if (!open || filteredVariables.length === 0) return; + + switch (event.key) { + case "ArrowDown": + event.preventDefault(); + setSelectedIndex((prev) => (prev < filteredVariables.length - 1 ? prev + 1 : 0)); + break; + case "ArrowUp": + event.preventDefault(); + setSelectedIndex((prev) => (prev > 0 ? prev - 1 : filteredVariables.length - 1)); + break; + case "Tab": + case "Enter": + event.preventDefault(); + if (filteredVariables[selectedIndex]) { + handleSelect(event, filteredVariables[selectedIndex]); + } + break; + case "Escape": + event.preventDefault(); + onClose(); + break; + } + }, + [open, filteredVariables, selectedIndex, onClose] + ); + + // Set up keyboard event listeners + useEffect(() => { + if (open) { + document.addEventListener("keydown", handleKeyDown); + return () => document.removeEventListener("keydown", handleKeyDown); + } + }, [open, handleKeyDown]); + + if (!open) { + return null; + } + + // Show loading state like CippAutocomplete + if (actionGetRequest.isLoading && (!variables || variables.length === 0)) { + return ( + + + + + + Loading variables... + + + + + ); + } + + if (!variables || variables.length === 0) { + return null; + } + + if (filteredVariables.length === 0) { + return null; + } + + return ( + + { + e.stopPropagation(); + }} + > + {filteredVariables.map((variable, index) => ( + { + // Scroll selected item into view + if (el) { + el.scrollIntoView({ block: "nearest", behavior: "smooth" }); + } + } + : null + } + onClick={(e) => { + e.stopPropagation(); + e.preventDefault(); + handleSelect(e, variable); + }} + sx={{ + display: "flex", + justifyContent: "space-between", + alignItems: "center", + py: 1, + px: 2, + borderBottom: `1px solid ${theme.palette.divider}`, + backgroundColor: + index === selectedIndex ? theme.palette.action.selected : "transparent", + borderLeft: + index === selectedIndex + ? `3px solid ${theme.palette.primary.main}` + : "3px solid transparent", + "&:hover": { + backgroundColor: theme.palette.action.hover, + }, + cursor: "pointer", + }} + > + + + {variable.variable} + + + {variable.description} + + + + + + + + ))} + + + ); + } +); diff --git a/src/components/CippComponents/DesktopDevicesSankey.jsx b/src/components/CippComponents/DesktopDevicesSankey.jsx new file mode 100644 index 000000000000..4ffd02318ab8 --- /dev/null +++ b/src/components/CippComponents/DesktopDevicesSankey.jsx @@ -0,0 +1,50 @@ +import { CippSankey } from "./CippSankey"; + +export const DesktopDevicesSankey = ({ data }) => { + //temporary mock sankey for dash - dont delete until replaced. + return ( + + ); +}; diff --git a/src/components/CippComponents/DomainAnalyserDialog.jsx b/src/components/CippComponents/DomainAnalyserDialog.jsx new file mode 100644 index 000000000000..ed5a6a948119 --- /dev/null +++ b/src/components/CippComponents/DomainAnalyserDialog.jsx @@ -0,0 +1,79 @@ +import { useState } from "react"; +import { Dialog, DialogContent, DialogTitle, Button, DialogActions } from "@mui/material"; +import { Refresh } from "@mui/icons-material"; +import { useForm, FormProvider } from "react-hook-form"; +import { CippFormTenantSelector } from "./CippFormTenantSelector"; +import { ApiPostCall } from "../../api/ApiCall"; +import { CippApiResults } from "./CippApiResults"; + +export const DomainAnalyserDialog = ({ createDialog }) => { + const methods = useForm({ + defaultValues: { + tenantFilter: { + value: "AllTenants", + label: "*All Tenants", + }, + }, + }); + + // Use methods for form handling and control + const { handleSubmit, control } = methods; + + const [isRunning, setIsRunning] = useState(false); + const domainAnalyserResults = ApiPostCall({ + urlFromData: true, + }); + + const handleForm = (values) => { + setIsRunning(true); + domainAnalyserResults.mutate({ + url: "/api/ExecDomainAnalyser", + queryKey: `domain-analyser-${values.tenantFilter}`, + data: values.tenantFilter ? { TenantFilter: values.tenantFilter } : {}, + }); + }; + + // Reset running state when dialog is closed + const handleClose = () => { + setIsRunning(false); + createDialog.handleClose(); + }; + + return ( + + + + Run Domain Analysis + +
    +

    + This will run a Domain Analysis to check for DNS configuration issues. Select a + tenant (or all tenants) below. +

    + +
    + +
    + + + + + +
    +
    + ); +}; diff --git a/src/components/CippComponents/LicenseCard.jsx b/src/components/CippComponents/LicenseCard.jsx new file mode 100644 index 000000000000..dce02b1e12f6 --- /dev/null +++ b/src/components/CippComponents/LicenseCard.jsx @@ -0,0 +1,190 @@ +import { Box, Card, CardHeader, CardContent, Typography, Divider, Skeleton } from "@mui/material"; +import { CardMembership as CardMembershipIcon } from "@mui/icons-material"; +import { CippSankey } from "./CippSankey"; + +export const LicenseCard = ({ data, isLoading }) => { + const processData = () => { + if (!data || !Array.isArray(data) || data.length === 0) { + return null; + } + + const topLicenses = data + .filter((license) => license && parseInt(license?.TotalLicenses || 0) > 0) + .sort((a, b) => parseInt(b?.TotalLicenses || 0) - parseInt(a?.TotalLicenses || 0)) + .slice(0, 5); + + if (topLicenses.length === 0) { + return null; + } + + const nodes = []; + const links = []; + + topLicenses.forEach((license, index) => { + if (license) { + const licenseName = + license.License || license.skuPartNumber || license.SkuPartNumber || "Unknown License"; + const shortName = + licenseName.length > 30 ? licenseName.substring(0, 27) + "..." : licenseName; + + const assigned = parseInt(license?.CountUsed || 0) || 0; + const available = parseInt(license?.CountAvailable || 0) || 0; + + nodes.push({ + id: shortName, + nodeColor: `hsl(${210 + index * 30}, 70%, 50%)`, + }); + + const assignedId = `${shortName} - Assigned`; + const availableId = `${shortName} - Available`; + + if (assigned > 0) { + nodes.push({ + id: assignedId, + nodeColor: "hsl(99, 70%, 50%)", + }); + + links.push({ + source: shortName, + target: assignedId, + value: assigned, + }); + } + + if (available > 0) { + nodes.push({ + id: availableId, + nodeColor: "hsl(28, 100%, 53%)", + }); + + links.push({ + source: shortName, + target: availableId, + value: available, + }); + } + } + }); + + if (nodes.length === 0 || links.length === 0) { + return null; + } + + return { nodes, links }; + }; + + const processedData = processData(); + + const calculateStats = () => { + if (!data || !Array.isArray(data)) { + return { total: 0, assigned: 0, available: 0 }; + } + + return { + total: data.reduce((sum, lic) => sum + (parseInt(lic?.TotalLicenses || 0) || 0), 0), + assigned: data.reduce((sum, lic) => sum + (parseInt(lic?.CountUsed || 0) || 0), 0), + available: data.reduce((sum, lic) => sum + (parseInt(lic?.CountAvailable || 0) || 0), 0), + }; + }; + + const stats = calculateStats(); + + return ( + + + + License Overview +
    + } + sx={{ pb: 1 }} + /> + + + {isLoading ? ( + + ) : processedData ? ( + + ) : ( + + + No license data available + + + )} + + + + + {isLoading ? ( + + + + + + + + + + + + + + + + + ) : data && Array.isArray(data) && data.length > 0 ? ( + + + + Total Licenses + + + {stats.total.toLocaleString()} + + + + + + Assigned + + + {stats.assigned.toLocaleString()} + + + + + + Available + + + {stats.available.toLocaleString()} + + + + ) : ( + + + No license statistics available + + + )} + + + ); +}; diff --git a/src/components/CippComponents/LicenseSankey.jsx b/src/components/CippComponents/LicenseSankey.jsx new file mode 100644 index 000000000000..fd4e1763f260 --- /dev/null +++ b/src/components/CippComponents/LicenseSankey.jsx @@ -0,0 +1,77 @@ +import { CippSankey } from "./CippSankey"; + +export const LicenseSankey = ({ data }) => { + // Null safety checks + if (!data || !Array.isArray(data) || data.length === 0) { + return null; + } + + // Get top 5 licenses by total count with null safety + const topLicenses = data + .filter((license) => license && parseInt(license?.TotalLicenses || 0) > 0) + .sort((a, b) => parseInt(b?.TotalLicenses || 0) - parseInt(a?.TotalLicenses || 0)) + .slice(0, 5); + + if (topLicenses.length === 0) { + return null; + } + + // Create Sankey flow: Top 5 Licenses -> Assigned/Available for each + const nodes = []; + const links = []; + + topLicenses.forEach((license, index) => { + if (license) { + const licenseName = + license.License || license.skuPartNumber || license.SkuPartNumber || "Unknown License"; + const shortName = + licenseName.length > 30 ? licenseName.substring(0, 27) + "..." : licenseName; + + const assigned = parseInt(license?.CountUsed || 0) || 0; + const available = parseInt(license?.CountAvailable || 0) || 0; + + // Add license node + nodes.push({ + id: shortName, + nodeColor: `hsl(${210 + index * 30}, 70%, 50%)`, + }); + + // Add Assigned and Available nodes for this license + const assignedId = `${shortName} - Assigned`; + const availableId = `${shortName} - Available`; + + if (assigned > 0) { + nodes.push({ + id: assignedId, + nodeColor: "hsl(99, 70%, 50%)", + }); + + links.push({ + source: shortName, + target: assignedId, + value: assigned, + }); + } + + if (available > 0) { + nodes.push({ + id: availableId, + nodeColor: "hsl(28, 100%, 53%)", + }); + + links.push({ + source: shortName, + target: availableId, + value: available, + }); + } + } + }); + + // Only render if we have valid data + if (nodes.length === 0 || links.length === 0) { + return null; + } + + return ; +}; diff --git a/src/components/CippComponents/MFACard.jsx b/src/components/CippComponents/MFACard.jsx new file mode 100644 index 000000000000..e166c3b496a0 --- /dev/null +++ b/src/components/CippComponents/MFACard.jsx @@ -0,0 +1,256 @@ +import { Box, Card, CardHeader, CardContent, Typography, Skeleton } from "@mui/material"; +import { Person as UserIcon } from "@mui/icons-material"; +import { CippSankey } from "./CippSankey"; +import { useRouter } from "next/router"; + +export const MFACard = ({ data, isLoading }) => { + const router = useRouter(); + // Process data inside component + const processData = () => { + if (!data || !Array.isArray(data) || data.length === 0) { + return null; + } + + const enabledUsers = data.filter((user) => user.AccountEnabled === true); + if (enabledUsers.length === 0) { + return null; + } + + let registeredUsers = 0; + let notRegisteredUsers = 0; + let registeredCA = 0; + let registeredSD = 0; + let registeredPerUser = 0; + let registeredNone = 0; + let notRegisteredCA = 0; + let notRegisteredSD = 0; + let notRegisteredPerUser = 0; + let notRegisteredNone = 0; + + enabledUsers.forEach((user) => { + const hasRegistered = user.MFARegistration === true; + const coveredByCA = user.CoveredByCA?.startsWith("Enforced") || false; + const coveredBySD = user.CoveredBySD === true; + const perUserEnabled = user.PerUser === "enforced" || user.PerUser === "enabled"; + + if (hasRegistered || perUserEnabled) { + registeredUsers++; + if (perUserEnabled) { + registeredPerUser++; + } else if (coveredByCA) { + registeredCA++; + } else if (coveredBySD) { + registeredSD++; + } else { + registeredNone++; + } + } else { + notRegisteredUsers++; + if (coveredByCA) { + notRegisteredCA++; + } else if (coveredBySD) { + notRegisteredSD++; + } else { + notRegisteredNone++; + } + } + }); + + const registeredPercentage = ((registeredUsers / enabledUsers.length) * 100).toFixed(1); + const protectedPercentage = ( + ((registeredCA + registeredSD + registeredPerUser) / enabledUsers.length) * + 100 + ).toFixed(1); + + const links = [ + { source: "Enabled users", target: "MFA registered", value: registeredUsers }, + { source: "Enabled users", target: "Not registered", value: notRegisteredUsers }, + ]; + + if (registeredCA > 0) + links.push({ source: "MFA registered", target: "CA policy", value: registeredCA }); + if (registeredSD > 0) + links.push({ source: "MFA registered", target: "Security defaults", value: registeredSD }); + if (registeredPerUser > 0) + links.push({ source: "MFA registered", target: "Per-user MFA", value: registeredPerUser }); + if (registeredNone > 0) + links.push({ source: "MFA registered", target: "No enforcement", value: registeredNone }); + + if (notRegisteredCA > 0) + links.push({ source: "Not registered", target: "CA policy", value: notRegisteredCA }); + if (notRegisteredSD > 0) + links.push({ + source: "Not registered", + target: "Security defaults", + value: notRegisteredSD, + }); + if (notRegisteredPerUser > 0) + links.push({ source: "Not registered", target: "Per-user MFA", value: notRegisteredPerUser }); + if (notRegisteredNone > 0) + links.push({ source: "Not registered", target: "No enforcement", value: notRegisteredNone }); + + const description = `${registeredPercentage}% of enabled users have registered MFA methods. ${protectedPercentage}% are protected by policies requiring MFA.`; + + return { + nodes: [ + { id: "Enabled users", nodeColor: "hsl(28, 100%, 53%)" }, + { id: "MFA registered", nodeColor: "hsl(99, 70%, 50%)" }, + { id: "Not registered", nodeColor: "hsl(39, 100%, 50%)" }, + { id: "CA policy", nodeColor: "hsl(99, 70%, 50%)" }, + { id: "Security defaults", nodeColor: "hsl(140, 70%, 50%)" }, + { id: "Per-user MFA", nodeColor: "hsl(200, 70%, 50%)" }, + { id: "No enforcement", nodeColor: "hsl(0, 100%, 50%)" }, + ], + links, + description, + }; + }; + + const processedData = processData(); + + const handleNodeClick = (node) => { + // Build filter based on clicked node + let filters = []; + + switch (node.id) { + case "Enabled users": + filters = [{ id: "AccountEnabled", value: "Yes" }]; + break; + case "MFA registered": + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "Yes" }, + ]; + break; + case "Not registered": + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "No" }, + ]; + break; + default: + // For other nodes, don't navigate + return; + } + + // Navigate to MFA report with filters + router.push({ + pathname: "/identity/reports/mfa-report", + query: { filters: JSON.stringify(filters) }, + }); + }; + + const handleLinkClick = (link) => { + // Build filters based on the link's source and target + let filters = []; + + if (link.source.id === "Enabled users" && link.target.id === "MFA registered") { + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "Yes" }, + ]; + } else if (link.source.id === "Enabled users" && link.target.id === "Not registered") { + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "No" }, + ]; + } else if (link.source.id === "MFA registered" && link.target.id === "CA policy") { + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "Yes" }, + ]; + // Note: We can't easily filter by CoveredByCA in the table since it needs complex logic + } else if (link.source.id === "MFA registered" && link.target.id === "Security defaults") { + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "Yes" }, + { id: "CoveredBySD", value: "Yes" }, + ]; + } else if (link.source.id === "MFA registered" && link.target.id === "Per-user MFA") { + filters = [{ id: "AccountEnabled", value: "Yes" }]; + // Note: Per-user MFA can be "enabled" or "enforced" + } else if (link.source.id === "MFA registered" && link.target.id === "No enforcement") { + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "Yes" }, + ]; + } else if (link.source.id === "Not registered" && link.target.id === "CA policy") { + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "No" }, + ]; + } else if (link.source.id === "Not registered" && link.target.id === "Security defaults") { + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "No" }, + { id: "CoveredBySD", value: "Yes" }, + ]; + } else if (link.source.id === "Not registered" && link.target.id === "Per-user MFA") { + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "No" }, + ]; + } else if (link.source.id === "Not registered" && link.target.id === "No enforcement") { + filters = [ + { id: "AccountEnabled", value: "Yes" }, + { id: "MFARegistration", value: "No" }, + ]; + } + + // Navigate to MFA report with filters + if (filters.length > 0) { + router.push({ + pathname: "/identity/reports/mfa-report", + query: { filters: JSON.stringify(filters) }, + }); + } + }; + + return ( + + + + User authentication + + } + sx={{ pb: 1 }} + /> + + + {isLoading ? ( + + ) : processedData ? ( + + ) : ( + + + No MFA data available + + + )} + + + {!isLoading && processedData?.description && ( + + + {processedData.description} + + + )} + + ); +}; diff --git a/src/components/CippComponents/MFASankey.jsx b/src/components/CippComponents/MFASankey.jsx new file mode 100644 index 000000000000..9fb387cefa9d --- /dev/null +++ b/src/components/CippComponents/MFASankey.jsx @@ -0,0 +1,140 @@ +import { CippSankey } from "./CippSankey"; + +export const MFASankey = ({ data }) => { + // Null safety checks + if (!data || !Array.isArray(data) || data.length === 0) { + return null; + } + + // Count enabled users only + const enabledUsers = data.filter((user) => user.AccountEnabled === true); + + if (enabledUsers.length === 0) { + return null; + } + + // Split by MFA registration status + let registeredUsers = 0; + let notRegisteredUsers = 0; + + // For registered users, split by protection method + let registeredCA = 0; + let registeredSD = 0; + let registeredPerUser = 0; + let registeredNone = 0; + + // For not registered users, split by protection method + let notRegisteredCA = 0; + let notRegisteredSD = 0; + let notRegisteredPerUser = 0; + let notRegisteredNone = 0; + + enabledUsers.forEach((user) => { + const hasRegistered = user.MFARegistration === true; + const coveredByCA = user.CoveredByCA?.startsWith("Enforced") || false; + const coveredBySD = user.CoveredBySD === true; + const perUserEnabled = user.PerUser === "enforced" || user.PerUser === "enabled"; + + // Consider PerUser as MFA enabled/registered + if (hasRegistered || perUserEnabled) { + registeredUsers++; + // Per-User gets its own separate terminal path + if (perUserEnabled) { + registeredPerUser++; + } else if (coveredByCA) { + registeredCA++; + } else if (coveredBySD) { + registeredSD++; + } else { + registeredNone++; + } + } else { + notRegisteredUsers++; + if (coveredByCA) { + notRegisteredCA++; + } else if (coveredBySD) { + notRegisteredSD++; + } else { + notRegisteredNone++; + } + } + }); + + const registeredPercentage = ((registeredUsers / enabledUsers.length) * 100).toFixed(1); + const protectedPercentage = ( + ((registeredCA + registeredSD + registeredPerUser) / enabledUsers.length) * + 100 + ).toFixed(1); + + const links = [ + { source: "Enabled users", target: "MFA registered", value: registeredUsers }, + { source: "Enabled users", target: "Not registered", value: notRegisteredUsers }, + ]; + + // Add protection methods for registered users + if (registeredCA > 0) + links.push({ source: "MFA registered", target: "CA policy", value: registeredCA }); + if (registeredSD > 0) + links.push({ source: "MFA registered", target: "Security defaults", value: registeredSD }); + if (registeredPerUser > 0) + links.push({ source: "MFA registered", target: "Per-user MFA", value: registeredPerUser }); + if (registeredNone > 0) + links.push({ source: "MFA registered", target: "No enforcement", value: registeredNone }); + + // Add protection methods for not registered users + if (notRegisteredCA > 0) + links.push({ source: "Not registered", target: "CA policy", value: notRegisteredCA }); + if (notRegisteredSD > 0) + links.push({ source: "Not registered", target: "Security defaults", value: notRegisteredSD }); + if (notRegisteredPerUser > 0) + links.push({ source: "Not registered", target: "Per-user MFA", value: notRegisteredPerUser }); + if (notRegisteredNone > 0) + links.push({ source: "Not registered", target: "No enforcement", value: notRegisteredNone }); + + const description = `${registeredPercentage}% of enabled users have registered MFA methods. ${protectedPercentage}% are protected by policies requiring MFA.`; + + return ( + <> + + {description && ( +
    + {description} +
    + )} + + ); +}; diff --git a/src/components/CippComponents/MailboxRestoreDetails.jsx b/src/components/CippComponents/MailboxRestoreDetails.jsx index 23feefa76f76..cd3eedff4091 100644 --- a/src/components/CippComponents/MailboxRestoreDetails.jsx +++ b/src/components/CippComponents/MailboxRestoreDetails.jsx @@ -91,6 +91,7 @@ const MailboxRestoreDetails = ({ data }) => { open={dialogOpen} onClose={() => setDialogOpen(false)} code={restoreStatistics?.data?.[0]?.Report} + readOnly={true} /> diff --git a/src/components/CippComponents/MobileSankey.jsx b/src/components/CippComponents/MobileSankey.jsx new file mode 100644 index 000000000000..56da01903dc9 --- /dev/null +++ b/src/components/CippComponents/MobileSankey.jsx @@ -0,0 +1,49 @@ +import { CippSankey } from "./CippSankey"; + +export const MobileSankey = ({ data }) => { + return ( + + ); +}; diff --git a/src/components/CippComponents/ScheduledTaskDetails.jsx b/src/components/CippComponents/ScheduledTaskDetails.jsx index 88aabea0f512..51991b1b88a7 100644 --- a/src/components/CippComponents/ScheduledTaskDetails.jsx +++ b/src/components/CippComponents/ScheduledTaskDetails.jsx @@ -19,9 +19,12 @@ import { CippPropertyListCard } from "../CippCards/CippPropertyListCard"; import { ExpandMore, Sync, Search, Close } from "@mui/icons-material"; import { getCippFormatting } from "../../utils/get-cipp-formatting"; import { CippDataTable } from "../CippTable/CippDataTable"; -import { CippTimeAgo } from "/src/components/CippComponents/CippTimeAgo"; +import { CippTimeAgo } from "./CippTimeAgo"; +import { ActionsMenu } from "../actions-menu"; +import { CippScheduledTaskActions } from "./CippScheduledTaskActions"; +import { CippApiLogsDrawer } from "./CippApiLogsDrawer"; -const ScheduledTaskDetails = ({ data }) => { +const ScheduledTaskDetails = ({ data, showActions = true, showTitle = true }) => { const [taskDetails, setTaskDetails] = useState(null); const [expanded, setExpanded] = useState(false); const [searchQuery, setSearchQuery] = useState(""); @@ -79,7 +82,26 @@ const ScheduledTaskDetails = ({ data }) => { return ( <> - {taskDetails?.Task?.Name} + + + {showTitle && (taskDetailResults.isLoading ? : taskDetails?.Task?.Name)} + + {showActions && ( + + + + + )} + @@ -103,6 +125,31 @@ const ScheduledTaskDetails = ({ data }) => { isFetching={taskDetailResults.isFetching} /> + {taskDetails?.Task?.Trigger && ( + + }> + Trigger Configuration + + + { + return { + label: key, + value: getCippFormatting(value, key), + }; + })} + isFetching={taskDetailResults.isFetching} + /> + + + )} + {taskDetailResults.isFetching ? ( ) : ( @@ -206,7 +253,9 @@ const ScheduledTaskDetails = ({ data }) => { }, }} > - {result.TenantName || result.Tenant} + + {getCippFormatting(result.TenantName || result.Tenant, "Tenant")} + { /> - {result.Results === "null" ? ( + {result.Results === "null" || !result.Results ? ( No data available ) : Array.isArray(result.Results) ? ( taskDetailResults.refetch()} /> ) : typeof result.Results === "object" ? ( { + return ( + + + + Secure Score + + } + sx={{ pb: 1 }} + /> + + {isLoading ? ( + <> + + + + + + + The Secure Score measures your security posture across your tenant. + + + ) : !data || !Array.isArray(data) || data.length === 0 ? ( + <> + + + + No secure score data available + + + + + The Secure Score measures your security posture across your tenant. + + + ) : ( + <> + + + {(() => { + const sortedData = [...data].sort((a, b) => new Date(a.createdDateTime) - new Date(b.createdDateTime)); + const chartData = sortedData.map((score) => ({ + date: new Date(score.createdDateTime).toLocaleDateString("en-US", { + month: "short", + day: "numeric", + }), + score: score.currentScore, + percentage: Math.round((score.currentScore / score.maxScore) * 100), + })); + const ticks = chartData.map((d) => d.date); + return ( + + + + Math.round(value)} + /> + { + if (name === "score") return [value.toFixed(2), "Score"]; + if (name === "percentage") return [value + "%", "Percentage"]; + return value; + }} + /> + + + ); + })()} + + + + The Secure Score measures your security posture across your tenant. + + + )} + + + + {isLoading ? ( + + + + + + + + + + + + + + ) : !data || !Array.isArray(data) || data.length === 0 ? ( + + Enable secure score monitoring in your tenant + + ) : ( + + + + Latest % + + + {Math.round( + (data[data.length - 1].currentScore / data[data.length - 1].maxScore) * 100 + )} + % + + + + + + Current Score + + + {data[data.length - 1].currentScore.toFixed(2)} + + + + + + Max Score + + + {data[data.length - 1].maxScore.toFixed(2)} + + + + )} + + + ); +}; diff --git a/src/components/CippComponents/SecureScoreChart.jsx b/src/components/CippComponents/SecureScoreChart.jsx new file mode 100644 index 000000000000..f9830d128481 --- /dev/null +++ b/src/components/CippComponents/SecureScoreChart.jsx @@ -0,0 +1,153 @@ +import { Box, Typography, Divider, Skeleton } from "@mui/material"; +import { + LineChart, + Line, + CartesianGrid, + XAxis, + YAxis, + ResponsiveContainer, + Tooltip as RechartsTooltip, +} from "recharts"; + +export const SecureScoreChart = ({ data, isLoading }) => { + if (isLoading) { + return ( + <> + + + + + + + The Secure Score measures your security posture across your tenant. + + + + + + + + + + + + + + + + + ); + } + + if (!data || !Array.isArray(data) || data.length === 0) { + return ( + <> + + + + No secure score data available + + + + + The Secure Score measures your security posture across your tenant. + + + + + Enable secure score monitoring in your tenant + + + + ); + } + + const sortedData = [...data].sort( + (a, b) => new Date(a.createdDateTime) - new Date(b.createdDateTime) + ); + + const chartData = sortedData.map((score) => ({ + date: new Date(score.createdDateTime).toLocaleDateString("en-US", { + month: "short", + day: "numeric", + }), + score: score.currentScore, + percentage: Math.round((score.currentScore / score.maxScore) * 100), + })); + + const latestScore = sortedData[sortedData.length - 1]; + const latestPercentage = Math.round((latestScore.currentScore / latestScore.maxScore) * 100); + + return ( + <> + + + + + + + { + if (name === "score") return [value.toFixed(2), "Score"]; + if (name === "percentage") return [value + "%", "Percentage"]; + return value; + }} + /> + + + + + + The Secure Score measures your security posture across your tenant. + + + + + + Latest % + + + {latestPercentage}% + + + + + + Current Score + + + {latestScore.currentScore.toFixed(2)} + + + + + + Max Score + + + {latestScore.maxScore.toFixed(2)} + + + + + ); +}; diff --git a/src/components/CippComponents/TenantInfoCard.jsx b/src/components/CippComponents/TenantInfoCard.jsx new file mode 100644 index 000000000000..cd4b753e8f2c --- /dev/null +++ b/src/components/CippComponents/TenantInfoCard.jsx @@ -0,0 +1,70 @@ +import { Box, Card, CardHeader, CardContent, Typography, Skeleton } from "@mui/material"; +import { Business as BuildingIcon } from "@mui/icons-material"; +import { CippCopyToClipBoard } from "./CippCopyToClipboard"; + +export const TenantInfoCard = ({ data, isLoading }) => { + return ( + + + + Tenant + + } + sx={{ pb: 1.5 }} + /> + + + + + Name + + {isLoading ? ( + + ) : ( + + {data?.displayName || "Not Available"} + + )} + + + + Tenant ID + + + {isLoading ? ( + + ) : data?.id ? ( + + ) : ( + + Not Available + + )} + + + + + Primary Domain + + + {isLoading ? ( + + ) : data?.verifiedDomains?.find((d) => d.isDefault)?.name ? ( + d.isDefault).name} + type="chip" + /> + ) : ( + + Not Available + + )} + + + + + + ); +}; diff --git a/src/components/CippComponents/TenantMetricsGrid.jsx b/src/components/CippComponents/TenantMetricsGrid.jsx new file mode 100644 index 000000000000..323bd44a7f9f --- /dev/null +++ b/src/components/CippComponents/TenantMetricsGrid.jsx @@ -0,0 +1,127 @@ +import { Box, Grid, Tooltip, Avatar, Typography, Skeleton } from "@mui/material"; +import { useRouter } from "next/router"; +import { + Person as UserIcon, + PersonOutline as GuestIcon, + Group as GroupIcon, + Apps as AppsIcon, + Devices as DevicesIcon, + PhoneAndroid as ManagedIcon, +} from "@mui/icons-material"; + +const formatNumber = (num) => { + if (num >= 1000000) return (num / 1000000).toFixed(1) + "M"; + if (num >= 1000) return (num / 1000).toFixed(1) + "K"; + return num?.toString() || "0"; +}; + +export const TenantMetricsGrid = ({ data, isLoading }) => { + const router = useRouter(); + + const metrics = [ + { + label: "Users", + value: data?.UserCount || 0, + icon: UserIcon, + color: "primary", + path: "/identity/administration/users", + }, + { + label: "Guests", + value: data?.GuestCount || 0, + icon: GuestIcon, + color: "info", + path: "/identity/administration/users", + }, + { + label: "Groups", + value: data?.GroupCount || 0, + icon: GroupIcon, + color: "secondary", + path: "/identity/administration/groups", + }, + { + label: "Service Principals", + value: data?.ApplicationCount || 0, + icon: AppsIcon, + color: "error", + path: "/tenant/administration/applications/enterprise-apps", + }, + { + label: "Devices", + value: data?.DeviceCount || 0, + icon: DevicesIcon, + color: "warning", + path: "/identity/administration/devices", + }, + { + label: "Managed", + value: data?.ManagedDeviceCount || 0, + icon: ManagedIcon, + color: "success", + path: "/identity/administration/devices", + }, + ]; + + const handleClick = (metric) => { + if (metric.path) { + router.push(metric.path); + } + }; + + return ( + + {metrics.map((metric) => { + const IconComponent = metric.icon; + return ( + + + handleClick(metric)} + sx={{ + display: "flex", + alignItems: "center", + gap: 1.5, + p: 2, + border: 1, + borderColor: "divider", + borderRadius: 1, + cursor: "pointer", + transition: "all 0.2s ease-in-out", + "&:hover": { + borderColor: `${metric.color}.main`, + backgroundColor: "action.hover", + transform: "translateY(-2px)", + boxShadow: "0 4px 8px rgba(0,0,0,0.1)", + }, + }} + > + + + + + + {metric.label} + + + {isLoading ? : formatNumber(metric.value)} + + + + + + ); + })} + + ); +}; diff --git a/src/components/CippFormPages/CippAddAssignmentFilterForm.jsx b/src/components/CippFormPages/CippAddAssignmentFilterForm.jsx new file mode 100644 index 000000000000..551ec914e35b --- /dev/null +++ b/src/components/CippFormPages/CippAddAssignmentFilterForm.jsx @@ -0,0 +1,115 @@ +import "@mui/material"; +import { Grid } from "@mui/system"; +import { useWatch } from "react-hook-form"; +import CippFormComponent from "../CippComponents/CippFormComponent"; + +const DEVICE_PLATFORM_OPTIONS = [ + { label: "Windows 10 and later", value: "windows10AndLater" }, + { label: "iOS", value: "iOS" }, + { label: "macOS", value: "macOS" }, + { label: "Android Enterprise", value: "androidForWork" }, + { label: "Android device administrator", value: "android" }, + { label: "Android Work Profile", value: "androidWorkProfile" }, + { label: "Android (AOSP)", value: "androidAOSP" }, +]; + +const APP_PLATFORM_OPTIONS = [ + { label: "Windows", value: "windowsMobileApplicationManagement" }, + { label: "Android", value: "androidMobileApplicationManagement" }, + { label: "iOS/iPadOS", value: "iOSMobileApplicationManagement" }, +]; + +const CippAddAssignmentFilterForm = (props) => { + const { formControl, isEdit = false } = props; + + const assignmentFilterManagementType = + useWatch({ + control: formControl?.control ?? formControl, + name: "assignmentFilterManagementType", + defaultValue: "devices", + }) ?? "devices"; + const platformOptions = + assignmentFilterManagementType === "apps" ? APP_PLATFORM_OPTIONS : DEVICE_PLATFORM_OPTIONS; + + return ( + + + + + + + + + + + + + + + + + + + Enter the filter rule using Intune filter syntax. See{" "} + + Microsoft documentation + {" "} + for supported properties and operators. + + } + multiline + rows={6} + fullWidth + /> + + + ); +}; + +export default CippAddAssignmentFilterForm; diff --git a/src/components/CippFormPages/CippAddAssignmentFilterTemplateForm.jsx b/src/components/CippFormPages/CippAddAssignmentFilterTemplateForm.jsx new file mode 100644 index 000000000000..626b15db6e7a --- /dev/null +++ b/src/components/CippFormPages/CippAddAssignmentFilterTemplateForm.jsx @@ -0,0 +1,117 @@ +import "@mui/material"; +import { Grid } from "@mui/system"; +import { useWatch } from "react-hook-form"; +import CippFormComponent from "../CippComponents/CippFormComponent"; + +const DEVICE_PLATFORM_OPTIONS = [ + { label: "Windows 10 and later", value: "windows10AndLater" }, + { label: "iOS", value: "iOS" }, + { label: "macOS", value: "macOS" }, + { label: "Android Enterprise", value: "androidForWork" }, + { label: "Android device administrator", value: "android" }, + { label: "Android Work Profile", value: "androidWorkProfile" }, + { label: "Android (AOSP)", value: "androidAOSP" }, +]; + +const APP_PLATFORM_OPTIONS = [ + { label: "Windows", value: "windowsMobileApplicationManagement" }, + { label: "Android", value: "androidMobileApplicationManagement" }, + { label: "iOS/iPadOS", value: "iOSMobileApplicationManagement" }, +]; + +const CippAddAssignmentFilterTemplateForm = (props) => { + const { formControl } = props; + + const assignmentFilterManagementType = + useWatch({ + control: formControl?.control ?? formControl, + name: "assignmentFilterManagementType", + defaultValue: "devices", + }) ?? "devices"; + const platformOptions = + assignmentFilterManagementType === "apps" ? APP_PLATFORM_OPTIONS : DEVICE_PLATFORM_OPTIONS; + + return ( + + {/* Hidden field to store the template GUID when editing */} + + + + + + + + + + + + + + + + + + + + Enter the filter rule using Intune filter syntax. See{" "} + + Microsoft documentation + {" "} + for supported properties and operators. + + } + required + multiline + rows={6} + validators={{ required: "Filter Rule is required" }} + fullWidth + /> + + + ); +}; + +export default CippAddAssignmentFilterTemplateForm; diff --git a/src/components/CippFormPages/CippAddEditContact.jsx b/src/components/CippFormPages/CippAddEditContact.jsx new file mode 100644 index 000000000000..1e038f8231a5 --- /dev/null +++ b/src/components/CippFormPages/CippAddEditContact.jsx @@ -0,0 +1,194 @@ +import { Divider } from "@mui/material"; +import { Grid } from "@mui/system"; +import CippFormComponent from "../CippComponents/CippFormComponent"; +import { getCippValidator } from "../../utils/get-cipp-validator"; +import countryList from "../../data/countryList.json"; + +const countryOptions = countryList.map(({ Code, Name }) => ({ + label: Name, + value: Code, +})); + +const ContactFormLayout = ({ formControl, formType = "add" }) => { + return ( + + {/* Display Name */} + + + + + {/* First Name and Last Name */} + + + + + + + + + + {/* Email */} + + getCippValidator(value, "email"), + }} + /> + + + {/* Hide from GAL */} + + + + + + + {/* Company Information */} + + + + + + + + {/* Website */} + + !value || getCippValidator(value, "url"), + }} + /> + + + + + {/* Address Information */} + + + + + + + + + + + + + + + + + + + {/* Phone Numbers */} + + + + + + + + + + {/* Mail Tip */} + + + + + ); +}; + +export default ContactFormLayout; diff --git a/src/components/CippFormPages/CippAddEditGdapRoleTemplate.jsx b/src/components/CippFormPages/CippAddEditGdapRoleTemplate.jsx index 1ed0e4163f88..891935f0f99a 100644 --- a/src/components/CippFormPages/CippAddEditGdapRoleTemplate.jsx +++ b/src/components/CippFormPages/CippAddEditGdapRoleTemplate.jsx @@ -1,5 +1,5 @@ import { Alert, Box, Stack, Typography } from "@mui/material"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; +import CippFormComponent from "../CippComponents/CippFormComponent"; export const CippAddEditGdapRoleTemplate = (props) => { const { formControl, availableRoles } = props; diff --git a/src/components/CippFormPages/CippAddEditUser.jsx b/src/components/CippFormPages/CippAddEditUser.jsx index e86eaec59b74..b479cacd197a 100644 --- a/src/components/CippFormPages/CippAddEditUser.jsx +++ b/src/components/CippFormPages/CippAddEditUser.jsx @@ -1,22 +1,35 @@ -import { Alert, InputAdornment, Typography } from "@mui/material"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormCondition } from "/src/components/CippComponents/CippFormCondition"; -import { CippFormDomainSelector } from "/src/components/CippComponents/CippFormDomainSelector"; -import { CippFormUserSelector } from "/src/components/CippComponents/CippFormUserSelector"; -import countryList from "/src/data/countryList.json"; -import { CippFormLicenseSelector } from "/src/components/CippComponents/CippFormLicenseSelector"; +import { Alert, Divider, InputAdornment, Typography } from "@mui/material"; +import CippFormComponent from "../CippComponents/CippFormComponent"; +import { getCippValidator } from "../../utils/get-cipp-validator"; +import { CippFormCondition } from "../CippComponents/CippFormCondition"; +import { CippFormDomainSelector } from "../CippComponents/CippFormDomainSelector"; +import { CippFormUserSelector } from "../CippComponents/CippFormUserSelector"; +import countryList from "../../data/countryList.json"; +import { CippFormLicenseSelector } from "../CippComponents/CippFormLicenseSelector"; import { Grid } from "@mui/system"; import { ApiGetCall } from "../../api/ApiCall"; import { useSettings } from "../../hooks/use-settings"; import { useWatch } from "react-hook-form"; -import { use, useEffect, useMemo } from "react"; +import { useEffect, useMemo, useState } from "react"; import { useRouter } from "next/router"; const CippAddEditUser = (props) => { const { formControl, userSettingsDefaults, formType = "add" } = props; const tenantDomain = useSettings().currentTenant; + const [selectedTemplate, setSelectedTemplate] = useState(null); + const [displayNameManuallySet, setDisplayNameManuallySet] = useState(false); + const [usernameManuallySet, setUsernameManuallySet] = useState(false); const router = useRouter(); const { userId } = router.query; + + // Get user default templates (only in add mode) + const userTemplates = ApiGetCall({ + url: `/api/ListNewUserDefaults?TenantFilter=${tenantDomain}`, + queryKey: `UserDefaults-${tenantDomain}`, + refetchOnMount: false, + refetchOnReconnect: false, + enabled: formType === "add", + }); const integrationSettings = ApiGetCall({ url: "/api/ListExtensionsConfig", queryKey: "ListExtensionsConfig", @@ -42,56 +55,300 @@ const CippAddEditUser = (props) => { waiting: !!userId, }); + // Get manual entry custom data mappings for current tenant + const manualEntryMappings = ApiGetCall({ + url: `/api/ListCustomDataMappings?sourceType=Manual Entry&directoryObject=User&tenantFilter=${tenantDomain}`, + queryKey: `ManualEntryMappings-${tenantDomain}`, + refetchOnMount: false, + refetchOnReconnect: false, + }); + + // Use mappings directly since they're already filtered by the API + const currentTenantManualMappings = useMemo(() => { + if (manualEntryMappings.isSuccess) { + return manualEntryMappings.data?.Results || []; + } + return []; + }, [manualEntryMappings.isSuccess, manualEntryMappings.data]); + // Make new list of groups by removing userGroups from tenantGroups const filteredTenantGroups = useMemo(() => { if (tenantGroups.isSuccess && userGroups.isSuccess) { const tenantGroupsList = tenantGroups?.data || []; return tenantGroupsList.filter( - (tenantGroup) => !userGroups?.data?.some((userGroup) => userGroup.id === tenantGroup.id) + (tenantGroup) => !userGroups?.data?.some((userGroup) => userGroup.id === tenantGroup.id), ); } return []; }, [tenantGroups.isSuccess, userGroups.isSuccess, tenantGroups.data, userGroups.data]); const watcher = useWatch({ control: formControl.control }); + + // Helper function to generate username from template format + const generateUsername = (format, firstName, lastName) => { + if (!format || !firstName || !lastName) return ""; + + // Ensure format is a string + const formatString = typeof format === "string" ? format : String(format); + + let username = formatString; + + // Replace %FirstName[n]% patterns (extract first n characters) + username = username.replace(/%FirstName\[(\d+)\]%/gi, (match, num) => { + return firstName.substring(0, parseInt(num)); + }); + + // Replace %LastName[n]% patterns (extract first n characters) + username = username.replace(/%LastName\[(\d+)\]%/gi, (match, num) => { + return lastName.substring(0, parseInt(num)); + }); + + // Replace %FirstName% and %LastName% + username = username.replace(/%FirstName%/gi, firstName); + username = username.replace(/%LastName%/gi, lastName); + + // Convert to lowercase + return username.toLowerCase(); + }; + + const validateOtherMails = (value) => { + if (!value || (Array.isArray(value) && value.length === 0)) { + return true; + } + + const emailList = (Array.isArray(value) ? value.join(",") : value) + .split(",") + .map((email) => email.trim()) + .filter(Boolean); + + const invalidEmail = emailList.find((email) => getCippValidator(email, "email") !== true); + + return !invalidEmail || `This is not a valid email: ${invalidEmail}`; + }; + useEffect(() => { //if watch.firstname changes, and watch.lastname changes, set displayname to firstname + lastname if (watcher.givenName && watcher.surname && formType === "add") { - formControl.setValue("displayName", `${watcher.givenName} ${watcher.surname}`); + // Only auto-set display name if user hasn't manually changed it + if (!displayNameManuallySet) { + // Build base display name from first and last name + let displayName = `${watcher.givenName} ${watcher.surname}`; + + // Add template displayName as suffix if it exists + if (selectedTemplate?.displayName) { + displayName += selectedTemplate.displayName; + } + + formControl.setValue("displayName", displayName, { shouldDirty: true }); + } + + // Auto-generate username if template has usernameFormat + if (selectedTemplate?.usernameFormat && !usernameManuallySet) { + // Extract the actual format string - it might be an object {label, value} or a string + const formatString = + typeof selectedTemplate.usernameFormat === "string" + ? selectedTemplate.usernameFormat + : selectedTemplate.usernameFormat?.value || selectedTemplate.usernameFormat?.label; + + if (formatString) { + const generatedUsername = generateUsername( + formatString, + watcher.givenName, + watcher.surname, + ); + if (generatedUsername) { + formControl.setValue("username", generatedUsername, { shouldDirty: true }); + } + } + } + } + }, [watcher.givenName, watcher.surname, selectedTemplate]); + + // Reset manual flags and selected template when form is reset (fields become empty) + useEffect(() => { + if (formType === "add" && !watcher.givenName && !watcher.surname && !watcher.userTemplate) { + setDisplayNameManuallySet(false); + setUsernameManuallySet(false); + // Only clear selected template if it's not the default template + if (selectedTemplate && !selectedTemplate.defaultForTenant) { + setSelectedTemplate(null); + } + } + }, [watcher.givenName, watcher.surname, watcher.userTemplate, formType, selectedTemplate]); + + // Auto-select default template for tenant + useEffect(() => { + if (formType === "add" && userTemplates.isSuccess && !watcher.userTemplate) { + const defaultTemplate = userTemplates.data?.find( + (template) => template.defaultForTenant === true, + ); + if (defaultTemplate) { + formControl.setValue("userTemplate", { + label: defaultTemplate.templateName, + value: defaultTemplate.GUID, + addedFields: defaultTemplate, + }); + setSelectedTemplate(defaultTemplate); + } + } + }, [userTemplates.isSuccess, formType]); + + // Auto-populate fields when template selected + useEffect(() => { + if (formType === "add" && watcher.userTemplate?.addedFields) { + const template = watcher.userTemplate.addedFields; + setSelectedTemplate(template); + + // Reset manual edit flags when template changes + setDisplayNameManuallySet(false); + setUsernameManuallySet(false); + + // Only set fields if they don't already have values (don't override user input) + const setFieldIfEmpty = (fieldName, value) => { + if (!watcher[fieldName] && value) { + formControl.setValue(fieldName, value); + } + }; + + // Populate form fields from template + if (template.primDomain) { + // If primDomain is an object, use it as-is; if it's a string, convert to object + const primDomainValue = + typeof template.primDomain === "string" + ? { label: template.primDomain, value: template.primDomain } + : template.primDomain; + setFieldIfEmpty("primDomain", primDomainValue); + } + if (template.usageLocation) { + // Handle both object and string formats + const usageLocationCode = + typeof template.usageLocation === "string" + ? template.usageLocation + : template.usageLocation?.value; + const country = countryList.find((c) => c.Code === usageLocationCode); + if (country) { + setFieldIfEmpty("usageLocation", { + label: country.Name, + value: country.Code, + }); + } + } + setFieldIfEmpty("jobTitle", template.jobTitle); + setFieldIfEmpty("streetAddress", template.streetAddress); + setFieldIfEmpty("city", template.city); + setFieldIfEmpty("state", template.state); + setFieldIfEmpty("postalCode", template.postalCode); + setFieldIfEmpty("country", template.country); + setFieldIfEmpty("companyName", template.companyName); + setFieldIfEmpty("department", template.department); + setFieldIfEmpty("mobilePhone", template.mobilePhone); + setFieldIfEmpty("businessPhones[0]", template.businessPhones); + + // Handle licenses - need to match the format expected by CippFormLicenseSelector + if (template.licenses && Array.isArray(template.licenses)) { + setFieldIfEmpty("licenses", template.licenses); + } } - }, [watcher.givenName, watcher.surname]); + }, [watcher.userTemplate, formType]); return ( - + {formType === "add" && ( + <> + + + + + ({ + label: template.templateName, + value: template.GUID, + addedFields: template, + })) + : [] + } + formControl={formControl} + /> + + + )} + - + - + { + setDisplayNameManuallySet(true); + }} + required={true} /> - + { }} name="username" formControl={formControl} + validators={{ + required: "Username is required", + maxLength: { value: 64, message: "Username cannot exceed 64 characters" }, + pattern: { + value: /^[A-Za-z0-9'.\-_!#^~]+$/, + message: "Username can only contain letters, numbers, and ' . - _ ! # ^ ~ characters", + }, + }} + onChange={(e) => { + setUsernameManuallySet(true); + }} + required={true} /> - + - + { /> - + Settings - + { compareType="is" compareValue={true} > - + { - + { formControl={formControl} /> - + ({ label: Name, value: Code, @@ -172,7 +442,7 @@ const CippAddEditUser = (props) => { formControl={formControl} /> - + {integrationSettings?.data?.Sherweb?.Enabled === true && ( @@ -184,7 +454,7 @@ const CippAddEditUser = (props) => { compareValue="(0 available)" labelCompare={true} > - + { compareType="is" compareValue={true} > - + This will Purchase a new Sherweb License for the user, according to the terms and conditions with Sherweb. When the license becomes available, CIPP will assign the license to this user. - + { )} - + { formControl={formControl} /> - + - + - + - + - + + + + - + - + - + - + { formControl={formControl} /> - + {userSettingsDefaults?.userAttributes ?.filter((attribute) => attribute.value !== "sponsor") .map((attribute, idx) => ( - + { ))} {/* Set Manager */} - + {userSettingsDefaults?.userAttributes?.some((attribute) => attribute.value === "sponsor") && ( - + )} - + {formType === "edit" && ( - + { label: tenantGroup.displayName, value: tenantGroup.id, addedFields: { - calculatedGroupType: tenantGroup.calculatedGroupType, + groupType: tenantGroup.groupType, }, }))} + creatable={false} formControl={formControl} /> )} {formType === "edit" && ( - + { label: userGroups.DisplayName, value: userGroups.id, addedFields: { - calculatedGroupType: userGroups.calculatedGroupType, + groupType: userGroups.groupType, }, }))} + creatable={false} formControl={formControl} /> )} + {/* Manual Entry Custom Data Fields */} + {currentTenantManualMappings.length > 0 && ( + <> + + Custom Data + + {currentTenantManualMappings.map((mapping, index) => { + const fieldName = `customData.${mapping.customDataAttribute.value}`; + const fieldLabel = mapping.manualEntryFieldLabel; + const dataType = mapping.customDataAttribute.addedFields.dataType; + + // Determine field type based on the custom data attribute type + const getFieldType = (dataType) => { + switch (dataType?.toLowerCase()) { + case "boolean": + return "switch"; + case "datetime": + case "date": + return "datePicker"; + case "string": + default: + return "textField"; + } + }; + + return ( + + + + ); + })} + + )} {/* Schedule User Creation */} {formType === "add" && ( - - - - - - - - - - - - - - + <> + + + + + + + + + + + + + + + + + + + )} ); diff --git a/src/components/CippFormPages/CippAddGroupForm.jsx b/src/components/CippFormPages/CippAddGroupForm.jsx index 19404676fc68..713bb414c638 100644 --- a/src/components/CippFormPages/CippAddGroupForm.jsx +++ b/src/components/CippFormPages/CippAddGroupForm.jsx @@ -1,17 +1,31 @@ -import React from "react"; import { InputAdornment } from "@mui/material"; import { Grid } from "@mui/system"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormCondition } from "/src/components/CippComponents/CippFormCondition"; +import CippFormComponent from "../CippComponents/CippFormComponent"; +import { CippFormCondition } from "../CippComponents/CippFormCondition"; import { CippFormDomainSelector } from "../CippComponents/CippFormDomainSelector"; import { CippFormUserSelector } from "../CippComponents/CippFormUserSelector"; +const DynamicMembershipRules = ({ formControl }) => ( + + + +); + const CippAddGroupForm = (props) => { const { formControl } = props; return ( - + { fullWidth /> - + { fullWidth /> - + { }} /> - + { /> - + { /> - + { select={"id,userPrincipalName,displayName"} /> - + { { label: "Security Group", value: "generic" }, { label: "Microsoft 365 Group", value: "m365" }, { label: "Dynamic Group", value: "dynamic" }, - { label: "Dynamic Distribution Group", value: "dynamicDistribution" }, + { label: "Dynamic Distribution Group", value: "dynamicdistribution" }, { label: "Distribution List", value: "distribution" }, { label: "Mail Enabled Security Group", value: "security" }, ]} @@ -89,10 +103,10 @@ const CippAddGroupForm = (props) => { - + { /> + + + + + - + { const { formControl } = props; @@ -18,7 +18,7 @@ const CippAddGroupTemplateForm = (props) => { {/* Hidden field to store the template GUID when editing */} - + { fullWidth /> - + { fullWidth /> - + { /> - + { { label: "Security Group", value: "generic" }, { label: "Microsoft 365 Group", value: "m365" }, { label: "Dynamic Group", value: "dynamic" }, - { label: "Dynamic Distribution Group", value: "dynamicdistribution" }, + { label: "Dynamic Distribution Group", value: "dynamicDistribution" }, { label: "Distribution List", value: "distribution" }, { label: "Mail Enabled Security Group", value: "security" }, ]} @@ -69,10 +69,10 @@ const CippAddGroupTemplateForm = (props) => { - + { /> + + + + + - + { + + return ( + + + + + + + + @, + }} + /> + + + + + + + + + ); +}; + +export default CippAddRoomListForm; \ No newline at end of file diff --git a/src/components/CippFormPages/CippCustomDataMappingForm.jsx b/src/components/CippFormPages/CippCustomDataMappingForm.jsx index 764bbe56c247..8a5d30af5da7 100644 --- a/src/components/CippFormPages/CippCustomDataMappingForm.jsx +++ b/src/components/CippFormPages/CippCustomDataMappingForm.jsx @@ -1,16 +1,17 @@ import { useWatch } from "react-hook-form"; import { Box, Stack, Typography, Divider } from "@mui/material"; import { Grid } from "@mui/system"; -import { CippFormComponent } from "/src/components/CippComponents/CippFormComponent"; -import { CippFormTenantSelector } from "/src/components/CippComponents/CippFormTenantSelector"; -import { CippFormCondition } from "/src/components/CippComponents/CippFormCondition"; -import { CippPropertyListCard } from "/src/components/CippCards/CippPropertyListCard"; -import { CippCopyToClipBoard } from "/src/components/CippComponents/CippCopyToClipboard"; -import extensionDataMapping from "/src/data/extensionDataMapping"; -import { getCippTranslation } from "/src/utils/get-cipp-translation"; +import { CippFormComponent } from "../CippComponents/CippFormComponent"; +import { CippFormTenantSelector } from "../CippComponents/CippFormTenantSelector"; +import { CippFormCondition } from "../CippComponents/CippFormCondition"; +import { CippPropertyListCard } from "../CippCards/CippPropertyListCard"; +import { CippCopyToClipBoard } from "../CippComponents/CippCopyToClipboard"; +import extensionDataMapping from "../../data/extensionDataMapping"; +import { getCippTranslation } from "../../utils/get-cipp-translation"; const CippCustomDataMappingForm = ({ formControl }) => { const selectedAttribute = useWatch({ control: formControl.control, name: "customDataAttribute" }); + const selectedDirectoryObjectType = useWatch({ control: formControl.control, name: "directoryObjectType", @@ -19,19 +20,35 @@ const CippCustomDataMappingForm = ({ formControl }) => { control: formControl.control, name: "extensionSyncDataset", }); + const selectedSourceType = useWatch({ + control: formControl.control, + name: "sourceType", + }); + const selectedManualEntryFieldLabel = useWatch({ + control: formControl.control, + name: "manualEntryFieldLabel", + }); + + console.log("Selected directory object type: ", selectedDirectoryObjectType); const staticTargetTypes = [{ value: "user", label: "User" }]; + // Top-level source type selection + const sourceTypeField = { + name: "sourceType", + label: "Source Type", + type: "autoComplete", + required: true, + multiple: false, + placeholder: "Select a Source Type", + options: [ + { value: "reportingDb", label: "Reporting DB" }, + { value: "manualEntry", label: "Manual Entry" }, + ], + }; + + // Extension Sync specific fields const sourceFields = [ - { - name: "sourceType", - label: "Source Type", - type: "autoComplete", - required: true, - multiple: false, - placeholder: "Select a Source Type", - options: [{ value: "extensionSync", label: "Extension Sync" }], - }, { name: "extensionSyncDataset", label: "Extension Sync Dataset", @@ -47,8 +64,8 @@ const CippCustomDataMappingForm = ({ formControl }) => { creatable: false, condition: { field: "sourceType", - compareType: "is", - compareValue: "extensionSync", + compareType: "valueEq", + compareValue: "reportingDb", }, }, { @@ -77,6 +94,59 @@ const CippCustomDataMappingForm = ({ formControl }) => { }, ]; + // Manual Entry specific fields + const manualEntryFields = [ + { + name: "manualEntryFieldLabel", + label: "Field Label", + type: "textField", + required: true, + placeholder: "Enter field label (e.g., Employee ID, Department)", + disableVariables: true, + }, + { + name: "directoryObjectType", + label: "Directory Object Type", + type: "autoComplete", + required: true, + placeholder: "Select an Object Type", + options: staticTargetTypes, + multiple: false, + creatable: false, + }, + { + name: "customDataAttribute", + label: "Attribute", + type: "autoComplete", + required: true, + placeholder: "Select an Attribute", + api: { + url: "/api/ExecCustomData?Action=ListAvailableAttributes", + queryKey: "CustomAttributes", + dataKey: "Results", + dataFilter: (options) => { + if (!selectedDirectoryObjectType?.value) return options; + return options.filter( + (option) => + option?.addedFields?.targetObject?.toLowerCase() === + selectedDirectoryObjectType?.value?.toLowerCase() + ); + }, + valueField: "name", + labelField: "name", + showRefresh: true, + addedField: { + type: "type", + targetObject: "targetObject", + dataType: "dataType", + isMultiValued: "isMultiValued", + }, + }, + multiple: false, + sortOptions: true, + }, + ]; + const destinationFields = [ { name: "directoryObjectType", @@ -125,7 +195,7 @@ const CippCustomDataMappingForm = ({ formControl }) => { return ( - + @@ -143,44 +213,76 @@ const CippCustomDataMappingForm = ({ formControl }) => { - Source Details + Source Type - {sourceFields.map((field, index) => ( - <> - {field?.condition ? ( - - - - ) : ( - - )} - - ))} - - - - - Destination Details - - {destinationFields.map((field, index) => ( - <> - {field?.condition ? ( - - - - ) : ( - - )} - - ))} + + + {selectedSourceType?.value === "reportingDb" && ( + <> + + + Source Details + + {sourceFields.map((field, index) => ( + <> + {field?.condition ? ( + + + + ) : ( + + )} + + ))} + + + + + Destination Details + + {destinationFields.map((field, index) => ( + <> + {field?.condition ? ( + + + + ) : ( + + )} + + ))} + + + + )} + + {selectedSourceType?.value === "manualEntry" && ( + + + Manual Entry Configuration + + {manualEntryFields.map((field, index) => ( + + ))} + + + )} - + - {selectedExtensionSyncDataset && ( + {selectedExtensionSyncDataset && selectedSourceType?.value === "reportingDb" && ( { /> )} + {selectedSourceType?.value === "manualEntry" && selectedManualEntryFieldLabel && ( + + )} + {selectedAttribute && ( { ); }; -export default CippCustomDataMappingForm; \ No newline at end of file +export default CippCustomDataMappingForm; diff --git a/src/components/CippFormPages/CippExchangeSettingsForm.jsx b/src/components/CippFormPages/CippExchangeSettingsForm.jsx index 767e3cf43e85..ee8bfc143074 100644 --- a/src/components/CippFormPages/CippExchangeSettingsForm.jsx +++ b/src/components/CippFormPages/CippExchangeSettingsForm.jsx @@ -1,30 +1,30 @@ -import React, { useState, useEffect } from "react"; +import { useState, useEffect } from "react"; import { Box, Button, Card, Collapse, Divider, - IconButton, Stack, SvgIcon, Typography, Tooltip, + CircularProgress, + IconButton, } from "@mui/material"; -import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormCondition } from "/src/components/CippComponents/CippFormCondition"; -import { Forward } from "@mui/icons-material"; +import { Check, Error, Sync } from "@mui/icons-material"; +import CippFormComponent from "../CippComponents/CippFormComponent"; import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; import { useSettings } from "../../hooks/use-settings"; import { Grid } from "@mui/system"; import { CippApiResults } from "../CippComponents/CippApiResults"; import { useWatch } from "react-hook-form"; import { ChevronDownIcon } from "@heroicons/react/24/outline"; +import CippForwardingSection from "../CippComponents/CippForwardingSection"; const CippExchangeSettingsForm = (props) => { const userSettingsDefaults = useSettings(); - const { formControl, currentSettings, userId, calPermissions, isFetching } = props; + const { formControl, currentSettings, userId, calPermissions, isFetching, oooRequest } = props; // State to manage the expanded panels const [expandedPanel, setExpandedPanel] = useState(null); const [relatedQueryKeys, setRelatedQueryKeys] = useState([]); @@ -37,22 +37,6 @@ const CippExchangeSettingsForm = (props) => { // Calculate if date fields should be disabled const areDateFieldsDisabled = autoReplyState?.value !== "Scheduled"; - - useEffect(() => { - console.log('Auto Reply State changed:', { - autoReplyState, - areDateFieldsDisabled, - fullFormValues: formControl.getValues() - }); - }, [autoReplyState]); - - // Add debug logging for form values - useEffect(() => { - const subscription = formControl.watch((value, { name, type }) => { - console.log('Form value changed:', { name, type, value }); - }); - return () => subscription.unsubscribe(); - }, [formControl]); const handleExpand = (panel) => { setExpandedPanel((prev) => (prev === panel ? null : panel)); @@ -64,17 +48,58 @@ const CippExchangeSettingsForm = (props) => { Endpoint: `users`, tenantFilter: userSettingsDefaults.currentTenant, $select: "id,displayName,userPrincipalName,mail", - noPagination: true, $top: 999, }, queryKey: `UserNames-${userSettingsDefaults.currentTenant}`, }); + const contactsList = ApiGetCall({ + url: "/api/ListGraphRequest", + data: { + Endpoint: `contacts`, + tenantFilter: userSettingsDefaults.currentTenant, + $select: "displayName,mail,mailNickname", + $top: 999, + }, + queryKey: `TenantContacts-${userSettingsDefaults.currentTenant}`, + }); + const postRequest = ApiPostCall({ datafromUrl: true, relatedQueryKeys: relatedQueryKeys, }); + // Handle form reset and set dropdown state after successful API calls + useEffect(() => { + if (postRequest.isSuccess) { + // If this was an OOO submission, preserve the submitted values + if (relatedQueryKeys.includes(`ooo-${userId}`)) { + const submittedValues = formControl.getValues(); + const oooFields = [ + "AutoReplyState", + "InternalMessage", + "ExternalMessage", + "StartTime", + "EndTime", + ]; + + // Reset the form + formControl.reset(); + + // Restore the submitted OOO values + oooFields.forEach((field) => { + const value = submittedValues.ooo?.[field]; + if (value !== undefined) { + formControl.setValue(`ooo.${field}`, value); + } + }); + } else { + // For non-OOO submissions, just reset normally + formControl.reset(); + } + } + }, [postRequest.isSuccess, relatedQueryKeys, userId, formControl]); + const handleSubmit = (type) => { if (type === "calendar") { setRelatedQueryKeys([`CalendarPermissions-${userId}`]); @@ -117,105 +142,63 @@ const CippExchangeSettingsForm = (props) => { data: data, queryKey: "MailboxPermissions", }); - - // Reset the form - formControl.reset(); }; // Data for each section const sections = [ { id: "mailboxForwarding", - cardLabelBox: currentSettings?.ForwardAndDeliver ? : "-", + cardLabelBox: { + cardLabelBoxHeader: isFetching ? ( + + ) : currentSettings?.ForwardingAddress ? ( + + ) : ( + + ), + }, text: "Mailbox Forwarding", - subtext: "Configure email forwarding options", + subtext: currentSettings?.ForwardingAddress + ? "Email forwarding is configured for this mailbox" + : "No email forwarding configured for this mailbox", formContent: ( - - - - - ({ - value: user.userPrincipalName, - label: `${user.displayName} (${user.userPrincipalName})`, - })) || [] - } - formControl={formControl} - /> - - - - - - - - - - - - - - + ), }, { id: "outOfOffice", - cardLabelBox: "OOO", + cardLabelBox: { + cardLabelBoxHeader: OOO, + }, text: "Out Of Office", subtext: "Set automatic replies for when you are away", + action: oooRequest + ? { + tooltip: oooRequest.isFetching + ? "Refreshing Out Of Office data" + : "Refresh Out Of Office data", + onClick: () => oooRequest.refetch(), + disabled: oooRequest.isFetching, + isLoading: oooRequest.isFetching, + } + : null, formContent: ( - + { ]} /> - - + @@ -239,9 +226,13 @@ const CippExchangeSettingsForm = (props) => { - - + @@ -255,7 +246,7 @@ const CippExchangeSettingsForm = (props) => { - + { rows={4} /> - + { rows={4} /> - + @@ -293,22 +284,29 @@ const CippExchangeSettingsForm = (props) => { }, { id: "recipientLimits", - cardLabelBox: "RL", + cardLabelBox: { + cardLabelBoxHeader: RL, + }, text: "Recipient Limits", subtext: "Set the maximum number of recipients per message", formContent: ( - + - + @@ -354,14 +352,14 @@ const CippExchangeSettingsForm = (props) => { sx={{ alignItems: "center", borderRadius: 1, - color: "primary.contrastText", + color: "text.secondary", display: "flex", height: 40, justifyContent: "center", width: 40, }} > - {section.cardLabelBox} + {section.cardLabelBox.cardLabelBoxHeader} {/* Main Text and Subtext */} @@ -375,15 +373,49 @@ const CippExchangeSettingsForm = (props) => { - - - + + {section.action && ( + + + { + event.stopPropagation(); + section.action.onClick?.(); + }} + disabled={section.action.disabled} + sx={{ + color: "text.secondary", + }} + > + + + + + + + )} + + + + diff --git a/src/components/CippFormPages/CippFormPage.jsx b/src/components/CippFormPages/CippFormPage.jsx index 448eb0604498..ceea7f20b8af 100644 --- a/src/components/CippFormPages/CippFormPage.jsx +++ b/src/components/CippFormPages/CippFormPage.jsx @@ -21,6 +21,7 @@ const CippFormPage = (props) => { const { title, backButtonTitle, + titleButton, formPageType = "Add", children, queryKey, @@ -46,12 +47,11 @@ const CippFormPage = (props) => { const { isValid, isDirty } = useFormState({ control: formControl.control }); useEffect(() => { - delete router.query.tenantFilter; - if (router.query) { + const { tenantFilter: _tenantFilter, ...queryWithoutTenant } = router.query; const resetValues = { ...formControl.getValues(), - ...router.query, + ...queryWithoutTenant, }; formControl.reset(resetValues); } @@ -78,12 +78,26 @@ const CippFormPage = (props) => { const values = customDataformatter ? customDataformatter(formControl.getValues()) : formControl.getValues(); - //remove all empty values or blanks - Object.keys(values).forEach((key) => { - if (values[key] === "" || values[key] === null) { - delete values[key]; + //remove all empty values or blanks (recursively) + const removeEmpty = (obj) => { + if (Array.isArray(obj)) { + return obj + .map((item) => (item && typeof item === "object" ? removeEmpty(item) : item)) + .filter((item) => item !== "" && item !== null && item !== undefined); } - }); + Object.keys(obj).forEach((key) => { + if (obj[key] === "" || obj[key] === null || obj[key] === undefined) { + delete obj[key]; + } else if (typeof obj[key] === "object") { + obj[key] = removeEmpty(obj[key]); + if (!Array.isArray(obj[key]) && Object.keys(obj[key]).length === 0) { + delete obj[key]; + } + } + }); + return obj; + }; + removeEmpty(values); postCall.mutate({ url: postUrl, data: values, @@ -95,34 +109,20 @@ const CippFormPage = (props) => { - + {!hideTitle && ( - {!hideBackButton && ( -
    - -
    - )} - -
    +
    {!hidePageType && <>{formPageType} - } {title} + {titleButton && titleButton}
    )} diff --git a/src/components/CippFormPages/CippFormSkeleton.jsx b/src/components/CippFormPages/CippFormSkeleton.jsx index 77a04daf9b0d..5fba2ef46370 100644 --- a/src/components/CippFormPages/CippFormSkeleton.jsx +++ b/src/components/CippFormPages/CippFormSkeleton.jsx @@ -8,7 +8,7 @@ const CippFormSkeleton = ({ layout }) => { {layout.map((columns, rowIndex) => ( {Array.from({ length: columns }).map((_, columnIndex) => ( - + ))} diff --git a/src/components/CippFormPages/CippInviteGuest.jsx b/src/components/CippFormPages/CippInviteGuest.jsx index 6e3f597fcbfb..225c3282dd45 100644 --- a/src/components/CippFormPages/CippInviteGuest.jsx +++ b/src/components/CippFormPages/CippInviteGuest.jsx @@ -1,12 +1,12 @@ import "@mui/material"; import { Grid } from "@mui/system"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; +import CippFormComponent from "../CippComponents/CippFormComponent"; const CippInviteUser = (props) => { const { formControl, userSettingsDefaults } = props; return ( - + { formControl={formControl} /> - + { formControl={formControl} /> - + { formControl={formControl} /> - + { if (Array.isArray(obj)) { @@ -42,30 +41,93 @@ const cleanObject = (obj) => { } }; -// Function to check if a string is a GUID -const isGuid = (str) => { - if (typeof str !== "string") return false; - const guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - return guidRegex.test(str); -}; - -// Function to recursively scan an object for GUIDs -const findGuids = (obj, guidsSet = new Set()) => { - if (!obj) return guidsSet; +const renderListItems = (data, onItemClick, guidMapping = {}, isLoadingGuids = false, isGuid) => { + // Check if this data object is from a diff + const isDiffData = data?.__isDiffData === true; + + // Helper to try parsing JSON strings + const tryParseJson = (str) => { + if (typeof str !== "string") return null; + try { + return JSON.parse(str); + } catch { + return null; + } + }; - if (typeof obj === "string" && isGuid(obj)) { - guidsSet.add(obj); - } else if (Array.isArray(obj)) { - obj.forEach((item) => findGuids(item, guidsSet)); - } else if (typeof obj === "object") { - Object.values(obj).forEach((value) => findGuids(value, guidsSet)); - } + // Helper to get deep object differences + const getObjectDiff = (oldObj, newObj, path = "") => { + const changes = []; + const allKeys = new Set([...Object.keys(oldObj || {}), ...Object.keys(newObj || {})]); + + allKeys.forEach((key) => { + const currentPath = path ? `${path}.${key}` : key; + const oldVal = oldObj?.[key]; + const newVal = newObj?.[key]; + + if (oldVal === undefined && newVal !== undefined) { + changes.push({ path: currentPath, type: "added", newValue: newVal }); + } else if (oldVal !== undefined && newVal === undefined) { + changes.push({ path: currentPath, type: "removed", oldValue: oldVal }); + } else if (JSON.stringify(oldVal) !== JSON.stringify(newVal)) { + if (typeof oldVal === "object" && typeof newVal === "object" && oldVal && newVal) { + changes.push(...getObjectDiff(oldVal, newVal, currentPath)); + } else { + changes.push({ path: currentPath, type: "modified", oldValue: oldVal, newValue: newVal }); + } + } + }); - return guidsSet; -}; + return changes; + }; -const renderListItems = (data, onItemClick, guidMapping = {}, isLoadingGuids = false) => { return Object.entries(data).map(([key, value]) => { + // Skip the diff marker key + if (key === "__isDiffData") { + return null; + } + + // Special handling for oldValue/newValue pairs + if (key === "oldValue" && data.newValue !== undefined) { + const oldObj = tryParseJson(value); + const newObj = tryParseJson(data.newValue); + + // If both are JSON objects, show detailed diff + if (oldObj && newObj) { + const diff = getObjectDiff(oldObj, newObj); + if (diff.length > 0) { + return ( + onItemClick({ changes: diff })}> + View {diff.length} change{diff.length > 1 ? "s" : ""} + + } + /> + ); + } + } else { + // For simple strings or non-JSON values, show old โ†’ new + return ( + + ); + } + } + + // Skip newValue if we already handled it with oldValue + if (key === "newValue" && data.oldValue !== undefined) { + return null; + } + if (Array.isArray(value)) { return ( ); } else { - return ( - - ); + // If this is diff data, show the value directly without formatting + const displayValue = isDiffData ? value : getCippFormatting(value, key); + + return ; } }); }; @@ -132,97 +191,14 @@ function CippJsonView({ object = { "No Data Selected": "No Data Selected" }, type, defaultOpen = false, + title = "Policy Details", }) { const [viewJson, setViewJson] = useState(false); const [accordionOpen, setAccordionOpen] = useState(defaultOpen); - const [drilldownData, setDrilldownData] = useState([]); - const [guidMapping, setGuidMapping] = useState({}); - const [notFoundGuids, setNotFoundGuids] = useState(new Set()); - const [isLoadingGuids, setIsLoadingGuids] = useState(false); - const [pendingGuids, setPendingGuids] = useState([]); - const [lastRequestTime, setLastRequestTime] = useState(0); - const tenantFilter = useSettings().currentTenant; - - // Setup API call for directory objects resolution - const directoryObjectsMutation = ApiPostCall({ - relatedQueryKeys: ["directoryObjects"], - onResult: (data) => { - if (data && Array.isArray(data.value)) { - const newMapping = {}; - - // Process the returned results - data.value.forEach((item) => { - if (item.id && (item.displayName || item.userPrincipalName || item.mail)) { - // Prefer displayName, fallback to UPN or mail if available - newMapping[item.id] = item.displayName || item.userPrincipalName || item.mail; - } - }); - - // Find GUIDs that were sent but not returned in the response - const processedGuids = new Set(pendingGuids); - const returnedGuids = new Set(data.value.map((item) => item.id)); - const notReturned = [...processedGuids].filter((guid) => !returnedGuids.has(guid)); - - // Add them to the notFoundGuids set - if (notReturned.length > 0) { - setNotFoundGuids((prev) => { - const newSet = new Set(prev); - notReturned.forEach((guid) => newSet.add(guid)); - return newSet; - }); - } - - setGuidMapping((prevMapping) => ({ ...prevMapping, ...newMapping })); - setPendingGuids([]); - setIsLoadingGuids(false); - } - }, - }); - - // Function to handle resolving GUIDs - used in both useEffect and handleItemClick - const resolveGuids = (objectToScan) => { - const guidsSet = findGuids(objectToScan); - - if (guidsSet.size === 0) return; - - const guidsArray = Array.from(guidsSet); - // Filter out GUIDs that are already resolved or known to not be resolvable - const notResolvedGuids = guidsArray.filter( - (guid) => !guidMapping[guid] && !notFoundGuids.has(guid) - ); - - if (notResolvedGuids.length === 0) return; + const [drilldownData, setDrilldownData] = useState([]); // Array of { data, title } - // Merge with any pending GUIDs to avoid duplicate requests - const allPendingGuids = [...new Set([...pendingGuids, ...notResolvedGuids])]; - setPendingGuids(allPendingGuids); - setIsLoadingGuids(true); - - // Implement throttling - only send a new request every 2 seconds - const now = Date.now(); - if (now - lastRequestTime < 2000) { - return; - } - - setLastRequestTime(now); - - // Only send a maximum of 1000 GUIDs per request - const batchSize = 1000; - const guidsToSend = allPendingGuids.slice(0, batchSize); - - if (guidsToSend.length > 0) { - directoryObjectsMutation.mutate({ - url: "/api/ListDirectoryObjects", - data: { - tenantFilter: tenantFilter, - ids: guidsToSend, - $select: "id,displayName,userPrincipalName,mail", - }, - }); - } else { - setIsLoadingGuids(false); - } - }; + // Use the GUID resolver hook + const { guidMapping, isLoadingGuids, resolveGuids, isGuid } = useGuidResolver(); const renderIntuneItems = (data) => { const items = []; @@ -286,9 +262,11 @@ function CippJsonView({ let value; if (child.choiceSettingValue && child.choiceSettingValue.value) { value = - childIntuneObj?.options?.find( - (option) => option.id === child.choiceSettingValue.value - )?.displayName || child.choiceSettingValue.value; + (Array.isArray(childIntuneObj?.options) && + childIntuneObj.options.find( + (option) => option.id === child.choiceSettingValue.value + )?.displayName) || + child.choiceSettingValue.value; } items.push( option.id === rawValue)?.displayName || rawValue; + (Array.isArray(intuneObj?.options) && + intuneObj.options.find((option) => option.id === rawValue)?.displayName) || + rawValue; // Check if optionValue is a GUID that we've resolved if (typeof optionValue === "string" && isGuid(optionValue) && guidMapping[optionValue]) { @@ -433,57 +413,160 @@ function CippJsonView({ "createdDateTime", "modifiedDateTime", ]; - const cleanedObj = cleanObject(object); + const cleanedObj = cleanObject(object) || {}; const filteredObj = Object.fromEntries( Object.entries(cleanedObj).filter(([key]) => !blacklist.includes(key)) ); - setDrilldownData([filteredObj]); + setDrilldownData([{ data: filteredObj, title: null }]); - // Using the centralized resolveGuids function to handle GUID resolution + // Using the resolveGuids function from the hook to handle GUID resolution resolveGuids(cleanedObj); - }, [object, tenantFilter]); - - // Effect to reprocess any pending GUIDs when the guidMapping changes or throttling window passes - useEffect(() => { - if (pendingGuids.length > 0 && !isLoadingGuids) { - const now = Date.now(); - if (now - lastRequestTime >= 2000) { - // Only send a maximum of 1000 GUIDs per request - const batchSize = 1000; - const guidsToSend = pendingGuids.slice(0, batchSize); - - setLastRequestTime(now); - setIsLoadingGuids(true); - - directoryObjectsMutation.mutate({ - url: "/api/ListDirectoryObjects", - data: { - tenantFilter: tenantFilter, - ids: guidsToSend, - $select: "id,displayName,userPrincipalName,mail", - }, - }); - } - } - }, [ - guidMapping, - notFoundGuids, - pendingGuids, - lastRequestTime, - isLoadingGuids, - directoryObjectsMutation, - tenantFilter, - ]); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [object]); const toggleView = () => setViewJson(!viewJson); const handleItemClick = (itemData, level) => { const updatedData = drilldownData.slice(0, level + 1); - updatedData[level + 1] = itemData; + + // Helper to check if an array contains only simple key/value objects + const isArrayOfKeyValuePairs = (arr) => { + if (!Array.isArray(arr) || arr.length === 0) return false; + return arr.every((item) => { + if (typeof item !== "object" || item === null || Array.isArray(item)) return false; + // Check if all values are primitives (not nested objects/arrays) + return Object.values(item).every((val) => typeof val !== "object" || val === null); + }); + }; + + // Compress single-property objects and single-item arrays into the same pane + let dataToAdd = itemData; + const compressedKeys = []; + let wasCompressed = false; + + // Special handling for diff changes object + if (dataToAdd?.changes && Array.isArray(dataToAdd.changes)) { + const diffObject = {}; + const blacklistFields = ["createdDateTime", "modifiedDateTime", "id"]; + + dataToAdd.changes.forEach((change) => { + const label = change.path; + + // Skip blacklisted fields in nested paths + const pathParts = label.split("."); + const lastPart = pathParts[pathParts.length - 1]; + if (blacklistFields.includes(lastPart)) { + return; + } + + let hasValue = false; + let displayValue = ""; + + if (change.type === "added") { + if (change.newValue !== null && change.newValue !== undefined && change.newValue !== "") { + displayValue = `[ADDED] ${JSON.stringify(change.newValue)}`; + hasValue = true; + } + } else if (change.type === "removed") { + if (change.oldValue !== null && change.oldValue !== undefined && change.oldValue !== "") { + displayValue = `[REMOVED] ${JSON.stringify(change.oldValue)}`; + hasValue = true; + } + } else if (change.type === "modified") { + const oldHasValue = + change.oldValue !== null && change.oldValue !== undefined && change.oldValue !== ""; + const newHasValue = + change.newValue !== null && change.newValue !== undefined && change.newValue !== ""; + + // Only show if at least one side has a meaningful value (not both empty) + if (oldHasValue || newHasValue) { + // If both have values, show the change + if (oldHasValue && newHasValue) { + displayValue = `${JSON.stringify(change.oldValue)} โ†’ ${JSON.stringify( + change.newValue + )}`; + hasValue = true; + } + // If only new has value, treat as added + else if (newHasValue) { + displayValue = `[ADDED] ${JSON.stringify(change.newValue)}`; + hasValue = true; + } + // If only old has value, treat as removed + else if (oldHasValue) { + displayValue = `[REMOVED] ${JSON.stringify(change.oldValue)}`; + hasValue = true; + } + } + } + + if (hasValue) { + diffObject[label] = displayValue; + } + }); + // Mark this object as containing diff data + dataToAdd = { ...diffObject, __isDiffData: true }; + } + + // Check if this is an array of items with oldValue/newValue (modifiedProperties pattern) + const hasOldNewValues = (arr) => { + if (!Array.isArray(arr) || arr.length === 0) return false; + return arr.some((item) => item?.oldValue !== undefined || item?.newValue !== undefined); + }; + + // If the data is an array of key/value pairs, convert to a flat object + // But skip if it's an array with oldValue/newValue properties (let normal rendering handle it) + if (isArrayOfKeyValuePairs(dataToAdd) && !hasOldNewValues(dataToAdd)) { + const flatObject = {}; + dataToAdd.forEach((item) => { + const key = item.key || item.name || item.displayName; + const value = item.value || item.newValue || ""; + if (key) { + flatObject[key] = value; + } + }); + dataToAdd = flatObject; + } + + while (dataToAdd && typeof dataToAdd === "object") { + // Handle single-item arrays + if (Array.isArray(dataToAdd) && dataToAdd.length === 1) { + const singleItem = dataToAdd[0]; + if (singleItem && typeof singleItem === "object") { + compressedKeys.push("[0]"); + dataToAdd = singleItem; + wasCompressed = true; + continue; + } else { + break; + } + } + + // Handle single-property objects + if (!Array.isArray(dataToAdd) && Object.keys(dataToAdd).length === 1) { + const singleKey = Object.keys(dataToAdd)[0]; + const singleValue = dataToAdd[singleKey]; + + // Only compress if the value is also an object or single-item array + if (singleValue && typeof singleValue === "object") { + compressedKeys.push(singleKey); + dataToAdd = singleValue; + wasCompressed = true; + continue; + } + } + + break; + } + + // Create title from compressed keys if compression occurred + const title = wasCompressed ? compressedKeys.join(" > ") : null; + + updatedData[level + 1] = { data: dataToAdd, title }; setDrilldownData(updatedData); - // Use the centralized resolveGuids function to handle GUID resolution for drill-down data - resolveGuids(itemData); + // Use the resolveGuids function from the hook to handle GUID resolution for drill-down data + resolveGuids(dataToAdd); }; return ( @@ -498,7 +581,7 @@ function CippJsonView({ > - Policy Details + {title} {isLoadingGuids && ( @@ -516,10 +599,9 @@ function CippJsonView({ ) : ( {drilldownData - ?.filter((data) => data !== null && data !== undefined) - .map((data, index) => ( + ?.filter((item) => item !== null && item !== undefined) + .map((item, index) => ( + {item.title && ( + + {getCippTranslation(item.title)} + + )} {type !== "intune" && ( {renderListItems( - data, + item.data, (itemData) => handleItemClick(itemData, index), guidMapping, - isLoadingGuids + isLoadingGuids, + isGuid )} )} - {type === "intune" && {renderIntuneItems(data)}} + {type === "intune" && {renderIntuneItems(item.data)}} ))} diff --git a/src/components/CippFormPages/CippSafeLinksPolicyRuleForm.jsx b/src/components/CippFormPages/CippSafeLinksPolicyRuleForm.jsx new file mode 100644 index 000000000000..2937aec1ae1a --- /dev/null +++ b/src/components/CippFormPages/CippSafeLinksPolicyRuleForm.jsx @@ -0,0 +1,652 @@ +import { useEffect, useState } from "react"; +import { Grid } from "@mui/system"; +import CippFormComponent from "../CippComponents/CippFormComponent"; +import { Typography } from "@mui/material"; +import { CippFormUserSelector } from "../CippComponents/CippFormUserSelector"; +import { CippFormGroupSelector } from "../CippComponents/CippFormGroupSelector"; +import { CippFormDomainSelector } from "../CippComponents/CippFormDomainSelector"; +import { CippInfoCard } from "../CippCards/CippInfoCard"; +import { InformationCircleIcon } from "@heroicons/react/24/outline"; +import { getCippValidator } from "../../utils/get-cipp-validator"; +import { ApiGetCall } from "../../api/ApiCall"; +import { useSettings } from "../../hooks/use-settings"; + +// Utility functions for data processing +export const safeLinksDataUtils = { + // Process arrays for string inputs + formatStringToArray: (value) => { + if (!value || value === '') return []; + if (typeof value === 'string') { + return value.split(',').map(item => item.trim()).filter(item => item !== ''); + } + return value; + }, + + // Process domain fields - handle both string and object values + processDomainField: (field) => { + if (!field) return []; + + if (typeof field === 'string') { + // Handle comma-separated string + return safeLinksDataUtils.formatStringToArray(field); + } else if (Array.isArray(field)) { + // If already an array of strings, return it + if (field.length > 0 && typeof field[0] === 'string') { + return field; + } + // If an array of objects from the domain selector, extract the ids + return field.map(item => item.id || item); + } + return []; + }, + + // Process group fields if they're returned as objects + processGroupField: (field) => { + if (Array.isArray(field)) { + // If the field is already an array of IDs, return it + if (field.length > 0 && typeof field[0] === 'string') { + return field; + } + // If the field is an array of objects, extract the IDs + return field.map(item => item.id || item); + } + return []; + }, + + // Create custom data formatter for different form types + createDataFormatter: (formControl, formType = 'add', additionalFields = {}) => { + return (values) => { + const ruleValues = formControl.getValues(); + + // Base data structure + const baseData = { + // Common fields + PolicyName: values.PolicyName, + tenantFilter: values.tenantFilter, + + // Policy fields + EnableSafeLinksForEmail: values.EnableSafeLinksForEmail, + EnableSafeLinksForTeams: values.EnableSafeLinksForTeams, + EnableSafeLinksForOffice: values.EnableSafeLinksForOffice, + TrackClicks: values.TrackClicks, + AllowClickThrough: values.AllowClickThrough, + ScanUrls: values.ScanUrls, + EnableForInternalSenders: values.EnableForInternalSenders, + DeliverMessageAfterScan: values.DeliverMessageAfterScan, + DisableUrlRewrite: values.DisableUrlRewrite, + DoNotRewriteUrls: Array.isArray(values.DoNotRewriteUrls) ? values.DoNotRewriteUrls : [], + AdminDisplayName: values.AdminDisplayName, + CustomNotificationText: values.CustomNotificationText, + EnableOrganizationBranding: values.EnableOrganizationBranding, + + // Rule fields + RuleName: ruleValues.RuleName, + Priority: ruleValues.Priority, + Comments: ruleValues.Comments, + + // Process user, group and domain fields + SentTo: ruleValues.SentTo, + ExceptIfSentTo: ruleValues.ExceptIfSentTo, + SentToMemberOf: safeLinksDataUtils.processGroupField(ruleValues.SentToMemberOf), + ExceptIfSentToMemberOf: safeLinksDataUtils.processGroupField(ruleValues.ExceptIfSentToMemberOf), + RecipientDomainIs: safeLinksDataUtils.processDomainField(ruleValues.RecipientDomainIs), + ExceptIfRecipientDomainIs: safeLinksDataUtils.processDomainField(ruleValues.ExceptIfRecipientDomainIs), + }; + + // Add form-specific fields + switch (formType) { + case 'add': + return { + ...baseData, + State: ruleValues.State, + }; + + case 'edit': + return { + ...baseData, + State: ruleValues.State, + }; + + case 'template': + return { + ...baseData, + ID: additionalFields.ID, + TemplateName: values.TemplateName, + TemplateDescription: values.TemplateDescription, + State: ruleValues.State ? "Enabled" : "Disabled", + }; + + case 'createTemplate': + return { + ...baseData, + TemplateName: values.TemplateName, + TemplateDescription: values.TemplateDescription, + // If no policy description provided, use template description as fallback + AdminDisplayName: values.AdminDisplayName || values.Description, + State: ruleValues.State, + }; + + default: + return baseData; + } + }; + }, + + // Helper to populate form with existing data + populateFormData: (formControl, data, userSettingsDefaults, formType = 'edit' ) => { + const baseData = { + tenantFilter: userSettingsDefaults.currentTenant, + PolicyName: data.PolicyName, + EnableSafeLinksForEmail: data.EnableSafeLinksForEmail, + EnableSafeLinksForTeams: data.EnableSafeLinksForTeams, + EnableSafeLinksForOffice: data.EnableSafeLinksForOffice, + TrackClicks: data.TrackClicks, + AllowClickThrough: data.AllowClickThrough, + ScanUrls: data.ScanUrls, + EnableForInternalSenders: data.EnableForInternalSenders, + DeliverMessageAfterScan: data.DeliverMessageAfterScan, + DisableUrlRewrite: data.DisableUrlRewrite, + DoNotRewriteUrls: data.DoNotRewriteUrls, + AdminDisplayName: data.AdminDisplayName, + CustomNotificationText: data.CustomNotificationText, + EnableOrganizationBranding: data.EnableOrganizationBranding, + RuleName: data.RuleName, + Priority: data.Priority, + Comments: data.Comments, + State: data.State, + SentTo: data.SentTo || [], + ExceptIfSentTo: data.ExceptIfSentTo || [], + SentToMemberOf: data.SentToMemberOf || [], + ExceptIfSentToMemberOf: data.ExceptIfSentToMemberOf || [], + RecipientDomainIs: data.RecipientDomainIs || [], + ExceptIfRecipientDomainIs: data.ExceptIfRecipientDomainIs || [], + }; + + // Add template-specific fields + if (formType === 'template') { + baseData.TemplateName = data.TemplateName; + baseData.TemplateDescription = data.TemplateDescription; + } + + formControl.reset(baseData); + }, +}; + +export const SafeLinksForm = ({ formControl, formType = "add" }) => { + const { watch, setError, clearErrors } = formControl; + const doNotRewriteUrls = watch("DoNotRewriteUrls"); + const policyName = watch("PolicyName"); + const [isUrlsValid, setIsUrlsValid] = useState(true); + const userSettingsDefaults = useSettings(); + + // Fetch existing policies for name validation (only for add/createTemplate forms) + const shouldFetchPolicies = formType === "add" || formType === "createTemplate"; + const existingPolicies = ApiGetCall({ + url: `/api/ListSafeLinksPolicy?tenantFilter=${userSettingsDefaults.currentTenant}`, + queryKey: `SafeLinksPolicy-List-${userSettingsDefaults.currentTenant}`, + enabled: shouldFetchPolicies, + }); + + // Fetch existing templates for name validation (only for createTemplate forms) + const shouldFetchTemplates = formType === "createTemplate"; + const existingTemplates = ApiGetCall({ + url: `/api/ListSafeLinksPolicyTemplates`, + queryKey: `SafeLinksTemplates-List`, + enabled: shouldFetchTemplates, + }); + + // Create validator for checking duplicate policy names + const validatePolicyName = (value) => { + if (!shouldFetchPolicies || !value) return true; + + // If still loading, allow validation to pass (it will re-validate when data loads) + if (existingPolicies.isFetching) return true; + + // If API call failed, allow validation to pass (don't block user due to API issues) + if (existingPolicies.error) return true; + + if (existingPolicies.isSuccess && existingPolicies.data) { + const existingNames = existingPolicies.data.map(policy => policy.PolicyName?.toLowerCase()).filter(Boolean); + if (existingNames.includes(value.toLowerCase())) { + return "A policy with this name already exists"; + } + + const lowerValue = value.toLowerCase(); + if (lowerValue.startsWith("built-in protection policy") || + lowerValue.startsWith("standard preset security policy") || + lowerValue.startsWith("strict preset security policy")) { + return "This name is reserved for built-in policies"; + } + } + return true; + }; + + // Create validator for checking duplicate template names + const validateTemplateName = (value) => { + if (!shouldFetchTemplates || !value) return true; + + // If still loading, allow validation to pass (it will re-validate when data loads) + if (existingTemplates.isFetching) return true; + + // If API call failed, allow validation to pass (don't block user due to API issues) + if (existingTemplates.error) return true; + + if (existingTemplates.isSuccess && existingTemplates.data) { + const existingNames = existingTemplates.data.map(template => template.name?.toLowerCase()).filter(Boolean); + if (existingNames.includes(value.toLowerCase())) { + return "A template with this name already exists"; + } + } + return true; + }; + + // Helper function to validate a URL/domain entry + const validateDoNotRewriteUrl = (entry) => { + if (!entry) return true; + + // For entries with wildcards, use wildcard validators + if (entry.includes('*') || entry.includes('~')) { + const wildcardUrlResult = getCippValidator(entry, "wildcardUrl"); + const wildcardDomainResult = getCippValidator(entry, "wildcardDomain"); + + if (wildcardUrlResult !== true && wildcardDomainResult !== true) { + return false; + } + return true; + } + + // For standard entries, check normal validators + const hostnameResult = getCippValidator(entry, "hostname"); + const urlResult = getCippValidator(entry, "url"); + const domainResult = getCippValidator(entry, "domain"); + + if (hostnameResult !== true && urlResult !== true && domainResult !== true) { + return false; + } + + return true; + }; + + // Re-validate policy name when existing policies data changes + useEffect(() => { + if (shouldFetchPolicies && (existingPolicies.isSuccess || existingPolicies.error)) { + formControl.trigger('PolicyName'); + } + }, [existingPolicies.isSuccess, existingPolicies.error, existingPolicies.data, shouldFetchPolicies, formControl]); + + // Re-validate template name when existing templates data changes + useEffect(() => { + if (shouldFetchTemplates && (existingTemplates.isSuccess || existingTemplates.error)) { + formControl.trigger('TemplateName'); + } + }, [existingTemplates.isSuccess, existingTemplates.error, existingTemplates.data, shouldFetchTemplates, formControl]); + + // Validate URLs in useEffect and update the validation Enabled + useEffect(() => { + if (!doNotRewriteUrls || doNotRewriteUrls.length === 0) { + clearErrors("DoNotRewriteUrls"); + setIsUrlsValid(true); + return; + } + + let hasInvalidEntry = false; + + for (const item of doNotRewriteUrls) { + const entry = typeof item === 'string' ? item : (item?.value || item?.label || ''); + if (!entry) continue; + + const isValid = validateDoNotRewriteUrl(entry); + if (!isValid) { + hasInvalidEntry = true; + break; + } + } + + if (hasInvalidEntry) { + setError("DoNotRewriteUrls", { + type: "validate", + message: "Not a valid URL, domain, or pattern" + }); + setIsUrlsValid(false); + } else { + clearErrors("DoNotRewriteUrls"); + setIsUrlsValid(true); + } + }, [doNotRewriteUrls, setError, clearErrors]); + + // Set the rule-related values whenever the policy name changes + useEffect(() => { + if (policyName) { + // Always set SafeLinksPolicy to match the policy name + formControl.setValue('SafeLinksPolicy', policyName); + + // Only auto-generate the rule name for new policies + if (formType === "add" || formType === "createTemplate") { + const ruleName = `${policyName}_Rule`; + formControl.setValue('RuleName', ruleName); + } + } + }, [policyName, formType, formControl]); + + // Show template-specific fields + const showTemplateFields = formType === "template" || formType === "createTemplate"; + + return ( + + {/* Template Fields (if applicable) */} + {showTemplateFields && ( + <> + + Template Information + + + + + + + + + )} + + {/* Policy Settings Section */} + + Safe Links Policy Configuration + + + Policy Settings + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + isUrlsValid || "Not a valid URL, domain, or pattern" + } + }} + /> + + + {/* Rule Settings Section */} + + Safe Links Rule Configuration + + + Rule Information + + + + + + + + + + + + + + + Applies To: + + + + + + + + + + + + Exceptions: + + + + + + + + + + + + {/* Information Cards */} + + } + label="Propagation Time" + value="Changes to Safe Links policies and rules may take up to 6 hours to propagate throughout your organization." + isFetching={false} + /> + + + ); +}; + +export default SafeLinksForm; \ No newline at end of file diff --git a/src/components/CippFormPages/CippSchedulerForm.jsx b/src/components/CippFormPages/CippSchedulerForm.jsx index 580ad9116d0b..8857a9d427a5 100644 --- a/src/components/CippFormPages/CippSchedulerForm.jsx +++ b/src/components/CippFormPages/CippSchedulerForm.jsx @@ -1,21 +1,39 @@ -import React from "react"; -import { Box, Button, Divider, Skeleton, SvgIcon, Typography } from "@mui/material"; -import { Grid } from "@mui/system"; +import { + Box, + Button, + Divider, + Skeleton, + SvgIcon, + Typography, + ButtonGroup, + Accordion, + AccordionSummary, + AccordionDetails, + IconButton, + Alert, +} from "@mui/material"; +import { Grid, Stack } from "@mui/system"; import { useWatch } from "react-hook-form"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormTenantSelector } from "/src/components/CippComponents/CippFormTenantSelector"; -import { CippFormCondition } from "/src/components/CippComponents/CippFormCondition"; -import { getCippValidator } from "/src/utils/get-cipp-validator"; +import CippFormComponent from "../CippComponents/CippFormComponent"; +import { CippFormTenantSelector } from "../CippComponents/CippFormTenantSelector"; +import { CippFormCondition } from "../CippComponents/CippFormCondition"; +import CippGraphResourceSelector from "../CippComponents/CippGraphResourceSelector"; +import CippGraphAttributeSelector from "../CippComponents/CippGraphAttributeSelector"; +import { getCippValidator } from "../../utils/get-cipp-validator"; import { useRouter } from "next/router"; -import { ApiGetCall, ApiPostCall } from "/src/api/ApiCall"; -import { useEffect } from "react"; +import Link from "next/link"; +import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; +import { useEffect, useState } from "react"; import CippFormInputArray from "../CippComponents/CippFormInputArray"; import { CippApiResults } from "../CippComponents/CippApiResults"; import { CalendarDaysIcon } from "@heroicons/react/24/outline"; +import { ExpandMoreOutlined, Delete, Add, Sync } from "@mui/icons-material"; const CippSchedulerForm = (props) => { - const { formControl, fullWidth = false } = props; // Added fullWidth prop + const { formControl, fullWidth = false, taskId = null, cloneMode = false } = props; const selectedCommand = useWatch({ control: formControl.control, name: "command" }); + const [addedConditions, setAddedConditions] = useState([{ id: 0 }]); + const [isResourcePickerDisabled, setIsResourcePickerDisabled] = useState(false); const fieldRequired = (field) => { if (field?.Required) { @@ -27,6 +45,17 @@ const CippSchedulerForm = (props) => { } }; + const handleAddCondition = () => { + setAddedConditions([...addedConditions, { id: addedConditions.length }]); + }; + + const handleRemoveCondition = (id) => { + const currentConditions = formControl.getValues("Trigger.DeltaConditions") || []; + const updatedConditions = currentConditions.filter((_, index) => index !== id); + formControl.setValue("Trigger.DeltaConditions", updatedConditions); + setAddedConditions(addedConditions.filter((condition, index) => index !== id)); + }; + const postCall = ApiPostCall({ datafromUrl: true, relatedQueryKeys: [ @@ -38,6 +67,22 @@ const CippSchedulerForm = (props) => { const handleSubmit = () => { const values = formControl.getValues(); + + // Extract values from string array parameters + if (values.parameters && selectedCommand?.addedFields?.Parameters) { + selectedCommand.addedFields.Parameters.forEach((param) => { + if (param.Type === "System.String[]" && values.parameters[param.Name]) { + const paramValue = values.parameters[param.Name]; + if (Array.isArray(paramValue)) { + // Extract just the values from objects with {label, value} structure + values.parameters[param.Name] = paramValue.map((item) => + typeof item === "object" && item.value !== undefined ? item.value : item + ); + } + } + }); + } + //remove all empty values or blanks Object.keys(values).forEach((key) => { if (values[key] === "" || values[key] === null) { @@ -55,42 +100,272 @@ const CippSchedulerForm = (props) => { { value: "0", label: "Once" }, { value: "1d", label: "Every 1 day" }, { value: "7d", label: "Every 7 days" }, + { value: "14d", label: "Every 14 days" }, + { value: "21d", label: "Every 21 days" }, { value: "30d", label: "Every 30 days" }, { value: "365d", label: "Every 365 days" }, ]; + + const triggerRecurrenceOptions = [ + { value: "15m", label: "Every 15 minutes" }, + { value: "30m", label: "Every 30 minutes" }, + { value: "1h", label: "Every 1 hour" }, + { value: "4h", label: "Every 4 hours" }, + { value: "12h", label: "Every 12 hours" }, + { value: "1d", label: "Every 1 day" }, + ]; + + const taskTypeOptions = [ + { value: "scheduled", label: "Scheduled Task" }, + { value: "triggered", label: "Triggered Task" }, + ]; + + const triggerTypeOptions = [{ value: "DeltaQuery", label: "Delta Query" }]; + + const deltaResourceOptions = [ + { value: "users", label: "Users" }, + { value: "groups", label: "Groups" }, + { value: "contacts", label: "Contacts" }, + { value: "orgContact", label: "Organizational Contacts" }, + { value: "devices", label: "Devices" }, + { value: "applications", label: "Applications" }, + { value: "servicePrincipals", label: "Service Principals" }, + { value: "directoryObjects", label: "Directory Objects" }, + { value: "directoryRole", label: "Directory Roles" }, + { value: "administrativeUnits", label: "Administrative Units" }, + { value: "oAuth2PermissionGrant", label: "OAuth2 Permission Grants" }, + ]; + + const simpleEventOptions = [ + { value: "created", label: "Resource Created" }, + { value: "updated", label: "Resource Updated" }, + { value: "deleted", label: "Resource Deleted" }, + ]; + + const operatorOptions = [ + { value: "eq", label: "Equals to" }, + { value: "ne", label: "Not Equals to" }, + { value: "like", label: "Like" }, + { value: "notlike", label: "Not like" }, + { value: "notmatch", label: "Does not match" }, + { value: "gt", label: "Greater than" }, + { value: "lt", label: "Less than" }, + { value: "in", label: "In" }, + { value: "notIn", label: "Not In" }, + ]; + + // Watch for trigger-related fields + const selectedTaskType = useWatch({ control: formControl.control, name: "taskType" }); + const selectedTriggerType = useWatch({ control: formControl.control, name: "Trigger.Type" }); + const selectedDeltaResource = useWatch({ + control: formControl.control, + name: "Trigger.DeltaResource", + }); + const selectedTenant = useWatch({ control: formControl.control, name: "tenantFilter" }); + + // Watch for summary display + const selectedSimpleEvent = useWatch({ control: formControl.control, name: "Trigger.EventType" }); + const selectedRecurrence = useWatch({ control: formControl.control, name: "Recurrence" }); + const selectedScheduledTime = useWatch({ control: formControl.control, name: "ScheduledTime" }); + const selectedExecutePerResource = useWatch({ + control: formControl.control, + name: "Trigger.ExecutePerResource", + }); + const selectedDeltaExecutionMode = useWatch({ + control: formControl.control, + name: "Trigger.ExecutionMode", + }); + const selectedUseConditions = useWatch({ + control: formControl.control, + name: "Trigger.UseConditions", + }); + const selectedDeltaConditions = useWatch({ + control: formControl.control, + name: "Trigger.DeltaConditions", + }); const commands = ApiGetCall({ url: "/api/ListFunctionParameters?Module=CIPPCore", queryKey: "ListCommands", }); const router = useRouter(); + const scheduledTaskList = ApiGetCall({ url: "/api/ListScheduledItems", - queryKey: "ListScheduledItems-Edit", + queryKey: "ListScheduledItems-Edit-" + (taskId || router.query.id), + waiting: !!(taskId || router.query.id), + data: { + Id: taskId || router.query.id, + }, }); const tenantList = ApiGetCall({ url: "/api/ListTenants?AllTenantSelector=true", queryKey: "ListTenants-AllTenants", }); + + // Check if resource picker should be disabled useEffect(() => { - if (scheduledTaskList.isSuccess && router.query.id) { - const task = scheduledTaskList.data.find((task) => task.RowKey === router.query.id); - const postExecution = task?.postExecution?.split(",").map((item) => { - return { label: item, value: item }; - }); + console.log(selectedTenant); + if (!selectedTenant) { + setIsResourcePickerDisabled(false); + return; + } + + // Disable if AllTenants is selected + if (selectedTenant.value === "AllTenants") { + setIsResourcePickerDisabled(true); + return; + } + + // Disable if a tenant group is selected (groups have type: "Group") + if (selectedTenant.type === "Group") { + setIsResourcePickerDisabled(true); + return; + } + + setIsResourcePickerDisabled(false); + }, [selectedTenant]); + + // Helper functions for accordion summaries + const getTriggerSummary = () => { + if (!selectedTriggerType || selectedTaskType?.value !== "triggered") return ""; + + let summary = selectedTriggerType.label; + + if (selectedTriggerType.value === "DeltaQuery") { + if (selectedDeltaResource?.label) { + summary += ` - ${selectedDeltaResource.label}`; + } + if (selectedSimpleEvent?.label) { + summary += ` (${selectedSimpleEvent.label})`; + } + if (selectedUseConditions && selectedDeltaConditions?.length > 0) { + summary += ` with ${selectedDeltaConditions.length} condition${ + selectedDeltaConditions.length > 1 ? "s" : "" + }`; + } + } + + return summary; + }; + + const getScheduleSummary = () => { + if (selectedTaskType?.value !== "scheduled") return ""; + + let summary = ""; + if (selectedScheduledTime) { + // Handle both Unix timestamp and regular date formats + let date; + if ( + typeof selectedScheduledTime === "number" || + (typeof selectedScheduledTime === "string" && /^\d+$/.test(selectedScheduledTime)) + ) { + // Unix timestamp (seconds or milliseconds) + const timestamp = parseInt(selectedScheduledTime); + date = new Date(timestamp > 1000000000000 ? timestamp : timestamp * 1000); + } else { + date = new Date(selectedScheduledTime); + } + // Include both date and time + summary += `${date.toLocaleDateString()} ${date.toLocaleTimeString()}`; + } + if (selectedRecurrence) { + summary += summary ? ` - ${selectedRecurrence.label}` : selectedRecurrence.label; + } + + return summary; + }; + + const getCommandSummary = () => { + if (!selectedCommand) return ""; + + let summary = selectedCommand.label; + + if (selectedTaskType?.value === "triggered" && selectedTriggerType?.value === "DeltaQuery") { + if (selectedExecutePerResource) { + summary += " (per resource)"; + } + if (selectedDeltaExecutionMode) { + summary += ` - ${selectedDeltaExecutionMode.label}`; + } + } + + return summary; + }; + useEffect(() => { + if (scheduledTaskList.isSuccess && (taskId || router.query.id)) { + const task = scheduledTaskList.data.find( + (task) => task.RowKey === (taskId || router.query.id) + ); + + // Early return if task is not found + if (!task) { + console.warn(`Task with RowKey ${taskId || router.query.id} not found`); + return; + } + + const postExecution = task?.PostExecution + ? task.PostExecution.split(",").map((item) => { + return { label: item.trim(), value: item.trim() }; + }) + : []; // Find tenantFilter in tenantList, and create a label/value pair for the autocomplete if (tenantList.isSuccess) { - const tenantFilter = tenantList.data.find( - (tenant) => tenant.defaultDomainName === task?.Tenant - ); + let tenantFilter = null; + let tenantFilterForForm = null; + + // Check if the task has a tenant group + if (task?.TenantGroupInfo) { + // Handle tenant group + tenantFilterForForm = { + value: task.TenantGroupInfo.value, + label: task.TenantGroupInfo.label, + type: "Group", + addedFields: task.TenantGroupInfo, + }; + } else { + // Handle regular tenant + tenantFilter = tenantList.data.find( + (tenant) => + tenant.defaultDomainName === task?.Tenant.value || + tenant.defaultDomainName === task?.Tenant + ); + if (tenantFilter) { + tenantFilterForForm = { + value: tenantFilter.defaultDomainName, + label: `${tenantFilter.displayName} (${tenantFilter.defaultDomainName})`, + type: "Tenant", + addedFields: tenantFilter, + }; + } + } if (commands.isSuccess) { const command = commands.data.find((command) => command.Function === task.Command); + + // If command is not found in the list, create a placeholder command entry + let commandForForm = command; + if (!command && task.Command) { + commandForForm = { + Function: task.Command, + Parameters: [], + // Add minimal required structure for system jobs + }; + } + var recurrence = recurrenceOptions.find( (option) => option.value === task.Recurrence || option.label === task.Recurrence ); + // If recurrence is not found in predefined options, create a custom option + if (!recurrence && task.Recurrence) { + recurrence = { + value: task.Recurrence, + label: `${task.Recurrence}`, + }; + } + // if scheduledtime type is a date, convert to unixtime if (typeof task.ScheduledTime === "date") { task.ScheduledTime = Math.floor(task.ScheduledTime.getTime() / 1000); @@ -98,29 +373,103 @@ const CippSchedulerForm = (props) => { task.ScheduledTime = Math.floor(new Date(task.ScheduledTime).getTime() / 1000); } + // Check if any parameter values are complex objects that can't be represented as simple form fields + const hasComplexObjects = + task.Parameters && typeof task.Parameters === "object" + ? Object.entries(task.Parameters).some(([key, value]) => { + // Exclude TenantFilter and Headers parameters + if (key === "TenantFilter" || key === "Headers") return false; + + // Check if this parameter is a System.String[] type + const paramDef = commandForForm?.Parameters?.find((p) => p.Name === key); + if (paramDef?.Type === "System.String[]") return false; + + // Check for arrays + if (Array.isArray(value)) return true; + // Check for objects (but not null) + if (value !== null && typeof value === "object") return true; + // Check for stringified objects that contain [object Object] + if (typeof value === "string" && value.includes("[object Object]")) return true; + // Check for stringified JSON arrays/objects + if ( + typeof value === "string" && + (value.trim().startsWith("[") || value.trim().startsWith("{")) + ) { + try { + const parsed = JSON.parse(value); + return typeof parsed === "object"; + } catch { + return false; + } + } + return false; + }) + : false; + const ResetParams = { - tenantFilter: { - value: tenantFilter?.defaultDomainName, - label: `${tenantFilter?.displayName} (${tenantFilter?.defaultDomainName})`, - }, - RowKey: router.query.Clone ? null : task.RowKey, - Name: router.query.Clone ? `${task.Name} (Clone)` : task?.Name, - command: { label: task.Command, value: task.Command, addedFields: command }, + tenantFilter: tenantFilterForForm, + RowKey: router.query.Clone || cloneMode ? null : task.RowKey, + Name: router.query.Clone || cloneMode ? `${task.Name} (Clone)` : task?.Name, + command: { label: task.Command, value: task.Command, addedFields: commandForForm }, ScheduledTime: task.ScheduledTime, Recurrence: recurrence, parameters: task.Parameters, postExecution: postExecution, - advancedParameters: task.RawJsonParameters ? true : false, + // Set task type based on whether trigger exists + taskType: task.Trigger + ? { value: "triggered", label: "Triggered Task" } + : { value: "scheduled", label: "Scheduled Task" }, + // Trigger configuration - use the trigger data directly since it's already in the correct format + ...(task.Trigger && { + "Trigger.Type": task.Trigger.Type, + "Trigger.DeltaResource": task.Trigger.DeltaResource, + "Trigger.EventType": task.Trigger.EventType, + "Trigger.ResourceFilter": task.Trigger.ResourceFilter || [], + "Trigger.WatchedAttributes": task.Trigger.WatchedAttributes || [], + "Trigger.UseConditions": task.Trigger.UseConditions || false, + "Trigger.DeltaConditions": task.Trigger.DeltaConditions || [], + "Trigger.ExecutePerResource": task.Trigger.ExecutePerResource || false, + "Trigger.ExecutionMode": task.Trigger.ExecutionMode, + }), + // Show advanced parameters if: + // 1. RawJsonParameters exist + // 2. It's a system command with no defined parameters + // 3. Any parameter contains complex objects (arrays, objects, etc.) + advancedParameters: task.RawJsonParameters + ? true + : hasComplexObjects || + !commandForForm?.Parameters || + commandForForm.Parameters.length === 0, + // Set the RawJsonParameters if they exist + RawJsonParameters: task.RawJsonParameters || "", }; formControl.reset(ResetParams); + + // Set up condition builder if task has delta conditions + if ( + task.Trigger?.DeltaConditions && + Array.isArray(task.Trigger.DeltaConditions) && + task.Trigger.DeltaConditions.length > 0 + ) { + const conditionsWithIds = task.Trigger.DeltaConditions.map((condition, index) => ({ + id: index, + ...condition, + })); + setAddedConditions(conditionsWithIds); + } else { + // Reset to default single condition if no conditions exist + setAddedConditions([{ id: 0 }]); + } } } } }, [ + taskId, router.query.id, scheduledTaskList.isSuccess, tenantList.isSuccess, router.query.Clone, + cloneMode, commands.isSuccess, ]); @@ -128,16 +477,52 @@ const CippSchedulerForm = (props) => { useEffect(() => { if (advancedParameters === true) { - var schedulerValues = formControl.getValues("parameters"); - Object.keys(schedulerValues).forEach((key) => { - if (schedulerValues[key] === "" || schedulerValues[key] === null) { - delete schedulerValues[key]; + // Check if we're editing an existing task and it has RawJsonParameters + const currentRawJsonParameters = formControl.getValues("RawJsonParameters"); + + // If we already have raw JSON parameters (from editing existing task), use those + if ( + currentRawJsonParameters && + currentRawJsonParameters.trim() !== "" && + currentRawJsonParameters !== "{}" + ) { + // Already populated from existing task, no need to overwrite + return; + } + + // Get the original task parameters if we're editing (to preserve complex objects) + let parametersToUse = null; + if ((taskId || router.query.id) && scheduledTaskList.isSuccess) { + const task = scheduledTaskList.data.find( + (task) => task.RowKey === (taskId || router.query.id) + ); + if (task?.Parameters) { + parametersToUse = task.Parameters; } - }); - const jsonString = JSON.stringify(schedulerValues, null, 2); - formControl.setValue("RawJsonParameters", jsonString); + } + + // If we don't have original task parameters, use current form parameters + if (!parametersToUse) { + parametersToUse = formControl.getValues("parameters"); + } + + // Add null check to prevent error when no parameters exist + if (parametersToUse && typeof parametersToUse === "object") { + // Create a clean copy for JSON + const cleanParams = { ...parametersToUse }; + Object.keys(cleanParams).forEach((key) => { + if (cleanParams[key] === "" || cleanParams[key] === null) { + delete cleanParams[key]; + } + }); + const jsonString = JSON.stringify(cleanParams, null, 2); + formControl.setValue("RawJsonParameters", jsonString); + } else { + // If no parameters, set empty object + formControl.setValue("RawJsonParameters", "{}"); + } } - }, [advancedParameters]); + }, [advancedParameters, taskId, router.query.id, scheduledTaskList.isSuccess]); const gridSize = fullWidth ? 12 : 4; // Adjust size based on fullWidth prop @@ -147,186 +532,616 @@ const CippSchedulerForm = (props) => { {(scheduledTaskList.isFetching || tenantList.isLoading || commands.isLoading) && ( )} - + {/* Top section: Tenant and Task Name */} + - + - + { - return { - label: command.Function, - value: command.Function, - addedFields: command, - }; - }) || [] - } - validators={{ - validate: (value) => { - if (!value) { - return "Please select a Command"; - } - return true; - }, - }} - /> - - - - + + - {selectedCommand?.addedFields?.Synopsis && ( - - - PowerShell Command: - - {selectedCommand.addedFields.Synopsis} - - - - )} - {selectedCommand?.addedFields?.Parameters?.map((param, idx) => ( - - - {param.Type === "System.Boolean" || - param.Type === "System.Management.Automation.SwitchParameter" ? ( - - ) : param.Type === "System.Collections.Hashtable" ? ( - - ) : param.Type?.startsWith("System.String") ? ( - - ) : ( - - )} - - - ))} - - + {/* Divider */} + + - - + + {/* Task Type Selection */} + + + {taskTypeOptions.map((option) => ( + + ))} + + + {/* Trigger Configuration Accordion */} - - getCippValidator(value, "json"), - }} - formControl={formControl} - multiline - rows={4} - placeholder={`Enter a JSON object`} - /> + + + }> + + Trigger Configuration + {getTriggerSummary() && ( + + - {getTriggerSummary()} + + )} + + + + + + + + + {/* Delta Query Configuration */} + + + + + Delta queries track changes to Microsoft Graph resources. Learn more about{" "} + + delta query concepts and usage + {" "} + in the Microsoft documentation. + + + + + + + + + + + + + + + + + + + + + + + {/* Condition Builder for all event types */} + + + + + + + + + Delta Query Conditions + + + + Create PowerShell-style Where-Object conditions to filter delta query + results. Each condition compares a resource property against a specific + value. Multiple conditions work as AND logic - all must be true to trigger + the task. + + + + {addedConditions.map((condition, index) => ( + + + + + + + + + + + + handleRemoveCondition(index)} color="error"> + + + + + ))} + + + {/* Delta Query Execution Options */} + + + + + + + + + {/* Trigger Recurrence */} + + + + + + + - - + + {/* Schedule Configuration - Only for scheduled tasks */} + + + + }> + + Schedule Configuration + {getScheduleSummary() && ( + + - {getScheduleSummary()} + + )} + + + + + + + + + { + let options = [...recurrenceOptions]; + + // If we're editing a task and the recurrence isn't in the base options, add it + if ((taskId || router.query.id) && scheduledTaskList.isSuccess) { + const task = scheduledTaskList.data.find( + (task) => task.RowKey === (taskId || router.query.id) + ); + if ( + task?.Recurrence && + !options.find((opt) => opt.value === task.Recurrence) + ) { + options.push({ + value: task.Recurrence, + label: `Custom: ${task.Recurrence}`, + }); + } + } + + return options; + })()} + multiple={false} + disableClearable={true} + creatable={true} + /> + + + + + + + + {/* Command & Parameters - For both scheduled and triggered tasks */} + + + }> + + Command & Parameters + {getCommandSummary() && ( + + - {getCommandSummary()} + + )} + + + + + {/* Command selection for both scheduled and triggered tasks */} + + + + { + const baseOptions = + commands.data?.map((command) => { + return { + label: command.Function, + value: command.Function, + addedFields: command, + }; + }) || []; + + // If we're editing a task and the command isn't in the base options, add it + if ((taskId || router.query.id) && scheduledTaskList.isSuccess) { + const task = scheduledTaskList.data.find( + (task) => task.RowKey === (taskId || router.query.id) + ); + if ( + task?.Command && + !baseOptions.find((opt) => opt.value === task.Command) + ) { + baseOptions.unshift({ + label: task.Command, + value: task.Command, + addedFields: { + Function: task.Command, + Parameters: [], + }, + }); + } + } + + return baseOptions; + })()} + validators={{ + validate: (value) => { + if (!value) { + return "Please select a Command"; + } + return true; + }, + }} + /> + + commands.refetch()}> + + + + + + {selectedCommand?.addedFields?.Synopsis && ( + + + PowerShell Command: + + {selectedCommand.addedFields.Synopsis} + + + + )} + + {selectedCommand?.addedFields?.Parameters?.map((param, idx) => ( + + + {param.Type === "System.Boolean" || + param.Type === "System.Management.Automation.SwitchParameter" ? ( + + ) : param.Type === "System.Collections.Hashtable" ? ( + + ) : param.Type === "System.String[]" ? ( + + ) : param.Type?.startsWith("System.String") ? ( + + ) : ( + + )} + + + ))} + + + + + + + + getCippValidator(value, "json"), + }} + formControl={formControl} + multiline + rows={6} + maxRows={30} + sx={{ + "& .MuiInputBase-root": { + overflow: "auto", + minHeight: "200px", + }, + }} + placeholder={`Enter a JSON object`} + /> + + + + + - + + + + + - ); }; diff --git a/src/components/CippIntegrations/CippApiClientManagement.jsx b/src/components/CippIntegrations/CippApiClientManagement.jsx index 65914ea19dd0..829ad4413ce2 100644 --- a/src/components/CippIntegrations/CippApiClientManagement.jsx +++ b/src/components/CippIntegrations/CippApiClientManagement.jsx @@ -2,7 +2,7 @@ import { Button, Stack, SvgIcon, Menu, MenuItem, ListItemText, Alert } from "@mu import { useState } from "react"; import isEqual from "lodash/isEqual"; import { useForm } from "react-hook-form"; -import { ApiGetCall, ApiGetCallWithPagination, ApiPostCall } from "/src/api/ApiCall"; +import { ApiGetCall, ApiGetCallWithPagination, ApiPostCall } from "../../api/ApiCall"; import { CippDataTable } from "../CippTable/CippDataTable"; import { ChevronDownIcon, @@ -253,10 +253,11 @@ const CippApiClientManagement = () => { showDivider={false} isFetching={azureConfig.isFetching} /> - {azureConfig.isSuccess && ( + {azureConfig.isSuccess && apiClients.isSuccess && ( <> {!isEqual( - apiClients.data?.pages?.[0]?.Results?.filter((c) => c.Enabled) + (apiClients.data?.pages?.[0]?.Results || []) + .filter((c) => c.Enabled) .map((c) => c.ClientId) .sort(), (azureConfig.data?.Results?.ClientIDs || []).sort() @@ -264,7 +265,8 @@ const CippApiClientManagement = () => { You have unsaved changes. Click Actions > Save Azure Configuration to update - the allowed API Clients. + the allowed API Clients. If you've just saved your API clients, try refreshing the + configuration first. )} @@ -306,6 +308,7 @@ const CippApiClientManagement = () => { name: "AppName", label: "App Name", placeholder: "Enter a name for this Application Registration.", + disableVariables: true, }, { type: "autoComplete", diff --git a/src/components/CippIntegrations/CippIntegrationFieldMapping.jsx b/src/components/CippIntegrations/CippIntegrationFieldMapping.jsx index c03775e01179..53a88787de19 100644 --- a/src/components/CippIntegrations/CippIntegrationFieldMapping.jsx +++ b/src/components/CippIntegrations/CippIntegrationFieldMapping.jsx @@ -8,13 +8,13 @@ import { Button, Alert, } from "@mui/material"; -import CippFormSection from "/src/components/CippFormPages/CippFormSection"; +import CippFormSection from "../CippFormPages/CippFormSection"; import { useForm } from "react-hook-form"; -import { ApiGetCall } from "/src/api/ApiCall"; +import { ApiGetCall } from "../../api/ApiCall"; import { useRouter } from "next/router"; -import extensions from "/src/data/Extensions.json"; +import extensions from "../../data/Extensions.json"; import React, { useEffect, useState } from "react"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; +import CippFormComponent from "../CippComponents/CippFormComponent"; import { Sync } from "@mui/icons-material"; import { Stack, Grid } from "@mui/system"; @@ -115,7 +115,7 @@ const CippIntegrationFieldMapping = () => { {fieldMapping?.data?.CIPPFields?.filter( (field) => field.FieldType === header.FieldType ).map((field, fieldIndex) => ( - + { {fieldMapping.isLoading && ( - + - + @@ -170,7 +170,7 @@ const CippIntegrationFieldMapping = () => { )} {fieldMapping.isSuccess && !extension && ( - + Extension not found diff --git a/src/components/CippIntegrations/CippIntegrationSettings.jsx b/src/components/CippIntegrations/CippIntegrationSettings.jsx index 39e2969aebd5..d0156df3897a 100644 --- a/src/components/CippIntegrations/CippIntegrationSettings.jsx +++ b/src/components/CippIntegrations/CippIntegrationSettings.jsx @@ -1,12 +1,12 @@ -import { Box } from "@mui/material"; +import { Box, CardContent } from "@mui/material"; import { Grid } from "@mui/system"; -import CippFormSection from "/src/components/CippFormPages/CippFormSection"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; +import CippFormSection from "../CippFormPages/CippFormSection"; +import CippFormComponent from "../CippComponents/CippFormComponent"; import { useForm } from "react-hook-form"; -import { useSettings } from "/src/hooks/use-settings"; -import { ApiGetCall } from "/src/api/ApiCall"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiGetCall } from "../../api/ApiCall"; import { useRouter } from "next/router"; -import extensions from "/src/data/Extensions.json"; +import extensions from "../../data/Extensions.json"; import React, { useEffect } from "react"; import { CippFormCondition } from "../CippComponents/CippFormCondition"; @@ -62,7 +62,7 @@ const CippIntegrationSettings = ({ children }) => { {setting?.condition ? ( s.name === `${extension.id}.Enabled`) && !enabled}> - + { ) : ( - + { {integrations.isLoading && Loading...} {integrations.isSuccess && !extension && ( - + Extension not found diff --git a/src/components/CippIntegrations/CippIntegrationTenantMapping.jsx b/src/components/CippIntegrations/CippIntegrationTenantMapping.jsx index 3fff3574ffa5..cfe214218139 100644 --- a/src/components/CippIntegrations/CippIntegrationTenantMapping.jsx +++ b/src/components/CippIntegrations/CippIntegrationTenantMapping.jsx @@ -10,11 +10,11 @@ import { Typography, } from "@mui/material"; import { Grid } from "@mui/system"; -import { useState } from "react"; +import { useState, useMemo } from "react"; import { useForm } from "react-hook-form"; -import { ApiGetCall, ApiPostCall } from "/src/api/ApiCall"; +import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; import { useRouter } from "next/router"; -import extensions from "/src/data/Extensions.json"; +import extensions from "../../data/Extensions.json"; import { useEffect } from "react"; import { CippDataTable } from "../CippTable/CippDataTable"; import { PlusSmallIcon, SparklesIcon, TrashIcon } from "@heroicons/react/24/outline"; @@ -93,6 +93,10 @@ const CippIntegrationSettings = ({ children }) => { }; setTableData([...tableData, newRowData]); + + // Clear the form fields after successfully adding the mapping + formControl.setValue("tenantFilter", null); + formControl.setValue("integrationCompany", null); }; const handleAutoMap = () => { @@ -140,6 +144,11 @@ const CippIntegrationSettings = ({ children }) => { const extension = extensions.find((extension) => extension.id === router.query.id); + // Memoize the removeOptions array to ensure it updates when tableData changes + const removedTenantIds = useMemo(() => { + return Array.isArray(tableData) ? tableData.map((item) => item.TenantId) : []; + }, [tableData]); + useEffect(() => { if (mappings.isSuccess) { setTableData(mappings.data.Mappings ?? []); @@ -162,32 +171,32 @@ const CippIntegrationSettings = ({ children }) => { mb: 3, }} > - + item.TenantId)} + removeOptions={removedTenantIds} valueField="customerId" /> - + - + { return { label: company.name, @@ -200,7 +209,7 @@ const CippIntegrationSettings = ({ children }) => { sortOptions={true} /> - + + + } + > + + Configure how long to keep backup files. Both CIPP system backups and tenant backups will be + automatically deleted after this period. Minimum retention is 7 days, default is 30 days. + Cleanup runs daily at 2:00 AM. + + + + ); +}; + +export default CippBackupRetentionSettings; diff --git a/src/components/CippSettings/CippBackupSettings.jsx b/src/components/CippSettings/CippBackupSettings.jsx index d45bf6385a85..a7f56afe7d0f 100644 --- a/src/components/CippSettings/CippBackupSettings.jsx +++ b/src/components/CippSettings/CippBackupSettings.jsx @@ -1,7 +1,7 @@ import { Button, SvgIcon, Typography } from "@mui/material"; -import CippButtonCard from "/src/components/CippCards/CippButtonCard"; -import { ApiPostCall } from "/src/api/ApiCall"; -import { useDialog } from "/src/hooks/use-dialog"; +import CippButtonCard from "../CippCards/CippButtonCard"; +import { ApiPostCall } from "../../api/ApiCall"; +import { useDialog } from "../../hooks/use-dialog"; import { SettingsBackupRestore } from "@mui/icons-material"; import Link from "next/link"; @@ -32,7 +32,7 @@ const CippBackupSettings = () => { return ( <> - }> + }> Manage the system configuration backups for CIPP. This will not include authentication information or extension configuration. You can also set an automated daily backup diff --git a/src/components/CippSettings/CippBrandingSettings.jsx b/src/components/CippSettings/CippBrandingSettings.jsx new file mode 100644 index 000000000000..b0e0f747ef35 --- /dev/null +++ b/src/components/CippSettings/CippBrandingSettings.jsx @@ -0,0 +1,263 @@ +import { useState } from "react"; +import { Button, Typography, Box, Alert } from "@mui/material"; +import { Palette, Upload } from "@mui/icons-material"; +import CippButtonCard from "../CippCards/CippButtonCard"; +import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; +import { useSettings } from "../../hooks/use-settings"; +import { CippApiResults } from "../CippComponents/CippApiResults"; +import CippFormComponent from "../CippComponents/CippFormComponent"; +import { useForm } from "react-hook-form"; + +const CippBrandingSettings = () => { + const settings = useSettings(); + const [logoFile, setLogoFile] = useState(null); + const [logoPreview, setLogoPreview] = useState(settings?.customBranding?.logo || null); + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + colour: settings?.customBranding?.colour || "#F77F00", + }, + }); + + const saveBrandingSettings = ApiPostCall({ + datafromUrl: true, + relatedQueryKeys: ["BrandingSettings", "userSettings"], + }); + + const handleLogoUpload = (event) => { + const file = event.target.files[0]; + if (file) { + // Validate file size (max 2MB) + if (file.size > 2 * 1024 * 1024) { + alert("File size must be less than 2MB"); + return; + } + + const reader = new FileReader(); + reader.onload = (e) => { + const base64String = e.target.result; + setLogoFile(base64String); + setLogoPreview(base64String); + }; + reader.readAsDataURL(file); + } + }; + + const handleSave = () => { + const formData = formControl.getValues(); + const brandingData = { + colour: formData.colour, + logo: logoFile || settings?.customBranding?.logo || null, + }; + + // Update local settings immediately for UI responsiveness + settings.handleUpdate({ + customBranding: brandingData, + }); + + // Save to backend + saveBrandingSettings.mutate({ + url: "/api/ExecBrandingSettings", + data: { + Action: "Set", + ...brandingData, + }, + queryKey: "BrandingSettingsPost", + }); + }; + + const handleReset = () => { + setLogoFile(null); + setLogoPreview(null); + formControl.reset({ + colour: "#F77F00", + }); + + // Reset local settings + settings.handleUpdate({ + customBranding: { + colour: "#F77F00", + logo: null, + }, + }); + + // Save reset to backend + saveBrandingSettings.mutate({ + url: "/api/ExecBrandingSettings", + data: { + Action: "Reset", + }, + queryKey: "BrandingSettingsReset", + }); + }; + + return ( + + + + + } + > + + + Customize your organization's branding for reports and documents. Changes will be applied + to all generated reports. + + + {/* Logo Upload Section */} + + + Logo + + + + + + {logoPreview && ( + + Logo preview + + )} + + + Recommended: PNG format, max 2MB, optimal size 200x100px + + + + + {/* Color Picker Section */} + + + Brand Color + + + formControl.setValue("colour", e.target.value)} + style={{ + width: "50px", + height: "40px", + border: "1px solid #ddd", + borderRadius: "4px", + cursor: "pointer", + }} + /> + + + + This color will be used for accents and highlights in reports + + + + {/* Preview Section */} + + + Preview + + + {logoPreview && ( + Logo + )} + + + Your Organization + + + Executive Report Preview + + + + + + {/* API Results inside the card */} + + + + ); +}; + +export default CippBrandingSettings; diff --git a/src/components/CippSettings/CippCacheSettings.jsx b/src/components/CippSettings/CippCacheSettings.jsx index ad736adf604f..3b9ebf55ec53 100644 --- a/src/components/CippSettings/CippCacheSettings.jsx +++ b/src/components/CippSettings/CippCacheSettings.jsx @@ -1,8 +1,8 @@ import { Button, SvgIcon, Typography } from "@mui/material"; -import CippButtonCard from "/src/components/CippCards/CippButtonCard"; -import { ApiPostCall } from "/src/api/ApiCall"; +import CippButtonCard from "../CippCards/CippButtonCard"; +import { ApiPostCall } from "../../api/ApiCall"; import { CippApiDialog } from "../CippComponents/CippApiDialog"; -import { useDialog } from "/src/hooks/use-dialog"; +import { useDialog } from "../../hooks/use-dialog"; import { TrashIcon } from "@heroicons/react/24/outline"; const CippCacheSettings = () => { diff --git a/src/components/CippSettings/CippCustomRoles.jsx b/src/components/CippSettings/CippCustomRoles.jsx deleted file mode 100644 index 8b5422b15229..000000000000 --- a/src/components/CippSettings/CippCustomRoles.jsx +++ /dev/null @@ -1,489 +0,0 @@ -import React, { useEffect, useRef, useState } from "react"; - -import { - Box, - Button, - Alert, - Typography, - Accordion, - AccordionSummary, - AccordionDetails, - Stack, - SvgIcon, - Skeleton, -} from "@mui/material"; - -import { Grid } from "@mui/system"; -import { ApiGetCall, ApiGetCallWithPagination, ApiPostCall } from "../../api/ApiCall"; -import { CippOffCanvas } from "/src/components/CippComponents/CippOffCanvas"; -import { CippFormTenantSelector } from "/src/components/CippComponents/CippFormTenantSelector"; -import { Save } from "@mui/icons-material"; -import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; -import CippFormComponent from "../CippComponents/CippFormComponent"; -import { useForm, useWatch } from "react-hook-form"; -import { InformationCircleIcon, TrashIcon } from "@heroicons/react/24/outline"; -import { CippApiDialog } from "../CippComponents/CippApiDialog"; -import { useDialog } from "../../hooks/use-dialog"; -import { CippApiResults } from "../CippComponents/CippApiResults"; - -export const CippCustomRoles = () => { - const updatePermissions = ApiPostCall({ - urlFromData: true, - relatedQueryKeys: ["customRoleList"], - }); - - const [allTenantSelected, setAllTenantSelected] = useState(false); - const [cippApiRoleSelected, setCippApiRoleSelected] = useState(false); - const [selectedRole, setSelectedRole] = useState(null); - const [updateDefaults, setUpdateDefaults] = useState(false); - - const formControl = useForm({ - mode: "onBlur", - }); - - const createDialog = useDialog(); - const currentRole = useWatch({ control: formControl.control, name: "RoleName" }); - const selectedTenant = useWatch({ control: formControl.control, name: "allowedTenants" }); - const blockedTenants = useWatch({ control: formControl.control, name: "blockedTenants" }); - const setDefaults = useWatch({ control: formControl.control, name: "Defaults" }); - const selectedPermissions = useWatch({ control: formControl.control, name: "Permissions" }); - - const { - data: apiPermissions = [], - isFetching: apiPermissionFetching, - isSuccess: apiPermissionSuccess, - } = ApiGetCall({ - url: "/api/ExecAPIPermissionList", - queryKey: "apiPermissions", - }); - - const { - data: customRoleList = [], - isFetching: customRoleListFetching, - isSuccess: customRoleListSuccess, - refetch: refetchCustomRoleList, - } = ApiGetCall({ - url: "/api/ExecCustomRole", - queryKey: "customRoleList", - }); - - const { data: { pages = [] } = {}, isSuccess: tenantsSuccess } = ApiGetCallWithPagination({ - url: "/api/ListTenants?AllTenantSelector=true", - queryKey: "ListTenants-AllTenantSelector", - }); - const tenants = pages[0] || []; - - useEffect(() => { - if (customRoleListSuccess && tenantsSuccess && selectedRole !== currentRole?.value) { - setSelectedRole(currentRole?.value); - if (currentRole?.value === "cipp-api") { - setCippApiRoleSelected(true); - } else { - setCippApiRoleSelected(false); - } - - var currentPermissions = customRoleList.find((role) => role.RowKey === currentRole?.value); - - var newAllowedTenants = []; - currentPermissions?.AllowedTenants.map((tenant) => { - var tenantInfo = tenants.find((t) => t.customerId === tenant); - var label = `${tenantInfo?.displayName} (${tenantInfo?.defaultDomainName})`; - if (tenantInfo?.displayName) { - newAllowedTenants.push({ - label: label, - value: tenantInfo.defaultDomainName, - }); - } - }); - - var newBlockedTenants = []; - currentPermissions?.BlockedTenants.map((tenant) => { - var tenantInfo = tenants.find((t) => t.customerId === tenant); - var label = `${tenantInfo?.displayName} (${tenantInfo?.defaultDomainName})`; - if (tenantInfo?.displayName) { - newBlockedTenants.push({ - label: label, - value: tenantInfo.defaultDomainName, - }); - } - }); - - formControl.reset({ - Permissions: currentPermissions?.Permissions, - RoleName: currentRole, - allowedTenants: newAllowedTenants, - blockedTenants: newBlockedTenants, - }); - } - }, [currentRole, customRoleList, customRoleListSuccess, tenantsSuccess]); - - useEffect(() => { - if (updateDefaults !== setDefaults) { - setUpdateDefaults(setDefaults); - var newPermissions = {}; - Object.keys(apiPermissions).forEach((cat) => { - Object.keys(apiPermissions[cat]).forEach((obj) => { - var newval = ""; - if (cat == "CIPP" && obj == "Core" && setDefaults == "None") { - newval = "Read"; - } else { - newval = setDefaults; - } - newPermissions[`${cat}${obj}`] = `${cat}.${obj}.${newval}`; - }); - }); - formControl.setValue("Permissions", newPermissions); - } - }, [setDefaults, updateDefaults]); - - useEffect(() => { - var alltenant = false; - selectedTenant?.map((tenant) => { - if (tenant?.value === "AllTenants") { - alltenant = true; - } - }); - if (alltenant) { - setAllTenantSelected(true); - } else { - setAllTenantSelected(false); - } - }, [selectedTenant, blockedTenants]); - - const handleSubmit = () => { - var allowedTenantIds = []; - selectedTenant.map((tenant) => { - var tenant = tenants.find((t) => t.defaultDomainName === tenant?.value); - if (tenant?.customerId) { - allowedTenantIds.push(tenant.customerId); - } - }); - - var blockedTenantIds = []; - blockedTenants.map((tenant) => { - var tenant = tenants.find((t) => t.defaultDomainName === tenant?.value); - if (tenant?.customerId) { - blockedTenantIds.push(tenant.customerId); - } - }); - - updatePermissions.mutate({ - url: "/api/ExecCustomRole?Action=AddUpdate", - data: { - RoleName: currentRole.value, - Permissions: selectedPermissions, - AllowedTenants: allowedTenantIds, - BlockedTenants: blockedTenantIds, - }, - }); - }; - - const ApiPermissionRow = ({ obj, cat }) => { - const [offcanvasVisible, setOffcanvasVisible] = useState(false); - - var items = []; - for (var key in apiPermissions[cat][obj]) - for (var key2 in apiPermissions[cat][obj][key]) { - items.push({ heading: "", content: apiPermissions[cat][obj][key][key2] }); - } - var group = [{ items: items }]; - - return ( - - {obj} - - - - - - { - setOffcanvasVisible(false); - }} - > - - - {`${cat}.${obj}`} - - - Listed below are the available API endpoints based on permission level, ReadWrite - level includes endpoints under Read. - - {[apiPermissions[cat][obj]].map((permissions, key) => { - var sections = Object.keys(permissions).map((type) => { - var items = []; - for (var api in permissions[type]) { - items.push({ heading: "", content: permissions[type][api] }); - } - return ( - - {type} - - {items.map((item, idx) => ( - - {item.content} - - ))} - - - ); - }); - return sections; - })} - - - - ); - }; - - return ( - <> - - - - ({ - label: role.RowKey, - value: role.RowKey, - }))} - isFetching={customRoleListFetching} - refreshFunction={() => refetchCustomRoleList()} - creatable={true} - formControl={formControl} - multiple={false} - fullWidth={true} - /> - {cippApiRoleSelected && ( - - This is the default role for all API clients in the CIPP-API integration. If you - would like different permissions for specific applications, create a role per - application and select it from the CIPP-API integrations page. - - )} - - - - {allTenantSelected && blockedTenants?.length == 0 && ( - - All tenants selected, no tenant restrictions will be applied unless blocked tenants - are specified. - - )} - - {allTenantSelected && ( - - - - )} - - {currentRole && ( - <> - {apiPermissionFetching && } - {apiPermissionSuccess && ( - <> - API Permissions - - Set All Permissions - - - - - - - <> - {Object.keys(apiPermissions) - .sort() - .map((cat, catIndex) => ( - - }> - {cat} - - - {Object.keys(apiPermissions[cat]) - .sort() - .map((obj, index) => { - return ( - - - - ); - })} - - - ))} - - - - )} - - )} - - - - {selectedRole && selectedTenant?.length > 0 && ( - <> -
    Allowed Tenants
    -
      - {selectedTenant.map((tenant, idx) => ( -
    • {tenant?.label}
    • - ))} -
    - - )} - {selectedRole && blockedTenants?.length > 0 && ( - <> -
    Blocked Tenants
    -
      - {blockedTenants.map((tenant, idx) => ( -
    • {tenant?.label}
    • - ))} -
    - - )} - {selectedRole && selectedPermissions && ( - <> -
    Selected Permissions
    -
      - {selectedPermissions && - Object.keys(selectedPermissions) - ?.sort() - .map((cat, idx) => ( - <> - {selectedPermissions?.[cat] && - !selectedPermissions?.[cat]?.includes("None") && ( -
    • {selectedPermissions[cat]}
    • - )} - - ))} -
    - - )} -
    -
    - - - - - {currentRole && ( - - )} - - - - ); -}; - -export default CippCustomRoles; diff --git a/src/components/CippSettings/CippDnsSettings.jsx b/src/components/CippSettings/CippDnsSettings.jsx index 847c0451bf87..666337169266 100644 --- a/src/components/CippSettings/CippDnsSettings.jsx +++ b/src/components/CippSettings/CippDnsSettings.jsx @@ -1,6 +1,6 @@ import { Button, ButtonGroup, SvgIcon, Typography } from "@mui/material"; -import CippButtonCard from "/src/components/CippCards/CippButtonCard"; -import { ApiGetCall, ApiPostCall } from "/src/api/ApiCall"; +import CippButtonCard from "../CippCards/CippButtonCard"; +import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; import { Dns } from "@mui/icons-material"; const CippDnsSettings = () => { @@ -23,7 +23,7 @@ const CippDnsSettings = () => { }; const DnsButtons = () => { - const resolvers = ["Google", "Cloudflare", "Quad9"]; + const resolvers = ["Google", "Cloudflare"]; return resolvers.map((resolver, index) => ( + + + + + ); +}; diff --git a/src/components/CippSettings/CippGDAP/CippGDAPTraceResults.jsx b/src/components/CippSettings/CippGDAP/CippGDAPTraceResults.jsx new file mode 100644 index 000000000000..ff34b407388a --- /dev/null +++ b/src/components/CippSettings/CippGDAP/CippGDAPTraceResults.jsx @@ -0,0 +1,525 @@ +import React, { useState } from "react"; +import { + Box, + Card, + CardContent, + Typography, + Accordion, + AccordionSummary, + AccordionDetails, + Chip, + Stack, + Divider, + Alert, + Grid, + LinearProgress, + Tooltip, + IconButton, +} from "@mui/material"; +import { + ExpandMore, + CheckCircle, + Cancel, + Warning, + Security, + Group, + AccountTree, + InfoOutlined, +} from "@mui/icons-material"; +import { CippCodeBlock } from "../../CippComponents/CippCodeBlock"; +import { CippPathVisualization } from "./CippPathVisualization"; +import { getCippRoleTranslation } from "../../../utils/get-cipp-role-translation"; + +export const CippGDAPTraceResults = ({ data, isLoading, error }) => { + const [expandedRoles, setExpandedRoles] = useState({}); + const [expandedRelationships, setExpandedRelationships] = useState({}); + + if (isLoading) { + return ( + + + + Tracing GDAP access path... + + + ); + } + + if (error) { + return ( + + Error + {error} + + ); + } + + if (!data) { + return ( + + No data available. Please run the trace first. + + ); + } + + const handleRoleExpand = (roleId) => { + setExpandedRoles((prev) => ({ + ...prev, + [roleId]: !prev[roleId], + })); + }; + + const handleRelationshipExpand = (relationshipId) => { + setExpandedRelationships((prev) => ({ + ...prev, + [relationshipId]: !prev[relationshipId], + })); + }; + + const { tenantName, userUPN, userDisplayName, roles, relationships, summary, error: dataError } = data; + + if (dataError) { + return ( + + Trace completed with issues + {dataError} + + ); + } + + const getRoleStatusChip = (role) => { + if (role.isUserHasAccess) { + return } label="Has Access" color="success" size="small" />; + } else if (role.isAssigned) { + return } label="Assigned but No Access" color="warning" size="small" />; + } else if (role.roleExistsInRelationship) { + return } label="In Relationship but Not Assigned" color="info" size="small" />; + } else { + return } label="Not In Any Relationship" color="default" size="small" />; + } + }; + + const renderMembershipPath = (path) => { + if (!path || path.length === 0) return null; + + const sortedPath = [...path].sort((a, b) => { + if (a.sequence !== undefined && b.sequence !== undefined) { + return a.sequence - b.sequence; + } + return 0; + }); + + const hasMultipleGroups = sortedPath.length > 1; + + return ( + + {sortedPath.map((step, index) => ( + + + {hasMultipleGroups && step.sequence !== undefined && ( + + )} + {step.membershipType === "direct" && ( + } + label="Direct" + color="success" + size="small" + variant="outlined" + /> + )} + {step.membershipType === "nested" && ( + } + label="Nested" + color="info" + size="small" + variant="outlined" + /> + )} + {step.membershipType === "not_member" && ( + } + label="Not Member" + color="error" + size="small" + variant="outlined" + /> + )} + + {step.groupName || step.groupId} + + + {index < sortedPath.length - 1 && ( + + + โ†“ + + + )} + + ))} + + ); + }; + + return ( + + {/* Summary Section */} + + + + Trace Summary + + + + + + Tenant + + + {tenantName} + + + + + User + + + {userDisplayName || userUPN} + + + + + Total Relationships + + + {summary?.totalRelationships || 0} + + + + + Roles with Access + + + {summary?.rolesWithAccess || 0} / {summary?.totalRoles || 15} + + + + + + Roles Assigned but No Access + + + + + + + + + {summary?.rolesAssignedButNoAccess || 0} + + + + + + Roles In Relationship but Not Assigned + + + + + + + + + {summary?.rolesInRelationshipButNotAssigned || 0} + + + + + + Roles Not In Any Relationship + + + + + + + + + {summary?.rolesNotInAnyRelationship || 0} + + + + + + + {/* Roles Section */} + + + + + GDAP Roles Access + + + + {roles && roles.length > 0 ? ( + roles.map((role) => ( + handleRoleExpand(role.roleId)} + > + }> + + {getRoleStatusChip(role)} + + + {role.roleName} + + {role.roleDescription && ( + + {role.roleDescription} + + )} + + + + + + {role.isUserHasAccess && role.accessPaths && role.accessPaths.length > 0 ? ( + <> + + Access Paths ({role.accessPaths.length}): + + {role.accessPaths.map((path, pathIndex) => ( + + + + ))} + + ) : role.isAssigned ? ( + <> + + Role is assigned but user does not have access through any group. + + {role.relationshipsWithRole && role.relationshipsWithRole.length > 0 && ( + <> + + Assigned Groups ({role.relationshipsWithRole.length}): + + {role.relationshipsWithRole.map((rel, relIndex) => ( + + + + ))} + + )} + + ) : role.roleExistsInRelationship ? ( + <> + + This role exists in at least one GDAP relationship but is not assigned to any groups. + + {role.relationshipsWithRoleAvailable && role.relationshipsWithRoleAvailable.length > 0 && ( + <> + Available in relationships: + {role.relationshipsWithRoleAvailable.map((rel, relIndex) => ( + + + โ€ข {rel.relationshipName} ({rel.relationshipStatus}) + + + ))} + + )} + + ) : ( + This role is not available in any GDAP relationship. + )} + + {role.relationshipsWithRole && role.relationshipsWithRole.length > 0 && ( + + + All relationships with this role: {role.relationshipsWithRole.length} + + + )} + + + + )) + ) : ( + No roles found. + )} + + + + + {/* Relationships Section */} + {relationships && relationships.length > 0 && ( + + + + + GDAP Relationships + + + + {relationships.map((relationship) => ( + handleRelationshipExpand(relationship.relationshipId)} + > + }> + + + + {relationship.relationshipName} + + + {relationship.groups?.length || 0} groups + + + + + + + + Customer Tenant: {relationship.customerTenantName || relationship.customerTenantId} + + + {relationship.groups && relationship.groups.length > 0 ? ( + <> + + Groups ({relationship.groups.length}): + + {relationship.groups.map((group, groupIndex) => { + const groupRole = roles?.find((r) => + r.relationshipsWithRole?.some((rel) => rel.groupId === group.groupId) + ); + const firstRoleDef = group.roles?.[0]; + const roleName = + groupRole?.roleName || + firstRoleDef?.displayName || + (firstRoleDef?.roleDefinitionId + ? getCippRoleTranslation(firstRoleDef.roleDefinitionId) + : null) || + "Role"; + + return ( + + + {group.roles && group.roles.length > 1 && ( + + + Additional Roles: + + + {group.roles.slice(1).map((role, roleIndex) => ( + + ))} + + + )} + + ); + })} + + ) : ( + No groups found in this relationship. + )} + + + + ))} + + + + )} + + {/* Raw JSON View (Collapsible) */} + + + + }> + View Raw JSON + + + + + + + + + ); +}; diff --git a/src/components/CippSettings/CippGDAP/CippPathVisualization.jsx b/src/components/CippSettings/CippGDAP/CippPathVisualization.jsx new file mode 100644 index 000000000000..0dbdbb16572a --- /dev/null +++ b/src/components/CippSettings/CippGDAP/CippPathVisualization.jsx @@ -0,0 +1,266 @@ +import React from "react"; +import { Box, Typography, Chip, Stack, Paper } from "@mui/material"; +import { + Person, + Group, + Security, + AccountTree, + CheckCircle, + Cancel, + Warning, +} from "@mui/icons-material"; +import { CippFlowDiagram } from "./CippFlowDiagram"; + +/** + * Visual Path Component for GDAP Access Traces + * Shows a visual representation of the access path from User โ†’ Groups โ†’ Role + */ +export const CippPathVisualization = ({ + userDisplayName, + userUPN, + membershipPath = [], + groupName, + roleName, + relationshipName, + customerTenantName, + isMember = true, + ...other +}) => { + // Color scheme matching sankey diagrams + const colors = { + user: "hsl(28, 100%, 53%)", // Orange - enabled users + success: "hsl(99, 70%, 50%)", // Green - compliant, has access + error: "hsl(0, 100%, 50%)", // Red - errors, no access + info: "hsl(200, 70%, 50%)", // Blue - nested groups, info + warning: "hsl(39, 100%, 50%)", // Yellow/Orange - warnings + teal: "hsl(140, 70%, 50%)", // Teal - security defaults + grey: "hsl(0, 0%, 60%)", // Grey - disabled + }; + + if (!membershipPath || membershipPath.length === 0) { + // Fallback: show simple path even without detailed membership path + const nodes = [ + { + id: "user", + label: userDisplayName || userUPN, + subLabel: "User", + icon: , + backgroundColor: `${colors.user}20`, // 20% opacity + borderColor: colors.user, + chips: [], + }, + { + id: "group", + label: groupName || "Unknown Group", + subLabel: "Security Group", + icon: isMember ? : , + backgroundColor: isMember ? `${colors.success}20` : `${colors.error}20`, + borderColor: isMember ? colors.success : colors.error, + chips: [ + { + label: isMember ? "Member" : "Not Member", + sx: { backgroundColor: isMember ? colors.success : colors.error, color: "white" }, + size: "small", + }, + ], + }, + { + id: "role", + label: roleName || "Role", + subLabel: "GDAP Role", + icon: , + backgroundColor: isMember ? `${colors.success}20` : `${colors.grey}20`, + borderColor: isMember ? colors.success : colors.grey, + chips: [ + { + label: isMember ? "Has Access" : "No Access", + sx: { backgroundColor: isMember ? colors.success : colors.grey, color: "white" }, + size: "small", + }, + ], + }, + ]; + + return ( + + {relationshipName && ( + + Relationship: {relationshipName} + {customerTenantName && ` โ†’ ${customerTenantName}`} + + )} + + + ); + } + + // Sort path by sequence if available + const sortedPath = [...membershipPath].sort((a, b) => { + if (a.sequence !== undefined && b.sequence !== undefined) { + return a.sequence - b.sequence; + } + return 0; + }); + + // Build nodes for the flow diagram + const nodes = []; + + // Start with user node + nodes.push({ + id: "user", + label: userDisplayName || userUPN, + subLabel: "User", + icon: , + backgroundColor: `${colors.user}20`, + borderColor: colors.user, + chips: [], + }); + + // Add group nodes from the path + sortedPath.forEach((step, index) => { + const isFirstGroup = index === 0; + const isLastGroup = index === sortedPath.length - 1; + const isDirect = step.membershipType === "direct"; + const isNested = step.membershipType === "nested"; + const isNotMember = step.membershipType === "not_member"; + const isIntermediate = !isFirstGroup && !isLastGroup; + + const chips = []; + + if (isNotMember) { + chips.push({ + label: "Not Member", + sx: { backgroundColor: colors.error, color: "white" }, + icon: , + }); + } else if (isDirect) { + chips.push({ + label: "Direct", + sx: { backgroundColor: colors.success, color: "white" }, + icon: , + }); + } else if (isNested) { + if (isLastGroup && sortedPath.length === 1) { + // no chip + } else { + chips.push({ + label: "Nested", + sx: { backgroundColor: colors.info, color: "white" }, + icon: , + }); + } + } + + if (sortedPath.length > 1 && step.sequence !== undefined) { + chips.push({ + label: `Step ${step.sequence + 1}`, + variant: "outlined", + size: "small", + sx: { borderColor: colors.info, color: colors.info, fontWeight: "bold" }, + }); + } + + if (isLastGroup && !isNotMember) { + chips.push({ + label: "GDAP Mapped", + sx: { backgroundColor: colors.teal, color: "white", fontWeight: "bold" }, + size: "small", + }); + } + + let groupColor; + let subLabel; + let nodeElevation = 2; + let nodeBorderWidth = 0; + + if (isNotMember) { + groupColor = colors.error; + subLabel = "Target Group (No Access)"; + } else if (isLastGroup) { + groupColor = colors.teal; + if (isDirect) { + subLabel = "GDAP Mapped Group (Direct)"; + } else if (isNested) { + subLabel = + sortedPath.length === 1 ? "GDAP Mapped Group (User Nested)" : "GDAP Mapped Group (Nested)"; + } else { + subLabel = "GDAP Mapped Group"; + } + nodeElevation = 4; + nodeBorderWidth = 3; + } else if (isFirstGroup && isDirect) { + groupColor = colors.success; + subLabel = "User's Direct Group"; + } else if (isFirstGroup && isNested) { + groupColor = colors.info; + subLabel = "User's Group (via nesting)"; + } else if (isIntermediate) { + groupColor = colors.info; + subLabel = "Intermediate Group"; + nodeElevation = 1; + } else { + groupColor = colors.info; + subLabel = "Group"; + } + + nodes.push({ + id: `group-${step.groupId || index}`, + label: step.groupName || step.groupId || "Unknown Group", + subLabel: subLabel, + icon: + isNotMember ? ( + + ) : ( + + ), + backgroundColor: `${groupColor}${isLastGroup ? "30" : "20"}`, + borderColor: groupColor, + borderWidth: nodeBorderWidth, + elevation: nodeElevation, + chips: chips, + }); + }); + + const hasAccess = !sortedPath.some((step) => step.membershipType === "not_member"); + const roleColor = hasAccess ? colors.success : colors.grey; + nodes.push({ + id: "role", + label: roleName || "Role", + subLabel: "GDAP Role", + icon: , + backgroundColor: `${roleColor}20`, + borderColor: roleColor, + chips: [ + { + label: hasAccess ? "Has Access" : "No Access", + sx: { backgroundColor: roleColor, color: "white" }, + icon: hasAccess ? : , + }, + ], + }); + + return ( + + {relationshipName && ( + + + + Relationship: {relationshipName} + + {customerTenantName && ( + <> + + โ†’ + + + Customer: {customerTenantName} + + + )} + + + )} + + + ); +}; diff --git a/src/components/CippSettings/CippGDAPResults.jsx b/src/components/CippSettings/CippGDAPResults.jsx index 055a8f0136a1..46d505a4535d 100644 --- a/src/components/CippSettings/CippGDAPResults.jsx +++ b/src/components/CippSettings/CippGDAPResults.jsx @@ -1,9 +1,9 @@ -import { List, ListItem, Skeleton, SvgIcon, Typography } from "@mui/material"; +import { Alert, List, ListItem, Skeleton, SvgIcon, Typography } from "@mui/material"; import { Cancel, CheckCircle, Warning } from "@mui/icons-material"; -import { CippPropertyList } from "/src/components/CippComponents/CippPropertyList"; +import { CippPropertyList } from "../CippComponents/CippPropertyList"; import { XMarkIcon } from "@heroicons/react/24/outline"; import { CippOffCanvas } from "../CippComponents/CippOffCanvas"; -import { CippDataTable } from "/src/components/CippTable/CippDataTable"; +import { CippDataTable } from "../CippTable/CippDataTable"; import { useEffect, useState } from "react"; export const CippGDAPResults = (props) => { @@ -28,10 +28,10 @@ export const CippGDAPResults = (props) => { const GdapIssueValue = ({ results, type, match }) => { var issues = []; - if (type) issues = results?.Results?.GDAPIssues.filter((issue) => issue.Type === type)?.length; + if (type) issues = results?.Results?.GDAPIssues?.filter((issue) => issue.Type === type)?.length; if (match) - issues = results?.Results?.GDAPIssues.filter((issue) => - new RegExp(match).test(issue.Issue) + issues = results?.Results?.GDAPIssues?.filter((issue) => + new RegExp(match).test(issue.Issue), )?.length; return ( <> @@ -57,9 +57,9 @@ export const CippGDAPResults = (props) => { resultProperty: "Memberships", matchProperty: "displayName", match: "^M365 GDAP.+", - count: 12, - successMessage: "User is a member of the 12 CIPP Recommended GDAP groups", - failureMessage: "User is not a member of the 12 CIPP Recommended GDAP groups", + count: 15, + successMessage: "User is a member of the 15 CIPP Recommended GDAP groups", + failureMessage: "User is not a member of the 15 CIPP Recommended GDAP groups", }, { resultProperty: "GDAPIssues", @@ -110,14 +110,19 @@ export const CippGDAPResults = (props) => { /> )} - {!importReport && executeCheck.isFetching ? ( + {!importReport && executeCheck?.isFetching ? ( + ) : !importReport && executeCheck?.isError ? ( + + Failed to load GDAP check results. Please try refreshing or contact support if the issue + persists. + ) : ( <> - {gdapTests.map((test, index) => { + {gdapTests?.map((test, index) => { var matchedResults = results?.Results?.[test.resultProperty]?.filter((item) => - new RegExp(test.match)?.test(item?.[test.matchProperty]) + new RegExp(test.match)?.test(item?.[test.matchProperty]), ); var testResult = false; @@ -149,15 +154,11 @@ export const CippGDAPResults = (props) => { }} extendedInfo={[]} > - - GDAP Details - - {results?.Results?.GDAPIssues?.length > 0 && ( <> { <> { )} {results?.Results?.Memberships?.filter( - (membership) => membership?.["@odata.type"] === "#microsoft.graph.group" + (membership) => membership?.["@odata.type"] === "#microsoft.graph.group", ).length > 0 && ( <> membership?.["@odata.type"] === "#microsoft.graph.group" + (membership) => membership?.["@odata.type"] === "#microsoft.graph.group", )} simpleColumns={["displayName"]} /> @@ -194,15 +195,16 @@ export const CippGDAPResults = (props) => { )} {results?.Results?.Memberships?.filter( - (membership) => membership?.["@odata.type"] === "#microsoft.graph.directoryRole" + (membership) => membership?.["@odata.type"] === "#microsoft.graph.directoryRole", ).length > 0 && ( <> membership?.["@odata.type"] === "#microsoft.graph.directoryRole" + (membership) => + membership?.["@odata.type"] === "#microsoft.graph.directoryRole", )} simpleColumns={["displayName"]} /> diff --git a/src/components/CippSettings/CippJitAdminSettings.jsx b/src/components/CippSettings/CippJitAdminSettings.jsx new file mode 100644 index 000000000000..7068c6fb6de5 --- /dev/null +++ b/src/components/CippSettings/CippJitAdminSettings.jsx @@ -0,0 +1,128 @@ +import { Button, Typography, Alert, Box } from "@mui/material"; +import { ClockIcon } from "@heroicons/react/24/outline"; +import CippButtonCard from "../CippCards/CippButtonCard"; +import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; +import { CippApiResults } from "../CippComponents/CippApiResults"; +import CippFormComponent from "../CippComponents/CippFormComponent"; +import { useForm } from "react-hook-form"; +import { useEffect } from "react"; + +const CippJitAdminSettings = () => { + const jitSettings = ApiGetCall({ + url: "/api/ExecJITAdminSettings?Action=Get", + queryKey: "jitAdminSettings", + }); + + const jitChange = ApiPostCall({ + datafromUrl: true, + relatedQueryKeys: ["jitAdminSettings"], + }); + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + MaxDuration: "", + }, + }); + + useEffect(() => { + if (jitSettings.isSuccess && jitSettings.data) { + formControl.reset({ + MaxDuration: jitSettings.data?.MaxDuration || "", + }); + } + }, [jitSettings.isSuccess, jitSettings.data]); + + const handleSave = () => { + const formData = formControl.getValues(); + jitChange.mutate({ + url: "/api/ExecJITAdminSettings", + data: { + Action: "Set", + MaxDuration: formData.MaxDuration || null, + }, + queryKey: "jitAdminSettingsPost", + }); + }; + + return ( + } + > + Save Settings + + } + > + + + Configure maximum allowed duration for Just-In-Time (JIT) admin accounts. This setting + helps enforce security policies by preventing technicians from creating JIT admin accounts + with excessively long lifespans. + + + {/* Maximum Duration Section */} + + + Maximum Duration + + { + // Allow empty value (no limit) + if (!value || typeof value !== "string" || value.trim() === "") { + return true; + } + const iso8601Regex = + /^P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)W)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?)?$/; + if (!iso8601Regex.test(value)) { + return "Invalid format. Use PT1H, P1D, P7D, P28D, etc."; + } + return true; + }, + }, + }} + formControl={formControl} + /> + + + + + Leave empty for no limit on JIT admin account duration. When set, technicians cannot + create JIT admin accounts with durations exceeding this limit. This setting applies + globally to all tenants. + + + + {/* API Results */} + + + + ); +}; + +export default CippJitAdminSettings; diff --git a/src/components/CippSettings/CippLogRetentionSettings.jsx b/src/components/CippSettings/CippLogRetentionSettings.jsx new file mode 100644 index 000000000000..3f949ed0c57b --- /dev/null +++ b/src/components/CippSettings/CippLogRetentionSettings.jsx @@ -0,0 +1,104 @@ +import { Button, Typography, TextField, Box } from "@mui/material"; +import CippButtonCard from "../CippCards/CippButtonCard"; +import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; +import { CippApiResults } from "../CippComponents/CippApiResults"; +import { useState, useEffect } from "react"; + +const CippLogRetentionSettings = () => { + const retentionSetting = ApiGetCall({ + url: "/api/ExecLogRetentionConfig?List=true", + queryKey: "LogRetentionSettings", + }); + + const retentionChange = ApiPostCall({ + datafromUrl: true, + relatedQueryKeys: "LogRetentionSettings", + }); + + const [retentionDays, setRetentionDays] = useState(90); + const [error, setError] = useState(""); + + useEffect(() => { + if (retentionSetting?.data?.Results?.RetentionDays) { + setRetentionDays(retentionSetting.data.Results.RetentionDays); + } + }, [retentionSetting.data]); + + const handleRetentionChange = () => { + const days = parseInt(retentionDays); + + if (isNaN(days) || days < 7) { + setError("Retention must be at least 7 days"); + return; + } + + if (days > 365) { + setError("Retention must be at most 365 days"); + return; + } + + setError(""); + retentionChange.mutate({ + url: "/api/ExecLogRetentionConfig", + data: { RetentionDays: days }, + queryKey: "LogRetentionPost", + }); + }; + + const handleInputChange = (e) => { + const value = e.target.value; + setRetentionDays(value); + + const days = parseInt(value); + if (!isNaN(days) && days < 7) { + setError("Retention must be at least 7 days"); + } else if (!isNaN(days) && days > 365) { + setError("Retention must be at most 365 days"); + } else if (isNaN(days) && value !== "") { + setError("Please enter a valid number"); + } else { + setError(""); + } + }; + + return ( + + + + + } + > + + Configure how long to keep CIPP log entries. Logs will be automatically deleted after this + period. Minimum retention is 7 days, maximum is 365 days, default is 90 days. + + + + ); +}; + +export default CippLogRetentionSettings; diff --git a/src/components/CippSettings/CippPasswordSettings.jsx b/src/components/CippSettings/CippPasswordSettings.jsx index e8ae0508d511..56a4845cbb28 100644 --- a/src/components/CippSettings/CippPasswordSettings.jsx +++ b/src/components/CippSettings/CippPasswordSettings.jsx @@ -1,78 +1,98 @@ -import { Button, ButtonGroup, SvgIcon, Typography } from "@mui/material"; -import CippButtonCard from "/src/components/CippCards/CippButtonCard"; -import { ApiGetCall, ApiPostCall } from "/src/api/ApiCall"; -import { KeyIcon } from "@heroicons/react/24/outline"; +import { Button, Chip, SvgIcon, Tooltip, Typography } from "@mui/material"; +import CippButtonCard from "../CippCards/CippButtonCard"; +import { useRouter } from "next/router"; +import { Cog6ToothIcon } from "@heroicons/react/24/outline"; +import { ApiGetCall } from "../../api/ApiCall"; + +// Password configuration constants +const PASSWORD_TYPES = { + CLASSIC: 'Classic', + PASSPHRASE: 'Passphrase' +}; + +const DEFAULT_VALUES = { + CHAR_COUNT: 14, + WORD_COUNT: 4, + SPECIAL_CHAR_SET: '$%&*#', + SEPARATOR: '-' +}; const CippPasswordSettings = () => { + const router = useRouter(); const passwordSetting = ApiGetCall({ url: "/api/ExecPasswordConfig?list=true", queryKey: "PasswordSettings", }); - const passwordChange = ApiPostCall({ - datafromUrl: true, - relatedQueryKeys: "PasswordSettings", - }); + // Validate API response structure and handle loading/error states + const isValidResponse = passwordSetting.data && + passwordSetting.data.Results && + typeof passwordSetting.data.Results === 'object' && + Object.prototype.hasOwnProperty.call(passwordSetting.data.Results, 'passwordType'); + + const isLoading = passwordSetting.isLoading; + const hasError = passwordSetting.isError || (!isLoading && !isValidResponse); + + // Use defaults when data is not available + const r = isValidResponse ? passwordSetting.data.Results : null; + const isClassic = !r || r?.passwordType === PASSWORD_TYPES.CLASSIC; - const handlePasswordTypeChange = (type) => { - passwordChange.mutate({ - url: "/api/ExecPasswordConfig", - data: { passwordType: type }, - queryKey: "PasswordSettingsPost", - }); + const currentLabel = isClassic + ? `Classic โ€” ${r?.charCount || DEFAULT_VALUES.CHAR_COUNT} characters` + : `Passphrase โ€” ${r?.wordCount || DEFAULT_VALUES.WORD_COUNT} words`; + + const getErrorMessage = () => { + if (passwordSetting.isError) { + return "Network error loading settings. Click Configure to update."; + } + if (!isLoading && !isValidResponse) { + return "Invalid server response. Click Configure to update settings."; + } + return ""; }; - const PasswordTypeButtons = () => { - const passwordTypes = ["Classic", "Correct-Battery-Horse"]; - return passwordTypes.map((type) => ( - - )); + const handleConfigureClick = () => { + router.push("/cipp/settings/password-config"); }; + return ( - - - - - + } + onClick={handleConfigureClick} + > + Configure + + } > - Choose your password style. Classic passwords are a combination of letters and symbols. - Correct-Battery-Horse style is a passphrase, which is easier to remember and more secure - than classic passwords. + Configure password generation settings including type, length, character sets, and + passphrase options. + + {hasError && !isLoading && ( + + {getErrorMessage()} + + )} ); }; diff --git a/src/components/CippSettings/CippPermissionCheck.jsx b/src/components/CippSettings/CippPermissionCheck.jsx index db0c81c7ad38..575f95cae5e1 100644 --- a/src/components/CippSettings/CippPermissionCheck.jsx +++ b/src/components/CippSettings/CippPermissionCheck.jsx @@ -9,8 +9,8 @@ import { SvgIcon, Typography, } from "@mui/material"; -import CippButtonCard from "/src/components/CippCards/CippButtonCard"; -import { ApiGetCall } from "/src/api/ApiCall"; +import CippButtonCard from "../CippCards/CippButtonCard"; +import { ApiGetCall } from "../../api/ApiCall"; import { useEffect, useState } from "react"; import { CippPermissionResults } from "./CippPermissionResults"; import { CippGDAPResults } from "./CippGDAPResults"; @@ -139,6 +139,11 @@ const CippPermissionCheck = (props) => { }} CardButton={} > + {executeCheck.isError && !importReport && ( + + Failed to load {type} check. Please try refreshing the page. + + )} {(executeCheck.isSuccess || executeCheck.isLoading) && ( <> {executeCheck.data?.Metadata?.AlertMessage && ( diff --git a/src/components/CippSettings/CippPermissionResults.jsx b/src/components/CippSettings/CippPermissionResults.jsx index 22c0b3d425c4..bd8e37000c0e 100644 --- a/src/components/CippSettings/CippPermissionResults.jsx +++ b/src/components/CippSettings/CippPermissionResults.jsx @@ -1,10 +1,10 @@ -import { Button, Link, List, ListItem, Skeleton, SvgIcon, Typography } from "@mui/material"; +import { Alert, Button, Link, List, ListItem, Skeleton, SvgIcon, Typography } from "@mui/material"; import { Cancel, CheckCircle } from "@mui/icons-material"; -import { CippPropertyList } from "/src/components/CippComponents/CippPropertyList"; +import { CippPropertyList } from "../CippComponents/CippPropertyList"; import { WrenchIcon, XMarkIcon } from "@heroicons/react/24/outline"; import { CippOffCanvas } from "../CippComponents/CippOffCanvas"; import { CippPropertyListCard } from "../CippCards/CippPropertyListCard"; -import { CippDataTable } from "/src/components/CippTable/CippDataTable"; +import { CippDataTable } from "../CippTable/CippDataTable"; import { ApiPostCall } from "../../api/ApiCall"; import { CippApiResults } from "../CippComponents/CippApiResults"; import { useEffect, useState } from "react"; @@ -91,18 +91,23 @@ export const CippPermissionResults = (props) => { <> {propertyItems.length > 0 && ( )} - {!importReport && executeCheck.isFetching ? ( + {!importReport && executeCheck?.isFetching ? ( + ) : !importReport && executeCheck?.isError ? ( + + Failed to load permission check results. Please try refreshing or contact support if the + issue persists. + ) : ( <> - {results?.Results?.Messages.map((message, index) => ( + {results?.Results?.Messages?.map((message, index) => ( @@ -112,7 +117,7 @@ export const CippPermissionResults = (props) => { ))} - {results?.Results?.ErrorMessages.map((error, index) => ( + {results?.Results?.ErrorMessages?.map((error, index) => ( @@ -122,7 +127,7 @@ export const CippPermissionResults = (props) => { ))} - {results?.Results?.MissingPermissions.length > 0 && ( + {results?.Results?.MissingPermissions?.length > 0 && ( @@ -143,15 +148,12 @@ export const CippPermissionResults = (props) => { }} extendedInfo={[]} > - - Permission Details - - {results?.Results?.Links.length > 0 && ( + {results?.Results?.Links?.length > 0 && ( { + propertyItems={results?.Results?.Links?.map((link) => { return { value: ( @@ -164,11 +166,11 @@ export const CippPermissionResults = (props) => { /> )} - {results?.Results?.MissingPermissions.length > 0 && ( + {results?.Results?.MissingPermissions?.length > 0 && ( <> { Refresh CPV } - isFetching={!importReport && executeCheck.isFetching} + isFetching={!importReport && executeCheck?.isFetching} refreshFunction={executeCheck} data={results?.Results?.CPVRefreshList} simpleColumns={["DisplayName", "DefaultDomainName", "LastRefresh"]} /> )} - {results?.Results?.AccessTokenDetails?.Scope.length > 0 && ( + {results?.Results?.AccessTokenDetails?.Scope?.length > 0 && ( <> { + data={results?.Results?.AccessTokenDetails?.Scope?.map((scope) => { return { Scope: scope, }; @@ -231,13 +233,13 @@ export const CippPermissionResults = (props) => { /> )} - {results?.Results?.ApplicationTokenDetails?.Roles.length > 0 && ( + {results?.Results?.ApplicationTokenDetails?.Roles?.length > 0 && ( <> { + data={results?.Results?.ApplicationTokenDetails?.Roles?.map((role) => { return { Role: role, }; diff --git a/src/components/CippSettings/CippRoleAddEdit.jsx b/src/components/CippSettings/CippRoleAddEdit.jsx index 24fd280e9ab6..4c02bf71e673 100644 --- a/src/components/CippSettings/CippRoleAddEdit.jsx +++ b/src/components/CippSettings/CippRoleAddEdit.jsx @@ -15,15 +15,16 @@ import { import { Grid } from "@mui/system"; import { ApiGetCall, ApiGetCallWithPagination, ApiPostCall } from "../../api/ApiCall"; -import { CippOffCanvas } from "/src/components/CippComponents/CippOffCanvas"; -import { CippFormTenantSelector } from "/src/components/CippComponents/CippFormTenantSelector"; -import { Save, Warning, WarningOutlined } from "@mui/icons-material"; +import { CippOffCanvas } from "../CippComponents/CippOffCanvas"; +import { CippFormTenantSelector } from "../CippComponents/CippFormTenantSelector"; +import { Save, WarningOutlined } from "@mui/icons-material"; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; import CippFormComponent from "../CippComponents/CippFormComponent"; import { useForm, useFormState, useWatch } from "react-hook-form"; import { InformationCircleIcon } from "@heroicons/react/24/outline"; import { CippApiResults } from "../CippComponents/CippApiResults"; import cippRoles from "../../data/cipp-roles.json"; +import { GroupHeader, GroupItems } from "../CippComponents/CippAutocompleteGrouping"; export const CippRoleAddEdit = ({ selectedRole }) => { const updatePermissions = ApiPostCall({ @@ -45,6 +46,12 @@ export const CippRoleAddEdit = ({ selectedRole }) => { const formState = useFormState({ control: formControl.control }); const validateRoleName = (value) => { + const alphaNumRegex = /^[A-Za-z0-9]+$/; + + if (!alphaNumRegex.test(value)) { + return "Role name must contain only letters and numbers, no spaces or special characters"; + } + if ( customRoleList?.pages?.[0]?.some( (role) => role?.RowKey?.toLowerCase() === value?.toLowerCase() @@ -57,9 +64,11 @@ export const CippRoleAddEdit = ({ selectedRole }) => { const selectedTenant = useWatch({ control: formControl.control, name: "allowedTenants" }); const blockedTenants = useWatch({ control: formControl.control, name: "blockedTenants" }); + const blockedEndpoints = useWatch({ control: formControl.control, name: "BlockedEndpoints" }); const setDefaults = useWatch({ control: formControl.control, name: "Defaults" }); const selectedPermissions = useWatch({ control: formControl.control, name: "Permissions" }); const selectedEntraGroup = useWatch({ control: formControl.control, name: "EntraGroup" }); + const ipRanges = useWatch({ control: formControl.control, name: "IPRange" }); const { data: apiPermissions = [], @@ -79,9 +88,13 @@ export const CippRoleAddEdit = ({ selectedRole }) => { queryKey: "customRoleList", }); - const { data: { pages = [] } = {}, isSuccess: tenantsSuccess } = ApiGetCallWithPagination({ + const { + data: { pages = [] } = {}, + isSuccess: tenantsSuccess, + isFetching: tenantsFetching, + } = ApiGetCallWithPagination({ url: "/api/ListTenants?AllTenantSelector=true", - queryKey: "ListTenants-AllTenantSelector", + queryKey: "ListTenants-All", }); const tenants = pages[0] || []; @@ -149,27 +162,61 @@ export const CippRoleAddEdit = ({ selectedRole }) => { (role) => role.RowKey === selectedRole ); + // Process allowed tenants - handle both groups and tenant IDs var newAllowedTenants = []; - currentPermissions?.AllowedTenants.map((tenant) => { - var tenantInfo = tenants.find((t) => t.customerId === tenant); - var label = `${tenantInfo?.displayName} (${tenantInfo?.defaultDomainName})`; - if (tenantInfo?.displayName) { + currentPermissions?.AllowedTenants?.forEach((item) => { + if (typeof item === "object" && item.type === "Group") { + // Handle group objects newAllowedTenants.push({ - label: label, - value: tenantInfo.defaultDomainName, + label: item.label, + value: item.value, + type: "Group", }); + } else { + // Handle tenant customer IDs (legacy format) + var tenantInfo = tenants.find((t) => t?.customerId === item); + if (tenantInfo?.displayName) { + var label = `${tenantInfo.displayName} (${tenantInfo.defaultDomainName})`; + newAllowedTenants.push({ + label: label, + value: tenantInfo.defaultDomainName, + type: "Tenant", + addedFields: { + defaultDomainName: tenantInfo.defaultDomainName, + displayName: tenantInfo.displayName, + customerId: tenantInfo.customerId, + }, + }); + } } }); + // Process blocked tenants - handle both groups and tenant IDs var newBlockedTenants = []; - currentPermissions?.BlockedTenants.map((tenant) => { - var tenantInfo = tenants.find((t) => t.customerId === tenant); - var label = `${tenantInfo?.displayName} (${tenantInfo?.defaultDomainName})`; - if (tenantInfo?.displayName) { + currentPermissions?.BlockedTenants?.forEach((item) => { + if (typeof item === "object" && item.type === "Group") { + // Handle group objects newBlockedTenants.push({ - label: label, - value: tenantInfo.defaultDomainName, + label: item.label, + value: item.value, + type: "Group", }); + } else { + // Handle tenant customer IDs (legacy format) + var tenantInfo = tenants.find((t) => t?.customerId === item); + if (tenantInfo?.displayName) { + var label = `${tenantInfo.displayName} (${tenantInfo.defaultDomainName})`; + newBlockedTenants.push({ + label: label, + value: tenantInfo.defaultDomainName, + type: "Tenant", + addedFields: { + defaultDomainName: tenantInfo.defaultDomainName, + displayName: tenantInfo.displayName, + customerId: tenantInfo.customerId, + }, + }); + } } }); @@ -191,6 +238,20 @@ export const CippRoleAddEdit = ({ selectedRole }) => { return processed; }; + // Process blocked endpoints + const processedBlockedEndpoints = + currentPermissions?.BlockedEndpoints?.map((endpoint) => ({ + label: endpoint, + value: endpoint, + })) || []; + + // Process IP ranges + const processedIPRanges = + currentPermissions?.IPRange?.map((ip) => ({ + label: ip, + value: ip, + })) || []; + formControl.reset({ Permissions: basePermissions && Object.keys(basePermissions).length > 0 @@ -199,6 +260,8 @@ export const CippRoleAddEdit = ({ selectedRole }) => { RoleName: selectedRole ?? currentPermissions?.RowKey, allowedTenants: newAllowedTenants, blockedTenants: newBlockedTenants, + BlockedEndpoints: processedBlockedEndpoints, + IPRange: processedIPRanges, EntraGroup: currentPermissions?.EntraGroup, }); } @@ -245,22 +308,55 @@ export const CippRoleAddEdit = ({ selectedRole }) => { const handleSubmit = () => { let values = formControl.getValues(); - var allowedTenantIds = []; - selectedTenant.map((tenant) => { - var tenant = tenants.find((t) => t.defaultDomainName === tenant?.value); - if (tenant?.customerId) { - allowedTenantIds.push(tenant.customerId); - } - }); + // Process allowed tenants - preserve groups and convert tenants to IDs + const processedAllowedTenants = + selectedTenant + ?.map((tenant) => { + if (tenant.type === "Group") { + // Keep groups as-is for backend processing + return { + type: "Group", + value: tenant.value, + label: tenant.label, + }; + } else { + // Convert tenant domain names to customer IDs + const tenantInfo = tenants.find((t) => t.defaultDomainName === tenant.value); + return tenantInfo?.customerId; + } + }) + .filter(Boolean) || []; + + // Process blocked tenants - preserve groups and convert tenants to IDs + const processedBlockedTenants = + blockedTenants + ?.map((tenant) => { + if (tenant.type === "Group") { + // Keep groups as-is for backend processing + return { + type: "Group", + value: tenant.value, + label: tenant.label, + }; + } else { + // Convert tenant domain names to customer IDs + const tenantInfo = tenants.find((t) => t.defaultDomainName === tenant.value); + return tenantInfo?.customerId; + } + }) + .filter(Boolean) || []; - var blockedTenantIds = []; - blockedTenants.map((tenant) => { - var tenant = tenants.find((t) => t.defaultDomainName === tenant?.value); - if (tenant?.customerId) { - blockedTenantIds.push(tenant.customerId); - } - }); + const processedBlockedEndpoints = + values?.["BlockedEndpoints"]?.map((endpoint) => { + // Extract the endpoint value + return endpoint.value || endpoint; + }) || []; + + const processedIPRanges = + ipRanges?.map((ip) => { + return ip?.value || ip; + }) || []; updatePermissions.mutate({ url: "/api/ExecCustomRole?Action=AddUpdate", @@ -268,21 +364,23 @@ export const CippRoleAddEdit = ({ selectedRole }) => { RoleName: values?.["RoleName"], Permissions: selectedPermissions, EntraGroup: selectedEntraGroup, - AllowedTenants: allowedTenantIds, - BlockedTenants: blockedTenantIds, + AllowedTenants: processedAllowedTenants, + BlockedTenants: processedBlockedTenants, + BlockedEndpoints: processedBlockedEndpoints, + IPRange: processedIPRanges, }, }); }; const ApiPermissionRow = ({ obj, cat, readOnly }) => { const [offcanvasVisible, setOffcanvasVisible] = useState(false); + const [descriptionOffcanvasVisible, setDescriptionOffcanvasVisible] = useState(false); + const [selectedDescription, setSelectedDescription] = useState({ name: "", description: "" }); - var items = []; - for (var key in apiPermissions[cat][obj]) - for (var key2 in apiPermissions[cat][obj][key]) { - items.push({ heading: "", content: apiPermissions[cat][obj][key][key2] }); - } - var group = [{ items: items }]; + const handleDescriptionClick = (name, description) => { + setSelectedDescription({ name, description }); + setDescriptionOffcanvasVisible(true); + }; return ( { disabled={readOnly} /> + {/* Main offcanvas */} { - setOffcanvasVisible(false); - }} + onClose={() => setOffcanvasVisible(false)} + title={`${cat}.${obj} Endpoints`} > - - {`${cat}.${obj}`} - - Listed below are the available API endpoints based on permission level, ReadWrite + Listed below are the available API endpoints based on permission level. ReadWrite level includes endpoints under Read. - {[apiPermissions[cat][obj]].map((permissions, key) => { - var sections = Object.keys(permissions).map((type) => { - var items = []; - for (var api in permissions[type]) { - items.push({ heading: "", content: permissions[type][api] }); - } - return ( - - {type} - - {items.map((item, idx) => ( - - {item.content} - - ))} - + {Object.keys(apiPermissions[cat][obj]).map((type, typeIndex) => { + var items = []; + for (var api in apiPermissions[cat][obj][type]) { + const apiFunction = apiPermissions[cat][obj][type][api]; + items.push({ + name: apiFunction.Name, + description: apiFunction.Description?.[0]?.Text || null, + }); + } + return ( + + {type} + + {items.map((item, idx) => ( + + + {item.name} + + {item.description && ( + + )} + + ))} - ); - }); - return sections; + + ); })} + + {/* Description offcanvas */} + setDescriptionOffcanvasVisible(false)} + title="Function Description" + > + + + {selectedDescription.name} + + {selectedDescription.description} + +
    ); }; @@ -365,6 +488,9 @@ export const CippRoleAddEdit = ({ selectedRole }) => { + + Role Options + {!selectedRole && ( { dataKey: "Results", labelField: "displayName", valueField: "id", + showRefresh: true, }} formControl={formControl} fullWidth={true} sortOptions={true} multiple={false} creatable={false} + helperText="Assigning an Entra group will automatically assign this role to all users in that group. This does not work with users invited directly to Static Web App." /> {!isBaseRole && ( @@ -420,6 +548,8 @@ export const CippRoleAddEdit = ({ selectedRole }) => { allTenants={true} name="allowedTenants" fullWidth={true} + includeGroups={true} + helperText="Select the tenants that users should have access to with this role." /> {allTenantSelected && blockedTenants?.length == 0 && ( @@ -437,15 +567,199 @@ export const CippRoleAddEdit = ({ selectedRole }) => { allTenants={false} name="blockedTenants" fullWidth={true} + includeGroups={true} + helperText="Select tenants that this role should not have access to." /> )} + + + { + const allEndpoints = []; + Object.keys(apiPermissions) + .sort() + .forEach((cat) => { + Object.keys(apiPermissions[cat]) + .sort() + .forEach((obj) => { + Object.keys(apiPermissions[cat][obj]).forEach((type) => { + Object.keys(apiPermissions[cat][obj][type]).forEach( + (apiKey) => { + const apiFunction = apiPermissions[cat][obj][type][apiKey]; + const descriptionText = apiFunction.Description?.[0]?.Text; + allEndpoints.push({ + label: descriptionText + ? `${apiFunction.Name} - ${descriptionText}` + : apiFunction.Name, + value: apiFunction.Name, + category: `${cat}.${obj}.${type}`, + }); + } + ); + }); + }); + }); + // Sort endpoints alphabetically within each category + return allEndpoints.sort((a, b) => { + if (a.category !== b.category) { + return a.category.localeCompare(b.category); + } + return a.label.localeCompare(b.label); + }); + })() + : [] + } + formControl={formControl} + fullWidth={true} + multiple={true} + creatable={false} + groupBy={(option) => option.category} + renderGroup={(params) => ( +
  • + {params.group} + {params.children} +
  • + )} + helperText="Select specific API endpoints to block for this role, this overrides permission settings below." + /> +
    + + )} + + + + {apiPermissionFetching && ( + <> + + + + + + + + + + {[...Array(5)].map((_, index) => ( + + + + + + ))} )} - {apiPermissionFetching && } {apiPermissionSuccess && ( <> - API Permissions + {/* Display include/exclude patterns for base roles */} + {isBaseRole && selectedRole && cippRoles[selectedRole]?.include && ( + <> + + Defined Permissions + + + + Include Patterns: + + + These patterns define which permissions are included for this base role: + + + {cippRoles[selectedRole].include.map((pattern, idx) => ( + + {pattern} + + ))} + + + {cippRoles[selectedRole]?.exclude && + cippRoles[selectedRole].exclude.length > 0 && ( + <> + + Exclude Patterns: + + + These patterns define which permissions are explicitly excluded from + this base role: + + + {cippRoles[selectedRole].exclude.map((pattern, idx) => ( + + {pattern} + + ))} + + + )} + + + )} + + + API Permissions + {!isBaseRole && ( { alignItems="center" justifyContent={"space-between"} width={"100%"} - sx={{ my: 2 }} + sx={{ mb: 2 }} > Set All Permissions @@ -517,7 +831,7 @@ export const CippRoleAddEdit = ({ selectedRole }) => {
    Allowed Tenants
      {selectedTenant.map((tenant, idx) => ( -
    • {tenant?.label}
    • +
    • {tenant?.label}
    • ))}
    @@ -527,7 +841,32 @@ export const CippRoleAddEdit = ({ selectedRole }) => {
    Blocked Tenants
      {blockedTenants.map((tenant, idx) => ( -
    • {tenant?.label}
    • +
    • {tenant?.label}
    • + ))} +
    + + )} + {blockedEndpoints?.length > 0 && ( + <> +
    Blocked Endpoints
    +
      + {blockedEndpoints.map((endpoint, idx) => ( +
    • + {endpoint?.label || endpoint?.value || endpoint} +
    • + ))} +
    + + )} + {ipRanges?.length > 0 && ( + <> +
    Allowed IP Ranges
    +
      + {ipRanges.map((ip, idx) => ( +
    • {ip?.value || ip?.label || ip}
    • ))}
    @@ -540,13 +879,13 @@ export const CippRoleAddEdit = ({ selectedRole }) => { Object.keys(selectedPermissions) ?.sort() .map((cat, idx) => ( - <> + {selectedPermissions?.[cat] && typeof selectedPermissions[cat] === "string" && !selectedPermissions[cat]?.includes("None") && ( -
  • {selectedPermissions[cat]}
  • +
  • {selectedPermissions[cat]}
  • )} - +
    ))} @@ -560,7 +899,13 @@ export const CippRoleAddEdit = ({ selectedRole }) => { className="me-2" type="submit" variant="contained" - disabled={updatePermissions.isPending || customRoleListFetching || !formState.isValid} + disabled={ + updatePermissions.isPending || + customRoleListFetching || + apiPermissionFetching || + tenantsFetching || + !formState.isValid + } startIcon={ diff --git a/src/components/CippSettings/CippRoles.jsx b/src/components/CippSettings/CippRoles.jsx index 15766897d4f4..34b1f08dcd78 100644 --- a/src/components/CippSettings/CippRoles.jsx +++ b/src/components/CippSettings/CippRoles.jsx @@ -1,7 +1,7 @@ import React from "react"; import { Box, Button, SvgIcon } from "@mui/material"; import { CippDataTable } from "../CippTable/CippDataTable"; -import { PencilIcon, TrashIcon } from "@heroicons/react/24/outline"; +import { PencilIcon, TrashIcon, DocumentDuplicateIcon } from "@heroicons/react/24/outline"; import NextLink from "next/link"; import { CippPropertyListCard } from "../../components/CippCards/CippPropertyListCard"; import { getCippTranslation } from "../../utils/get-cipp-translation"; @@ -20,6 +20,34 @@ const CippRoles = () => { ), link: "/cipp/super-admin/cipp-roles/edit?role=[RoleName]", }, + { + label: "Clone", + icon: ( + + + + ), + type: "POST", + url: "/api/ExecCustomRole", + data: { + Action: "Clone", + RoleName: "RoleName", + }, + fields: [ + { + label: "New Role Name", + name: "NewRoleName", + type: "textField", + required: true, + helperText: + "Enter a name for the new cloned role. This cannot be the same as an existing role.", + disableVariables: true, + }, + ], + relatedQueryKeys: ["customRoleList", "customRoleTable"], + confirmText: "Are you sure you want to clone this custom role?", + condition: (row) => row?.Type === "Custom", + }, { label: "Delete", icon: ( @@ -35,7 +63,7 @@ const CippRoles = () => { RoleName: "RoleName", }, condition: (row) => row?.Type === "Custom", - relatedQueryKeys: ["customRoleList"], + relatedQueryKeys: ["customRoleList", "customRoleTable"], }, ]; diff --git a/src/components/CippSettings/CippSiemSettings.jsx b/src/components/CippSettings/CippSiemSettings.jsx new file mode 100644 index 000000000000..bda03174c426 --- /dev/null +++ b/src/components/CippSettings/CippSiemSettings.jsx @@ -0,0 +1,127 @@ +import { Button, Typography, Alert, Box, TextField, InputAdornment } from "@mui/material"; +import { Key } from "@mui/icons-material"; +import CippButtonCard from "../CippCards/CippButtonCard"; +import { ApiPostCall } from "../../api/ApiCall"; +import { CippCopyToClipBoard } from "../CippComponents/CippCopyToClipboard"; +import CippFormComponent from "../CippComponents/CippFormComponent"; +import { useForm } from "react-hook-form"; + +const CippSiemSettings = () => { + const generateSas = ApiPostCall({ + datafromUrl: true, + }); + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + Days: { label: "365 days", value: "365" }, + }, + }); + + const handleGenerate = () => { + const formData = formControl.getValues(); + const days = formData.Days?.value ?? "365"; + generateSas.mutate({ + url: "/api/ExecCippLogsSas", + data: { Days: parseInt(days, 10) }, + queryKey: "ExecCippLogsSas", + }); + }; + + return ( + } + > + Generate SAS Token + + } + > + + + Generate a read-only SAS token for the CIPP Logs table. This token can be used to query + log data from external SIEM tools or scripts using the Azure Table Storage REST API. Note + that generating a new URL does not invalidate previous URLs. + + + + + + + {generateSas.isError && ( + + {generateSas.error?.response?.data?.Results || + generateSas.error?.message || + "Failed to generate SAS token"} + + )} + + {generateSas.isSuccess && generateSas.data?.data?.Results && ( + <> + + SAS URL generated successfully. Copy this for your records, it will only be shown + once. + + + + SAS URL + + + + + ), + }, + }} + /> + + + + Expires On + + + {new Date(generateSas.data.data.Results.ExpiresOn).toLocaleString()} + + + + )} + + + ); +}; + +export default CippSiemSettings; diff --git a/src/components/CippSettings/CippTenantResults.jsx b/src/components/CippSettings/CippTenantResults.jsx index 9483a07f7a2e..dc79285ccb4e 100644 --- a/src/components/CippSettings/CippTenantResults.jsx +++ b/src/components/CippSettings/CippTenantResults.jsx @@ -1,5 +1,5 @@ import { CippDataTable } from "../CippTable/CippDataTable"; -import { Sync } from "@mui/icons-material"; +import { Plumbing, Sync } from "@mui/icons-material"; export const CippTenantResults = (props) => { const { importReport = false } = props; @@ -28,6 +28,9 @@ export const CippTenantResults = (props) => { "LastRun", "GraphTest", "ExchangeTest", + "OrgManagementRepairNeeeded", + "OrgManagementRoles", + "OrgManagementRolesMissing", ], }} /> @@ -54,6 +57,15 @@ export const CippTenantResults = (props) => { relatedQueryKeys: "ExecAccessChecks-Tenants", multiPost: false, }, + { + label: "Repair Exchange Roles", + type: "POST", + url: "/api/ExecExchangeRoleRepair", + data: { TenantId: "TenantId" }, + icon: , + confirmText: "Repair Exchange roles for [TenantName]?", + condition: (row) => row.OrgManagementRepairNeeded === true, + }, ]} simpleColumns={[ "TenantName", diff --git a/src/components/CippSettings/CippVersionProperties.jsx b/src/components/CippSettings/CippVersionProperties.jsx index dca288ede4dd..4b19e1d9e328 100644 --- a/src/components/CippSettings/CippVersionProperties.jsx +++ b/src/components/CippSettings/CippVersionProperties.jsx @@ -1,7 +1,7 @@ -import { Box, Button, Skeleton, SvgIcon } from "@mui/material"; -import { CippPropertyListCard } from "/src/components/CippCards/CippPropertyListCard"; +import { Box, Button, SvgIcon } from "@mui/material"; +import { CippPropertyListCard } from "../CippCards/CippPropertyListCard"; import { CheckCircle, SystemUpdateAlt, Warning } from "@mui/icons-material"; -import { ApiGetCall } from "/src/api/ApiCall"; +import { ApiGetCall } from "../../api/ApiCall"; import { useEffect } from "react"; const CippVersionProperties = () => { diff --git a/src/components/CippStandards/CippStandardAccordion.jsx b/src/components/CippStandards/CippStandardAccordion.jsx index c07bc67c27d2..1a2811d462c3 100644 --- a/src/components/CippStandards/CippStandardAccordion.jsx +++ b/src/components/CippStandards/CippStandardAccordion.jsx @@ -29,18 +29,20 @@ import { Construction, } from "@mui/icons-material"; import { Grid } from "@mui/system"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { useWatch } from "react-hook-form"; +import CippFormComponent from "../CippComponents/CippFormComponent"; +import { useWatch, useFormState } from "react-hook-form"; import _ from "lodash"; import Microsoft from "../../icons/iconly/bulk/microsoft"; import Azure from "../../icons/iconly/bulk/azure"; import Exchange from "../../icons/iconly/bulk/exchange"; import Defender from "../../icons/iconly/bulk/defender"; import Intune from "../../icons/iconly/bulk/intune"; -import GDAPRoles from "/src/data/GDAPRoles"; -import timezoneList from "/src/data/timezoneList"; -import standards from "/src/data/standards.json"; +import GDAPRoles from "../../data/GDAPRoles"; +import timezoneList from "../../data/timezoneList"; +import standards from "../../data/standards.json"; import { CippFormCondition } from "../CippComponents/CippFormCondition"; +import { CippPolicyImportDrawer } from "../CippComponents/CippPolicyImportDrawer"; +import ReactMarkdown from "react-markdown"; const getAvailableActions = (disabledFeatures) => { const allActions = [ @@ -93,6 +95,8 @@ const CippStandardAccordion = ({ handleRemoveStandard, handleAddMultipleStandard, formControl, + editMode = false, + isDriftMode = false, }) => { const [configuredState, setConfiguredState] = useState({}); const [filter, setFilter] = useState("all"); @@ -104,6 +108,43 @@ const CippStandardAccordion = ({ control: formControl.control, }); + const { errors: formErrors } = useFormState({ control: formControl.control }); + + // Watch all trackDrift values for all standards at once + const allTrackDriftValues = useWatch({ + control: formControl.control, + name: Object.keys(selectedStandards).map((standardName) => `${standardName}.trackDrift`), + }); + + // Handle drift mode automatic action setting + useEffect(() => { + if (isDriftMode && selectedStandards) { + Object.keys(selectedStandards).forEach((standardName) => { + const currentValues = formControl.getValues(standardName) || {}; + const autoRemediate = currentValues.autoRemediate; + + // Set default action based on autoRemediate setting + const defaultAction = autoRemediate + ? [ + { label: "Report", value: "Report" }, + { label: "Remediate", value: "Remediate" }, + ] + : [{ label: "Report", value: "Report" }]; + + // Only set if action is not already set + if (!currentValues.action) { + formControl.setValue(`${standardName}.action`, defaultAction); + } + + // Set default autoRemediate if not set + if (currentValues.autoRemediate === undefined) { + formControl.setValue(`${standardName}.autoRemediate`, false); + formControl.setValue(`${standardName}.action`, [{ label: "Report", value: "Report" }]); + } + }); + } + }, [isDriftMode, selectedStandards, formControl]); + // Check if a standard is configured based on its values const isStandardConfigured = (standardName, standard, values) => { if (!values) return false; @@ -188,46 +229,89 @@ const CippStandardAccordion = ({ // Initialize when watchedValues are available useEffect(() => { - // Only run initialization if we have watchedValues and they contain data - if (!watchedValues || Object.keys(watchedValues).length === 0) { - return; - } + if (editMode) { + // Only run initialization if we have watchedValues and they contain data + if (!watchedValues || Object.keys(watchedValues).length === 0) { + return; + } - // Prevent re-initialization if we already have configuration state - const hasConfigState = Object.keys(configuredState).length > 0; - if (hasConfigState) { - return; - } + // Prevent re-initialization if we already have configuration state + const hasConfigState = Object.keys(configuredState).length > 0; + if (hasConfigState) { + return; + } - console.log("Initializing configuration state from template values"); - const initial = {}; - const initialConfigured = {}; + const initial = {}; + const initialConfigured = {}; - // For each standard, get its current values and determine if it's configured - Object.keys(selectedStandards).forEach((standardName) => { - const currentValues = _.get(watchedValues, standardName); - if (!currentValues) return; + // For each standard, get its current values and determine if it's configured + Object.keys(selectedStandards).forEach((standardName) => { + const currentValues = _.get(watchedValues, standardName); + if (!currentValues) return; - initial[standardName] = _.cloneDeep(currentValues); + initial[standardName] = _.cloneDeep(currentValues); - const baseStandardName = standardName.split("[")[0]; - const standard = providedStandards.find((s) => s.name === baseStandardName); - if (standard) { - initialConfigured[standardName] = isStandardConfigured( - standardName, - standard, - currentValues - ); - } - }); + const baseStandardName = standardName.split("[")[0]; + const standard = providedStandards.find((s) => s.name === baseStandardName); + if (standard) { + initialConfigured[standardName] = isStandardConfigured( + standardName, + standard, + currentValues, + ); + } + }); + + // Store both the initial values and set them as current saved values + setOriginalValues(initial); + setSavedValues(initial); + setConfiguredState(initialConfigured); + // Only depend on watchedValues and selectedStandards to avoid infinite loops + // eslint-disable-next-line react-hooks/exhaustive-deps + } + }, [watchedValues, selectedStandards, editMode]); + + // Sync internal state when selectedStandards keys change (e.g., after re-indexing on removal) + useEffect(() => { + const currentKeys = Object.keys(selectedStandards); + const stateKeys = Object.keys(savedValues); + if (stateKeys.length === 0) return; + + const currentSet = new Set(currentKeys); + const stateSet = new Set(stateKeys); + + const removedKeys = stateKeys.filter((k) => !currentSet.has(k)); + const addedKeys = currentKeys.filter((k) => !stateSet.has(k)); + + if (removedKeys.length > 0 || addedKeys.length > 0) { + setSavedValues((prev) => { + const updated = { ...prev }; + removedKeys.forEach((k) => delete updated[k]); + addedKeys.forEach((k) => { + const currentValues = _.get(watchedValues, k); + if (currentValues) { + updated[k] = _.cloneDeep(currentValues); + } + }); + return updated; + }); - // Store both the initial values and set them as current saved values - setOriginalValues(initial); - setSavedValues(initial); - setConfiguredState(initialConfigured); - // Only depend on watchedValues and selectedStandards to avoid infinite loops + setConfiguredState((prev) => { + const updated = { ...prev }; + removedKeys.forEach((k) => delete updated[k]); + addedKeys.forEach((k) => { + const baseStandardName = k.split("[")[0]; + const standard = providedStandards.find((s) => s.name === baseStandardName); + const currentValues = _.get(watchedValues, k); + if (standard && currentValues) { + updated[k] = isStandardConfigured(k, standard, currentValues); + } + }); + return updated; + }); + } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [watchedValues, selectedStandards]); + }, [selectedStandards]); // Save changes for a standard const handleSave = (standardName, standard, current) => { @@ -242,7 +326,6 @@ const CippStandardAccordion = ({ // Update configured state right away const isConfigured = isStandardConfigured(standardName, standard, newValues); - console.log(`Saving standard ${standardName}, configured: ${isConfigured}`); setConfiguredState((prev) => ({ ...prev, @@ -253,6 +336,19 @@ const CippStandardAccordion = ({ handleAccordionToggle(null); }; + // Handle auto-remediate toggle in drift mode + const handleAutoRemediateChange = (standardName, value) => { + const action = value + ? [ + { label: "Report", value: "Report" }, + { label: "Remediate", value: "Remediate" }, + ] + : [{ label: "Report", value: "Report" }]; + + formControl.setValue(`${standardName}.autoRemediate`, value); + formControl.setValue(`${standardName}.action`, action); + }; + // Cancel changes for a standard const handleCancel = (standardName) => { // Get the last saved values @@ -508,22 +604,43 @@ const CippStandardAccordion = ({ selectedActions = [selectedActions]; } + // Get template name for Intune Templates + let templateDisplayName = ""; + if (standardName.startsWith("standards.IntuneTemplate")) { + // Check for TemplateList selection + const templateList = _.get(watchedValues, `${standardName}.TemplateList`); + if (templateList && templateList.label) { + templateDisplayName = templateList.label; + } + + // Check for TemplateList-Tags selection (takes priority) + const templateListTags = _.get(watchedValues, `${standardName}.TemplateList-Tags`); + if (templateListTags && templateListTags.label) { + templateDisplayName = templateListTags.label; + } + } + + // For multiple standards, check the first added component const selectedTemplateName = standard.multiple ? _.get(watchedValues, `${standardName}.${standard.addedComponent?.[0]?.name}`) : ""; - const accordionTitle = - selectedTemplateName && _.get(selectedTemplateName, "label") + + // Build accordion title with template name if available + const accordionTitle = templateDisplayName + ? `${standard.label} - ${templateDisplayName}` + : selectedTemplateName && _.get(selectedTemplateName, "label") ? `${standard.label} - ${_.get(selectedTemplateName, "label")}` : standard.label; // Get current values and check if they differ from saved values const current = _.get(watchedValues, standardName); const saved = _.get(savedValues, standardName) || {}; + const hasUnsaved = !_.isEqual(current, saved); // Check if all required fields are filled const requiredFieldsFilled = current - ? standard.addedComponent?.every((component) => { + ? (standard.addedComponent?.every((component) => { // Always skip switches regardless of their required property if (component.type === "switch") return true; @@ -555,7 +672,7 @@ const CippStandardAccordion = ({ switch (compareType) { case "valueEq": conditionMet = conditionValue.some( - (item) => item?.[propertyName] === compareValue + (item) => item?.[propertyName] === compareValue, ); break; default: @@ -569,8 +686,7 @@ const CippStandardAccordion = ({ // Get field value for validation using lodash's get to properly handle nested properties const fieldValue = _.get(current, component.name); - console.log(`Checking field: ${component.name}, value:`, fieldValue); - console.log(current); + // Check if required field has a value based on its type and multiple property if (component.type === "autoComplete" || component.type === "select") { if (component.multiple) { @@ -584,7 +700,7 @@ const CippStandardAccordion = ({ // For other field types return !!fieldValue; - }) ?? true + }) ?? true) : false; // ALWAYS require an action for all standards @@ -594,7 +710,7 @@ const CippStandardAccordion = ({ const hasRequiredComponents = standard.addedComponent && standard.addedComponent.some( - (comp) => comp.type !== "switch" && comp.required !== false + (comp) => comp.type !== "switch" && comp.required !== false, ); // Action is always required and must be an array with at least one element @@ -602,15 +718,16 @@ const CippStandardAccordion = ({ const hasAction = actionValue && (!Array.isArray(actionValue) || actionValue.length > 0); + // Check if this standard has any validation errors + const standardErrors = _.get(formErrors, standardName); + const hasValidationErrors = standardErrors && Object.keys(standardErrors).length > 0; + // Allow saving if: // 1. Action is selected if required // 2. All required fields are filled // 3. There are unsaved changes - const canSave = hasAction && requiredFieldsFilled && hasUnsaved; - - console.log( - `Standard: ${standardName}, Action Required: ${actionRequired}, Has Action: ${hasAction}, Required Fields Filled: ${requiredFieldsFilled}, Can Save: ${canSave}` - ); + // 4. No validation errors + const canSave = hasAction && requiredFieldsFilled && hasUnsaved && !hasValidationErrors; return ( @@ -618,9 +735,9 @@ const CippStandardAccordion = ({ direction="row" justifyContent="space-between" alignItems="center" - sx={{ p: 3 }} + sx={{ p: 2 }} > - + {standard.cat === "Global Standards" ? ( @@ -638,8 +755,17 @@ const CippStandardAccordion = ({ {accordionTitle} - - {selectedActions && selectedActions?.length > 0 && ( + + {standard.deprecated && ( + + )} + {/* Hide action chips in drift mode */} + {!isDriftMode && selectedActions && selectedActions?.length > 0 && ( <> {selectedActions?.map((action, index) => ( @@ -669,17 +795,56 @@ const CippStandardAccordion = ({ sx={{ mr: 1 }} /> - - {standard.helpText} - + theme.palette.primary.main, + textDecoration: "underline", + "&:hover": { + textDecoration: "none", + }, + }, + color: "text.secondary", + fontSize: "0.875rem", + lineHeight: 1.43, + mr: 1, + }} + > + ( + + {children} + + ), + // Convert paragraphs to spans to avoid unwanted spacing + p: ({ children }) => {children}, + }} + > + {standard.helpText} + + {standard.multiple && ( - - handleAddMultipleStandard(standardName)}> - - + + + handleAddMultipleStandard(standardName)} + disabled={standard.deprecated} + > + + + )} - - - {/* Always show action field as it's required */} - - - + {standard.deprecated && ( + + + โš ๏ธ This standard is deprecated and cannot be configured. Please remove it + from your template and use an alternative standard if available. + + + )} + + {isDriftMode ? ( + /* Drift mode layout - full width with slider first */ + + {/* Auto-remediate switch takes full width and is first */} + + + handleAutoRemediateChange(standardName, e.target.checked) + } + fullWidth + /> + - {hasAddedComponents && ( - - + {/* Additional components take full width */} + {hasAddedComponents && ( + <> + {/* Add catalog button for Intune Template standard - appears first */} + {standardName.startsWith("standards.IntuneTemplate") && ( + + + + + + )} {standard.addedComponent?.map((component, idx) => component?.condition ? ( - ) + ), )} - + + )} + + ) : ( + /* Standard mode layout - original grid layout */ + + + - )} - + + {hasAddedComponents && ( + + + {/* Add catalog button for Intune Template standard - appears first */} + {standardName.startsWith("standards.IntuneTemplate") && ( + + + + + + )} + {standard.addedComponent?.map((component, idx) => + component?.condition ? ( + + + + ) : ( + + ), + )} + + + )} + + )} - + + )} + + + + + {/* Active Filter Chips */} + {activeFiltersCount > 0 && ( + + + {selectedCategories.map((category) => ( + + setSelectedCategories((prev) => prev.filter((c) => c !== category)) + } + color="primary" + variant="outlined" + /> + ))} + {selectedImpacts.map((impact) => ( + setSelectedImpacts((prev) => prev.filter((i) => i !== impact))} + color="secondary" + variant="outlined" + /> + ))} + {selectedRecommendedBy.map((rec) => ( + + setSelectedRecommendedBy((prev) => prev.filter((r) => r !== rec)) + } + color="success" + variant="outlined" + /> + ))} + {selectedTagFrameworks.map((framework) => ( + + setSelectedTagFrameworks((prev) => prev.filter((f) => f !== framework)) + } + color="warning" + variant="outlined" + /> + ))} + {showOnlyNew && ( + setShowOnlyNew(false)} + color="info" + variant="outlined" + /> + )} + {statusFilter !== "all" && ( + setStatusFilter("all")} + color="default" + variant="outlined" + /> + )} + + + )} + + + + {/* Results */} {isInitialLoading ? ( ) : processedItems.length === 0 ? ( - - Search returned no results - + + + No standards match your search and filter criteria + + + Try adjusting your search terms or clearing some filters + + ) : ( - + + + Showing {processedItems.length} standard{processedItems.length !== 1 ? "s" : ""} + + {viewMode === "card" ? ( + + + + ) : ( + + + + )} + )} - + diff --git a/src/components/CippStandards/CippStandardsSideBar.jsx b/src/components/CippStandards/CippStandardsSideBar.jsx index f14945745a04..f633f9b14ed9 100644 --- a/src/components/CippStandards/CippStandardsSideBar.jsx +++ b/src/components/CippStandards/CippStandardsSideBar.jsx @@ -1,6 +1,19 @@ import PropTypes from "prop-types"; -import { Card, CardContent, CardHeader, Divider, Stack, SvgIcon, Typography } from "@mui/material"; +import { + Box, + Card, + CardContent, + CardHeader, + Divider, + IconButton, + Stack, + SvgIcon, + Tooltip, + Typography, +} from "@mui/material"; +import InfoOutlinedIcon from "@mui/icons-material/InfoOutlined"; import { styled } from "@mui/material/styles"; +import { CippOffCanvas } from "../CippComponents/CippOffCanvas"; import { Timeline, TimelineConnector, @@ -10,17 +23,19 @@ import { timelineItemClasses, TimelineSeparator, } from "@mui/lab"; -import { ActionList } from "/src/components/action-list"; -import { ActionListItem } from "/src/components/action-list-item"; +import { ActionList } from "../action-list"; +import { ActionListItem } from "../action-list-item"; import CheckIcon from "@heroicons/react/24/outline/CheckIcon"; import CloseIcon from "@mui/icons-material/Close"; import { useWatch } from "react-hook-form"; import { useEffect, useState } from "react"; import _ from "lodash"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; +import CippFormComponent from "../CippComponents/CippFormComponent"; import { CippFormTenantSelector } from "../CippComponents/CippFormTenantSelector"; import { CippApiDialog } from "../CippComponents/CippApiDialog"; import ReactTimeAgo from "react-time-ago"; +import { Alert } from "@mui/material"; +import { ApiGetCall } from "../../api/ApiCall"; const StyledTimelineDot = (props) => { const { complete } = props; @@ -64,15 +79,166 @@ const CippStandardsSideBar = ({ formControl, createDialog, edit, + onSaveSuccess, + onDriftConflictChange, + isDriftMode = false, }) => { const [currentStep, setCurrentStep] = useState(0); const [savedItem, setSavedItem] = useState(null); + const [driftError, setDriftError] = useState(""); + const [aboutOpen, setAboutOpen] = useState(false); + const dialogAfterEffect = (id) => { setSavedItem(id); + + // Reset form's dirty state to prevent unsaved changes warning + if (formControl && formControl.reset) { + // Get current values and reset the form with them to clear dirty state + const currentValues = formControl.getValues(); + formControl.reset(currentValues); + } + + // Call the onSaveSuccess callback if provided + if (typeof onSaveSuccess === "function") { + onSaveSuccess(); + } }; const watchForm = useWatch({ control: formControl.control }); + // Use proper CIPP ApiGetCall for drift validation + const driftValidationApi = ApiGetCall({ + url: "/api/ListTenantAlignment", + queryKey: "ListTenantAlignment-drift-validation", + }); + + // Get tenant groups for group membership validation + const tenantGroupsApi = ApiGetCall({ + url: "/api/ListTenantGroups", + queryKey: "ListTenantGroups-drift-validation", + }); + + // Helper function to expand groups to their member tenants + const expandGroupsToTenants = (tenants, groups) => { + const expandedTenants = []; + + tenants.forEach((tenant) => { + const tenantValue = typeof tenant === "object" ? tenant.value : tenant; + const tenantType = typeof tenant === "object" ? tenant.type : null; + + if (tenantType === "Group") { + // Find the group and add all its members + const group = groups?.find((g) => g.Id === tenantValue); + if (group && group.Members) { + group.Members.forEach((member) => { + expandedTenants.push(member.defaultDomainName); + }); + } + } else { + // Regular tenant + expandedTenants.push(tenantValue); + } + }); + + return expandedTenants; + }; + + // Enhanced drift validation using CIPP patterns with group support + const validateDrift = async (tenants) => { + if (!isDriftMode || !tenants || tenants.length === 0) { + setDriftError(""); + onDriftConflictChange?.(false); + return; + } + + try { + // Wait for both APIs to load + if (!driftValidationApi.data || !tenantGroupsApi.data) { + return; + } + + // Filter out current template if editing + const existingTemplates = driftValidationApi.data.filter((template) => { + const shouldInclude = + edit && watchForm.GUID ? template.standardId !== watchForm.GUID : true; + return shouldInclude; + }); + + // Get tenant groups data + const groups = tenantGroupsApi.data?.Results || []; + + // Expand selected tenants (including group members) + const selectedTenantList = expandGroupsToTenants(tenants, groups); + + // Simple conflict check + const conflicts = []; + + // Filter for drift templates only and group by standardId + const driftTemplates = existingTemplates.filter( + (template) => template.standardType === "drift", + ); + const uniqueTemplates = {}; + + driftTemplates.forEach((template) => { + if (!uniqueTemplates[template.standardId]) { + uniqueTemplates[template.standardId] = { + standardName: template.standardName, + tenants: [], + }; + } + uniqueTemplates[template.standardId].tenants.push(template.tenantFilter); + }); + + // Check for conflicts with unique templates + for (const templateId in uniqueTemplates) { + const template = uniqueTemplates[templateId]; + const templateTenants = template.tenants; + + const hasConflict = selectedTenantList.some((selectedTenant) => { + // Check if any template tenant matches the selected tenant + const conflict = templateTenants.some((templateTenant) => { + if (selectedTenant === "AllTenants" || templateTenant === "AllTenants") { + return true; + } + const match = selectedTenant === templateTenant; + return match; + }); + return conflict; + }); + + if (hasConflict) { + conflicts.push(template.standardName || "Unknown Template"); + } + } + + if (conflicts.length > 0) { + setDriftError( + `This template has tenants that are assigned to another Drift Template. You can only assign one Drift Template to each tenant. Please check the ${conflicts.join( + ", ", + )} template.`, + ); + onDriftConflictChange?.(true); + } else { + setDriftError(""); + onDriftConflictChange?.(false); + } + } catch (error) { + setDriftError("Error checking for conflicts" + (error.message ? `: ${error.message}` : "")); + onDriftConflictChange?.(true); + } + }; + + // Watch tenant changes + useEffect(() => { + if (!isDriftMode) return; + + const timeoutId = setTimeout(() => { + validateDrift(watchForm.tenantFilter); + }, 500); + + return () => clearTimeout(timeoutId); + }, [watchForm.tenantFilter, isDriftMode, driftValidationApi.data, tenantGroupsApi.data]); + useEffect(() => { const stepsStatus = { step1: !!_.get(watchForm, "templateName"), @@ -88,7 +254,7 @@ const CippStandardsSideBar = ({ const hasRequiredComponents = standard?.addedComponent && standard.addedComponent.some( - (comp) => comp.type !== "switch" && comp.required !== false + (comp) => comp.type !== "switch" && comp.required !== false, ); const actionRequired = standard?.disabledFeatures !== undefined || hasRequiredComponents; // Always require an action value which should be an array with at least one element @@ -117,149 +283,310 @@ const CippStandardsSideBar = ({ return actionValue && (!Array.isArray(actionValue) || actionValue.length > 0); }), }; + return ( - - - - - - - - - - - {watchForm.tenantFilter?.some( - (tenant) => tenant.value === "AllTenants" || tenant.type === "Group" - ) && ( - <> - - + setAboutOpen(false)} + size="sm" + > + + {isDriftMode ? ( + + + Drift templates provide continuous monitoring of tenant configurations to detect + unauthorized changes. Each tenant can only have one drift template applied at a + time. + + + Remediation Options: + + + โ€ข Automatic Remediation: Immediately reverts unauthorized changes + back to the template configuration +
    โ€ข Manual Remediation: Sends email notifications for review, + allowing you to accept or deny detected changes +
    + + Key Features: + + + โ€ข Monitors all security standards, Conditional Access policies, and Intune policies +
    + โ€ข Detects changes made outside of CIPP +
    + โ€ข Configurable webhook and email notifications +
    โ€ข Granular control over deviation acceptance +
    +
    + ) : ( + + + Standard templates can be applied to multiple tenants and allow overlapping + configurations with intelligent merging based on specificity and timing. + + + Merge Priority (Specificity): + + + 1. Individual Tenant - Highest priority, overrides all others +
    + 2. Tenant Group - Overrides "All Tenants" settings +
    + 3. All Tenants - Lowest priority, default baseline +
    + + Conflict Resolution: + + + When multiple standards target the same scope (e.g., two tenant-specific templates), + the most recently created template takes precedence. + + + Example: An "All Tenants" template enables audit log retention for + 90 days, but you need 365 days for one specific tenant. Create a tenant-specific + template with 365-day retention - it will override the global setting for that + tenant only. + +
    + )} +
    +
    + + + setAboutOpen(true)} color="primary"> + + +
    + } + /> + + + + {/* Hidden field to mark drift templates */} + {isDriftMode && ( + - - )} - {updatedAt.date && ( - <> - + + + + + + {/* Show drift error */} + {isDriftMode && driftError && {driftError}} + + {(watchForm.tenantFilter?.some( + (tenant) => tenant.value === "AllTenants" || tenant.type === "Group", + ) || + (watchForm.excludedTenants && watchForm.excludedTenants.length > 0)) && ( + <> + + + + )} + {/* Drift-specific fields */} + {isDriftMode && ( + <> + + + + + + When enabled, all drift alert notifications (email, webhook, and PSA) will be + disabled. + + + )} + {/* Hide schedule options in drift mode */} + {!isDriftMode && ( + <> + {updatedAt.date && ( + <> + + Last Updated by {updatedAt?.user} + + + )} + + + This setting allows you to create this template and run it only by using "Run + Now". + + + )} + + + {/* Hide timeline/ticker in drift mode */} + {!isDriftMode && ( + <> + + + - Last Updated by {updatedAt?.user} - - - )} - - - This setting allows you to create this template and run it only by using "Run Now". - -
    - - - - ( + + + + {index < steps.length - 1 && } + + {step} + + ))} + + + + )} + + + {actions.map((action, index) => ( + {action.icon}
    } + label={action.label} + onClick={action.handler} + disabled={ + !(watchForm.tenantFilter && watchForm.tenantFilter.length > 0) || + currentStep < 3 || + (isDriftMode && driftError) + } + /> + ))} + + + dialogAfterEffect(data.id)} + createDialog={createDialog} + title="Add Standard" + api={{ + confirmText: isDriftMode + ? "This template will run automatically every 12 hours to detect drift. Are you sure you want to apply this Drift Template?" + : watchForm.runManually + ? "Are you sure you want to apply this standard? This template has been set to never run on a schedule. After saving the template you will have to run it manually." + : "Are you sure you want to apply this standard? This will apply the template and run every 12 hours.", + url: "/api/AddStandardsTemplate", + type: "POST", + replacementBehaviour: "removeNulls", + data: { + tenantFilter: "tenantFilter", + excludedTenants: "excludedTenants", + description: "description", + templateName: "templateName", + standards: "standards", + ...(edit ? { GUID: "GUID" } : {}), + ...(savedItem ? { GUID: savedItem } : {}), + runManually: isDriftMode ? false : "runManually", + isDriftTemplate: "isDriftTemplate", + ...(isDriftMode + ? { + type: "drift", + driftAlertWebhook: "driftAlertWebhook", + driftAlertEmail: "driftAlertEmail", + driftAlertDisableEmail: "driftAlertDisableEmail", + } + : {}), }, }} - > - {steps.map((step, index) => ( - - - - {index < steps.length - 1 && } - - {step} - - ))} - - - - - {actions.map((action, index) => ( - {action.icon}} - label={action.label} - onClick={action.handler} - disabled={ - !(watchForm.tenantFilter && watchForm.tenantFilter.length > 0) || currentStep < 3 - } - /> - ))} - - - dialogAfterEffect(data.id)} - createDialog={createDialog} - title="Add Standard" - api={{ - confirmText: watchForm.runManually - ? "Are you sure you want to apply this standard? This template has been set to never run on a schedule. After saving the template you will have to run it manually." - : "Are you sure you want to apply this standard? This will apply the template and run every 3 hours.", - url: "/api/AddStandardsTemplate", - type: "POST", - replacementBehaviour: "removeNulls", - data: { - tenantFilter: "tenantFilter", - excludedTenants: "excludedTenants", - description: "description", - templateName: "templateName", - standards: "standards", - ...(edit ? { GUID: "GUID" } : {}), - ...(savedItem ? { GUID: savedItem } : {}), - runManually: "runManually", - }, - }} - row={formControl.getValues()} - formControl={formControl} - relatedQueryKeys={[ - "listStandardTemplates", - "listStandards", - `listStandardTemplates-${watchForm.GUID}`, - ]} - /> - + row={formControl.getValues()} + formControl={formControl} + relatedQueryKeys={[ + "listStandardTemplates", + "listStandards", + `listStandardTemplates-${watchForm.GUID}`, + "ListTenantAlignment-drift-validation", + "ListTenantGroups-drift-validation", + ]} + /> + + ); }; @@ -272,10 +599,12 @@ CippStandardsSideBar.propTypes = { label: PropTypes.string.isRequired, handler: PropTypes.func.isRequired, icon: PropTypes.element.isRequired, - }) + }), ).isRequired, updatedAt: PropTypes.string, formControl: PropTypes.object.isRequired, + onSaveSuccess: PropTypes.func, + onDriftConflictChange: PropTypes.func, }; export default CippStandardsSideBar; diff --git a/src/components/CippTable/CIPPTableToptoolbar.js b/src/components/CippTable/CIPPTableToptoolbar.js index 78f0789b7e76..7c532764e666 100644 --- a/src/components/CippTable/CIPPTableToptoolbar.js +++ b/src/components/CippTable/CIPPTableToptoolbar.js @@ -1,38 +1,142 @@ -import { DeveloperMode, SevereCold, Sync, Tune, ViewColumn, MoreVert } from "@mui/icons-material"; +import React, { useState, useEffect, useRef } from "react"; import { + Box, Button, - Checkbox, - Divider, - IconButton, - ListItemText, Menu, MenuItem, - SvgIcon, + ListItemText, + ListItemIcon, + Divider, + IconButton, Tooltip, Typography, + InputBase, + Paper, + Checkbox, + SvgIcon, + Dialog, + DialogTitle, + DialogContent, + DialogActions, } from "@mui/material"; -import { Box, Stack } from "@mui/system"; import { - MRT_GlobalFilterTextField, - MRT_ToggleFiltersButton, - MRT_ToggleFullScreenButton, -} from "material-react-table"; -import { PDFExportButton } from "../pdfExportButton"; -import { ChevronDownIcon, ExclamationCircleIcon } from "@heroicons/react/24/outline"; + Search as SearchIcon, + FilterList as FilterListIcon, + ViewColumn as ViewColumnIcon, + FileDownload as ExportIcon, + KeyboardArrowDown as ArrowDownIcon, + Code as CodeIcon, + PictureAsPdf as PdfIcon, + TableChart as CsvIcon, + SevereCold, + Sync, + Check as CheckIcon, + MoreVert as MoreVertIcon, + Fullscreen as FullscreenIcon, +} from "@mui/icons-material"; +import { ExclamationCircleIcon, ChevronDownIcon } from "@heroicons/react/24/outline"; +import { styled, alpha } from "@mui/material/styles"; +import { PDFExportButton, exportRowsToPdf } from "../pdfExportButton"; +import { CSVExportButton, exportRowsToCsv } from "../csvExportButton"; +import { getCippTranslation } from "../../utils/get-cipp-translation"; +import { useMediaQuery } from "@mui/material"; +import { CippQueueTracker } from "./CippQueueTracker"; import { usePopover } from "../../hooks/use-popover"; -import { CSVExportButton } from "../csvExportButton"; import { useDialog } from "../../hooks/use-dialog"; -import { useEffect, useState } from "react"; import { CippApiDialog } from "../CippComponents/CippApiDialog"; -import { getCippTranslation } from "../../utils/get-cipp-translation"; import { useSettings } from "../../hooks/use-settings"; import { useRouter } from "next/router"; import { CippOffCanvas } from "../CippComponents/CippOffCanvas"; import { CippCodeBlock } from "../CippComponents/CippCodeBlock"; import { ApiGetCall } from "../../api/ApiCall"; -import GraphExplorerPresets from "/src/data/GraphExplorerPresets.json"; +import GraphExplorerPresets from "../../data/GraphExplorerPresets.json"; import CippGraphExplorerFilter from "./CippGraphExplorerFilter"; -import { useMediaQuery } from "@mui/material"; +import { Stack } from "@mui/system"; + +// Styled components for modern design +const ModernSearchContainer = styled(Paper)(({ theme }) => ({ + display: "flex", + alignItems: "center", + width: "100%", + maxWidth: "300px", + minWidth: "200px", + height: "40px", + backgroundColor: theme.palette.mode === "dark" ? "#2A2D3A" : "#F8F9FA", + border: `1px solid ${theme.palette.mode === "dark" ? "#404040" : "#E0E0E0"}`, + borderRadius: "8px", + padding: "0 12px", + "&:hover": { + borderColor: theme.palette.primary.main, + }, + "&:focus-within": { + borderColor: theme.palette.primary.main, + boxShadow: `0 0 0 2px ${alpha(theme.palette.primary.main, 0.2)}`, + }, + [theme.breakpoints.down("md")]: { + minWidth: "0", + maxWidth: "none", + flex: 1, + }, +})); + +const ModernSearchInput = styled(InputBase)(({ theme }) => ({ + marginLeft: theme.spacing(1), + flex: 1, + fontSize: "14px", + "& .MuiInputBase-input": { + padding: "8px 0", + "&::placeholder": { + color: theme.palette.text.secondary, + opacity: 0.7, + }, + }, +})); + +const ModernButton = styled(Button)(({ theme }) => ({ + height: "40px", + borderRadius: "8px", + textTransform: "none", + fontWeight: 500, + fontSize: "14px", + padding: "8px 16px", + backgroundColor: theme.palette.mode === "dark" ? "#2A2D3A" : "#F8F9FA", + border: `1px solid ${theme.palette.mode === "dark" ? "#404040" : "#E0E0E0"}`, + color: theme.palette.text.primary, + minWidth: "auto", + whiteSpace: "nowrap", + "&:hover": { + backgroundColor: theme.palette.mode === "dark" ? "#363A4A" : "#F0F0F0", + borderColor: theme.palette.primary.main, + }, + "& .MuiButton-startIcon": { + marginRight: "8px", + }, + "& .MuiButton-endIcon": { + marginLeft: "8px", + }, + [theme.breakpoints.down("md")]: { + padding: "8px 12px", + fontSize: "13px", + "& .MuiButton-startIcon": { + marginRight: "6px", + }, + "& .MuiButton-endIcon": { + marginLeft: "6px", + }, + }, + [theme.breakpoints.down("sm")]: { + padding: "8px 10px", + fontSize: "12px", + "& .MuiButton-startIcon": { + marginRight: "4px", + }, + "& .MuiButton-endIcon": { + marginLeft: "4px", + }, + }, +})); + +const RefreshButton = styled(IconButton)(({ theme }) => ({})); export const CIPPTableToptoolbar = ({ api, @@ -53,10 +157,16 @@ export const CIPPTableToptoolbar = ({ data, setGraphFilterData, setConfiguredSimpleColumns, + queueMetadata, + isInDialog = false, + showBulkExportAction = true, }) => { const popover = usePopover(); - const columnPopover = usePopover(); - const filterPopover = usePopover(); + const [filtersAnchor, setFiltersAnchor] = useState(null); + const [columnsAnchor, setColumnsAnchor] = useState(null); + const [exportAnchor, setExportAnchor] = useState(null); + const [actionMenuAnchor, setActionMenuAnchor] = useState(null); + const [searchValue, setSearchValue] = useState(""); const mdDown = useMediaQuery((theme) => theme.breakpoints.down("md")); const settings = useSettings(); @@ -64,30 +174,91 @@ export const CIPPTableToptoolbar = ({ const createDialog = useDialog(); const [actionData, setActionData] = useState({ data: {}, action: {}, ready: false }); const [offcanvasVisible, setOffcanvasVisible] = useState(false); + const [jsonDialogOpen, setJsonDialogOpen] = useState(false); // For dialog-based JSON view const [filterList, setFilterList] = useState(filters); + const [currentEffectiveQueryKey, setCurrentEffectiveQueryKey] = useState(queryKey || title); const [originalSimpleColumns, setOriginalSimpleColumns] = useState(simpleColumns); const [filterCanvasVisible, setFilterCanvasVisible] = useState(false); + const [activeFilterName, setActiveFilterName] = useState(null); const pageName = router.pathname.split("/").slice(1).join("/"); - const currentTenant = useSettings()?.currentTenant; + const currentTenant = settings?.currentTenant; + const [useCompactMode, setUseCompactMode] = useState(false); + const toolbarRef = useRef(null); + const leftContainerRef = useRef(null); + const actionsContainerRef = useRef(null); - const [actionMenuAnchor, setActionMenuAnchor] = useState(null); - const handleActionMenuOpen = (event) => setActionMenuAnchor(event.currentTarget); - const handleActionMenuClose = () => setActionMenuAnchor(null); + const getBulkActions = (actions, selectedRows) => { + return ( + actions + ?.filter((action) => !action.link && !action?.hideBulk) + ?.map((action) => ({ + ...action, + disabled: action.condition + ? !selectedRows.every((row) => action.condition(row.original)) + : false, + })) || [] + ); + }; + + const selectedRows = table.getSelectedRowModel().rows; + const hasSelection = table.getIsSomeRowsSelected() || table.getIsAllRowsSelected(); + // Built-in export actions should only appear when the page opts in and rows are selected. + const builtInBulkExportAvailable = + showBulkExportAction && exportEnabled && selectedRows.length > 0; + const customBulkActions = getBulkActions(actions, selectedRows); + const showBulkActionsButton = hasSelection && customBulkActions.length > 0; + + const handleExportSelectedToCsv = () => { + if (!selectedRows.length) { + return; + } + exportRowsToCsv({ + rows: selectedRows, + columns: usedColumns, + reportName: `${title}`, + columnVisibility, + }); + }; - const getBulkActions = (actions) => { - return actions?.filter((action) => !action.link && !action?.hideBulk) || []; + const handleExportSelectedToPdf = () => { + if (!selectedRows.length) { + return; + } + exportRowsToPdf({ + rows: selectedRows, + columns: usedColumns, + reportName: `${title}`, + columnVisibility, + brandingSettings: settings?.customBranding, + }); }; + // Track if we've restored filters for this page to prevent infinite loops + const restoredFiltersRef = useRef(new Set()); + useEffect(() => { //if usedData changes, deselect all rows table.toggleAllRowsSelected(false); }, [usedData]); + + // Sync currentEffectiveQueryKey with queryKey prop changes (e.g., tenant changes) + useEffect(() => { + setCurrentEffectiveQueryKey(queryKey || title); + // Clear active filter name when query key changes (page load, tenant change, etc.) + setActiveFilterName(null); + }, [queryKey, title]); + //if the currentTenant Switches, remove Graph filters useEffect(() => { if (currentTenant) { setGraphFilterData({}); + // Clear active filter name when tenant changes + setActiveFilterName(null); + // Clear restoration tracking so saved filters can be re-applied + const restorationKey = `${pageName}-graph`; + restoredFiltersRef.current.delete(restorationKey); } - }, [currentTenant]); + }, [currentTenant, pageName]); //useEffect to set the column visibility to the preferred columns if they exist useEffect(() => { @@ -103,15 +274,170 @@ export const CIPPTableToptoolbar = ({ setOriginalSimpleColumns(simpleColumns); }, [simpleColumns]); + // Early restoration of graph filters (before API call) - run only once per page + useEffect(() => { + const restorationKey = `${pageName}-graph`; + + if ( + settings.persistFilters && + settings.lastUsedFilters && + settings.lastUsedFilters[pageName] && + api?.url === "/api/ListGraphRequest" && // Only for graph requests + !restoredFiltersRef.current.has(restorationKey) // Only if not already restored + ) { + const last = settings.lastUsedFilters[pageName]; + if (last.type === "graph") { + // Mark as restored to prevent infinite loops + restoredFiltersRef.current.add(restorationKey); + + // Directly set the graph filter data without calling setTableFilter to avoid loops + const filterProps = [ + "$filter", + "$select", + "$expand", + "$orderby", + "$count", + "$search", + "ReverseTenantLookup", + "ReverseTenantLookupProperty", + "AsApp", + ]; + const graphFilter = filterProps.reduce((acc, prop) => { + if (last.value[prop]) { + acc[prop] = last.value[prop]; + } + return acc; + }, {}); + + const newQueryKey = `${queryKey ? queryKey : title}-${last.name}`; + setGraphFilterData({ + data: { ...mergeCaseInsensitive(api.data, graphFilter) }, + queryKey: newQueryKey, + }); + setCurrentEffectiveQueryKey(newQueryKey); + setActiveFilterName(last.name); + + if (last.value?.$select) { + let selectColumns = []; + if (Array.isArray(last.value.$select)) { + selectColumns = last.value.$select; + } else if (typeof last.value.$select === "string") { + selectColumns = last.value.$select + .split(",") + .map((col) => col.trim()) + .filter((col) => usedColumns.includes(col)); + } + if (selectColumns.length > 0) { + setConfiguredSimpleColumns(selectColumns); + } + } + } + } + }, [settings.persistFilters, settings.lastUsedFilters, pageName, api?.url, queryKey, title]); + + // Clear restoration tracking when page changes + useEffect(() => { + restoredFiltersRef.current.clear(); + }, [pageName]); + + // Detect overflow and switch to compact mode + useEffect(() => { + const checkOverflow = () => { + if (!leftContainerRef.current || !actionsContainerRef.current) { + return; + } + + const leftContainerWidth = leftContainerRef.current.offsetWidth; + const leftContainerScrollWidth = leftContainerRef.current.scrollWidth; + const actionsWidth = actionsContainerRef.current.scrollWidth; + const isOverflowing = leftContainerScrollWidth > leftContainerWidth; + const shouldBeCompact = isOverflowing || actionsWidth > leftContainerWidth * 0.6; // Actions taking > 60% of left container + + setUseCompactMode(shouldBeCompact); + }; + + // Check immediately on mount and when dependencies change + checkOverflow(); + + // Also check after a brief delay to ensure elements are fully rendered + const timeoutId = setTimeout(checkOverflow, 100); + + const resizeObserver = new ResizeObserver(checkOverflow); + if (leftContainerRef.current) { + resizeObserver.observe(leftContainerRef.current); + } + + return () => { + clearTimeout(timeoutId); + resizeObserver.disconnect(); + }; + }, [hasSelection, customBulkActions.length, exportEnabled, filters?.length, usedColumns?.length]); + + // Restore last used filter on mount if persistFilters is enabled (non-graph filters) + useEffect(() => { + // Wait for table to be initialized and data to be available + if ( + settings.persistFilters && + settings.lastUsedFilters && + settings.lastUsedFilters[pageName] && + table && + usedColumns.length > 0 && + !getRequestData?.isFetching + ) { + // Use setTimeout to ensure the table is fully rendered + const timeoutId = setTimeout(() => { + const last = settings.lastUsedFilters[pageName]; + + if (last.type === "global") { + table.setGlobalFilter(last.value); + setActiveFilterName(last.name); + } else if (last.type === "column") { + // Only apply if all filter columns exist in the current table + const allColumns = table.getAllColumns().map((col) => col.id); + const filterColumns = Array.isArray(last.value) ? last.value.map((f) => f.id) : []; + const allExist = filterColumns.every((colId) => allColumns.includes(colId)); + if (allExist) { + table.setShowColumnFilters(true); + table.setColumnFilters(last.value); + setActiveFilterName(last.name); + } + } + // Note: graph filters are handled in the earlier useEffect + }, 100); + + return () => clearTimeout(timeoutId); + } + }, [ + settings.persistFilters, + settings.lastUsedFilters, + pageName, + table, + usedColumns, + getRequestData?.isFetching, + ]); + const presetList = ApiGetCall({ url: "/api/ListGraphExplorerPresets", queryKey: `ListGraphExplorerPresets${api?.data?.Endpoint ?? ""}`, data: { Endpoint: api?.data?.Endpoint ?? "", }, - waiting: api?.data?.Endpoint ? true : false, + waiting: !!api?.data?.Endpoint, }); + // Handle search input changes + const handleSearchChange = (event) => { + const value = event.target.value; + setSearchValue(value); + table.setGlobalFilter(value); + }; + + // Handle column filters toggle + const handleColumnFiltersToggle = () => { + const currentState = table.getState().showColumnFilters; + table.setShowColumnFilters(!currentState); + }; + const resetToDefaultVisibility = () => { setColumnVisibility((prevVisibility) => { const updatedVisibility = {}; @@ -128,7 +454,7 @@ export const CIPPTableToptoolbar = ({ [pageName]: {}, }, }); - columnPopover.handleClose(); + setColumnsAnchor(null); }; const resetToPreferedVisibility = () => { @@ -148,7 +474,7 @@ export const CIPPTableToptoolbar = ({ return updatedVisibility; }); } - columnPopover.handleClose(); + setColumnsAnchor(null); }; const saveAsPreferedColumns = () => { @@ -158,7 +484,7 @@ export const CIPPTableToptoolbar = ({ [pageName]: columnVisibility, }, }); - columnPopover.handleClose(); + setColumnsAnchor(null); }; const mergeCaseInsensitive = (obj1, obj2) => { @@ -175,13 +501,37 @@ export const CIPPTableToptoolbar = ({ return merged; }; + // Shared function for setting nested column visibility + const setNestedVisibility = (col) => { + if (typeof col === "object" && col !== null) { + Object.keys(col).forEach((key) => { + if (usedColumns.includes(key.trim())) { + setColumnVisibility((prev) => ({ ...prev, [key.trim()]: true })); + setNestedVisibility(col[key]); + } + }); + } else { + if (usedColumns.includes(col.trim())) { + setColumnVisibility((prev) => ({ ...prev, [col.trim()]: true })); + } + } + }; + const setTableFilter = (filter, filterType, filterName) => { if (filterType === "global" || filterType === undefined) { table.setGlobalFilter(filter); + setActiveFilterName(filterName); + if (settings.persistFilters && settings.setLastUsedFilter) { + settings.setLastUsedFilter(pageName, { type: "global", value: filter, name: filterName }); + } } if (filterType === "column") { table.setShowColumnFilters(true); table.setColumnFilters(filter); + setActiveFilterName(filterName); + if (settings.persistFilters && settings.setLastUsedFilter) { + settings.setLastUsedFilter(pageName, { type: "column", value: filter, name: filterName }); + } } if (filterType === "reset") { table.resetGlobalFilter(); @@ -190,6 +540,11 @@ export const CIPPTableToptoolbar = ({ setGraphFilterData({}); resetToDefaultVisibility(); } + setCurrentEffectiveQueryKey(queryKey || title); // Reset to original query key + setActiveFilterName(null); // Clear active filter + if (settings.persistFilters && settings.setLastUsedFilter) { + settings.setLastUsedFilter(pageName, { type: "reset", value: null, name: null }); + } } if (filterType === "graph") { const filterProps = [ @@ -212,31 +567,23 @@ export const CIPPTableToptoolbar = ({ table.resetGlobalFilter(); table.resetColumnFilters(); //get api.data, merge with graphFilter, set api.data + const newQueryKey = `${queryKey ? queryKey : title}-${filterName}`; setGraphFilterData({ data: { ...mergeCaseInsensitive(api.data, graphFilter) }, - queryKey: `${queryKey ? queryKey : title}-${filterName}`, + queryKey: newQueryKey, }); + setCurrentEffectiveQueryKey(newQueryKey); + setActiveFilterName(filterName); // Track active graph filter + if (settings.persistFilters && settings.setLastUsedFilter) { + settings.setLastUsedFilter(pageName, { type: "graph", value: filter, name: filterName }); + } if (filter?.$select) { let selectedColumns = []; if (Array.isArray(filter?.$select)) { selectedColumns = filter?.$select; - } else { - selectedColumns = filter?.$select.split(","); + } else if (typeof filter?.$select === "string") { + selectedColumns = filter.$select.split(","); } - const setNestedVisibility = (col) => { - if (typeof col === "object" && col !== null) { - Object.keys(col).forEach((key) => { - if (usedColumns.includes(key.trim())) { - setColumnVisibility((prev) => ({ ...prev, [key.trim()]: true })); - setNestedVisibility(col[key]); - } - }); - } else { - if (usedColumns.includes(col.trim())) { - setColumnVisibility((prev) => ({ ...prev, [col.trim()]: true })); - } - } - }; if (selectedColumns.length > 0) { setConfiguredSimpleColumns(selectedColumns); selectedColumns.forEach((col) => { @@ -255,6 +602,7 @@ export const CIPPTableToptoolbar = ({ var presetEndpoint = preset?.params?.endpoint?.replace(/^\//, ""); if (presetEndpoint === endpoint) { graphPresetList.push({ + id: preset?.id, filterName: preset?.name, value: preset?.params, type: "graph", @@ -266,6 +614,7 @@ export const CIPPTableToptoolbar = ({ var customPresetEndpoint = preset?.params?.endpoint?.replace(/^\//, ""); if (customPresetEndpoint === endpoint) { graphPresetList.push({ + id: preset?.id, filterName: preset?.name, value: preset?.params, type: "graph", @@ -281,327 +630,722 @@ export const CIPPTableToptoolbar = ({ return ( <> ({ + ref={toolbarRef} + sx={{ display: "flex", - gap: "0.5rem", - p: "8px", + flexDirection: { xs: "column", md: "row" }, + gap: { xs: 1, md: 2 }, + px: 0.5, + pb: 2, justifyContent: "space-between", - })} + alignItems: { xs: "stretch", md: "center" }, + backgroundColor: "background.paper", + }} > + {/* Left side - Main controls */} - <> - + { + if (typeof refreshFunction === "object") { + refreshFunction.refetch(); + } else if (typeof refreshFunction === "function") { + refreshFunction(); + } else if (data && !getRequestData.isFetched) { + // do nothing because data was sent native. + } else if (getRequestData) { + getRequestData.refetch(); + } + }} + disabled={ + getRequestData?.isLoading || + getRequestData?.isFetching || + refreshFunction?.isFetching } > -
    { - if (typeof refreshFunction === "object") { - refreshFunction.refetch(); - } else if (typeof refreshFunction === "function") { - refreshFunction(); - } else if (data && !getRequestData.isFetched) { - //do nothing because data was sent native. - } else if (getRequestData) { - getRequestData.refetch(); - } + - - - {getRequestData?.isFetchNextPageError ? ( - - ) : ( - - )} - - -
    -
    - - - - - - - - - + ) : ( + + )} + + + + + {/* Search Input */} + + + + + + {/* Desktop Buttons - always render for measurement, hide when in compact mode */} + {!mdDown && ( + - setTableFilter("", "reset", "")}> - - - {api?.url === "/api/ListGraphRequest" && ( + {/* Filters Button */} + } + endIcon={} + onClick={(event) => setFiltersAnchor(event.currentTarget)} + sx={{ + color: activeFilterName ? "primary.main" : "text.primary", + borderColor: activeFilterName ? "primary.main" : undefined, + }} + > + Filters + + setFiltersAnchor(null)} + PaperProps={{ + sx: { + mt: 1, + borderRadius: 2, + minWidth: 200, + }, + }} + > { - filterPopover.handleClose(); - setFilterCanvasVisible(true); + handleColumnFiltersToggle(); + setFiltersAnchor(null); }} > - + + {table.getState().showColumnFilters + ? "Hide Column Filters" + : "Show Column Filters"} + + + + setTableFilter("", "reset", "")}> + + + {api?.url === "/api/ListGraphRequest" && ( + { + setFiltersAnchor(null); + setFilterCanvasVisible(true); + }} + > + + + )} + {filterList?.length > 0 && } + {filterList?.map((filter) => ( + { + setFiltersAnchor(null); + setTableFilter(filter.value, filter.type, filter.filterName); + }} + > + + {activeFilterName === filter.filterName && ( + + )} + {filter.filterName} + + } + /> + + ))} + + + {/* Columns Button */} + } + endIcon={} + onClick={(event) => setColumnsAnchor(event.currentTarget)} + > + Columns + + setColumnsAnchor(null)} + PaperProps={{ + sx: { + mt: 1, + borderRadius: 2, + minWidth: 250, + maxHeight: 400, + }, + }} + > + + + + + + + + + + {table + .getAllColumns() + .filter((column) => !column.id.startsWith("mrt-")) + .map((column) => ( + + setColumnVisibility({ + ...columnVisibility, + [column.id]: !column.getIsVisible(), + }) + } + > + + + + ))} + + + {/* Export Button */} + {exportEnabled && ( + } + endIcon={} + onClick={(event) => setExportAnchor(event.currentTarget)} + > + Export + )} - - {filterList?.map((filter) => ( + + )} + + {/* Mobile/Compact Action Button */} + {(mdDown || useCompactMode) && !hasSelection && ( + setActionMenuAnchor(event.currentTarget)} + sx={{ flexShrink: 0 }} + > + + + )} + + {/* Mobile Action Menu */} + setActionMenuAnchor(null)} + PaperProps={{ + sx: { + mt: 1, + borderRadius: 2, + minWidth: 180, + }, + }} + > + { + setFiltersAnchor(event.currentTarget); + setActionMenuAnchor(null); + }} + > + + + + Filters + + { + setColumnsAnchor(event.currentTarget); + setActionMenuAnchor(null); + }} + > + + + + Columns + + {exportEnabled && ( + { + setExportAnchor(event.currentTarget); + setActionMenuAnchor(null); + }} + > + + + + Export + + )} + { + table.setIsFullScreen(!table.getState().isFullScreen); + setActionMenuAnchor(null); + }} + > + + + + + {table.getState().isFullScreen ? "Exit Fullscreen" : "Fullscreen"} + + + + + {/* Filters Menu */} + setFiltersAnchor(null)} + PaperProps={{ + sx: { + mt: 1, + borderRadius: 2, + minWidth: 200, + }, + }} + > + { + handleColumnFiltersToggle(); + setFiltersAnchor(null); + }} + > + + {table.getState().showColumnFilters ? "Hide Column Filters" : "Show Column Filters"} + + + + setTableFilter("", "reset", "")}> + + + {api?.url === "/api/ListGraphRequest" && ( + { + setFiltersAnchor(null); + setFilterCanvasVisible(true); + }} + > + + + )} + {filterList?.length > 0 && } + {filterList?.map((filter) => ( + { + setFiltersAnchor(null); + setTableFilter(filter.value, filter.type, filter.filterName); + }} + > + + {activeFilterName === filter.filterName && ( + + )} + {filter.filterName} + + } + /> + + ))} + + + {/* Columns Menu */} + setColumnsAnchor(null)} + PaperProps={{ + sx: { + mt: 1, + borderRadius: 2, + minWidth: 250, + maxHeight: 400, + }, + }} + > + + + + + + + + + + + {table + .getAllColumns() + .filter((column) => !column.id.startsWith("mrt-")) + .map((column) => ( { - filterPopover.handleClose(); - setTableFilter(filter.value, filter.type, filter.filterName); - }} + key={column.id} + onClick={() => + setColumnVisibility({ + ...columnVisibility, + [column.id]: !column.getIsVisible(), + }) + } > - + + ))} - - - - - - - + + + {/* Export Menu */} + {exportEnabled && ( setExportAnchor(null)} + PaperProps={{ + sx: { + mt: 1, + borderRadius: 2, + minWidth: 180, + }, + }} > - - - - - + { + // Trigger CSV export + const csvButton = document.querySelector(`[data-csv-export="${title}"]`); + if (csvButton) csvButton.click(); + setExportAnchor(null); + }} + > + + + + - - + { + // Trigger PDF export + const pdfButton = document.querySelector(`[data-pdf-export="${title}"]`); + if (pdfButton) pdfButton.click(); + setExportAnchor(null); + }} + > + + + + - {table - .getAllColumns() - .filter((column) => !column.id.startsWith("mrt-")) - .map((column) => ( + {builtInBulkExportAvailable && ( + <> + + { + handleExportSelectedToCsv(); + setExportAnchor(null); + }} + > + + + + + - setColumnVisibility({ - ...columnVisibility, - [column.id]: !column.getIsVisible(), - }) - } + onClick={() => { + handleExportSelectedToPdf(); + setExportAnchor(null); + }} > - - + + + + - ))} - - - <> - {exportEnabled && ( - <> - - )} - - setOffcanvasVisible(true)}> - - - - {mdDown && } - - { - //add a little icon with how many rows are selected - (table.getIsAllRowsSelected() || table.getIsSomeRowsSelected()) && ( - - {table.getSelectedRowModel().rows.length} rows selected - - ) - } - { - setOffcanvasVisible(false); + + { + if (isInDialog) { + setJsonDialogOpen(true); + } else { + setOffcanvasVisible(true); + } + setExportAnchor(null); + }} + > + + + + + + + )} +
    + + {/* Right side - Additional controls */} + + {/* Selected rows indicator */} + {(table.getIsAllRowsSelected() || table.getIsSomeRowsSelected()) && ( + - - API Response - - - - - - - - {getRequestData?.data?.pages?.[0].Metadata?.ColdStart === true && ( - - - - )} - {actions && getBulkActions(actions).length > 0 && (table.getIsSomeRowsSelected() || table.getIsAllRowsSelected()) && ( - <> - - - {getBulkActions(actions).map((action, index) => ( - { - setActionData({ - data: table.getSelectedRowModel().rows.map((row) => row.original), - action: action, - ready: true, - }); - - if (action?.noConfirm && action.customFunction) { - table - .getSelectedRowModel() - .rows.map((row) => - action.customFunction(row.original.original, action, {}) - ); - } else { - createDialog.handleOpen(); - popover.handleClose(); - } - }} - > - - {action.icon} - - {action.label} - - ))} - - - )} - + {table.getSelectedRowModel().rows.length} rows selected + + )} + + {/* Bulk Actions - inline with toolbar */} + {showBulkActionsButton && ( + + )} + + {/* Cold start indicator */} + {getRequestData?.data?.pages?.[0].Metadata?.ColdStart === true && ( + + + + )} + + {/* Queue tracker */} + -
    - - {actionData.ready && ( - + + {/* Bulk Actions Menu - now inline with toolbar */} + + {actions && + customBulkActions.map((action, index) => ( + { + if (action.disabled) { + return; + } + + const selectedRows = table.getSelectedRowModel().rows; + const selectedData = selectedRows.map((row) => row.original); + + if (typeof action.customBulkHandler === "function") { + action.customBulkHandler({ + rows: selectedRows, + data: selectedData, + closeMenu: popover.handleClose, + clearSelection: () => table.toggleAllRowsSelected(false), + }); + popover.handleClose(); + return; + } + + setActionData({ + data: selectedData, + action: action, + ready: true, + }); + + if (action?.noConfirm && action.customFunction) { + selectedRows.map((row) => + action.customFunction(row.original.original, action, {}), + ); + } else { + createDialog.handleOpen(); + popover.handleClose(); + } + }} + > + + {action.icon} + + {action.label} + + ))} + + + {/* API Response Off-Canvas - only show when not in dialog mode */} + {!isInDialog && ( + { + setOffcanvasVisible(false); + }} + > + + + + + )} + + {/* Action Dialog */} + {actionData.ready && ( + + )} + + {/* Graph Filter Off-Canvas */} setFilterCanvasVisible(!filterCanvasVisible)} + contentPadding={1} + keepMounted={true} > f.filterName === activeFilterName) : null + } + onPresetSelect={(preset) => { + if (preset?.value && preset?.type === "graph") { + setTableFilter(preset.value, preset.type, preset.filterName); + } + }} onSubmitFilter={(filter) => { setTableFilter(filter, "graph", "Custom Filter"); if (filter?.$select) { let selectedColumns = []; if (Array.isArray(filter?.$select)) { selectedColumns = filter?.$select; - } else { - selectedColumns = filter?.$select.split(","); + } else if (typeof filter?.$select === "string") { + selectedColumns = filter.$select.split(","); } - const setNestedVisibility = (col) => { - if (typeof col === "object" && col !== null) { - Object.keys(col).forEach((key) => { - if (usedColumns.includes(key.trim())) { - setColumnVisibility((prev) => ({ ...prev, [key.trim()]: true })); - setNestedVisibility(col[key]); - } - }); - } else { - if (usedColumns.includes(col.trim())) { - setColumnVisibility((prev) => ({ ...prev, [col.trim()]: true })); - } - } - }; if (selectedColumns.length > 0) { setConfiguredSimpleColumns(selectedColumns); selectedColumns.forEach((col) => { @@ -616,6 +1360,30 @@ export const CIPPTableToptoolbar = ({ component="card" /> + + {/* JSON Dialog for when in dialog mode */} + {isInDialog && ( + setJsonDialogOpen(false)} + sx={{ zIndex: (theme) => theme.zIndex.modal + 1 }} + > + API Response + + + + + + + + )} ); }; diff --git a/src/components/CippTable/CippDataTable.js b/src/components/CippTable/CippDataTable.js index 033078978263..759b9e5ee353 100644 --- a/src/components/CippTable/CippDataTable.js +++ b/src/components/CippTable/CippDataTable.js @@ -12,10 +12,10 @@ import { import { ResourceUnavailable } from "../resource-unavailable"; import { ResourceError } from "../resource-error"; import { Scrollbar } from "../scrollbar"; -import React, { useEffect, useMemo, useState } from "react"; +import { useEffect, useMemo, useState, useRef } from "react"; import { ApiGetCallWithPagination } from "../../api/ApiCall"; import { utilTableMode } from "./util-tablemode"; -import { utilColumnsFromAPI } from "./util-columnsFromAPI"; +import { utilColumnsFromAPI, resolveSimpleColumnVariables } from "./util-columnsFromAPI"; import { CIPPTableToptoolbar } from "./CIPPTableToptoolbar"; import { Info, More, MoreHoriz } from "@mui/icons-material"; import { CippOffCanvas } from "../CippComponents/CippOffCanvas"; @@ -25,6 +25,56 @@ import { getCippError } from "../../utils/get-cipp-error"; import { Box } from "@mui/system"; import { useSettings } from "../../hooks/use-settings"; import { isEqual } from "lodash"; // Import lodash for deep comparison +import { useLicenseBackfill } from "../../hooks/use-license-backfill"; + +// Resolve dot-delimited property paths against arbitrary data objects. +const getNestedValue = (source, path) => { + if (!source) { + return undefined; + } + if (!path) { + return source; + } + + return path.split(".").reduce((acc, key) => { + if (acc === undefined || acc === null) { + return undefined; + } + if (typeof acc !== "object") { + return undefined; + } + return acc[key]; + }, source); +}; + +// Resolve dot-delimited column ids against the original row data so nested fields can sort/filter properly. +const getRowValueByColumnId = (row, columnId) => { + if (!row?.original || !columnId) { + return undefined; + } + + if (columnId.includes("@odata")) { + return row.original[columnId]; + } + + return getNestedValue(row.original, columnId); +}; + +const compareNullable = (aVal, bVal) => { + if (aVal === null && bVal === null) { + return 0; + } + if (aVal === null) { + return 1; + } + if (bVal === null) { + return -1; + } + if (aVal === bVal) { + return 0; + } + return aVal > bVal ? 1 : -1; +}; export const CippDataTable = (props) => { const { @@ -48,6 +98,7 @@ export const CippDataTable = (props) => { simple = false, cardButton, offCanvas = false, + offCanvasOnRowClick = false, noCard = false, hideTitle = false, refreshFunction, @@ -56,13 +107,39 @@ export const CippDataTable = (props) => { filters, maxHeightOffset = "380px", defaultSorting = [], + isInDialog = false, + showBulkExportAction = true, } = props; + + // Create a map of column IDs to their filterType for quick lookup + const filterTypeMap = useMemo(() => { + if (!filters || !Array.isArray(filters)) return {}; + return filters.reduce((acc, filter) => { + if (filter.value && Array.isArray(filter.value)) { + filter.value.forEach((v) => { + if (v.id && filter.filterType) { + acc[v.id] = filter.filterType; + } + }); + } + return acc; + }, {}); + }, [filters]); + + // Track if initial filters have been applied + const filtersInitializedRef = useRef(false); + const previousFiltersRef = useRef(null); + const [columnVisibility, setColumnVisibility] = useState(initialColumnVisibility); const [configuredSimpleColumns, setConfiguredSimpleColumns] = useState(simpleColumns); const [usedData, setUsedData] = useState(data); const [usedColumns, setUsedColumns] = useState([]); const [offcanvasVisible, setOffcanvasVisible] = useState(false); const [offCanvasData, setOffCanvasData] = useState({}); + const [offCanvasRowIndex, setOffCanvasRowIndex] = useState(0); + const [filteredRows, setFilteredRows] = useState([]); + const [customComponentData, setCustomComponentData] = useState({}); + const [customComponentVisible, setCustomComponentVisible] = useState(false); const [actionData, setActionData] = useState({ data: {}, action: {}, ready: false }); const [graphFilterData, setGraphFilterData] = useState({}); const [sorting, setSorting] = useState([]); @@ -70,6 +147,9 @@ export const CippDataTable = (props) => { const waitingBool = api?.url ? true : false; const settings = useSettings(); + + // Hook to trigger re-render when license backfill completes + const { updateTrigger } = useLicenseBackfill(); const getRequestData = ApiGetCallWithPagination({ url: api.url, @@ -80,8 +160,30 @@ export const CippDataTable = (props) => { }); useEffect(() => { - if (filters && Array.isArray(filters) && filters.length > 0) { - setColumnFilters(filters); + // Only set initial filters if they haven't been set yet OR if the filters prop has actually changed + const filtersChanged = !isEqual(filters, previousFiltersRef.current); + + if ( + filters && + Array.isArray(filters) && + filters.length > 0 && + (!filtersInitializedRef.current || filtersChanged) + ) { + // Process filters to add filterFn based on filterType + const processedFilters = filters.map((filter) => { + if (filter.filterType === "equal") { + // Use exact match for equal filterType + return { + ...filter, + value: Array.isArray(filter.value) ? filter.value : [filter.value], + }; + } + // Default to substring matching (backwards compatible) + return filter; + }); + setColumnFilters(processedFilters); + filtersInitializedRef.current = true; + previousFiltersRef.current = filters; } }, [filters]); @@ -106,22 +208,6 @@ export const CippDataTable = (props) => { useEffect(() => { if (getRequestData.isSuccess) { const allPages = getRequestData.data.pages; - const getNestedValue = (obj, path) => { - if (!path) { - return obj; - } - - const keys = path.split("."); - let result = obj; - for (const key of keys) { - if (result && typeof result === "object" && key in result) { - result = result[key]; - } else { - return undefined; - } - } - return result; - }; const combinedResults = allPages.flatMap((page) => { const nestedData = getNestedValue(page, api.dataKey); @@ -147,32 +233,72 @@ export const CippDataTable = (props) => { return; } const apiColumns = utilColumnsFromAPI(usedData); + + // Apply custom filterFn to columns that have filterType === 'equal' + const enhancedApiColumns = apiColumns.map((col) => { + if (filterTypeMap[col.id] === "equal") { + return { + ...col, + filterFn: "equals", + }; + } + return col; + }); + let finalColumns = []; let newVisibility = { ...columnVisibility }; + // Check if we're in AllTenants mode and data has Tenant property + const isAllTenants = settings?.currentTenant === "AllTenants"; + const hasTenantProperty = usedData.some( + (row) => row && typeof row === "object" && "Tenant" in row, + ); + const shouldShowTenant = isAllTenants && hasTenantProperty; + if (columns.length === 0 && configuredSimpleColumns.length === 0) { - finalColumns = apiColumns; - apiColumns.forEach((col) => { + finalColumns = enhancedApiColumns; + enhancedApiColumns.forEach((col) => { newVisibility[col.id] = true; }); } else if (configuredSimpleColumns.length > 0) { - finalColumns = apiColumns.map((col) => { - newVisibility[col.id] = configuredSimpleColumns.includes(col.id); - return col; + // Resolve any variables in the simple columns before checking visibility + const resolvedSimpleColumns = resolveSimpleColumnVariables(configuredSimpleColumns, usedData); + + // Add Tenant to resolved columns if in AllTenants mode and not already included + let finalResolvedColumns = [...resolvedSimpleColumns]; + if (shouldShowTenant && !resolvedSimpleColumns.includes("Tenant")) { + finalResolvedColumns = [...resolvedSimpleColumns, "Tenant"]; + } + + finalColumns = enhancedApiColumns; + finalColumns.forEach((col) => { + newVisibility[col.id] = finalResolvedColumns.includes(col.id); }); } else { const providedColumnKeys = new Set(columns.map((col) => col.id || col.header)); - finalColumns = [...columns, ...apiColumns.filter((col) => !providedColumnKeys.has(col.id))]; + finalColumns = [ + ...columns, + ...enhancedApiColumns.filter((col) => !providedColumnKeys.has(col.id)), + ]; finalColumns.forEach((col) => { newVisibility[col.accessorKey] = providedColumnKeys.has(col.id); }); + + // Handle Tenant column for custom columns case + if (shouldShowTenant) { + const tenantColumn = finalColumns.find((col) => col.id === "Tenant"); + if (tenantColumn) { + // Make tenant visible + newVisibility["Tenant"] = true; + } + } } if (defaultSorting?.length > 0) { setSorting(defaultSorting); } setUsedColumns(finalColumns); setColumnVisibility(newVisibility); - }, [columns.length, usedData, queryKey]); + }, [columns.length, usedData, queryKey, settings?.currentTenant, filterTypeMap]); const createDialog = useDialog(); @@ -185,12 +311,13 @@ export const CippDataTable = (props) => { configuredSimpleColumns, offCanvas, onChange, - maxHeightOffset - ) + maxHeightOffset, + ), ); //create memoized version of usedColumns, and usedData + // Include updateTrigger in data to force re-render when license backfill completes const memoizedColumns = useMemo(() => usedColumns, [usedColumns]); - const memoizedData = useMemo(() => usedData, [usedData]); + const memoizedData = useMemo(() => usedData, [usedData, updateTrigger]); const handleActionDisabled = (row, action) => { if (action?.condition) { @@ -200,16 +327,141 @@ export const CippDataTable = (props) => { }; const table = useMaterialReactTable({ + muiTableBodyCellProps: { + onCopy: (e) => { + const sel = window.getSelection()?.toString() ?? ""; + if (sel) { + e.preventDefault(); + e.stopPropagation(); + e.nativeEvent?.stopImmediatePropagation?.(); + e.clipboardData.setData("text/plain", sel); + if (navigator.clipboard?.writeText) { + navigator.clipboard.writeText(sel).catch(() => {}); + } + } + }, + }, mrtTheme: (theme) => ({ baseBackgroundColor: theme.palette.background.paper, }), muiTablePaperProps: ({ table }) => ({ - //not sx - style: { - zIndex: table.getState().isFullScreen ? 1000 : undefined, - top: table.getState().isFullScreen ? 64 : undefined, + sx: { + ...(table.getState().isFullScreen && { + position: "fixed !important", + top: "64px !important", + bottom: "0 !important", + left: { + xs: "0 !important", + lg: settings?.sidebarCollapse ? "73px !important" : "270px !important", + }, + right: "0 !important", + zIndex: "1300 !important", + m: "0 !important", + p: "16px !important", + overflow: "auto", + bgcolor: "background.paper", + maxWidth: "none !important", + width: "auto !important", + height: "auto !important", + }), }, }), + muiTableBodyRowProps: + offCanvasOnRowClick && offCanvas + ? ({ row }) => ({ + onClick: () => { + setOffCanvasData(row.original); + // Find the index of this row in the filtered rows + const filteredRowsArray = table.getFilteredRowModel().rows; + const indexInFiltered = filteredRowsArray.findIndex( + (r) => r.original === row.original, + ); + setOffCanvasRowIndex(indexInFiltered >= 0 ? indexInFiltered : 0); + setOffcanvasVisible(true); + }, + sx: { + cursor: "pointer", + "&:hover": { + backgroundColor: "action.hover", + }, + }, + }) + : undefined, + // Add global styles to target the specific filter components + enableColumnFilterModes: true, + muiTableHeadCellProps: { + sx: { + // Target the filter row cells + "& .MuiTableCell-root": { + padding: "8px 16px", + }, + // Target the Autocomplete component in filter cells + "& .MuiAutocomplete-root": { + width: "100%", + }, + // Force the tags container to be single line with ellipsis + "& .MuiAutocomplete-root .MuiInputBase-root": { + height: "40px !important", + overflow: "hidden", + textOverflow: "ellipsis", + whiteSpace: "nowrap", + display: "flex", + flexWrap: "nowrap", + }, + // Target the tags container specifically + "& .MuiAutocomplete-root .MuiInputBase-root .MuiInputBase-input": { + height: "24px", + minHeight: "24px", + maxHeight: "24px", + }, + // Target regular input fields (not in Autocomplete) + "& .MuiInputBase-root": { + height: "40px !important", + }, + // Ensure all input fields have consistent styling + "& .MuiInputBase-input": { + height: "24px", + minHeight: "24px", + maxHeight: "24px", + }, + // Target the specific chip class mentioned + "& .MuiChip-label.MuiChip-labelMedium": { + maxWidth: "80px", + overflow: "hidden", + textOverflow: "ellipsis", + whiteSpace: "nowrap", + padding: "0 4px", + }, + // Make chips smaller overall and add title attribute for tooltip + "& .MuiChip-root": { + height: "24px", + maxHeight: "24px", + // This adds a tooltip effect using the browser's native tooltip + "&::before": { + content: "attr(data-label)", + display: "none", + }, + "&:hover::before": { + display: "block", + position: "absolute", + top: "-25px", + left: "0", + backgroundColor: "rgba(0, 0, 0, 0.8)", + color: "white", + padding: "4px 8px", + borderRadius: "4px", + fontSize: "12px", + whiteSpace: "nowrap", + zIndex: 9999, + }, + }, + }, + }, + // Initialize the filter chips with data attributes for tooltips + initialState: { + columnFilters: columnFilters, + columnVisibility: columnVisibility, + }, columns: memoizedColumns, data: memoizedData ?? [], state: { @@ -219,8 +471,8 @@ export const CippDataTable = (props) => { showSkeletons: getRequestData.isFetchingNextPage ? false : getRequestData.isFetching - ? getRequestData.isFetching - : isFetching, + ? getRequestData.isFetching + : isFetching, }, onSortingChange: (newSorting) => { setSorting(newSorting ?? []); @@ -248,19 +500,29 @@ export const CippDataTable = (props) => { currentTenant: row.original.Tenant, }); } - setActionData({ - data: row.original, - action: action, - ready: true, - }); + if (action.noConfirm && action.customFunction) { action.customFunction(row.original, action, {}); closeMenu(); return; - } else { - createDialog.handleOpen(); + } + + // Handle custom component differently + if (typeof action.customComponent === "function") { + setCustomComponentData({ data: row.original, action: action }); + setCustomComponentVisible(true); closeMenu(); + return; } + + // Standard dialog flow + setActionData({ + data: row.original, + action: action, + ready: true, + }); + createDialog.handleOpen(); + closeMenu(); }} disabled={handleActionDisabled(row.original, action)} > @@ -276,6 +538,12 @@ export const CippDataTable = (props) => { onClick={() => { closeMenu(); setOffCanvasData(row.original); + // Find the index of this row in the filtered rows + const filteredRowsArray = table.getFilteredRowModel().rows; + const indexInFiltered = filteredRowsArray.findIndex( + (r) => r.original === row.original, + ); + setOffCanvasRowIndex(indexInFiltered >= 0 ? indexInFiltered : 0); setOffcanvasVisible(true); }} > @@ -291,6 +559,12 @@ export const CippDataTable = (props) => { onClick={() => { closeMenu(); setOffCanvasData(row.original); + // Find the index of this row in the filtered rows + const filteredRowsArray = table.getFilteredRowModel().rows; + const indexInFiltered = filteredRowsArray.findIndex( + (r) => r.original === row.original, + ); + setOffCanvasRowIndex(indexInFiltered >= 0 ? indexInFiltered : 0); setOffcanvasVisible(true); }} > @@ -324,6 +598,9 @@ export const CippDataTable = (props) => { graphFilterData={graphFilterData} setGraphFilterData={setGraphFilterData} setConfiguredSimpleColumns={setConfiguredSimpleColumns} + queueMetadata={getRequestData.data?.pages?.[0]?.Metadata} + isInDialog={isInDialog} + showBulkExportAction={showBulkExportAction} /> )} @@ -331,18 +608,56 @@ export const CippDataTable = (props) => { }, sortingFns: { dateTimeNullsLast: (a, b, id) => { - const aVal = a?.original?.[id] ?? null; - const bVal = b?.original?.[id] ?? null; - if (aVal === null && bVal === null) { - return 0; - } - if (aVal === null) { - return 1; - } - if (bVal === null) { - return -1; - } - return aVal > bVal ? 1 : -1; + const aRaw = getRowValueByColumnId(a, id); + const bRaw = getRowValueByColumnId(b, id); + const aDate = aRaw ? new Date(aRaw) : null; + const bDate = bRaw ? new Date(bRaw) : null; + const aTime = aDate && !Number.isNaN(aDate.getTime()) ? aDate.getTime() : null; + const bTime = bDate && !Number.isNaN(bDate.getTime()) ? bDate.getTime() : null; + + return compareNullable(aTime, bTime); + }, + number: (a, b, id) => { + const aRaw = getRowValueByColumnId(a, id); + const bRaw = getRowValueByColumnId(b, id); + const aNum = typeof aRaw === "number" ? aRaw : Number(aRaw); + const bNum = typeof bRaw === "number" ? bRaw : Number(bRaw); + const aVal = Number.isNaN(aNum) ? null : aNum; + const bVal = Number.isNaN(bNum) ? null : bNum; + + return compareNullable(aVal, bVal); + }, + boolean: (a, b, id) => { + const aRaw = getRowValueByColumnId(a, id); + const bRaw = getRowValueByColumnId(b, id); + const toBool = (value) => { + if (value === null || value === undefined) { + return null; + } + if (typeof value === "boolean") { + return value; + } + if (typeof value === "string") { + const lower = value.toLowerCase(); + if (lower === "true" || lower === "yes") { + return true; + } + if (lower === "false" || lower === "no") { + return false; + } + } + if (typeof value === "number") { + return value !== 0; + } + return null; + }; + + const aBool = toBool(aRaw); + const bBool = toBool(bRaw); + const aNumeric = aBool === null ? null : aBool ? 1 : 0; + const bNumeric = bBool === null ? null : bBool ? 1 : 0; + + return compareNullable(aNumeric, bNumeric); }, }, filterFns: { @@ -445,20 +760,9 @@ export const CippDataTable = (props) => { }, }); - useEffect(() => { - if (filters && Array.isArray(filters) && filters.length > 0 && memoizedColumns.length > 0) { - // Make sure the table and columns are ready - setTimeout(() => { - if (table && typeof table.setColumnFilters === "function") { - const formattedFilters = filters.map((filter) => ({ - id: filter.id || filter.columnId, - value: filter.value, - })); - table.setColumnFilters(formattedFilters); - } - }); - } - }, [filters, memoizedColumns, table]); + // Remove the useEffect that was resetting filters on table changes + // The initial filter application is now handled by the columnFilters state + // and the useEffect above that only triggers on actual filter prop changes useEffect(() => { if (onChange && table.getSelectedRowModel().rows) { @@ -466,6 +770,19 @@ export const CippDataTable = (props) => { } }, [table.getSelectedRowModel().rows]); + useEffect(() => { + // Update filtered rows whenever table filtering/sorting changes + if (table && table.getFilteredRowModel) { + const rows = table.getFilteredRowModel().rows; + setFilteredRows(rows.map((row) => row.original)); + } + }, [ + table, + table.getState().columnFilters, + table.getState().globalFilter, + table.getState().sorting, + ]); + useEffect(() => { //check if the simplecolumns are an array, if (Array.isArray(simpleColumns) && simpleColumns.length > 0) { @@ -495,10 +812,14 @@ export const CippDataTable = (props) => { ) : ( // Render the table inside a Card - ( + {cardButton || !hideTitle ? ( <> - + ) : null} @@ -527,7 +848,7 @@ export const CippDataTable = (props) => { )} - ) + )} { extendedData={offCanvasData} extendedInfoFields={offCanvas?.extendedInfoFields} actions={actions} - children={offCanvas?.children} + title={offCanvasData?.Name || offCanvas?.title || "Extended Info"} + children={ + offCanvas?.children ? (row) => offCanvas.children(row, offCanvasRowIndex) : undefined + } customComponent={offCanvas?.customComponent} + onNavigateUp={() => { + const newIndex = offCanvasRowIndex - 1; + if (newIndex >= 0 && filteredRows && filteredRows[newIndex]) { + setOffCanvasRowIndex(newIndex); + setOffCanvasData(filteredRows[newIndex]); + } + }} + onNavigateDown={() => { + const newIndex = offCanvasRowIndex + 1; + if (filteredRows && newIndex < filteredRows.length) { + setOffCanvasRowIndex(newIndex); + setOffCanvasData(filteredRows[newIndex]); + } + }} + canNavigateUp={offCanvasRowIndex > 0} + canNavigateDown={filteredRows && offCanvasRowIndex < filteredRows.length - 1} {...offCanvas} /> + {/* Render custom component */} + {customComponentVisible && + customComponentData?.action && + typeof customComponentData.action.customComponent === "function" && + customComponentData.action.customComponent(customComponentData.data, { + drawerVisible: customComponentVisible, + setDrawerVisible: setCustomComponentVisible, + fromRowAction: true, + })} + + {/* Render standard dialog */} {useMemo(() => { - if (!actionData.ready) return null; + if ( + !actionData.ready || + (actionData.action && typeof actionData.action.customComponent === "function") + ) + return null; return ( { const [openDialogs, setOpenDialogs] = useState([]); @@ -59,6 +58,7 @@ const CippDataTableButton = ({ data, title, tableTitle = "Data" }) => { title={tableTitle} data={dialogData} simple={false} + isInDialog={true} /> diff --git a/src/components/CippTable/CippDiagnosticsFilter.js b/src/components/CippTable/CippDiagnosticsFilter.js new file mode 100644 index 000000000000..e8118a10e090 --- /dev/null +++ b/src/components/CippTable/CippDiagnosticsFilter.js @@ -0,0 +1,305 @@ +import { useState, useEffect } from "react"; +import { useForm, useWatch } from "react-hook-form"; +import { + Box, + Button, + Stack, + Alert, + AlertTitle, + Accordion, + AccordionSummary, + AccordionDetails, + Typography, + IconButton, + Tooltip, + CircularProgress, +} from "@mui/material"; +import { ExpandMore, Search, Save, Delete } from "@mui/icons-material"; +import { CippFormComponent } from "../CippComponents/CippFormComponent"; +import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; +import { Grid } from "@mui/system"; +import defaultPresets from "../../data/DiagnosticsPresets.json"; + +const CippDiagnosticsFilter = ({ onSubmitFilter }) => { + const [expanded, setExpanded] = useState(true); + const [selectedPreset, setSelectedPreset] = useState(null); + const [presetOptions, setPresetOptions] = useState([]); + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + presetName: "", + queryPreset: null, + query: "", + }, + }); + + const { handleSubmit } = formControl; + const queryValue = useWatch({ control: formControl.control, name: "query" }); + const queryPreset = useWatch({ control: formControl.control, name: "queryPreset" }); + const presetName = useWatch({ control: formControl.control, name: "presetName" }); + + // Load presets + const presetList = ApiGetCall({ + url: "/api/ListDiagnosticsPresets", + queryKey: "ListDiagnosticsPresets", + }); + + useEffect(() => { + // Combine built-in presets with custom presets + const builtInOptions = defaultPresets.map((preset) => ({ + label: preset.name, + value: preset.id, + query: preset.query, + columns: preset.columns || null, + isBuiltin: true, + })); + + const customOptions = + presetList.isSuccess && presetList.data + ? presetList.data.map((preset) => ({ + label: preset.name, + value: preset.GUID, + query: preset.query, + isBuiltin: false, + })) + : []; + + setPresetOptions([...builtInOptions, ...customOptions]); + }, [presetList.isSuccess, presetList.data]); + + // Load preset when selected + useEffect(() => { + if (queryPreset) { + // queryPreset is the full object from autoComplete + // Check if it's an array (multiple) or object (single) + const preset = Array.isArray(queryPreset) ? queryPreset[0] : queryPreset; + + if (preset?.query) { + formControl.setValue("query", preset.query); + formControl.setValue("presetName", preset.label); + setSelectedPreset(preset); + // Clear the preset selection so user can edit freely + formControl.setValue("queryPreset", null); + } + } + }, [queryPreset, formControl]); + + // Clear selectedPreset when query is manually edited (unless preset is custom or has no columns) + useEffect(() => { + if (selectedPreset && queryValue !== selectedPreset.query) { + // Only clear if preset is built-in and has columns defined + if (selectedPreset.isBuiltin && selectedPreset.columns) { + setSelectedPreset(null); + } + } + }, [queryValue, selectedPreset]); + + const savePresetApi = ApiPostCall({ + relatedQueryKeys: ["ListDiagnosticsPresets"], + }); + + const deletePresetApi = ApiPostCall({ + relatedQueryKeys: ["ListDiagnosticsPresets"], + }); + + const handleSavePreset = () => { + if (!presetName || !queryValue) { + return; + } + + // Built-in presets get saved as new custom presets (no GUID = new preset) + // Custom presets can be updated (include GUID) + const presetData = { + name: presetName, + query: queryValue, + GUID: selectedPreset?.isBuiltin ? undefined : selectedPreset?.value || undefined, + }; + + const isUpdate = selectedPreset && !selectedPreset.isBuiltin; + + savePresetApi.mutate({ + url: "/api/ExecDiagnosticsPresets", + data: presetData, + title: isUpdate ? "Update Preset" : "Save Preset", + message: isUpdate + ? `Preset "${presetName}" updated successfully` + : `Preset "${presetName}" saved successfully`, + }); + }; + + const handleDeletePreset = () => { + if (!selectedPreset || selectedPreset.isBuiltin) { + return; + } + + deletePresetApi.mutate({ + url: "/api/ExecDiagnosticsPresets", + data: { + GUID: selectedPreset.value, + action: "delete", + }, + title: "Delete Preset", + message: `Preset "${selectedPreset.label}" deleted successfully`, + }); + + formControl.setValue("queryPreset", null); + formControl.setValue("presetName", ""); + setSelectedPreset(null); + }; + + const onSubmit = (values) => { + if (values.query && values.query.trim()) { + onSubmitFilter({ + ...values, + presetDisplayName: values.presetName || selectedPreset?.label || null, + columns: selectedPreset?.columns || null, + }); + setExpanded(false); + } + }; + + const handleClear = () => { + formControl.reset({ query: "", presetName: "", queryPreset: null }); + onSubmitFilter({ query: "", presetDisplayName: null, columns: null }); + // Only clear selectedPreset if it's a built-in preset + // Keep custom preset reference so user can continue editing and saving + if (selectedPreset?.isBuiltin) { + setSelectedPreset(null); + } + setExpanded(true); + }; + + return ( + setExpanded(!expanded)}> + }> + Query + + + + + Requirements + + โ€ข Application Insights must be deployed for your CIPP environment +
    โ€ข The Function App's managed identity must have Reader{" "} + permissions on the Application Insights resource +
    โ€ข Queries are executed using Kusto Query Language (KQL) +
    +
    + + + + + + + + + + + + + + + + + + {savePresetApi.isPending ? : } + + + + + + + {deletePresetApi.isPending ? ( + + ) : ( + + )} + + + + + + + + + + ago(1h)\n| where severityLevel >= 2\n| project timestamp, message, severityLevel\n| order by timestamp desc`} + helperText="Enter a valid Kusto Query Language (KQL) query to execute against Application Insights" + sx={{ + "& textarea": { + fontFamily: "monospace", + fontSize: "0.875rem", + }, + }} + /> + + + + + + + +
    +
    +
    + ); +}; + +export default CippDiagnosticsFilter; diff --git a/src/components/CippTable/CippGraphExplorerFilter.js b/src/components/CippTable/CippGraphExplorerFilter.js index 1b77a2a55216..d95654de1594 100644 --- a/src/components/CippTable/CippGraphExplorerFilter.js +++ b/src/components/CippTable/CippGraphExplorerFilter.js @@ -1,5 +1,5 @@ -import React, { useState, useEffect, useCallback } from "react"; -import { Button, Typography } from "@mui/material"; +import { useState, useEffect, useCallback } from "react"; +import { Box, Button, Link, Typography } from "@mui/material"; import { Save as SaveIcon, Delete, @@ -10,8 +10,8 @@ import { } from "@mui/icons-material"; import { useForm, useWatch } from "react-hook-form"; import { debounce } from "lodash"; -import CippButtonCard from "/src/components/CippCards/CippButtonCard"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; +import CippButtonCard from "../CippCards/CippButtonCard"; +import CippFormComponent from "../CippComponents/CippFormComponent"; import { ApiGetCall, ApiPostCall } from "../../api/ApiCall"; import { useSettings } from "../../hooks/use-settings"; import { CippApiResults } from "../CippComponents/CippApiResults"; @@ -28,6 +28,10 @@ const CippGraphExplorerFilter = ({ onSubmitFilter, onPresetChange, component = "accordion", + relatedQueryKeys = [], + selectedPreset = null, + onPresetSelect, + hideButtons = false, }) => { const [offCanvasOpen, setOffCanvasOpen] = useState(false); const [cardExpanded, setCardExpanded] = useState(true); @@ -40,11 +44,13 @@ const CippGraphExplorerFilter = ({ mode: "onChange", defaultValues: { endpoint: "", + version: { label: "beta", value: "beta" }, $select: [], $filter: "", $expand: "", $top: "", $search: "", + $orderby: "", $format: "", NoPagination: false, ReverseTenantLookup: false, @@ -120,7 +126,7 @@ const CippGraphExplorerFilter = ({ .filter( (item) => !endpointFilter || - normalizeEndpoint(item.params.endpoint) === normalizeEndpoint(endpointFilter) + normalizeEndpoint(item.params.endpoint) === normalizeEndpoint(endpointFilter), ) .forEach((item) => { presetOptionList.push({ @@ -150,7 +156,7 @@ const CippGraphExplorerFilter = ({ propertyList.refetch(); } }, 1000), - [currentEndpoint] // Dependencies that the debounce function depends on + [currentEndpoint], // Dependencies that the debounce function depends on ); useEffect(() => { @@ -162,7 +168,7 @@ const CippGraphExplorerFilter = ({ }, [currentEndpoint, debouncedRefetch]); const savePresetApi = ApiPostCall({ - relatedQueryKeys: ["ListGraphExplorerPresets", "ListGraphRequest"], + relatedQueryKeys: ["ListGraphExplorerPresets*", "ListGraphRequest", ...relatedQueryKeys], }); // Save preset function @@ -177,14 +183,29 @@ const CippGraphExplorerFilter = ({ }); }; + const deletePreset = (id) => { + savePresetApi.mutate({ + url: "/api/ExecGraphExplorerPreset", + data: { action: "Delete", preset: { id: selectedPresetState } }, + }); + }; + const selectedPresets = useWatch({ control: presetControl.control, name: "reportTemplate" }); + + // Sync with parent component's selected preset + useEffect(() => { + if (selectedPreset && selectedPreset.value !== selectedPresets?.value) { + presetControl.setValue("reportTemplate", selectedPreset); + } + }, [selectedPreset?.value]); + useEffect(() => { if (selectedPresets?.addedFields?.params) { setPresetOwner(selectedPresets?.addedFields?.IsMyPreset ?? false); Object.keys(selectedPresets.addedFields.params).forEach( (key) => selectedPresets.addedFields.params[key] == null && - delete selectedPresets.addedFields.params[key] + delete selectedPresets.addedFields.params[key], ); //if $select is a blank array, set it to a string. if ( @@ -208,6 +229,21 @@ const CippGraphExplorerFilter = ({ ?.split(",") .map((item) => ({ label: item, value: item }))) : (selectedPresets.addedFields.params.$select = []); + + // Convert version string to autocomplete object format, default to beta if not present + if (selectedPresets.addedFields.params.version) { + const versionValue = + typeof selectedPresets.addedFields.params.version === "string" + ? selectedPresets.addedFields.params.version + : selectedPresets.addedFields.params.version.value; + selectedPresets.addedFields.params.version = { + label: versionValue, + value: versionValue, + }; + } else { + selectedPresets.addedFields.params.version = { label: "beta", value: "beta" }; + } + selectedPresets.addedFields.params.id = selectedPresets.value; setSelectedPreset(selectedPresets.value); selectedPresets.addedFields.params.name = selectedPresets.label; @@ -215,6 +251,11 @@ const CippGraphExplorerFilter = ({ // save last preset title setLastPresetTitle(selectedPresets.label); formControl.reset(selectedPresets?.addedFields?.params, { keepDefaultValues: true }); + + // Notify parent when preset changes in this component + if (onPresetSelect) { + onPresetSelect(selectedPresets); + } } }, [selectedPresets]); @@ -309,6 +350,10 @@ const CippGraphExplorerFilter = ({ Key: "$expand", Value: formParameters.$expand, }, + { + Key: "$orderby", + Value: formParameters.$orderby, + }, { Key: "$format", Value: formParameters.$format, @@ -353,7 +398,7 @@ const CippGraphExplorerFilter = ({ Schedule Graph Explorer Report - + , ); setOffCanvasOpen(true); }; @@ -366,6 +411,11 @@ const CippGraphExplorerFilter = ({ if (newvals?.$select !== undefined && Array.isArray(newvals?.$select)) { newvals.$select = newvals?.$select.map((p) => p.value).join(","); } + if (newvals.version && newvals.version.value) { + newvals.version = newvals.version.value; + } else if (!newvals.version) { + newvals.version = "beta"; + } delete newvals["reportTemplate"]; delete newvals["tenantFilter"]; delete newvals["IsShared"]; @@ -397,6 +447,9 @@ const CippGraphExplorerFilter = ({ Import / Export Graph Explorer Preset + + Copy the JSON below to export your preset, or paste a preset JSON to import it. + setEditorValues(JSON.parse(value))} @@ -411,6 +464,7 @@ const CippGraphExplorerFilter = ({ }} variant="contained" color="primary" + sx={{ mt: 2 }} > Import Template @@ -427,6 +481,11 @@ const CippGraphExplorerFilter = ({ if (values.$select && Array.isArray(values.$select) && values.$select.length > 0) { values.$select = values?.$select?.map((item) => item.value)?.join(","); } + if (values.version && values.version.value) { + values.version = values.version.value; + } else if (!values.version) { + values.version = "beta"; + } if (values.ReverseTenantLookup === false) { delete values.ReverseTenantLookup; } @@ -452,17 +511,10 @@ const CippGraphExplorerFilter = ({ }; //console.log(cardExpanded); - const deletePreset = (id) => { - savePresetApi.mutate({ - url: "/api/ExecGraphExplorerPreset", - data: { action: "Delete", preset: { id: selectedPresetState } }, - }); - }; - return (
    setCardExpanded(expanded)} @@ -471,77 +523,9 @@ const CippGraphExplorerFilter = ({ height: "100%", mb: 2, }} - CardButton={ - <> - - - - - - - - - {selectedPresetState && ( - - )} - - - - - - - } > - - + + )} placeholder="Select a preset" + helperText="Select an existing preset to load its parameters" /> {/* Preset Name Field */} - + - + + The{" "} + + Graph endpoint + {" "} + to query (e.g. https://graph.microsoft.com/beta/$Endpoint) + + } /> - + + + + + {/* Filter Field */} - + + Graph $filter query + + } /> {/* Expand Field */} - + {/* Top Field */} - + {/* Search Field */} - + + {/* OrderBy Field */} + + + + {/* Format Field */} - + - + {/* Reverse Tenant Lookup Switch */} - + {/* Reverse Tenant Lookup Property Field */} - + {/* No Pagination Switch */} - + {/* $count Switch */} - + {/* AsApp switch */} - + + + {/* Footer-style action section */} + {!hideButtons && ( + + + + {component === "accordion" ? ( + + + + + + + + + + + + + + + ) : ( + + + + + + + + + + + + + + + + + + + + + + + )} + + + )} - { + const [offCanvasVisible, setOffCanvasVisible] = useState(false); + const [presetOptions, setPresetOptions] = useState([]); + const [currentFilterValues, setCurrentFilterValues] = useState(null); + + const presetControl = useForm({ + mode: "onChange", + defaultValues: { + reportTemplate: null, + }, + }); + + const selectedPreset = useWatch({ control: presetControl.control, name: "reportTemplate" }); + + // API call for available presets + const presetList = ApiGetCall({ + url: "/api/ListGraphExplorerPresets", + queryKey: "ListGraphExplorerPresets", + }); + + useEffect(() => { + var presetOptionList = []; + defaultPresets.forEach((item) => { + presetOptionList.push({ + label: item.name, + value: item.id, + addedFields: item, + type: "Built-In", + }); + }); + if (presetList.isSuccess && presetList.data?.Results.length > 0) { + presetList.data.Results.forEach((item) => { + presetOptionList.push({ + label: item.name, + value: item.id, + addedFields: item, + type: "Custom", + }); + }); + } + setPresetOptions(presetOptionList); + }, [defaultPresets, presetList.isSuccess, presetList.data]); + + const handleRunPreset = () => { + if (selectedPreset?.addedFields?.params) { + const params = selectedPreset.addedFields.params; + const values = { ...params }; + + // Handle $select array/string conversion + if (values.$select && Array.isArray(values.$select) && values.$select.length > 0) { + values.$select = values.$select + .map((item) => (typeof item === "string" ? item : item.value)) + .join(","); + } else if (values.$select === "") { + delete values.$select; + } + + // Handle version conversion + if (values.version && values.version.value) { + values.version = values.version.value; + } else if (!values.version) { + values.version = "beta"; + } + + // Clean up false boolean values + if (values.ReverseTenantLookup === false) { + delete values.ReverseTenantLookup; + } + if (values.NoPagination === false) { + delete values.NoPagination; + } + if (values.$count === false) { + delete values.$count; + } + if (values.AsApp === false) { + delete values.AsApp; + } + + // Remove null/empty values + Object.keys(values).forEach((key) => { + if (values[key] === null || values[key] === "") { + delete values[key]; + } + }); + + // Update page title if callback provided + if (onPresetChange && selectedPreset.label) { + onPresetChange(`Graph Explorer - ${selectedPreset.label}`); + } + + setCurrentFilterValues(values); + onSubmitFilter(values); + } + }; + + const handleFilterSubmit = (values) => { + setCurrentFilterValues(values); + onSubmitFilter(values); + setOffCanvasVisible(false); + }; + + const handlePresetChange = (preset) => { + presetControl.setValue("reportTemplate", preset); + }; + + return ( + <> + + + option.type} + renderGroup={(params) => ( +
  • + {params.group} + {params.children} +
  • + )} + placeholder="Select a query to run" + /> +
    + + + + {onViewModeChange && ( + + )} + +
    + + setOffCanvasVisible(false)} + contentPadding={1} + > + + + + ); +}; + +export default CippGraphExplorerSimpleFilter; diff --git a/src/components/CippTable/CippQueueTracker.js b/src/components/CippTable/CippQueueTracker.js new file mode 100644 index 000000000000..20a4fd6d62cd --- /dev/null +++ b/src/components/CippTable/CippQueueTracker.js @@ -0,0 +1,443 @@ +import React, { useState, useEffect } from "react"; +import { IconButton, Tooltip, Badge, Typography, LinearProgress, Box, Stack } from "@mui/material"; +import { Timeline, Circle } from "@mui/icons-material"; +import { CippOffCanvas } from "../CippComponents/CippOffCanvas"; +import { ApiGetCall } from "../../api/ApiCall"; +import { useQueryClient } from "@tanstack/react-query"; + +export const CippQueueTracker = ({ queueId, queryKey, title, onQueueComplete }) => { + const queryClient = useQueryClient(); + const [queueCanvasVisible, setQueueCanvasVisible] = useState(false); + const [persistentQueueData, setPersistentQueueData] = useState(null); + const [lastProcessedQueueId, setLastProcessedQueueId] = useState(null); + const [queueQueryKey, setQueueQueryKey] = useState(null); + const [hasAutoRefreshed, setHasAutoRefreshed] = useState(false); + + const hasQueueData = !!queueId; + const currentQueryKey = queryKey || title; + + // Show queue if we have current queue data OR persistent queue data from the same query key + // If query key changed and we don't have an active queueId, don't show the tracker + const shouldShowQueue = + hasQueueData || (!!persistentQueueData && queueQueryKey === currentQueryKey); + + // Check if queue is in a completed state based on persistent data only (to avoid circular dependency) + const isQueueCompleted = + persistentQueueData?.Status === "Completed" || + persistentQueueData?.Status === "Failed" || + persistentQueueData?.Status === "Completed (with errors)"; + + const effectiveQueueId = queueId || lastProcessedQueueId; + + const queuePolling = ApiGetCall({ + url: `/api/ListCippQueue`, + data: { QueueId: effectiveQueueId }, + queryKey: `CippQueue-${effectiveQueueId || "unknown"}`, + waiting: shouldShowQueue && !!effectiveQueueId && !isQueueCompleted, + refetchInterval: (data) => { + // Check if the current data shows completion + const currentData = data?.[0]; + const isCurrentCompleted = + currentData?.Status === "Completed" || + currentData?.Status === "Failed" || + currentData?.Status === "Completed (with errors)"; + + // Also check persistent data + const isPersistentCompleted = + persistentQueueData?.Status === "Completed" || + persistentQueueData?.Status === "Failed" || + persistentQueueData?.Status === "Completed (with errors)"; + + // Stop polling if either shows completion + if (isCurrentCompleted || isPersistentCompleted || !shouldShowQueue || !effectiveQueueId) { + return false; + } + + return 3000; + }, + refetchOnMount: true, + refetchOnWindowFocus: false, + }); + + const queueData = queuePolling.data?.[0]; + + // Handle queue data persistence - only update persistent queue data when we get a new QueueId + // and ensure it's pinned to the current query key + useEffect(() => { + const currentQueryKey = queryKey || title; + + // If query key changed, clear all queue data + if (queueQueryKey && queueQueryKey !== currentQueryKey) { + setPersistentQueueData(null); + setLastProcessedQueueId(null); + setQueueQueryKey(currentQueryKey); + setHasAutoRefreshed(false); + return; + } + + // Set query key if not set + if (!queueQueryKey) { + setQueueQueryKey(currentQueryKey); + } + + // Only process new QueueId if we actually have one and it's different + if (queueId && queueId !== lastProcessedQueueId) { + // New QueueId detected, clear old persistent data and set new QueueId + setPersistentQueueData(null); + setLastProcessedQueueId(queueId); + setHasAutoRefreshed(false); // Reset auto-refresh flag for new queue + } + + // Don't clear persistent data if queueId is temporarily null (during table refresh) + // Only clear if we explicitly get a different QueueId or change query/page + }, [queueId, lastProcessedQueueId, queryKey, title, queueQueryKey]); + + // Update persistent queue data when new queue data is available + useEffect(() => { + const currentQueryKey = queryKey || title; + + // Only update if we're on the same query key where the queue was initiated + if (queueData && queueId === lastProcessedQueueId && queueQueryKey === currentQueryKey) { + setPersistentQueueData(queueData); + } + }, [queueData, queueId, lastProcessedQueueId, queryKey, title, queueQueryKey]); + + // Auto-refresh table when queue reaches 100% completion + useEffect(() => { + const currentQueryKey = queryKey || title; + + // Only auto-refresh if we're on the same query key where the queue was initiated + // and we haven't already auto-refreshed for this queue completion + if ( + !hasAutoRefreshed && + (persistentQueueData?.Status === "Completed" || + persistentQueueData?.Status === "Failed" || + persistentQueueData?.Status === "Completed (with errors)") && + queueQueryKey === currentQueryKey + ) { + // Queue is complete, invalidate the table query to refresh data + if (currentQueryKey) { + queryClient.invalidateQueries({ queryKey: [currentQueryKey] }); + setHasAutoRefreshed(true); // Mark that we've auto-refreshed + // Call callback if provided + if (onQueueComplete) { + onQueueComplete(); + } + } + } + }, [ + hasAutoRefreshed, + persistentQueueData?.PercentComplete, + persistentQueueData?.Status, + queryKey, + title, + queryClient, + queueQueryKey, + onQueueComplete, + ]); + + // Don't render anything if we don't have queue data to show + // Check for valid queueId or persistent queue data + if (!shouldShowQueue || (!queueId && !lastProcessedQueueId && !persistentQueueData)) { + return null; + } + + return ( + <> + + + ) : (persistentQueueData || queueData)?.Status === "Completed (with errors)" ? ( + + ) : (persistentQueueData || queueData)?.Status === "Failed" ? ( + + ) : (persistentQueueData || queueData)?.RunningTasks > 0 ? ( + + ) : ( + + ) + } + overlap="circular" + anchorOrigin={{ + vertical: "top", + horizontal: "right", + }} + > + setQueueCanvasVisible(true)} + sx={{ + animation: + (persistentQueueData || queueData)?.Status !== "Completed" && + (persistentQueueData || queueData)?.Status !== "Completed (with errors)" && + (persistentQueueData || queueData)?.Status !== "Failed" + ? "pulse 2s infinite" + : "none", + "@keyframes pulse": { + "0%": { + transform: "scale(1)", + opacity: 1, + }, + "50%": { + transform: "scale(1.1)", + opacity: 0.8, + }, + "100%": { + transform: "scale(1)", + opacity: 1, + }, + }, + color: + (persistentQueueData || queueData)?.Status === "Completed" + ? "success.main" + : (persistentQueueData || queueData)?.Status === "Completed (with errors)" + ? "warning.main" + : (persistentQueueData || queueData)?.Status === "Failed" + ? "error.main" + : (persistentQueueData || queueData)?.RunningTasks > 0 + ? "warning.main" + : "primary.main", + }} + > + + + + + + {/* Queue Status OffCanvas */} + setQueueCanvasVisible(false)} + > + + {persistentQueueData || queueData ? ( + <> + {(persistentQueueData || queueData).Name} + + + + Progress: {(persistentQueueData || queueData).PercentComplete?.toFixed(1)}% + complete + + + + + + + Total Tasks: {(persistentQueueData || queueData).TotalTasks || 0} + + + Completed:{" "} + {(persistentQueueData || queueData).CompletedTasks || 0} + + + Running: {(persistentQueueData || queueData).RunningTasks || 0} + + + Failed: {(persistentQueueData || queueData).FailedTasks || 0} + + + + + Status: {(persistentQueueData || queueData).Status} + + + {(persistentQueueData || queueData).Tasks && + (persistentQueueData || queueData).Tasks.length > 0 && ( + <> + + Task Details + + + + theme.palette.mode === "dark" + ? "rgba(255,255,255,0.1)" + : "rgba(0,0,0,0.1)", + borderRadius: 4, + }, + "&::-webkit-scrollbar-thumb": { + backgroundColor: (theme) => + theme.palette.mode === "dark" + ? "rgba(255,255,255,0.3)" + : "rgba(0,0,0,0.3)", + borderRadius: 4, + "&:hover": { + backgroundColor: (theme) => + theme.palette.mode === "dark" + ? "rgba(255,255,255,0.5)" + : "rgba(0,0,0,0.5)", + }, + }, + }} + > + {(persistentQueueData || queueData).Tasks.map((task, index) => ( + ({ + p: 2, + border: 1, + borderColor: + theme.palette.mode === "dark" + ? "rgba(255,255,255,0.12)" + : "divider", + borderRadius: 1, + backgroundColor: + task.Status === "Completed" + ? theme.palette.mode === "dark" + ? "rgba(102, 187, 106, 0.15)" + : "success.light" + : task.Status === "Failed" + ? theme.palette.mode === "dark" + ? "rgba(244, 67, 54, 0.15)" + : "error.light" + : task.Status === "Running" + ? theme.palette.mode === "dark" + ? "rgba(255, 152, 0, 0.15)" + : "warning.light" + : theme.palette.mode === "dark" + ? "rgba(255,255,255,0.05)" + : "grey.100", + transition: "all 0.2s ease-in-out", + "&:hover": { + transform: "translateY(-1px)", + boxShadow: + theme.palette.mode === "dark" + ? "0 4px 8px rgba(0,0,0,0.3)" + : "0 4px 8px rgba(0,0,0,0.1)", + }, + })} + > + + + {task.Name} + + ({ + px: 1.5, + py: 0.5, + borderRadius: 2, + backgroundColor: + theme.palette.mode === "dark" + ? "rgba(255,255,255,0.1)" + : "background.paper", + border: + theme.palette.mode === "dark" + ? "1px solid rgba(255,255,255,0.2)" + : "none", + fontWeight: "medium", + textTransform: "uppercase", + fontSize: "0.7rem", + letterSpacing: "0.5px", + color: + task.Status === "Completed" + ? "success.main" + : task.Status === "Failed" + ? "error.main" + : task.Status === "Running" + ? "warning.main" + : "text.secondary", + })} + > + {task.Status} + + + {task.Timestamp && ( + + {new Date(task.Timestamp).toLocaleDateString(undefined, { + year: "numeric", + month: "short", + day: "numeric", + })}{" "} + {new Date(task.Timestamp).toLocaleTimeString(undefined, { + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + })} + + )} + + ))} + + + + )} + + ) : queuePolling.isLoading ? ( + Loading queue data... + ) : queuePolling.isError ? ( + + Error loading queue data: {queuePolling.error?.message} + + ) : ( + No queue data available + )} + + + + ); +}; diff --git a/src/components/CippTable/util-columnsFromAPI.js b/src/components/CippTable/util-columnsFromAPI.js index 058db11048d3..8d93ccc19c18 100644 --- a/src/components/CippTable/util-columnsFromAPI.js +++ b/src/components/CippTable/util-columnsFromAPI.js @@ -2,11 +2,48 @@ import { getCippFilterVariant } from "../../utils/get-cipp-filter-variant"; import { getCippFormatting } from "../../utils/get-cipp-formatting"; import { getCippTranslation } from "../../utils/get-cipp-translation"; -const skipRecursion = ["location", "ScheduledBackupValues"]; +const skipRecursion = ["location", "ScheduledBackupValues", "Tenant"]; + +// Variable replacement patterns - maps variable names to property patterns +const variableReplacements = { + cippuserschema: (dataSample) => { + // Find the first property that contains "_cippUser" + const cippUserProp = Object.keys(dataSample).find((key) => key.includes("_cippUser")); + return cippUserProp || "cippuserschema"; // fallback to original if not found + }, +}; + +// Function to resolve variable replacements in column names +const resolveVariables = (columnName, dataSample) => { + return columnName.replace(/%(\w+)%/g, (match, variableName) => { + const resolver = variableReplacements[variableName.toLowerCase()]; + if (resolver && typeof resolver === "function") { + const resolved = resolver(dataSample); + console.log("resolving " + match + " to " + resolved); + return resolved; + } + return match; // return original if no resolver found + }); +}; + +const getAtPath = (obj, path) => { + const parts = path.split("."); + return parts.reduce((acc, part) => { + if (acc && typeof acc === "object") { + return acc[part]; + } + return undefined; + }, obj); +}; + // Function to merge keys from all objects in the array const mergeKeys = (dataArray) => { return dataArray.reduce((acc, item) => { const mergeRecursive = (obj, base = {}) => { + // Add null/undefined check before calling Object.keys + if (!obj || typeof obj !== 'object') { + return base; + } Object.keys(obj).forEach((key) => { if ( typeof obj[key] === "object" && @@ -14,37 +51,42 @@ const mergeKeys = (dataArray) => { !Array.isArray(obj[key]) && !skipRecursion.includes(key) ) { - if (typeof base[key] === "boolean") { - // Skip merging if base[key] is a boolean - return; - } - if (typeof base[key] !== "object" || Array.isArray(base[key])) { - // Re-initialize base[key] if it's not an object - base[key] = {}; - } + if (typeof base[key] === "boolean") return; // don't merge into a boolean + if (typeof base[key] !== "object" || Array.isArray(base[key])) base[key] = {}; base[key] = mergeRecursive(obj[key], base[key]); } else if (typeof obj[key] === "boolean") { base[key] = obj[key]; } else if (typeof obj[key] === "string" && obj[key].toUpperCase() === "FAILED") { - base[key] = base[key]; // Keep existing value if it's 'FAILED' + // keep existing value if it's 'FAILED' + base[key] = base[key]; } else if (obj[key] !== undefined && obj[key] !== null) { - base[key] = obj[key]; // Assign valid primitive values + base[key] = obj[key]; } }); return base; }; + // Add null/undefined check before calling mergeRecursive + if (!item || typeof item !== 'object') { + return acc; + } return mergeRecursive(item, acc); }, {}); }; export const utilColumnsFromAPI = (dataArray) => { + // Add safety check for dataArray + if (!dataArray || !Array.isArray(dataArray) || dataArray.length === 0) { + return []; + } + const dataSample = mergeKeys(dataArray); const generateColumns = (obj, parentKey = "") => { return Object.keys(obj) .map((key) => { const accessorKey = parentKey ? `${parentKey}.${key}` : key; + if ( typeof obj[key] === "object" && obj[key] !== null && @@ -54,32 +96,58 @@ export const utilColumnsFromAPI = (dataArray) => { return generateColumns(obj[key], accessorKey); } - return { + // Build a value resolver usable by both accessorFn/Cell and the filter util + const resolveValue = (rowLike) => + accessorKey.includes("@odata") ? rowLike?.[accessorKey] : getAtPath(rowLike, accessorKey); + + // Pre-compute some sample values for filter heuristics (optional) + const valuesForColumn = (Array.isArray(dataArray) ? dataArray : []) + .map((r) => resolveValue(r)) + .filter((v) => v !== undefined && v !== null); + + const sampleValue = valuesForColumn.length ? valuesForColumn[0] : undefined; + + const column = { header: getCippTranslation(accessorKey), id: accessorKey, accessorFn: (row) => { - let value; - if (accessorKey.includes("@odata")) { - value = row[accessorKey]; - } else { - value = accessorKey.split(".").reduce((acc, part) => acc && acc[part], row); - } + const value = resolveValue(row); return getCippFormatting(value, accessorKey, "text"); }, - ...getCippFilterVariant(key), + ...getCippFilterVariant(accessorKey, { + sampleValue, + values: valuesForColumn, + getValue: (row) => resolveValue(row), + dataArray: dataArray, // Pass the full data array for processing if needed + }), Cell: ({ row }) => { - let value; - if (accessorKey.includes("@odata")) { - value = row.original[accessorKey]; - } else { - value = accessorKey.split(".").reduce((acc, part) => acc && acc[part], row.original); - } + const value = resolveValue(row.original); return getCippFormatting(value, accessorKey); }, }; + + return column; }) .flat(); }; return generateColumns(dataSample); }; + +// Helper function to resolve variables in simple column names +export const resolveSimpleColumnVariables = (simpleColumns, dataArray) => { + if (!simpleColumns || !Array.isArray(dataArray) || dataArray.length === 0) { + return simpleColumns; + } + + const dataSample = mergeKeys(dataArray); + + return simpleColumns.map((columnName) => { + if (typeof columnName === "string" && columnName.includes("%")) { + const resolved = resolveVariables(columnName, dataSample); + console.log(`Resolving simple column: ${columnName} -> ${resolved}`); + return resolved; + } + return columnName; + }); +}; diff --git a/src/components/CippTable/util-tablemode.js b/src/components/CippTable/util-tablemode.js index 17cd92006a7e..3914ee4ebd6a 100644 --- a/src/components/CippTable/util-tablemode.js +++ b/src/components/CippTable/util-tablemode.js @@ -53,7 +53,6 @@ export const utilTableMode = ( enableStickyHeader: true, selectAllMode: "all", enableColumnPinning: true, - enableStickyHeader: true, muiPaginationProps: { rowsPerPageOptions: [25, 50, 100, 250, 500], }, diff --git a/src/components/CippTestDetail/CippTestDetailOffCanvas.jsx b/src/components/CippTestDetail/CippTestDetailOffCanvas.jsx new file mode 100644 index 000000000000..3a5b29a24301 --- /dev/null +++ b/src/components/CippTestDetail/CippTestDetailOffCanvas.jsx @@ -0,0 +1,296 @@ +import React from "react"; +import { Card, CardContent, Box, Stack, Chip, Typography } from "@mui/material"; +import { KeyboardArrowRight } from "@mui/icons-material"; +import ReactMarkdown from "react-markdown"; +import remarkGfm from "remark-gfm"; +import { Grid } from "@mui/system"; +import standardsData from "../../data/standards.json"; + +const getStatusColor = (status) => { + switch (status?.toLowerCase()) { + case "passed": + return "success"; + case "failed": + return "error"; + case "investigate": + return "warning"; + case "skipped": + return "default"; + default: + return "default"; + } +}; + +const getRiskColor = (risk) => { + switch (risk?.toLowerCase()) { + case "high": + return "error"; + case "medium": + return "warning"; + case "low": + return "info"; + default: + return "default"; + } +}; + +const getImpactColor = (impact) => { + switch (impact?.toLowerCase()) { + case "high": + return "error"; + case "medium": + return "warning"; + case "low": + return "info"; + default: + return "default"; + } +}; + +const checkCIPPStandardAvailable = (testName) => { + if (!testName) return "No"; + console.log(testName); + // Check if any standard's tag array contains a reference to this test + const hasStandard = standardsData.some((standard) => { + if (!standard.tag || !Array.isArray(standard.tag)) return false; + // Check if any tag matches the test name or contains it + return standard.tag.some((tag) => { + const tagLower = tag.toLowerCase(); + const testLower = testName.toLowerCase(); + return tagLower.includes(testLower) || testLower.includes(tagLower); + }); + }); + + return hasStandard ? "Yes" : "No"; +}; + +// Shared markdown styling for consistent rendering +const markdownStyles = { + "& a": { + color: (theme) => theme.palette.primary.main, + textDecoration: "underline", + "&:hover": { + textDecoration: "none", + }, + }, + color: "text.secondary", + fontSize: "0.875rem", + lineHeight: 1.43, + "& p": { + my: 1, + }, + "& ul": { + my: 1, + pl: 2, + }, + "& li": { + my: 0.5, + }, + "& h1, & h2, & h3, & h4, & h5, & h6": { + mt: 2, + mb: 1, + fontWeight: "bold", + }, + "& table": { + width: "100%", + borderCollapse: "collapse", + marginTop: 2, + marginBottom: 2, + }, + "& th, & td": { + border: 1, + borderColor: "divider", + padding: 1, + textAlign: "left", + }, + "& th": { + backgroundColor: "action.hover", + fontWeight: "bold", + }, + "& code": { + backgroundColor: "action.hover", + padding: "2px 6px", + borderRadius: 1, + fontSize: "0.85em", + }, + "& pre": { + backgroundColor: "action.hover", + padding: 2, + borderRadius: 1, + overflow: "auto", + }, +}; + +export const CippTestDetailOffCanvas = ({ row }) => { + return ( + + + + ({ + xs: `1px solid ${theme.palette.divider}`, + md: "none", + }), + borderRight: (theme) => ({ + md: `1px solid ${theme.palette.divider}`, + }), + }} + > + + + + Risk + + + + + + + + ({ + xs: `1px solid ${theme.palette.divider}`, + md: "none", + }), + borderRight: (theme) => ({ + md: `1px solid ${theme.palette.divider}`, + }), + }} + > + + + + User Impact + + + + + + + + ({ + xs: `1px solid ${theme.palette.divider}`, + md: "none", + }), + borderRight: (theme) => ({ + md: `1px solid ${theme.palette.divider}`, + }), + }} + > + + + + Effort + + + + + + + + + + + + Standard Available + + + + + + + + + + + {row.ResultMarkdown && ( + + + + {row.Name} + + + + ( + + {children} + + ), + }} + > + {row.ResultMarkdown} + + + + + )} + + + + + + What did we check + + + {row.Category && ( + + + Category + + {row.Category} + + )} + + {row.Description && ( + + ( + + {children} + + ), + }} + > + {row.Description} + + + )} + + + + + ); +}; diff --git a/src/components/CippWizard/CIPPDeploymentUpdateTokens.jsx b/src/components/CippWizard/CIPPDeploymentUpdateTokens.jsx index 50fef63317f2..6c863f7cac49 100644 --- a/src/components/CippWizard/CIPPDeploymentUpdateTokens.jsx +++ b/src/components/CippWizard/CIPPDeploymentUpdateTokens.jsx @@ -1,10 +1,11 @@ import { useState } from "react"; -import { Stack, Typography, CircularProgress, SvgIcon, Box } from "@mui/material"; -import { CheckCircle } from "@mui/icons-material"; +import { Stack, Typography, CircularProgress, SvgIcon, Box, Chip, Skeleton } from "@mui/material"; +import { CheckCircle, Person, Apartment } from "@mui/icons-material"; import CippButtonCard from "../CippCards/CippButtonCard"; import { ApiGetCall } from "../../api/ApiCall"; import { CippApiResults } from "../CippComponents/CippApiResults"; import { CIPPM365OAuthButton } from "../CippComponents/CIPPM365OAuthButton"; +import { getCippTranslation } from "../../utils/get-cipp-translation"; export const CIPPDeploymentUpdateTokens = ({ formControl }) => { const [tokens, setTokens] = useState(null); @@ -12,7 +13,7 @@ export const CIPPDeploymentUpdateTokens = ({ formControl }) => { // Get application ID information for the card header const appId = ApiGetCall({ url: `/api/ExecListAppId`, - queryKey: `ExecListAppId`, + queryKey: "listAppId", waiting: true, }); @@ -46,10 +47,79 @@ export const CIPPDeploymentUpdateTokens = ({ formControl }) => { /> } > - + Click the button to refresh the Graph token for your tenants using popup authentication. - This method opens a popup window where you can sign in to your Microsoft account. + Use this to update your refresh token or change the logged in user. This method opens a + popup window where you can sign in to your Microsoft account. + + + Current Tenant Info + + + {(appId.isLoading || appId.isFetching) && ( + + + + + + + + )} + {!appId.isLoading && !appId.isFetching && appId?.data?.orgName && ( + + + + + + + + {appId.data.orgName} + + + {appId.data.tenantId} + + + {appId.data.authenticatedUserDisplayName && ( + + + + + + {appId.data.authenticatedUserDisplayName} + + + {appId.data.authenticatedUserPrincipalName} + + + )} + + + {appId.data.isPartnerTenant ? ( + + ) : ( + + )} + + + )} + diff --git a/src/components/CippWizard/CippAddTenantForm.jsx b/src/components/CippWizard/CippAddTenantForm.jsx index a23291dd54c7..2e302bb02944 100644 --- a/src/components/CippWizard/CippAddTenantForm.jsx +++ b/src/components/CippWizard/CippAddTenantForm.jsx @@ -182,13 +182,13 @@ export const CippAddTenantForm = (props) => { {field.type === "header" ? ( <> - + {field.label} ) : ( - + )} diff --git a/src/components/CippWizard/CippAddTenantTypeSelection.jsx b/src/components/CippWizard/CippAddTenantTypeSelection.jsx new file mode 100644 index 000000000000..f8ba6a384884 --- /dev/null +++ b/src/components/CippWizard/CippAddTenantTypeSelection.jsx @@ -0,0 +1,127 @@ +import { Avatar, Card, CardContent, Stack, SvgIcon, Typography } from "@mui/material"; +import { useState, useEffect } from "react"; +import { CippWizardStepButtons } from "./CippWizardStepButtons"; +import { BuildingOfficeIcon, CloudIcon } from "@heroicons/react/24/outline"; + +export const CippAddTenantTypeSelection = (props) => { + const { onNextStep, formControl, currentStep, onPreviousStep } = props; + + const [selectedOption, setSelectedOption] = useState(null); + + // Register the tenantType field in react-hook-form + formControl.register("tenantType", { + required: true, + }); + + // Restore selection if already set (when navigating back) + useEffect(() => { + const currentValue = formControl.getValues("tenantType"); + if (currentValue) { + setSelectedOption(currentValue); + } + // Restore the form's selectedOption state if navigating back + const selectedOptionValue = formControl.getValues("selectedOption"); + if (selectedOptionValue) { + formControl.setValue("selectedOption", selectedOptionValue); + } + }, [formControl]); + + const handleOptionClick = (value) => { + setSelectedOption(value); + formControl.setValue("tenantType", value); + + // Clear validation fields from other paths when changing selection + // This ensures going back and choosing a different option doesn't keep old validations + if (value === "GDAP") { + // Clear Direct tenant fields + formControl.unregister("DirectTenantAuth"); + } else if (value === "Direct") { + // Clear GDAP fields + formControl.unregister("GDAPTemplate"); + formControl.unregister("GDAPInviteAccepted"); + formControl.unregister("GDAPRelationshipId"); + formControl.unregister("GDAPOnboardingComplete"); + } + + // Trigger validation only for the tenantType field + formControl.trigger("tenantType"); + }; + + const options = [ + { + value: "GDAP", + label: "Add GDAP Tenant", + description: + "Select this option to add a new tenant to your Microsoft Partner center environment. We'll walk you through the steps of setting up GDAP.", + icon: , + }, + { + value: "Direct", + label: "Add Direct Tenant", + description: + "Select this option if you are not a Microsoft partner, or want to add a tenant outside of the scope of your partner center.", + icon: , + }, + ]; + + return ( + + + Select Tenant Type + + Choose how you want to add the tenant to your CIPP environment. + + + + {options.map((option) => { + const isSelected = selectedOption === option.value; + + return ( + handleOptionClick(option.value)} + variant="outlined" + sx={{ + cursor: "pointer", + ...(isSelected && { + boxShadow: (theme) => `0px 0px 0px 2px ${theme.palette.primary.main}`, + }), + "&:hover": { + ...(isSelected ? {} : { boxShadow: 8 }), + }, + }} + > + + + + {option.icon} + + + {option.label} + {option.description} + + + + + ); + })} + + + + ); +}; + +export default CippAddTenantTypeSelection; diff --git a/src/components/CippWizard/CippAlertsStep.jsx b/src/components/CippWizard/CippAlertsStep.jsx index 8e8e7b832ccb..d0d8689b85d2 100644 --- a/src/components/CippWizard/CippAlertsStep.jsx +++ b/src/components/CippWizard/CippAlertsStep.jsx @@ -1,10 +1,5 @@ -import { Alert, Stack, Typography, Box } from "@mui/material"; -import { Grid } from "@mui/system"; -import CippFormComponent from "../CippComponents/CippFormComponent"; +import { Alert, Stack, Typography } from "@mui/material"; import { CippWizardStepButtons } from "./CippWizardStepButtons"; -import { CippFormTenantSelector } from "../CippComponents/CippFormTenantSelector"; -import { CippFormCondition } from "../CippComponents/CippFormCondition"; -import alertList from "../../data/alerts.json"; export const CippAlertsStep = (props) => { const { formControl, onPreviousStep, onNextStep, currentStep } = props; @@ -21,6 +16,8 @@ export const CippAlertsStep = (props) => { { value: "4h", label: "Every 4 hours" }, { value: "1d", label: "Every 1 day" }, { value: "7d", label: "Every 7 days" }, + { value: "14d", label: "Every 14 days" }, + { value: "21d", label: "Every 21 days" }, { value: "30d", label: "Every 30 days" }, { value: "365d", label: "Every 365 days" }, ]; diff --git a/src/components/CippWizard/CippCAForm.jsx b/src/components/CippWizard/CippCAForm.jsx deleted file mode 100644 index 8f82bf27e792..000000000000 --- a/src/components/CippWizard/CippCAForm.jsx +++ /dev/null @@ -1,97 +0,0 @@ -import { Stack } from "@mui/material"; -import { Grid } from "@mui/system"; -import { CippWizardStepButtons } from "./CippWizardStepButtons"; -import CippJsonView from "../CippFormPages/CippJSONView"; -import CippFormComponent from "../CippComponents/CippFormComponent"; -import { ApiGetCall } from "../../api/ApiCall"; -import { useEffect, useState } from "react"; -import { useWatch } from "react-hook-form"; - -export const CippCAForm = (props) => { - const { formControl, onPreviousStep, onNextStep, currentStep } = props; - const values = formControl.getValues(); - const CATemplates = ApiGetCall({ url: "/api/ListCATemplates" }); - const [JSONData, setJSONData] = useState(); - const watcher = useWatch({ control: formControl.control, name: "TemplateList" }); - useEffect(() => { - if (CATemplates.isSuccess && watcher?.value) { - const template = CATemplates.data.find((template) => template.GUID === watcher.value); - if (template) { - setJSONData(template); - formControl.setValue("rawjson", JSON.stringify(template, null)); - } - } - }, [CATemplates, watcher]); - - return ( - - - ({ - label: template.displayName, - value: template.GUID, - })) - : [] - } - /> - - - - - - - - - - - - - ); -}; diff --git a/src/components/CippWizard/CippDirectTenantDeploy.jsx b/src/components/CippWizard/CippDirectTenantDeploy.jsx new file mode 100644 index 000000000000..b4a24d77f3fa --- /dev/null +++ b/src/components/CippWizard/CippDirectTenantDeploy.jsx @@ -0,0 +1,81 @@ +import { useEffect } from "react"; +import { Stack, Box, Typography, Link } from "@mui/material"; +import { CIPPM365OAuthButton } from "../CippComponents/CIPPM365OAuthButton"; +import { CippApiResults } from "../CippComponents/CippApiResults"; +import { ApiPostCall } from "../../api/ApiCall"; +import { CippWizardStepButtons } from "./CippWizardStepButtons"; + +export const CippDirectTenantDeploy = (props) => { + const { formControl, currentStep, onPreviousStep, onNextStep } = props; + + formControl.register("DirectTenantAuth", { + required: true, + }); + + const addTenant = ApiPostCall({ urlfromdata: true, relatedQueryKeys: ["tenants-table"] }); + + useEffect(() => { + if (addTenant.isSuccess) { + formControl.setValue("DirectTenantAuth", true); + formControl.trigger("DirectTenantAuth"); + } + }, [addTenant.isSuccess, formControl]); + + return ( + + + + Per-Tenant Authentication + + + Click the button below to connect to individual tenants. This option allows you to + authenticate directly to a tenant without using GDAP or Partner Center relationships. + + + You can authenticate to multiple tenants by repeating this step for each tenant you want + to add. More information about per-tenant authentication can be found in the{" "} + + authentication documentation + + . + + + + + { + const updatedTokenData = { + ...tokenData, + tenantMode: "perTenant", + }; + addTenant.mutate({ + url: "/api/ExecAddTenant", + data: updatedTokenData, + }); + }} + buttonText="Connect to Tenant" + showSuccessAlert={false} + scope="https://graph.microsoft.com/DelegatedPermissionGrant.ReadWrite.All https://graph.microsoft.com/Directory.ReadWrite.All https://graph.microsoft.com/AppRoleAssignment.ReadWrite.All offline_access profile openid" + /> + + + + + + + + + ); +}; + +export default CippDirectTenantDeploy; diff --git a/src/components/CippWizard/CippGDAPTenantOnboarding.jsx b/src/components/CippWizard/CippGDAPTenantOnboarding.jsx new file mode 100644 index 000000000000..4c5dc48a77cc --- /dev/null +++ b/src/components/CippWizard/CippGDAPTenantOnboarding.jsx @@ -0,0 +1,366 @@ +import { useEffect, useState } from "react"; +import { + Stack, + Box, + Typography, + Alert, + Button, + Accordion, + AccordionSummary, + AccordionDetails, + Skeleton, +} from "@mui/material"; +import { ApiPostCall, ApiGetCallWithPagination, ApiGetCall } from "../../api/ApiCall"; +import { CippWizardStepButtons } from "./CippWizardStepButtons"; +import { useWatch } from "react-hook-form"; +import { WizardSteps } from "./wizard-steps"; +import { getCippTranslation } from "../../utils/get-cipp-translation"; +import { getCippFormatting } from "../../utils/get-cipp-formatting"; +import CippDataTableButton from "../CippTable/CippDataTableButton"; +import { PlayArrow, Replay } from "@mui/icons-material"; +import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; +import { CippPropertyList } from "../CippComponents/CippPropertyList"; +import CippFormComponent from "../CippComponents/CippFormComponent"; + +export const CippGDAPTenantOnboarding = (props) => { + const { formControl, currentStep, onPreviousStep, onNextStep } = props; + const [currentOnboarding, setCurrentOnboarding] = useState(null); + const [activeStep, setActiveStep] = useState(0); + const [pollOnboarding, setPollOnboarding] = useState(false); + const [currentRelationship, setCurrentRelationship] = useState(null); + const [currentInvite, setCurrentInvite] = useState(null); + + formControl.register("GDAPOnboardingComplete", { + required: false, + }); + + const relationshipId = useWatch({ + control: formControl.control, + name: "GDAPRelationshipId", + }); + + const currentInvites = ApiGetCallWithPagination({ + url: "/api/ListGDAPInvite", + queryKey: "ListGDAPInvite-wizard", + }); + + const relationshipList = ApiGetCall({ + url: "/api/ListGraphRequest", + data: { + TenantFilter: "", + Endpoint: "tenantRelationships/delegatedAdminRelationships", + }, + queryKey: "GDAPRelationshipOnboarding-wizard", + }); + + const onboardingList = ApiGetCallWithPagination({ + url: "/api/ListTenantOnboarding", + queryKey: "ListTenantOnboarding-wizard", + }); + + const startOnboarding = ApiPostCall({ + urlFromData: true, + onResult: (data) => { + setCurrentOnboarding(data); + var stepCount = 0; + data.OnboardingSteps.map((step) => { + if (step.Status !== "pending" && step.Status !== "running" && step.Status !== "failed") { + stepCount++; + } + }); + setActiveStep(stepCount); + + if (data?.Status === "succeeded" || data?.Status === "failed") { + var runningSteps = data.OnboardingSteps?.find((step) => step.Status === "running"); + if (!runningSteps) { + setPollOnboarding(false); + if (data?.Status === "succeeded") { + formControl.setValue("GDAPOnboardingComplete", true); + formControl.trigger("GDAPOnboardingComplete"); + } + } + } + }, + }); + + // Load relationship and invite data + useEffect(() => { + if ( + relationshipList.isSuccess && + currentInvites.isSuccess && + onboardingList.isSuccess && + relationshipId + ) { + const relationship = relationshipList?.data?.Results?.find( + (rel) => rel?.id === relationshipId, + ); + + if (relationship) { + const relationshipData = { + label: + (relationship?.customer?.displayName ?? "Pending Invite") + + " - (" + + relationship?.id + + ")", + value: relationship?.id, + addedFields: { + customer: relationship?.customer, + id: relationship?.id, + createdDateTime: relationship?.createdDateTime, + accessDetails: relationship?.accessDetails, + status: relationship?.status, + autoExtendDuration: relationship?.autoExtendDuration, + lastModifiedDateTime: relationship?.lastModifiedDateTime, + }, + }; + setCurrentRelationship(relationshipData); + } + + const invite = + currentInvites?.data?.pages?.[0] && Array.isArray(currentInvites.data.pages[0]) + ? currentInvites.data.pages[0].find((invite) => invite?.RowKey === relationshipId) + : null; + setCurrentInvite(invite ?? null); + + const onboarding = + onboardingList.data?.pages?.[0] && Array.isArray(onboardingList.data.pages[0]) + ? onboardingList.data.pages[0].find((onboarding) => onboarding?.RowKey === relationshipId) + : null; + + if (onboarding) { + setCurrentOnboarding(onboarding); + var stepCount = 0; + onboarding?.OnboardingSteps?.map((step) => { + if ( + step?.Status !== "pending" && + step?.Status !== "running" && + step?.Status !== "failed" + ) { + stepCount++; + } + }); + setActiveStep(stepCount); + } + } + }, [ + relationshipList.isSuccess, + currentInvites.isSuccess, + onboardingList.isSuccess, + relationshipId, + ]); + + // Poll onboarding status + useEffect(() => { + if (pollOnboarding && startOnboarding.isSuccess) { + const interval = setInterval(() => { + startOnboarding.mutate({ + url: "/api/ExecOnboardTenant", + data: { + id: relationshipId, + }, + }); + }, 5000); + return () => clearInterval(interval); + } + }, [pollOnboarding, startOnboarding.isSuccess, relationshipId]); + + const handleStartOnboarding = () => { + var data = { + id: relationshipId, + }; + + if (formControl.getValues("ignoreMissingRoles")) { + data.ignoreMissingRoles = Boolean(formControl.getValues("ignoreMissingRoles")); + } + + if (formControl.getValues("standardsExcludeAllTenants")) { + data.standardsExcludeAllTenants = Boolean( + formControl.getValues("standardsExcludeAllTenants"), + ); + } + + startOnboarding.mutate({ + url: "/api/ExecOnboardTenant", + data: data, + }); + setPollOnboarding(true); + }; + + const handleRetryOnboarding = () => { + var data = { + id: relationshipId, + retry: true, + }; + + if (formControl.getValues("ignoreMissingRoles")) { + data.IgnoreMissingRoles = Boolean(formControl.getValues("ignoreMissingRoles")); + } + + if (formControl.getValues("standardsExcludeAllTenants")) { + data.standardsExcludeAllTenants = Boolean( + formControl.getValues("standardsExcludeAllTenants"), + ); + } + + startOnboarding.mutate({ + url: "/api/ExecOnboardTenant", + data: data, + }); + setPollOnboarding(true); + }; + + const isLoading = + relationshipList.isLoading || currentInvites.isLoading || onboardingList.isLoading; + + return ( + + + + GDAP Tenant Onboarding + + + Now that the invite has been accepted, you can start the onboarding process. This will map + the GDAP roles to security groups and validate access. + + + + The onboarding process can take up to 5 minutes to complete. + + + + + {isLoading && ( + + + + + + + + )} + + {!isLoading && !relationshipId && ( + + No relationship ID found. Please go back and complete the previous step. + + )} + + {!isLoading && relationshipId && currentRelationship && ( + + }> + Relationship Details + + + + + + )} + + {!isLoading && ( + <> + + + + + {!currentOnboarding && relationshipId && ( + + + + )} + + {currentOnboarding && ( + + + + + Onboarding Status: {getCippTranslation(currentOnboarding?.Status)} + + + Updated {getCippFormatting(currentOnboarding?.Timestamp, "Timestamp", "date")} + + + {currentOnboarding?.Logs && currentOnboarding.Logs.length > 0 && ( + + + + )} + ({ + title: step.Title, + description: step.Message, + error: step.Status === "failed", + loading: step.Status === "running", + })) ?? [] + } + /> + {(currentOnboarding?.Status === "failed" || + currentOnboarding?.Status === "succeeded") && ( + + + + )} + + + )} + + )} + + + + ); +}; + +export default CippGDAPTenantOnboarding; diff --git a/src/components/CippWizard/CippGDAPTenantSetup.jsx b/src/components/CippWizard/CippGDAPTenantSetup.jsx new file mode 100644 index 000000000000..d326bff26729 --- /dev/null +++ b/src/components/CippWizard/CippGDAPTenantSetup.jsx @@ -0,0 +1,281 @@ +import { useEffect, useState } from "react"; +import { + Stack, + Box, + Typography, + Link, + Alert, + Button, + Checkbox, + FormControlLabel, + Accordion, + AccordionSummary, + AccordionDetails, + SvgIcon, +} from "@mui/material"; +import { CippApiResults } from "../CippComponents/CippApiResults"; +import { ApiPostCall, ApiGetCall } from "../../api/ApiCall"; +import { CippWizardStepButtons } from "./CippWizardStepButtons"; +import CippFormComponent from "../CippComponents/CippFormComponent"; +import { useWatch } from "react-hook-form"; +import { CippPropertyList } from "../CippComponents/CippPropertyList"; +import { CippCopyToClipBoard } from "../CippComponents/CippCopyToClipboard"; +import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; +import { PlusIcon } from "@heroicons/react/24/outline"; + +export const CippGDAPTenantSetup = (props) => { + const { formControl, currentStep, onPreviousStep, onNextStep } = props; + const [inviteGenerated, setInviteGenerated] = useState(false); + const [inviteAccepted, setInviteAccepted] = useState(false); + const [inviteData, setInviteData] = useState(null); + const [createDefaults, setCreateDefaults] = useState(false); + + formControl.register("GDAPInviteAccepted", { + required: true, + }); + + formControl.register("GDAPRelationshipId", { + required: true, + }); + + const createCippDefaults = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: ["ListGDAPRoleTemplatesAutocomplete-wizard", "ListGDAPRoleTemplates-wizard"], + }); + + const selectedTemplate = useWatch({ + control: formControl.control, + name: "gdapTemplate", + }); + + const templateList = ApiGetCall({ + url: "/api/ExecGDAPRoleTemplate", + queryKey: "ListGDAPRoleTemplates-wizard", + }); + + const generateInvite = ApiPostCall({ + urlFromData: true, + }); + + useEffect(() => { + if (templateList?.data?.Results?.length === 0) { + setCreateDefaults(true); + } else { + setCreateDefaults(false); + } + }, [templateList.isSuccess, templateList.data]); + + const handleGenerateInvite = () => { + if (!selectedTemplate) { + return; + } + + const inviteData = { + roleMappings: selectedTemplate.value, + Reference: "Created via Setup Wizard", + }; + + generateInvite.mutate({ + url: "/api/ExecGDAPInvite", + data: inviteData, + }); + }; + + useEffect(() => { + if (generateInvite.isSuccess && generateInvite.data) { + const invite = generateInvite.data?.data?.Invite || generateInvite.data?.Invite; + if (invite) { + setInviteGenerated(true); + setInviteData(invite); + // Store the relationship ID for the next step + formControl.setValue("GDAPRelationshipId", invite.RowKey); + } + } + }, [generateInvite.isSuccess, generateInvite.data, formControl]); + + useEffect(() => { + formControl.setValue("GDAPInviteAccepted", inviteAccepted); + formControl.trigger("GDAPInviteAccepted"); + }, [inviteAccepted, formControl]); + + return ( + + + + GDAP Tenant Setup + + + This process will help you set up a new GDAP relationship with a customer tenant. You'll + generate an invite that the customer needs to accept before completing onboarding. For + more information about GDAP setup, visit the{" "} + + GDAP documentation + + . + + + + {!inviteGenerated && ( + <> + {createDefaults && ( + + + The CIPP Defaults template is missing from the GDAP Role Templates. Create it now? + + + + + )} + + option.TemplateId, + valueField: (option) => option.RoleMappings, + }} + multiple={false} + creatable={false} + required={true} + /> + + + {selectedTemplate?.value && ( + + + }> + Selected Role Mappings + + + { + return { + label: `${role.RoleName}`, + value: `Mapped to '${role.GroupName}'`, + }; + })} + /> + + + + )} + + + + + + + + )} + + {inviteGenerated && inviteData && ( + <> + + + Invite generated successfully! Send the invite link below to your customer's Global + Administrator to accept. + + + + + + }> + Invite Details + + + + + {inviteData.InviteUrl} + + + + ), + }, + { + label: "Reference", + value: inviteData.Reference || "N/A", + }, + ]} + /> + + + + + + + + The customer must accept this invite as a Global Administrator before you can + proceed with onboarding. + + + setInviteAccepted(e.target.checked)} + /> + } + label="This invite has been accepted in the customer tenant, and we're ready to proceed with onboarding." + /> + + + )} + + + + ); +}; + +export default CippGDAPTenantSetup; diff --git a/src/components/CippWizard/CippIntunePolicy.jsx b/src/components/CippWizard/CippIntunePolicy.jsx index e79dd9c07e6d..455c14adf751 100644 --- a/src/components/CippWizard/CippIntunePolicy.jsx +++ b/src/components/CippWizard/CippIntunePolicy.jsx @@ -4,18 +4,47 @@ import { CippWizardStepButtons } from "./CippWizardStepButtons"; import CippJsonView from "../CippFormPages/CippJSONView"; import CippFormComponent from "../CippComponents/CippFormComponent"; import { ApiGetCall } from "../../api/ApiCall"; -import { use, useEffect, useState } from "react"; +import { useEffect, useState } from "react"; import { useWatch } from "react-hook-form"; import { CippFormCondition } from "../CippComponents/CippFormCondition"; +import { useSettings } from "../../hooks/use-settings"; + +const assignmentFilterTypeOptions = [ + { label: "Include - Apply policy to devices matching filter", value: "include" }, + { label: "Exclude - Apply policy to devices NOT matching filter", value: "exclude" }, +]; export const CippIntunePolicy = (props) => { const { formControl, onPreviousStep, onNextStep, currentStep } = props; const values = formControl.getValues(); + const tenantFilter = useSettings()?.currentTenant; const CATemplates = ApiGetCall({ url: "/api/ListIntuneTemplates", queryKey: "IntuneTemplates" }); const [JSONData, setJSONData] = useState(); const watcher = useWatch({ control: formControl.control, name: "TemplateList" }); const jsonWatch = useWatch({ control: formControl.control, name: "RAWJson" }); const selectedTenants = useWatch({ control: formControl.control, name: "tenantFilter" }); + + // do not provide inputs for reserved placeholders + const reservedPlaceholders = [ + "%serial%", + "%systemroot%", + "%systemdrive%", + "%temp%", + "%tenantid%", + "%tenantfilter%", + "%initialdomain%", + "%tenantname%", + "%partnertenantid%", + "%samappid%", + "%userprofile%", + "%username%", + "%userdomain%", + "%windir%", + "%programfiles%", + "%programfiles(x86)%", + "%programdata%", + ]; + useEffect(() => { if (CATemplates.isSuccess && watcher?.value) { const template = CATemplates.data.find((template) => template.GUID === watcher.value); @@ -59,7 +88,7 @@ export const CippIntunePolicy = (props) => { /> - + { compareType="is" compareValue="customGroup" > - + { /> + + + filter.displayName, + valueField: "displayName", + }} + /> + + + + + { const rawJson = jsonWatch ? jsonWatch : ""; const placeholderMatches = [...rawJson.matchAll(/%(\w+)%/g)].map((m) => m[1]); const uniquePlaceholders = Array.from(new Set(placeholderMatches)); - if (uniquePlaceholders.length === 0 || selectedTenants.length === 0) { + // Filter out reserved placeholders + const filteredPlaceholders = uniquePlaceholders.filter( + (placeholder) => !reservedPlaceholders.includes(`%${placeholder.toLowerCase()}%`) + ); + if (filteredPlaceholders.length === 0 || selectedTenants.length === 0) { return null; } - return uniquePlaceholders.map((placeholder) => ( - + return filteredPlaceholders.map((placeholder) => ( + {selectedTenants.map((tenant, idx) => ( {
  • A CIPP Service Account. For more information on how to create a service account, click{" "} here
  • -
  • (Temporary) Global Administrator permissions for the CIPP Service Account
  • +
  • + An account with at minimum:
  • Application Administrator
  • +
  • User Administrator
  • +
  • Multi-factor authentication enabled for the CIPP Service Account, with no trusted locations or other exclusions. diff --git a/src/components/CippWizard/CippTenantModeDeploy.jsx b/src/components/CippWizard/CippTenantModeDeploy.jsx index 8f8683af405e..c14bb0aa573b 100644 --- a/src/components/CippWizard/CippTenantModeDeploy.jsx +++ b/src/components/CippWizard/CippTenantModeDeploy.jsx @@ -1,10 +1,22 @@ import { useEffect } from "react"; -import { Stack, Box, Typography, Link } from "@mui/material"; +import { + Stack, + Box, + Typography, + Link, + Chip, + Skeleton, + SvgIcon, + IconButton, + Tooltip, +} from "@mui/material"; +import { Person, Apartment, Sync } from "@mui/icons-material"; import { CIPPM365OAuthButton } from "../CippComponents/CIPPM365OAuthButton"; import { CippApiResults } from "../CippComponents/CippApiResults"; -import { ApiPostCall } from "../../api/ApiCall"; +import { ApiPostCall, ApiGetCall } from "../../api/ApiCall"; import { CippWizardStepButtons } from "./CippWizardStepButtons"; import { CippTenantTable } from "./CippTenantTable"; +import { getCippTranslation } from "../../utils/get-cipp-translation"; export const CippTenantModeDeploy = (props) => { const { formControl, currentStep, onPreviousStep, onNextStep } = props; @@ -13,8 +25,15 @@ export const CippTenantModeDeploy = (props) => { required: true, }); - const updateRefreshToken = ApiPostCall({ urlfromdata: true }); - const addTenant = ApiPostCall({ urlfromdata: true }); + const updateRefreshToken = ApiPostCall({ urlfromdata: true, relatedQueryKeys: ["listAppId"] }); + const addTenant = ApiPostCall({ urlfromdata: true, relatedQueryKeys: ["tenants-table"] }); + + // Get partner tenant info using the same API call as CIPPM365OAuthButton + const partnerTenantInfo = ApiGetCall({ + url: `/api/ExecListAppId`, + queryKey: "listAppId", + waiting: true, + }); useEffect(() => { if (updateRefreshToken.isSuccess) { @@ -30,23 +49,35 @@ export const CippTenantModeDeploy = (props) => { return ( - - {/* Partner Tenant (GDAP) */} - - Partner Tenant + + + Partner Tenant + + + partnerTenantInfo.refetch()} + disabled={partnerTenantInfo.isLoading} + > + + + + + + CIPP uses the partner center to automatically retrieve your tenants, however you can also + authenticate to individual tenants. - Using GDAP is recommended for CIPP, however you can also authenticate to individual - tenants. It is still highly recommended to connect to your partner tenant first, even if - you are not a Microsoft CSP. This allows CIPP to send notifications, perform permission - checks, and update permissions when required. + Please logon to your partner tenant. Not a Microsoft Partner? No problem, simply enter + your primary tenant information. Once that's done you can add more tenants using the + button below. Please remember to log onto a service account dedicated for CIPP. More info? Check out the{" "} @@ -55,65 +86,204 @@ export const CippTenantModeDeploy = (props) => { . - - - { - const updatedTokenData = { - ...tokenData, - tenantMode: "GDAP", - }; - updateRefreshToken.mutate({ - url: "/api/ExecUpdateRefreshToken", - data: updatedTokenData, - }); + {(partnerTenantInfo.isLoading || partnerTenantInfo.isFetching) && ( + + - + > + + + + + + + + + + )} + + {!partnerTenantInfo.isLoading && + !partnerTenantInfo.isFetching && + partnerTenantInfo?.data?.orgName && ( + + + + + + + + + + {partnerTenantInfo.data.orgName} + + + {partnerTenantInfo.data.tenantId} + + + {partnerTenantInfo.data.authenticatedUserDisplayName && ( + + + + + + {partnerTenantInfo.data.authenticatedUserDisplayName} + + + {partnerTenantInfo.data.authenticatedUserPrincipalName} + + + )} + + + {partnerTenantInfo.data.isPartnerTenant ? ( + + ) : ( + + )} + + + + + )} + + {!partnerTenantInfo.isLoading && + !partnerTenantInfo.isFetching && + !partnerTenantInfo?.data?.orgName && ( + + + + + No partner tenant connected. Click the button below to authenticate with your + partner tenant. + + + + + )} + + + { + const updatedTokenData = { + ...tokenData, + tenantMode: "GDAP", + }; + updateRefreshToken.mutate({ + url: "/api/ExecUpdateRefreshToken", + data: updatedTokenData, + }); + }} + buttonText={ + partnerTenantInfo?.data?.orgName + ? "Change Partner Tenant" + : "Connect to Partner Tenant" + } + showSuccessAlert={false} + promptBeforeAuth={ + partnerTenantInfo?.data?.orgName + ? `Are you sure you want to change the partner tenant from '${partnerTenantInfo?.data?.orgName}'? If you are trying to add another tenant, use the per-tenant authentication below.` + : false + } + scope="https://graph.microsoft.com/DelegatedPermissionGrant.ReadWrite.All https://graph.microsoft.com/Directory.ReadWrite.All https://graph.microsoft.com/AppRoleAssignment.ReadWrite.All offline_access profile openid" + /> + + {/* Per-Tenant */} - Per-Tenant Authentication + Direct Tenant Authentication - Click the button below to connect to individual tenants. You can authenticate to multiple - tenants by repeating this step for each tenant you want to add. Accidentally added the - wrong tenant? Use the table below to remove it. + Click the button below to connect to individual tenants that are not in your partner + center, or any extra tenants you want to add if you're not a Microsoft + Partner. + + + You can authenticate to multiple tenants by repeating this step for each tenant you want + to add. + {!partnerTenantInfo?.data?.orgName && ( + + + Please connect to your partner tenant first before adding separate tenants. + + + )} + - { - const updatedTokenData = { - ...tokenData, - tenantMode: "perTenant", - }; - addTenant.mutate({ - url: "/api/ExecAddTenant", - data: updatedTokenData, - }); - }} - buttonText="Connect to Separate Tenants" - showSuccessAlert={false} - /> + + {!partnerTenantInfo?.data?.orgName && ( + + )} + + { + if (!partnerTenantInfo?.data?.orgName) return; + const updatedTokenData = { + ...tokenData, + tenantMode: "perTenant", + }; + addTenant.mutate({ + url: "/api/ExecAddTenant", + data: updatedTokenData, + }); + }} + buttonText="Connect to Separate Tenants" + showSuccessAlert={false} + scope="https://graph.microsoft.com/DelegatedPermissionGrant.ReadWrite.All https://graph.microsoft.com/Directory.ReadWrite.All https://graph.microsoft.com/AppRoleAssignment.ReadWrite.All offline_access profile openid" + /> + + - + { currentStep, onPreviousStep, preText, + includeOffboardingDefaults = false, } = props; return ( @@ -23,6 +24,7 @@ export const CippTenantStep = (props) => { formControl={formControl} allTenants={allTenants} type={type} + includeOffboardingDefaults={includeOffboardingDefaults} preselectedEnabled={true} /> row.displayName !== "*Partner Tenant", }, + { + label: "Refresh CIPPDB Cache", + type: "GET", + url: `/api/ExecCIPPDBCache`, + icon: , + data: { Name: "Name", TenantFilter: "customerId" }, + confirmText: "Select the cache type to refresh for [displayName]:", + multiPost: false, + hideBulk: true, + fields: [ + { + type: "autoComplete", + name: "Name", + label: "Cache Type", + placeholder: "Select a cache type", + options: cacheTypes.map((cacheType) => ({ + label: cacheType.friendlyName, + value: cacheType.type, + description: cacheType.description, + })), + multiple: false, + creatable: false, + required: true, + }, + ], + customDataformatter: (rowData, actionData, formData) => { + const tenantFilter = rowData?.customerId || rowData?.defaultDomainName || ""; + // Extract value from autoComplete object (which returns { label, value } or just value) + const cacheTypeName = formData.Name?.value || formData.Name || ""; + return { + Name: cacheTypeName, + TenantFilter: tenantFilter, + }; + }, + }, ]; // Offcanvas details @@ -116,6 +151,7 @@ export const CippTenantTable = ({ <> { - const { postUrl, orientation = "horizontal", steps } = props; - + const { + postUrl, + orientation = "horizontal", + steps, + contentMaxWidth = "md", + } = props; + const formControl = useForm({ mode: "onChange", defaultValues: props.initialState }); const formWatcher = useWatch({ control: formControl.control, @@ -34,7 +39,9 @@ export const CippWizard = (props) => { }, []); const content = useMemo(() => { - const StepComponent = stepsWithVisibility[activeStep].component; + const currentStep = stepsWithVisibility[activeStep]; + const StepComponent = currentStep.component; + return ( { lastStep={stepsWithVisibility.length - 1} currentStep={activeStep} postUrl={postUrl} - options={stepsWithVisibility[activeStep].componentProps?.options} - title={stepsWithVisibility[activeStep].componentProps?.title} - subtext={stepsWithVisibility[activeStep].componentProps?.subtext} - valuesKey={stepsWithVisibility[activeStep].componentProps?.valuesKey} - {...stepsWithVisibility[activeStep].componentProps} + options={currentStep.componentProps?.options} + title={currentStep.componentProps?.title} + subtext={currentStep.componentProps?.subtext} + valuesKey={currentStep.componentProps?.valuesKey} + {...currentStep.componentProps} /> ); }, [activeStep, handleNext, handleBack, stepsWithVisibility, formControl]); + // Get the maxWidth for the current step, fallback to global setting + const currentStepMaxWidth = useMemo(() => { + const currentStep = stepsWithVisibility[activeStep]; + return currentStep.maxWidth ?? contentMaxWidth; + }, [activeStep, stepsWithVisibility, contentMaxWidth]); + return ( {orientation === "vertical" ? ( @@ -80,7 +93,7 @@ export const CippWizard = (props) => { steps={stepsWithVisibility} />
    - {content} + {content}
    diff --git a/src/components/CippWizard/CippWizardAppApproval.jsx b/src/components/CippWizard/CippWizardAppApproval.jsx index 2502fb1a3103..ba53800a2cb2 100644 --- a/src/components/CippWizard/CippWizardAppApproval.jsx +++ b/src/components/CippWizard/CippWizardAppApproval.jsx @@ -1,10 +1,9 @@ -import { Stack, Typography, Alert, Box } from "@mui/material"; +import { Stack, Alert } from "@mui/material"; import CippWizardStepButtons from "./CippWizardStepButtons"; import { Grid } from "@mui/system"; import CippFormComponent from "../CippComponents/CippFormComponent"; import { getCippValidator } from "../../utils/get-cipp-validator"; import { CippFormCondition } from "../CippComponents/CippFormCondition"; -import { useEffect } from "react"; import CippPermissionPreview from "../CippComponents/CippPermissionPreview"; import { useWatch } from "react-hook-form"; import { CippPropertyListCard } from "../CippCards/CippPropertyListCard"; @@ -12,7 +11,7 @@ import { CippPropertyListCard } from "../CippCards/CippPropertyListCard"; export const CippWizardAppApproval = (props) => { const { postUrl, formControl, onPreviousStep, onNextStep, currentStep } = props; - // Watch for the selected template to access permissions + // Watch for the selected template to access permissions and type const selectedTemplate = useWatch({ control: formControl.control, name: "selectedTemplate", @@ -57,9 +56,13 @@ export const CippWizardAppApproval = (props) => { addedField: { AppId: "AppId", AppName: "AppName", + AppType: "AppType", + GalleryTemplateId: "GalleryTemplateId", + GalleryInformation: "GalleryInformation", PermissionSetId: "PermissionSetId", PermissionSetName: "PermissionSetName", Permissions: "Permissions", + ApplicationManifest: "ApplicationManifest", }, showRefresh: true, }} @@ -76,19 +79,75 @@ export const CippWizardAppApproval = (props) => { propertyItems={[ { label: "App Name", value: selectedTemplate.addedFields.AppName }, { label: "App ID", value: selectedTemplate.addedFields.AppId }, + { + label: "Template Type", + value: + (selectedTemplate.addedFields.AppType || "EnterpriseApp") === + "GalleryTemplate" + ? "Gallery Template" + : (selectedTemplate.addedFields.AppType || "EnterpriseApp") === + "ApplicationManifest" + ? "Application Manifest" + : "Enterprise App", + }, { label: "Permission Set", - value: selectedTemplate.addedFields.PermissionSetName, + value: + (selectedTemplate.addedFields.AppType || "EnterpriseApp") === + "GalleryTemplate" + ? "Auto-Consent" + : (selectedTemplate.addedFields.AppType || "EnterpriseApp") === + "ApplicationManifest" + ? "Defined in Manifest" + : selectedTemplate.addedFields.PermissionSetName, }, ]} title="Template Details" /> - + {(selectedTemplate.addedFields.AppType || "EnterpriseApp") === "EnterpriseApp" ? ( + + ) : (selectedTemplate.addedFields.AppType || "EnterpriseApp") === + "ApplicationManifest" ? ( + + ) : ( + + )} )} diff --git a/src/components/CippWizard/CippWizardAssignmentFilterTemplates.jsx b/src/components/CippWizard/CippWizardAssignmentFilterTemplates.jsx new file mode 100644 index 000000000000..00aaf0c8a453 --- /dev/null +++ b/src/components/CippWizard/CippWizardAssignmentFilterTemplates.jsx @@ -0,0 +1,144 @@ +import { Stack } from "@mui/material"; +import CippWizardStepButtons from "./CippWizardStepButtons"; +import CippFormComponent from "../CippComponents/CippFormComponent"; +import { Grid } from "@mui/system"; +import { useWatch } from "react-hook-form"; +import { useEffect } from "react"; + +const DEVICE_PLATFORM_OPTIONS = [ + { label: "Windows 10 and later", value: "windows10AndLater" }, + { label: "iOS", value: "iOS" }, + { label: "macOS", value: "macOS" }, + { label: "Android Enterprise", value: "androidForWork" }, + { label: "Android device administrator", value: "android" }, + { label: "Android Work Profile", value: "androidWorkProfile" }, + { label: "Android (AOSP)", value: "androidAOSP" }, +]; + +const APP_PLATFORM_OPTIONS = [ + { label: "Windows", value: "windowsMobileApplicationManagement" }, + { label: "Android", value: "androidMobileApplicationManagement" }, + { label: "iOS/iPadOS", value: "iOSMobileApplicationManagement" }, +]; + +const FILTER_TYPE_OPTIONS = [ + { label: "Devices", value: "devices" }, + { label: "Apps", value: "apps" }, +]; + +export const CippWizardAssignmentFilterTemplates = (props) => { + const { postUrl, formControl, onPreviousStep, onNextStep, currentStep } = props; + const templateSelection = useWatch({ control: formControl.control, name: "TemplateList" }); + const assignmentFilterManagementType = + useWatch({ + control: formControl?.control ?? formControl, + name: "assignmentFilterManagementType", + defaultValue: "devices", + }) ?? "devices"; + const platformOptions = + assignmentFilterManagementType === "apps" ? APP_PLATFORM_OPTIONS : DEVICE_PLATFORM_OPTIONS; + + useEffect(() => { + if (templateSelection?.value) { + const { addedFields } = templateSelection; + + formControl.setValue( + "assignmentFilterManagementType", + addedFields.assignmentFilterManagementType || "devices" + ); + formControl.setValue("platform", addedFields.platform || ""); + formControl.setValue("displayName", addedFields.displayName || ""); + formControl.setValue("description", addedFields.description || ""); + formControl.setValue("rule", addedFields.rule || ""); + } + }, [templateSelection, formControl]); + + return ( + + + + + `${option.Displayname || option.displayName} (${option.platform})`, + valueField: "GUID", + addedField: { + platform: "platform", + displayName: "displayName", + description: "description", + rule: "rule", + assignmentFilterManagementType: "assignmentFilterManagementType", + }, + showRefresh: true, + }} + /> + + + + + + + + + + + + + + + + + + + + + ); +}; diff --git a/src/components/CippWizard/CippWizardAutoComplete.jsx b/src/components/CippWizard/CippWizardAutoComplete.jsx index a4e8f237f911..7012b80c5aba 100644 --- a/src/components/CippWizard/CippWizardAutoComplete.jsx +++ b/src/components/CippWizard/CippWizardAutoComplete.jsx @@ -29,7 +29,7 @@ export const CippWizardAutoComplete = (props) => { api={{ ...api, tenantFilter: currentTenant ? currentTenant.value : undefined, - queryKey: `${api.url}-${currentTenant ? currentTenant.value : "default"}`, + queryKey: api.queryKey ? api.queryKey.replace('{tenant}', currentTenant ? currentTenant.value : "default") : `${api.url}-${currentTenant ? currentTenant.value : "default"}`, }} multiple={type === "single" ? false : true} disableClearable={true} diff --git a/src/components/CippWizard/CippWizardAutopilotImport.jsx b/src/components/CippWizard/CippWizardAutopilotImport.jsx new file mode 100644 index 000000000000..42067830a30a --- /dev/null +++ b/src/components/CippWizard/CippWizardAutopilotImport.jsx @@ -0,0 +1,542 @@ +import { + Button, + Link, + Stack, + Box, + Typography, + Dialog, + DialogTitle, + DialogContent, + DialogActions, + TextField, + Alert, +} from "@mui/material"; +import { CippWizardStepButtons } from "./CippWizardStepButtons"; +import { CippDataTable } from "../CippTable/CippDataTable"; +import { useWatch } from "react-hook-form"; +import { Delete, FileDownload, Upload, Add } from "@mui/icons-material"; +import { useEffect, useState } from "react"; +import React from "react"; + +export const CippWizardAutopilotImport = (props) => { + const { + onNextStep, + formControl, + currentStep, + onPreviousStep, + fields, + name, + nameToCSVMapping, + fileName = "template", + } = props; + const tableData = useWatch({ control: formControl.control, name: name }); + const [newTableData, setTableData] = useState([]); + const fileInputRef = React.useRef(null); + const [manualDialogOpen, setManualDialogOpen] = useState(false); + const [manualInputs, setManualInputs] = useState([{}]); + const inputRefs = React.useRef([]); + const [validationErrors, setValidationErrors] = useState([]); + + const handleRemoveItem = (row) => { + if (row === undefined) return false; + const index = tableData?.findIndex((item) => item === row); + const newTableData = [...tableData]; + newTableData.splice(index, 1); + setTableData(newTableData); + }; + + const handleFileSelect = (event) => { + const file = event.target.files[0]; + if (file) { + const reader = new FileReader(); + reader.onload = (e) => { + const text = e.target.result; + const lines = text.split("\n"); + const firstLine = lines[0].split(",").map((header) => header.trim()); + + // Check if this is a headerless CSV (no recognizable headers) + const hasHeaders = firstLine.some((header) => { + // Check if any header matches our expected field names + return fields.some( + (field) => + header === field.propertyName || + header === field.friendlyName || + (field.alternativePropertyNames && field.alternativePropertyNames.includes(header)) + ); + }); + + let headers, headerMapping; + + if (hasHeaders) { + // Normal CSV with headers + headers = firstLine; + + // Create mapping for property names and alternative property names + headerMapping = {}; + fields.forEach((field) => { + // Map primary property name to itself + headerMapping[field.propertyName] = field.propertyName; + // Map friendly name to property name + headerMapping[field.friendlyName] = field.propertyName; + // Map alternative property names to the primary property name + if (field.alternativePropertyNames) { + field.alternativePropertyNames.forEach((altName) => { + headerMapping[altName] = field.propertyName; + }); + } + }); + + // Check if all required columns are present (using any of the supported formats) + const missingColumns = fields.filter((field) => { + // Only serial number is required + if (field.propertyName !== "SerialNumber") { + return false; // Skip non-required fields + } + + const hasPropertyName = headers.includes(field.propertyName); + const hasFriendlyName = headers.includes(field.friendlyName); + const hasAlternativeName = field.alternativePropertyNames + ? field.alternativePropertyNames.some((altName) => headers.includes(altName)) + : false; + return !hasPropertyName && !hasFriendlyName && !hasAlternativeName; + }); + + if (missingColumns.length > 0) { + const missingFormats = missingColumns + .map((f) => { + const formats = [f.propertyName, f.friendlyName]; + if (f.alternativePropertyNames) { + formats.push(...f.alternativePropertyNames); + } + return `"${formats.join('" or "')}"`; + }) + .join(", "); + console.error(`CSV is missing required columns: ${missingFormats}`); + return; + } + } else { + // Headerless CSV - assume order: serial, productid, hash + headers = ["SerialNumber", "productKey", "hardwareHash"]; + headerMapping = { + SerialNumber: "SerialNumber", + productKey: "productKey", + hardwareHash: "hardwareHash", + }; + + // Check if we have at least 3 columns for the expected order + if (firstLine.length < 3) { + console.error( + "Headerless CSV must have at least 3 columns in order: Serial Number, Product ID, Hardware Hash" + ); + return; + } + } + + const data = lines + .slice(hasHeaders ? 1 : 0) // Skip first line only if it has headers + .filter((line) => line.trim() !== "") // Remove empty lines + .map((line) => { + const values = line.split(","); + // Initialize with all fields as empty strings + const row = fields.reduce((obj, field) => { + obj[field.propertyName] = ""; + return obj; + }, {}); + // Fill in the values from the CSV + headers.forEach((header, i) => { + const propertyName = headerMapping[header]; + if (propertyName) { + row[propertyName] = values[i]?.trim() || ""; + } + }); + return row; + }); + + setTableData(data); + formControl.setValue(name, data, { shouldValidate: true }); + }; + reader.readAsText(file); + } + }; + + const handleManualInputChange = (rowIndex, field, value) => { + setManualInputs((prev) => { + const newInputs = [...prev]; + if (!newInputs[rowIndex]) { + newInputs[rowIndex] = {}; + } + newInputs[rowIndex][field] = value; + return newInputs; + }); + }; + + const handleAddRow = () => { + setManualInputs((prev) => [...prev, {}]); + }; + + const validateRows = (rows) => { + const errors = []; + const seenSerials = new Set(); + const seenProductKeys = new Set(); + + rows.forEach((row, index) => { + const serialField = fields.find((f) => f.propertyName === "SerialNumber"); + const productKeyField = fields.find((f) => f.propertyName === "productKey"); + const manufacturerField = fields.find((f) => f.propertyName === "oemManufacturerName"); + const modelField = fields.find((f) => f.propertyName === "modelName"); + const hardwareHashField = fields.find((f) => f.propertyName === "hardwareHash"); + + if ( + serialField && + row[serialField.propertyName] && + seenSerials.has(row[serialField.propertyName]) + ) { + errors.push(`Row ${index + 1}: Duplicate serial number "${row[serialField.propertyName]}"`); + } + if (serialField && row[serialField.propertyName]) { + seenSerials.add(row[serialField.propertyName]); + } + + if ( + productKeyField && + row[productKeyField.propertyName] && + seenProductKeys.has(row[productKeyField.propertyName]) + ) { + errors.push( + `Row ${index + 1}: Duplicate product key "${row[productKeyField.propertyName]}"` + ); + } + if (productKeyField && row[productKeyField.propertyName]) { + seenProductKeys.add(row[productKeyField.propertyName]); + } + + // Validate Product ID length (must be exactly 13 characters) + if ( + productKeyField && + row[productKeyField.propertyName] && + row[productKeyField.propertyName].length !== 13 + ) { + errors.push(`Row ${index + 1}: Product ID must be exactly 13 characters long`); + } + + // Validate Serial Number requirements: must have either Manufacturer+Model OR Hardware Hash + if ( + serialField && + row[serialField.propertyName] && + row[serialField.propertyName].trim() !== "" + ) { + const hasManufacturer = + manufacturerField && + row[manufacturerField.propertyName] && + row[manufacturerField.propertyName].trim() !== ""; + const hasModel = + modelField && row[modelField.propertyName] && row[modelField.propertyName].trim() !== ""; + const hasHardwareHash = + hardwareHashField && + row[hardwareHashField.propertyName] && + row[hardwareHashField.propertyName].trim() !== ""; + + const hasManufacturerAndModel = hasManufacturer && hasModel; + const hasHash = hasHardwareHash; + + if (!hasManufacturerAndModel && !hasHash) { + errors.push( + `Row ${ + index + 1 + }: Serial Number must be accompanied by either both Manufacturer and Model, or Hardware Hash` + ); + } + } + }); + + setValidationErrors(errors); + return errors.length === 0; + }; + + const handleManualAdd = () => { + const newRows = manualInputs + .filter((row) => Object.values(row).some((value) => value && value.trim() !== "")) + .map((row) => { + // Ensure all fields exist in the row + return fields.reduce((obj, field) => { + obj[field.propertyName] = row[field.propertyName] || ""; + return obj; + }, {}); + }); + + if (newRows.length === 0) { + setManualDialogOpen(false); + setManualInputs([{}]); + return; + } + + if (!validateRows(newRows)) { + return; + } + + const updatedData = [...tableData, ...newRows]; + setTableData(updatedData); + formControl.setValue(name, updatedData, { shouldValidate: true }); + setManualInputs([{}]); + setManualDialogOpen(false); + }; + + const handleDialogClose = () => { + setManualDialogOpen(false); + setManualInputs([{}]); + }; + + const handleKeyPress = (event, rowIndex) => { + const productKeyField = fields.find((f) => f.propertyName === "productKey"); + if ( + event.key === "Enter" && + productKeyField && + manualInputs[rowIndex]?.[productKeyField.propertyName] + ) { + if (rowIndex === manualInputs.length - 1) { + const newRowIndex = manualInputs.length; + setManualInputs((prev) => [...prev, {}]); + // Wait for the next render cycle to set focus + setTimeout(() => { + const newInput = inputRefs.current[newRowIndex]?.[productKeyField.propertyName]; + if (newInput) { + newInput.focus(); + } + }, 0); + } + } + }; + + const handleRemoveRow = (rowIndex) => { + setManualInputs((prev) => prev.filter((_, index) => index !== rowIndex)); + }; + + useEffect(() => { + console.log("Table Data:", newTableData); + formControl.setValue(name, newTableData, { + shouldValidate: true, + }); + }, [newTableData]); + + // Add effect to validate rows when manualInputs changes + useEffect(() => { + validateRows(manualInputs); + }, [manualInputs]); + + const actions = [ + { + icon: , + label: "Delete Row", + confirmText: "Are you sure you want to delete this row?", + customFunction: handleRemoveItem, + noConfirm: true, + }, + ]; + + return ( + + f.propertyName)} + cardButton={ + + + + + + + } + /> + + + Manual Import + + + {validationErrors.length > 0 && ( + + + Please fix the following validation errors: + + {validationErrors.map((error, index) => ( + + โ€ข {error} + + ))} + + )} + {manualInputs.map((row, rowIndex) => ( + + {/* Row identifier */} + + {rowIndex + 1} + + {fields.map((field) => ( + + { + if (!inputRefs.current[rowIndex]) { + inputRefs.current[rowIndex] = {}; + } + inputRefs.current[rowIndex][field.propertyName] = el; + }} + label={field.friendlyName} + value={row[field.propertyName] || ""} + onChange={(e) => + handleManualInputChange(rowIndex, field.propertyName, e.target.value) + } + onKeyDown={(e) => + field.propertyName === "productKey" && handleKeyPress(e, rowIndex) + } + fullWidth + size="small" + /> + + ))} + + + ))} + + + + + + + + + + + + + + ); +}; diff --git a/src/components/CippWizard/CippWizardAutopilotOptions.jsx b/src/components/CippWizard/CippWizardAutopilotOptions.jsx index 89297abb5f1e..a289a0589c89 100644 --- a/src/components/CippWizard/CippWizardAutopilotOptions.jsx +++ b/src/components/CippWizard/CippWizardAutopilotOptions.jsx @@ -9,7 +9,7 @@ export const CippWizardAutopilotOptions = (props) => { <> - + { const { postUrl, formControl, onPreviousStep, onNextStep, currentStep } = props; @@ -11,7 +11,7 @@ export const CippWizardBulkOptions = (props) => { <> - + { formControl={formControl} /> - + { {fields.map((field) => ( <> - + { ))} - + @@ -108,7 +108,7 @@ export const CippWizardCSVImport = (props) => { {!manualFields && ( <> - + @@ -119,7 +119,7 @@ export const CippWizardCSVImport = (props) => { {fields.map((field) => ( - + { /> ); -}; +}; \ No newline at end of file diff --git a/src/components/CippWizard/CippWizardConfirmation.jsx b/src/components/CippWizard/CippWizardConfirmation.jsx index cd675d9be406..3f8ecd288590 100644 --- a/src/components/CippWizard/CippWizardConfirmation.jsx +++ b/src/components/CippWizard/CippWizardConfirmation.jsx @@ -7,7 +7,16 @@ import { getCippTranslation } from "../../utils/get-cipp-translation"; import { getCippFormatting } from "../../utils/get-cipp-formatting"; export const CippWizardConfirmation = (props) => { - const { postUrl, lastStep, formControl, onPreviousStep, onNextStep, currentStep } = props; + const { + postUrl, + lastStep, + formControl, + onPreviousStep, + onNextStep, + currentStep, + columns = 2 // Default to 2 columns for backward compatibility + } = props; + const formValues = formControl.getValues(); const formEntries = Object.entries(formValues); @@ -40,24 +49,64 @@ export const CippWizardConfirmation = (props) => { !blacklist.includes(key) && key !== "tenantFilter" && key !== "tenant" && - !["user", "userPrincipalName", "username"].includes(key) + !["user", "userPrincipalName", "username"].includes(key) && + !key.startsWith('HIDDEN_') ); - const halfIndex = Math.ceil(filteredEntries.length / 2); - const firstHalf = filteredEntries.slice(0, halfIndex); - const secondHalf = filteredEntries.slice(halfIndex); + // Calculate total entries including special ones for even distribution + const totalEntries = filteredEntries.length + (tenantEntry ? 1 : 0) + (userEntry ? 1 : 0); - if (tenantEntry) { - firstHalf.unshift(tenantEntry); - } + // Dynamically split entries based on columns prop with special entries distributed + const splitEntries = () => { + const result = Array.from({ length: columns }, () => []); - if (userEntry) { - secondHalf.unshift(userEntry); - } + // Add special entries to different columns first + if (tenantEntry) { + result[0].push(tenantEntry); + } + if (userEntry && result[1]) { + result[1].push(userEntry); + } + + // Distribute remaining entries across columns to balance them + filteredEntries.forEach((entry) => { + // Find the column with the fewest entries + let targetColumn = 0; + let minLength = result[0].length; + + for (let i = 1; i < columns; i++) { + if (result[i].length < minLength) { + minLength = result[i].length; + targetColumn = i; + } + } + + result[targetColumn].push(entry); + }); + + return result; + }; + + const columnEntries = splitEntries(); + + // Calculate Grid sizes based on number of columns + const getGridSize = () => { + const sizes = { + 1: { lg: 12, md: 12, xs: 12 }, + 2: { lg: 6, md: 6, xs: 12 }, + 3: { lg: 4, md: 6, xs: 12 }, + 4: { lg: 3, md: 6, xs: 12 }, + 6: { lg: 2, md: 4, xs: 12 }, + }; + + return sizes[columns] || sizes[2]; // Default to 2 columns + }; + + const gridSize = getGridSize(); return ( - {firstHalf.length === 0 ? ( + {filteredEntries.length === 0 ? ( @@ -68,28 +117,19 @@ export const CippWizardConfirmation = (props) => { ) : ( - - - {firstHalf.map(([key, value]) => ( - - ))} - - - - - {secondHalf.map(([key, value]) => ( - - ))} - - + {columnEntries.map((columnData, index) => ( + + + {columnData.map(([key, value]) => ( + + ))} + + + ))} )} diff --git a/src/components/CippWizard/CippWizardDialogContext.js b/src/components/CippWizard/CippWizardDialogContext.js new file mode 100644 index 000000000000..2ff78f19fe1b --- /dev/null +++ b/src/components/CippWizard/CippWizardDialogContext.js @@ -0,0 +1,10 @@ +import { createContext, useContext } from "react"; + +/** + * When CippWizardPage is used in dialogMode, it provides this context with a + * reference to the DialogActions DOM node. CippWizardStepButtons checks for + * it and portals its navigation buttons there, keeping the main content area + * clean while anchoring controls at the bottom of the dialog. + */ +export const CippWizardDialogContext = createContext(null); +export const useCippWizardDialog = () => useContext(CippWizardDialogContext); diff --git a/src/components/CippWizard/CippWizardGroupTemplates.jsx b/src/components/CippWizard/CippWizardGroupTemplates.jsx index 2ac2d6435cd6..2e1679808723 100644 --- a/src/components/CippWizard/CippWizardGroupTemplates.jsx +++ b/src/components/CippWizard/CippWizardGroupTemplates.jsx @@ -4,33 +4,52 @@ import CippFormComponent from "../CippComponents/CippFormComponent"; import { CippFormCondition } from "../CippComponents/CippFormCondition"; import { Grid } from "@mui/system"; import { useWatch } from "react-hook-form"; -import { useEffect } from "react"; +import { useEffect, useRef } from "react"; export const CippWizardGroupTemplates = (props) => { const { postUrl, formControl, onPreviousStep, onNextStep, currentStep } = props; const watcher = useWatch({ control: formControl.control, name: "TemplateList" }); + const lastAppliedTemplate = useRef(null); const groupOptions = [ { label: "Dynamic Group", value: "dynamic" }, - { label: "Dynamic Distribution Group", value: "dynamicdistribution" }, + { label: "Dynamic Distribution Group", value: "dynamicDistribution" }, { label: "Security Group", value: "generic" }, { label: "Distribution Group", value: "distribution" }, - { label: "Azure Role Group", value: "azurerole" }, + { label: "Azure Role Group", value: "azureRole" }, { label: "Mail Enabled Security Group", value: "security" }, ]; useEffect(() => { - if (watcher?.value) { - formControl.setValue("groupType", watcher.addedFields.groupType); - formControl.setValue("Displayname", watcher.addedFields.Displayname); - formControl.setValue("Description", watcher.addedFields.Description); - formControl.setValue("username", watcher.addedFields.username); - formControl.setValue("allowExternal", watcher.addedFields.allowExternal); - formControl.setValue("MembershipRules", watcher.addedFields.MembershipRules); + if (watcher?.value && watcher.value !== lastAppliedTemplate.current) { + lastAppliedTemplate.current = watcher.value; + console.log("Loading template:", watcher); + + // Set groupType first to ensure conditional fields are visible + formControl.setValue("groupType", watcher.addedFields.groupType, { shouldValidate: true }); + + // Use setTimeout to ensure the DOM updates with the groupType before setting other fields + setTimeout(() => { + formControl.setValue("displayName", watcher.addedFields.displayName, { + shouldValidate: true, + }); + formControl.setValue("description", watcher.addedFields.description, { + shouldValidate: true, + }); + formControl.setValue("username", watcher.addedFields.username, { shouldValidate: true }); + formControl.setValue("allowExternal", watcher.addedFields.allowExternal, { + shouldValidate: true, + }); + formControl.setValue("membershipRules", watcher.addedFields.membershipRules, { + shouldValidate: true, + }); + + console.log("Set membershipRules to:", watcher.addedFields.membershipRules); + }, 100); } }, [watcher]); return ( - + { valueField: "GUID", addedField: { groupType: "groupType", - Displayname: "Displayname", - Description: "Description", + displayName: "displayName", + description: "description", username: "username", allowExternal: "allowExternal", - MembershipRules: "MembershipRules", + membershipRules: "membershipRules", }, + showRefresh: true, }} /> - + { validators={{ required: "Please select a group type" }} /> - + - + - + { formControl={formControl} /> - - + + - - - - + + + + - - - - - - - + + { } }, [selectedUsers]); + // Set initial defaults source on component mount if not already set useEffect(() => { - if (userSettingsDefaults?.offboardingDefaults) { - userSettingsDefaults.offboardingDefaults.forEach((setting) => { - formControl.setValue(setting.name, setting.value); - }); + const currentDefaultsSource = formControl.getValues("HIDDEN_defaultsSource"); + if (!currentDefaultsSource) { + // Default to user defaults since form starts with user defaults from initialState within the wizard component + formControl.setValue("HIDDEN_defaultsSource", "user"); } - }, [userSettingsDefaults]); + }, [formControl]); + + // Apply defaults only once per tenant or when tenant changes + useEffect(() => { + const currentTenantId = currentTenant?.value; + const appliedDefaultsForTenant = formControl.getValues("HIDDEN_appliedDefaultsForTenant"); + + // Only apply defaults if we haven't applied them for this tenant yet + if (currentTenantId && appliedDefaultsForTenant !== currentTenantId) { + const tenantDefaults = currentTenant?.addedFields?.offboardingDefaults; + + if (tenantDefaults) { + // Apply tenant defaults + Object.entries(tenantDefaults).forEach(([key, value]) => { + formControl.setValue(key, value); + }); + // Set the source indicator + formControl.setValue("HIDDEN_defaultsSource", "tenant"); + } else if (userSettingsDefaults?.offboardingDefaults) { + // Apply user defaults if no tenant defaults + userSettingsDefaults.offboardingDefaults.forEach((setting) => { + formControl.setValue(setting.name, setting.value); + }); + // Set the source indicator + formControl.setValue("HIDDEN_defaultsSource", "user"); + } + + // Mark that we've applied defaults for this tenant + formControl.setValue("HIDDEN_appliedDefaultsForTenant", currentTenantId); + } + }, [currentTenant?.value, userSettingsDefaults, formControl]); useEffect(() => { if (disableForwarding) { formControl.setValue("forward", null); - formControl.setValue("keepCopy", false); + formControl.setValue("KeepCopy", false); } }, [disableForwarding, formControl]); + const getDefaultsSource = () => { + return formControl.getValues("HIDDEN_defaultsSource") || "user"; + }; + return ( - + + + {getDefaultsSource() === "tenant" ? "Using Tenant Defaults" : "Using User Defaults"} + { /> + @@ -123,6 +170,12 @@ export const CippWizardOffboarding = (props) => { type="switch" formControl={formControl} /> + { - + @@ -155,6 +208,7 @@ export const CippWizardOffboarding = (props) => { dataKey: "Results", labelField: (option) => `${option.displayName} (${option.userPrincipalName})`, valueField: "id", + queryKey: `Offboarding-Users-${currentTenant ? currentTenant.value : "default"}`, data: { Endpoint: "users", manualPagination: true, @@ -179,6 +233,7 @@ export const CippWizardOffboarding = (props) => { url: "/api/ListGraphRequest", dataKey: "Results", tenantFilter: currentTenant ? currentTenant.value : undefined, + queryKey: `Offboarding-Users-${currentTenant ? currentTenant.value : "default"}`, data: { Endpoint: "users", manualPagination: true, @@ -203,6 +258,7 @@ export const CippWizardOffboarding = (props) => { valueField: "id", url: "/api/ListGraphRequest", dataKey: "Results", + queryKey: `Offboarding-Users-${currentTenant ? currentTenant.value : "default"}`, data: { Endpoint: "users", manualPagination: true, @@ -244,6 +300,7 @@ export const CippWizardOffboarding = (props) => { valueField: "id", url: "/api/ListGraphRequest", dataKey: "Results", + queryKey: `Offboarding-Users-${currentTenant ? currentTenant.value : "default"}`, data: { Endpoint: "users", manualPagination: true, @@ -256,7 +313,7 @@ export const CippWizardOffboarding = (props) => { /> { - + { compareType="is" compareValue={true} > - + Scheduled Offboarding Date { fullWidth /> - - - Send results to: - - - - + + + Send results to: + + + + + + + + diff --git a/src/components/CippWizard/CippWizardPage.jsx b/src/components/CippWizard/CippWizardPage.jsx index 545d229c92c5..cda2b0cf5c58 100644 --- a/src/components/CippWizard/CippWizardPage.jsx +++ b/src/components/CippWizard/CippWizardPage.jsx @@ -1,9 +1,24 @@ -import Head from "next/head"; -import { Box, Button, Container, Stack, SvgIcon } from "@mui/material"; +import { + Box, + Button, + Container, + Dialog, + DialogActions, + DialogContent, + DialogTitle, + Divider, + IconButton, + Stack, + SvgIcon, + useMediaQuery, +} from "@mui/material"; +import { Close } from "@mui/icons-material"; import { CippWizard } from "./CippWizard"; import { useRouter } from "next/router"; import { ArrowLeftIcon } from "@mui/x-date-pickers"; import { CippHead } from "../CippComponents/CippHead"; +import { CippWizardDialogContext } from "./CippWizardDialogContext"; +import { useState, useCallback } from "react"; const CippWizardPage = (props) => { const router = useRouter(); @@ -14,8 +29,63 @@ const CippWizardPage = (props) => { wizardTitle, backButton = true, wizardOrientation = "horizontal", + maxWidth = "xl", + dialogMode = false, + open = false, + onClose, + dialogIcon, + relatedQueryKeys, ...other } = props; + + const mdDown = useMediaQuery((theme) => theme.breakpoints.down("md")); + const [actionsEl, setActionsEl] = useState(null); + const actionsRef = useCallback((el) => setActionsEl(el), []); + + const wizardNode = ( + + ); + + if (dialogMode) { + return ( + + + {dialogIcon} + {wizardTitle} + + + + + + + + {wizardNode} + + + + + + ); + } + return ( <> @@ -23,32 +93,16 @@ const CippWizardPage = (props) => { sx={{ backgroundColor: "background.default", flexGrow: 1, - py: 4, + pb: 4, }} > - - {backButton && ( - - )} + - + + {wizardNode} + diff --git a/src/components/CippWizard/CippWizardStepButtons.jsx b/src/components/CippWizard/CippWizardStepButtons.jsx index fd80d7c872fa..64b8f0e23703 100644 --- a/src/components/CippWizard/CippWizardStepButtons.jsx +++ b/src/components/CippWizard/CippWizardStepButtons.jsx @@ -1,7 +1,9 @@ import { Button, Stack } from "@mui/material"; import { useFormState } from "react-hook-form"; +import { createPortal } from "react-dom"; import { ApiPostCall } from "../../api/ApiCall"; import { CippApiResults } from "../CippComponents/CippApiResults"; +import { useCippWizardDialog } from "./CippWizardDialogContext"; export const CippWizardStepButtons = (props) => { const { @@ -13,12 +15,24 @@ export const CippWizardStepButtons = (props) => { formControl, noNextButton = false, noSubmitButton = false, + nextButtonDisabled = false, replacementBehaviour, queryKeys, ...other } = props; const { isValid, isSubmitted, isSubmitting } = useFormState({ control: formControl.control }); - const sendForm = ApiPostCall({ relatedQueryKeys: queryKeys }); + const dialogContext = useCippWizardDialog(); + const mergedQueryKeys = [ + ...(Array.isArray(queryKeys) ? queryKeys : queryKeys ? [queryKeys] : []), + ...(Array.isArray(dialogContext?.relatedQueryKeys) + ? dialogContext.relatedQueryKeys + : dialogContext?.relatedQueryKeys + ? [dialogContext.relatedQueryKeys] + : []), + ]; + const sendForm = ApiPostCall({ + relatedQueryKeys: mergedQueryKeys.length ? mergedQueryKeys : undefined, + }); const handleSubmit = () => { const values = formControl.getValues(); const newData = {}; @@ -32,40 +46,55 @@ export const CippWizardStepButtons = (props) => { sendForm.mutate({ url: postUrl, data: newData }); }; + const buttonStack = ( + + {dialogContext?.onClose && ( + + )} + {currentStep > 0 && ( + + )} + {!noNextButton && currentStep !== lastStep && ( + + )} + {!noSubmitButton && currentStep === lastStep && ( + + + + )} + + ); + return ( <> - - {currentStep > 0 && ( - - )} - {!noNextButton && currentStep !== lastStep && ( - - )} - {!noSubmitButton && currentStep === lastStep && ( -
    - -
    - )} -
    + {dialogContext?.actionsEl ? createPortal(buttonStack, dialogContext.actionsEl) : buttonStack} ); }; diff --git a/src/components/CippWizard/CippWizardVacationActions.jsx b/src/components/CippWizard/CippWizardVacationActions.jsx new file mode 100644 index 000000000000..c7376a1528da --- /dev/null +++ b/src/components/CippWizard/CippWizardVacationActions.jsx @@ -0,0 +1,378 @@ +import { useEffect } from "react"; +import { Alert, Skeleton, Stack, Typography, Card, CardContent, CardHeader, Divider } from "@mui/material"; +import { Grid } from "@mui/system"; +import CippWizardStepButtons from "./CippWizardStepButtons"; +import CippFormComponent from "../CippComponents/CippFormComponent"; +import { CippFormCondition } from "../CippComponents/CippFormCondition"; +import { CippFormUserSelector } from "../CippComponents/CippFormUserSelector"; +import { useWatch } from "react-hook-form"; +import { ApiGetCall } from "../../api/ApiCall"; + +export const CippWizardVacationActions = (props) => { + const { postUrl, formControl, onPreviousStep, onNextStep, currentStep, lastStep } = props; + + const currentTenant = useWatch({ control: formControl.control, name: "tenantFilter" }); + const tenantDomain = currentTenant?.value || currentTenant; + + const enableCA = useWatch({ control: formControl.control, name: "enableCAExclusion" }); + const enableMailbox = useWatch({ control: formControl.control, name: "enableMailboxPermissions" }); + const enableOOO = useWatch({ control: formControl.control, name: "enableOOO" }); + const atLeastOneEnabled = enableCA || enableMailbox || enableOOO; + + const users = useWatch({ control: formControl.control, name: "Users" }); + const firstUser = Array.isArray(users) && users.length > 0 ? users[0] : null; + const firstUserUpn = firstUser?.addedFields?.userPrincipalName || firstUser?.value || null; + + const oooData = ApiGetCall({ + url: "/api/ListOoO", + data: { UserId: firstUserUpn, tenantFilter: tenantDomain }, + queryKey: `OOO-${firstUserUpn}-${tenantDomain}`, + waiting: !!(enableOOO && firstUserUpn && tenantDomain), + }); + + const isFetchingOOO = oooData.isFetching; + + useEffect(() => { + if (oooData.isSuccess && oooData.data) { + const currentInternal = formControl.getValues("oooInternalMessage"); + const currentExternal = formControl.getValues("oooExternalMessage"); + if (!currentInternal) { + formControl.setValue("oooInternalMessage", oooData.data.InternalMessage || ""); + } + if (!currentExternal) { + formControl.setValue("oooExternalMessage", oooData.data.ExternalMessage || ""); + } + } + }, [oooData.isSuccess, oooData.data]); + + return ( + + + {/* CA Policy Exclusion Section */} + + + + + + + + + + + + Vacation mode uses group-based exclusions for reliability. The exclusion group + follows the format: 'Vacation Exclusion - $Policy.displayName' + + + + `${option.displayName}`, + valueField: "id", + showRefresh: true, + } + : null + } + multiple={false} + formControl={formControl} + validators={{ + validate: (option) => { + if (!option?.value) { + return "Picking a policy is required"; + } + return true; + }, + }} + required={true} + disabled={!tenantDomain} + /> + + + + + + + + + + + {/* Mailbox Permissions Section */} + + + + + + + + + + + + Grant temporary mailbox permissions (Full Access, Send As, Send On Behalf) and + optional calendar access to delegates. Permissions are automatically added at the + start date and removed at the end date. + + + + {/* Delegate(s) */} + + + + + {/* Permission Types */} + + + + + {/* AutoMap (visible when FullAccess is selected) */} + + + + + + + {/* Include Calendar Permissions */} + + + + + {/* Calendar permission details */} + + + { + if (!option?.value) { + return "Calendar permission level is required"; + } + return true; + }, + }} + required={true} + /> + + + + + + + + + + + + + + {/* Out of Office Section */} + + + + + + + + + + + + Out of office will be enabled with the messages below at the start date and + automatically disabled at the end date. The disable task preserves any message + updates the user may have made during their vacation. + + + + {isFetchingOOO ? ( + <> + + Internal Message + + + + ) : ( + + )} + + + {isFetchingOOO ? ( + <> + + External Message (optional) + + + + ) : ( + + )} + + + + + + + + + + ); +}; diff --git a/src/components/CippWizard/CippWizardVacationConfirmation.jsx b/src/components/CippWizard/CippWizardVacationConfirmation.jsx new file mode 100644 index 000000000000..da86c414feb0 --- /dev/null +++ b/src/components/CippWizard/CippWizardVacationConfirmation.jsx @@ -0,0 +1,290 @@ +import { Alert, Button, Card, CardContent, CardHeader, Chip, Divider, Stack, Typography } from "@mui/material"; +import { Grid } from "@mui/system"; +import { CippWizardStepButtons } from "./CippWizardStepButtons"; +import { CippApiResults } from "../CippComponents/CippApiResults"; +import { ApiPostCall } from "../../api/ApiCall"; +import { useWatch } from "react-hook-form"; +import Link from "next/link"; + +export const CippWizardVacationConfirmation = (props) => { + const { formControl, onPreviousStep, currentStep, lastStep } = props; + + const values = useWatch({ control: formControl.control }); + + const caExclusion = ApiPostCall({ relatedQueryKeys: ["VacationMode"] }); + const mailboxVacation = ApiPostCall({ relatedQueryKeys: ["VacationMode"] }); + const oooVacation = ApiPostCall({ relatedQueryKeys: ["VacationMode"] }); + + const tenantFilter = values.tenantFilter?.value || values.tenantFilter; + const isSubmitting = caExclusion.isPending || mailboxVacation.isPending || oooVacation.isPending; + const hasSubmitted = caExclusion.isSuccess || mailboxVacation.isSuccess || oooVacation.isSuccess; + + const handleSubmit = () => { + if (values.enableCAExclusion) { + caExclusion.mutate({ + url: "/api/ExecCAExclusion", + data: { + tenantFilter, + Users: values.Users, + PolicyId: values.PolicyId?.value, + StartDate: values.startDate, + EndDate: values.endDate, + vacation: true, + reference: values.reference || null, + postExecution: values.postExecution || [], + excludeLocationAuditAlerts: values.excludeLocationAuditAlerts || false, + }, + }); + } + + if (values.enableMailboxPermissions) { + mailboxVacation.mutate({ + url: "/api/ExecScheduleMailboxVacation", + data: { + tenantFilter, + mailboxOwners: values.Users, + delegates: values.delegates, + permissionTypes: values.permissionTypes, + autoMap: values.autoMap, + includeCalendar: values.includeCalendar, + calendarPermission: values.calendarPermission, + canViewPrivateItems: values.canViewPrivateItems, + startDate: values.startDate, + endDate: values.endDate, + reference: values.reference || null, + postExecution: values.postExecution || [], + }, + }); + } + + if (values.enableOOO) { + oooVacation.mutate({ + url: "/api/ExecScheduleOOOVacation", + data: { + tenantFilter, + Users: values.Users, + internalMessage: values.oooInternalMessage, + externalMessage: values.oooExternalMessage, + startDate: values.startDate, + endDate: values.endDate, + reference: values.reference || null, + postExecution: values.postExecution || [], + }, + }); + } + }; + + const formatDate = (epoch) => { + if (!epoch) return "Not set"; + return new Date(epoch * 1000).toLocaleString(); + }; + + const formatUsers = (users) => { + if (!users || users.length === 0) return "None"; + return users.map((u) => u.label || u.value || u).join(", "); + }; + + return ( + + {/* Summary */} + + + + + + {/* General Info */} + + + Tenant + + {tenantFilter || "Not selected"} + + + + + Users Going on Vacation + + {formatUsers(values.Users)} + + + + + Start Date + + {formatDate(values.startDate)} + + + + + End Date + + {formatDate(values.endDate)} + + + {values.reference && ( + + + Reference + + {values.reference} + + )} + + + + + {/* Enabled Actions */} + {(() => { + const enabledCount = [values.enableCAExclusion, values.enableMailboxPermissions, values.enableOOO].filter(Boolean).length; + const mdSize = enabledCount >= 3 ? 4 : enabledCount === 2 ? 6 : 12; + return ( + + {values.enableCAExclusion && ( + + + } + /> + + + +
    + + Policy + + + {values.PolicyId?.label || "Not selected"} + +
    + {values.excludeLocationAuditAlerts && ( +
    + + Location-based audit log alerts will be excluded + +
    + )} +
    +
    +
    +
    + )} + + {values.enableMailboxPermissions && ( + + + } + /> + + + +
    + + Delegates + + {formatUsers(values.delegates)} +
    +
    + + Permission Types + + + {(values.permissionTypes || []).map((p) => p.label || p.value).join(", ") || + "None"} + +
    + {values.includeCalendar && ( +
    + + Calendar + + + {values.calendarPermission?.label || "Not set"} + {values.canViewPrivateItems ? " (Can view private items)" : ""} + +
    + )} +
    +
    +
    +
    + )} + + {values.enableOOO && ( + + + } + /> + + + +
    + + Internal Message + + + {values.oooInternalMessage + ? String(values.oooInternalMessage).replace(/[<>]/g, "").slice(0, 120) + + (String(values.oooInternalMessage).replace(/[<>]/g, "").length > 120 ? "โ€ฆ" : "") + : "Not set"} + +
    + {values.oooExternalMessage && ( +
    + + External Message + + + {String(values.oooExternalMessage).replace(/[<>]/g, "").slice(0, 120) + + (String(values.oooExternalMessage).replace(/[<>]/g, "").length > 120 ? "โ€ฆ" : "")} + +
    + )} +
    +
    +
    +
    + )} +
    + ); + })()} + + {/* API Results */} + {values.enableCAExclusion && } + {values.enableMailboxPermissions && } + {values.enableOOO && } + + {/* Navigation + Custom Submit */} + + {currentStep > 0 && ( + + )} + {hasSubmitted ? ( + + ) : ( + + )} + +
    + ); +}; diff --git a/src/components/CippWizard/CippWizardVacationSchedule.jsx b/src/components/CippWizard/CippWizardVacationSchedule.jsx new file mode 100644 index 000000000000..719f194a6d07 --- /dev/null +++ b/src/components/CippWizard/CippWizardVacationSchedule.jsx @@ -0,0 +1,98 @@ +import { Stack, Typography } from "@mui/material"; +import { Grid } from "@mui/system"; +import CippWizardStepButtons from "./CippWizardStepButtons"; +import CippFormComponent from "../CippComponents/CippFormComponent"; + +export const CippWizardVacationSchedule = (props) => { + const { postUrl, formControl, onPreviousStep, onNextStep, currentStep, lastStep } = props; + + return ( + + + Set the date range for the vacation period and optional notification settings. + + + + {/* Start Date */} + + { + if (!value) { + return "Start date is required"; + } + return true; + }, + }} + /> + + + {/* End Date */} + + { + const startDate = formControl.getValues("startDate"); + if (!value) { + return "End date is required"; + } + if (startDate && value && new Date(value * 1000) < new Date(startDate * 1000)) { + return "End date must be after start date"; + } + return true; + }, + }} + /> + + + {/* Post Execution Actions */} + + + + + {/* Reference */} + + + + + + + + ); +}; diff --git a/src/components/CippWizard/CustomerForm.jsx b/src/components/CippWizard/CustomerForm.jsx index aa4c14057886..7eedc7a7e456 100644 --- a/src/components/CippWizard/CustomerForm.jsx +++ b/src/components/CippWizard/CustomerForm.jsx @@ -70,7 +70,7 @@ export const CustomerForm = (props) => { return ( {fields.map((field, index) => ( - + ({ })); const WizardStepIcon = (props) => { - const { active, completed, error } = props; + const { active, completed, error, loading } = props; + if (loading) { + return ( + + + + ); + } if (error) { return ( { > {steps.map((step) => ( - + {`Step ${steps.indexOf(step) ? steps.indexOf(step) + 1 : 1}`} diff --git a/src/components/ExecutiveReportButton.js b/src/components/ExecutiveReportButton.js new file mode 100644 index 000000000000..e25d22d56b11 --- /dev/null +++ b/src/components/ExecutiveReportButton.js @@ -0,0 +1,3256 @@ +import { useState, useMemo } from "react"; +import { + Button, + Tooltip, + Dialog, + DialogTitle, + DialogContent, + DialogActions, + Box, + Typography, + FormControlLabel, + Switch, + Grid, + Paper, + Stack, + IconButton, +} from "@mui/material"; +import { PictureAsPdf, Download, Close, Settings } from "@mui/icons-material"; +import { + Document, + Page, + Text, + View, + StyleSheet, + PDFViewer, + Image, + Svg, + Path, + Circle, + Line, + Rect, +} from "@react-pdf/renderer"; +import { useSettings } from "../hooks/use-settings"; +import { useSecureScore } from "../hooks/use-securescore"; +import { ApiGetCall } from "../api/ApiCall"; + +// PRODUCTION-GRADE PDF SYSTEM WITH CONDITIONAL RENDERING +const ExecutiveReportDocument = ({ + tenantName, + userStats, + brandingSettings, + secureScoreData, + licensingData, + deviceData, + conditionalAccessData, + standardsCompareData, + driftComplianceData, + standardTemplatesData, + sectionConfig = { + executiveSummary: true, + securityStandards: true, + driftCompliance: false, + secureScore: true, + licenseManagement: true, + deviceManagement: true, + conditionalAccess: true, + infographics: true, + }, +}) => { + const currentDate = new Date().toLocaleDateString("en-US", { + year: "numeric", + month: "long", + day: "numeric", + }); + const brandColor = brandingSettings?.colour || "#F77F00"; + + // ENTERPRISE DESIGN SYSTEM - JOBS/RAMS/IVE PRINCIPLES + const styles = StyleSheet.create({ + // FOUNDATION - CONSISTENT STATE OWNERSHIP (FLORENCE) + page: { + flexDirection: "column", + backgroundColor: "#FFFFFF", + fontFamily: "Helvetica", + fontSize: 10, + lineHeight: 1.4, + color: "#2D3748", + padding: 40, // Consistent base padding + }, + + // COVER PAGE - PROPORTIONAL & INTENTIONAL (JOBS/RAMS/IVE) + coverPage: { + flexDirection: "column", + backgroundColor: "#FFFFFF", + fontFamily: "Helvetica", + padding: 60, + justifyContent: "space-between", + minHeight: "100%", + }, + + coverHeader: { + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + marginBottom: 80, + }, + + logoSection: { + flexDirection: "row", + alignItems: "center", + }, + + logo: { + height: 100, + marginRight: 12, + }, + + headerLogo: { + height: 30, + }, + + brandName: { + fontSize: 12, + fontWeight: "bold", + color: brandColor, + letterSpacing: 1, + textTransform: "uppercase", + }, + + dateStamp: { + fontSize: 9, + color: "#000000", + textTransform: "uppercase", + letterSpacing: 0.5, + }, + + // MODERN HERO SECTION + coverHero: { + flex: 1, + justifyContent: "flex-start", + alignItems: "flex-start", + paddingTop: 40, + }, + + coverLabel: { + backgroundColor: brandColor, + color: "#FFFFFF", + fontSize: 10, + fontWeight: "bold", + textTransform: "uppercase", + letterSpacing: 1, + paddingHorizontal: 16, + paddingVertical: 8, + borderRadius: 20, + marginBottom: 30, + alignSelf: "flex-start", + }, + + mainTitle: { + fontSize: 48, + fontWeight: "bold", + color: "#1A202C", + lineHeight: 1.1, + marginBottom: 20, + letterSpacing: -1, + textTransform: "uppercase", + }, + + titleAccent: { + color: brandColor, + }, + + subtitle: { + fontSize: 14, + color: "#000000", + fontWeight: "normal", + lineHeight: 1.5, + marginBottom: 40, + maxWidth: 400, + }, + + tenantCard: { + backgroundColor: "transparent", + padding: 0, + maxWidth: 400, + }, + + tenantName: { + fontSize: 18, + fontWeight: "bold", + color: "#000000", + marginBottom: 8, + textAlign: "center", + }, + + tenantMeta: { + fontSize: 11, + color: "#333333", + textAlign: "center", + }, + + coverFooter: { + textAlign: "center", + marginTop: 60, + }, + + confidential: { + fontSize: 9, + color: "#A0AEC0", + textTransform: "uppercase", + letterSpacing: 1, + }, + + // CONTENT PAGES - MODULAR COMPOSITION (FROST) + pageHeader: { + borderBottom: `1px solid ${brandColor}`, + paddingBottom: 12, + marginBottom: 24, + flexDirection: "row", + justifyContent: "space-between", + alignItems: "flex-start", + pageBreakAfter: "avoid", + breakAfter: "avoid", + }, + + pageHeaderContent: { + flex: 1, + }, + + pageTitle: { + fontSize: 20, + fontWeight: "bold", + color: "#1A202C", + marginBottom: 8, + }, + + pageSubtitle: { + fontSize: 11, + color: "#4A5568", + fontWeight: "normal", + }, + + // SECTIONS - REPEATABLE PATTERNS (FROST) + section: { + marginBottom: 24, + pageBreakInside: "avoid", + breakInside: "avoid", + }, + + sectionTitle: { + fontSize: 14, + fontWeight: "bold", + color: brandColor, + marginBottom: 12, + pageBreakAfter: "avoid", + breakAfter: "avoid", + orphans: 3, + widows: 3, + }, + + bodyText: { + fontSize: 9, + color: "#2D3748", + lineHeight: 1.5, + marginBottom: 12, + textAlign: "justify", + }, + + // STATS GRID - PERFECT ALIGNMENT (SPOOL) + statsGrid: { + flexDirection: "row", + gap: 12, + marginBottom: 20, + pageBreakInside: "avoid", + breakInside: "avoid", + }, + + statCard: { + flex: 1, + backgroundColor: "#FFFFFF", + border: `1px solid #E2E8F0`, + borderRadius: 6, + padding: 16, + alignItems: "center", + borderTop: `3px solid ${brandColor}`, + }, + + statNumber: { + fontSize: 16, + fontWeight: "bold", + color: brandColor, + marginBottom: 4, + }, + + statLabel: { + fontSize: 7, + color: "#4A5568", + textTransform: "uppercase", + letterSpacing: 0.5, + textAlign: "center", + fontWeight: "bold", + }, + + // COMPLIANCE BARS - VISUAL CONFIDENCE (SPOOL) + complianceList: { + gap: 8, + }, + + complianceItem: { + flexDirection: "row", + alignItems: "center", + backgroundColor: "#FFFFFF", + padding: 10, + borderRadius: 4, + border: `1px solid #F0F0F0`, + }, + + complianceLabel: { + fontSize: 8, + color: "#2D3748", + width: 80, + fontWeight: "bold", + }, + + complianceBarContainer: { + flex: 1, + height: 6, + backgroundColor: "#E2E8F0", + marginHorizontal: 10, + borderRadius: 3, + overflow: "hidden", + }, + + complianceBar: { + height: 6, + backgroundColor: brandColor, + borderRadius: 3, + }, + + complianceValue: { + fontSize: 8, + color: "#2D3748", + width: 25, + textAlign: "right", + fontWeight: "bold", + }, + + // SECURE SCORE CARDS - ENTERPRISE GRADE + scoreGrid: { + flexDirection: "row", + gap: 12, + marginBottom: 20, + pageBreakInside: "avoid", + breakInside: "avoid", + }, + + scoreCard: { + flex: 1, + backgroundColor: "#FFFFFF", + border: `1px solid #E2E8F0`, + borderRadius: 6, + padding: 16, + alignItems: "center", + borderTop: `3px solid ${brandColor}`, + }, + + scoreNumber: { + fontSize: 20, + fontWeight: "bold", + color: brandColor, + marginBottom: 8, + }, + + scoreLabel: { + fontSize: 7, + color: "#4A5568", + textTransform: "uppercase", + letterSpacing: 0.5, + textAlign: "center", + fontWeight: "bold", + }, + + // CHART AREA - BROWSER CONSTRAINTS (RAUCH) + chartContainer: { + backgroundColor: "#FFFFFF", + border: `1px solid #E2E8F0`, + borderRadius: 6, + padding: 16, + marginBottom: 20, + alignItems: "center", + pageBreakInside: "avoid", + breakInside: "avoid", + }, + + chartTitle: { + fontSize: 10, + fontWeight: "bold", + color: "#2D3748", + marginBottom: 12, + }, + + chartData: { + fontSize: 9, + color: "#4A5568", + textAlign: "center", + lineHeight: 1.4, + }, + + // CONTROLS TABLE - HIGH PERFORMANCE (RAUCH) + controlsTable: { + border: `1px solid #E2E8F0`, + borderRadius: 6, + overflow: "hidden", + pageBreakInside: "avoid", + breakInside: "avoid", + }, + + tableHeader: { + flexDirection: "row", + backgroundColor: brandColor, + paddingVertical: 10, + paddingHorizontal: 12, + }, + + headerCell: { + fontSize: 7, + fontWeight: "bold", + color: "#FFFFFF", + textTransform: "uppercase", + letterSpacing: 0.5, + }, + + headerName: { + flex: 2, + }, + + headerDesc: { + flex: 1, + marginLeft: 12, + }, + + headerStatus: { + width: 60, + textAlign: "center", + marginLeft: 12, + }, + + tableRow: { + flexDirection: "row", + borderBottomWidth: 1, + borderBottomColor: "#F7FAFC", + paddingVertical: 8, + paddingHorizontal: 12, + alignItems: "center", + }, + + cellName: { + flex: 1, + fontSize: 8, + fontWeight: "bold", + color: "#2D3748", + }, + + cellDesc: { + flex: 1, + marginLeft: 12, + fontSize: 7, + color: "#4A5568", + lineHeight: 1.3, + }, + + cellStatus: { + width: 60, + marginLeft: 12, + alignItems: "center", + justifyContent: "center", + }, + + // STATUS TEXT - SIMPLE APPROACH + statusText: { + fontSize: 7, + fontWeight: "bold", + textAlign: "center", + textTransform: "uppercase", + letterSpacing: 0.3, + }, + + statusCompliant: { + color: "#22543D", + }, + + statusPartial: { + color: "#744210", + }, + + statusReview: { + color: "#742A2A", + }, + + // INFO BOXES - CONSISTENT PATTERNS (FROST) + infoBox: { + backgroundColor: "#FFFFFF", + border: `1px solid #E2E8F0`, + borderLeft: `4px solid ${brandColor}`, + borderRadius: 4, + padding: 12, + marginBottom: 12, + pageBreakInside: "avoid", + breakInside: "avoid", + orphans: 3, + widows: 3, + }, + + infoTitle: { + fontSize: 9, + fontWeight: "bold", + color: "#2D3748", + marginBottom: 6, + }, + + infoText: { + fontSize: 8, + color: "#4A5568", + lineHeight: 1.4, + }, + + // RECOMMENDATIONS - SCALABLE SECTIONS (FROST) + recommendationsList: { + gap: 8, + pageBreakInside: "avoid", + breakInside: "avoid", + }, + + recommendationItem: { + flexDirection: "row", + alignItems: "flex-start", + }, + + recommendationBullet: { + fontSize: 8, + color: brandColor, + marginRight: 6, + fontWeight: "bold", + marginTop: 1, + }, + + recommendationText: { + fontSize: 8, + color: "#2D3748", + lineHeight: 1.4, + flex: 1, + }, + + recommendationLabel: { + fontWeight: "bold", + }, + + // FOOTER - DETERMINISTIC PAGINATION (FLORENCE) + footer: { + position: "absolute", + bottom: 20, + left: 40, + right: 40, + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + borderTop: "1px solid #E2E8F0", + paddingTop: 8, + }, + + footerText: { + fontSize: 7, + color: "#718096", + }, + + pageNumber: { + fontSize: 7, + color: "#718096", + fontWeight: "bold", + }, + + // BLACK STATISTIC PAGES - MODERN DESIGN + statPage: { + flexDirection: "column", + backgroundColor: "#000000", + fontFamily: "Helvetica", + padding: 0, + justifyContent: "center", + alignItems: "flex-start", + minHeight: "100%", + position: "relative", + }, + + statOverlay: { + position: "absolute", + top: 0, + left: 0, + right: 0, + bottom: 0, + padding: 60, + justifyContent: "center", + alignItems: "flex-start", + zIndex: 10, + backgroundColor: "rgba(0, 0, 0, 0.7)", + }, + + statMainText: { + fontSize: 18, + color: "#FFFFFF", + fontWeight: "bold", + lineHeight: 1.4, + marginBottom: 8, + }, + + statHighlight: { + fontSize: 72, + color: brandColor, + fontWeight: "900", + lineHeight: 1, + marginBottom: 8, + }, + + statBackground: { + position: "absolute", + top: 0, + left: 0, + right: 0, + bottom: 0, + opacity: 0.5, + }, + + statSubText: { + fontSize: 14, + color: "#FFFFFF", + fontWeight: "bold", + lineHeight: 1.3, + marginBottom: 40, + }, + + statFooterText: { + position: "absolute", + bottom: 60, + right: 60, + fontSize: 12, + color: "#FFFFFF", + fontWeight: "bold", + textAlign: "right", + lineHeight: 1.3, + }, + + statBrandFooter: { + position: "absolute", + bottom: 60, + left: 60, + fontSize: 8, + color: "#666666", + textTransform: "uppercase", + letterSpacing: 1, + }, + + // CENTERED IMAGE STYLE + centeredImage: { + width: 300, + height: 200, + alignSelf: "center", + marginVertical: 20, + borderRadius: 8, + }, + + // SVG CHART STYLES + svgChartContainer: { + alignItems: "center", + marginVertical: 12, + }, + + svgChart: { + width: 400, + height: 200, + marginBottom: 8, + }, + + chartSummaryText: { + fontSize: 8, + fontWeight: "bold", + color: brandColor, + textAlign: "center", + marginTop: 8, + }, + }); + + // PROCESS REAL STANDARDS DATA + const processStandardsData = (apiData, standardTemplates) => { + // Try to fetch standards data dynamically + let standardsData = null; + try { + standardsData = require("../data/standards.json"); + } catch (error) {} + + if (!apiData || !Array.isArray(apiData) || apiData.length === 0) { + return []; + } + + // Build a lookup map from template configurations + // Format: { "GUID": "Display Name" } + const templateDisplayNameMap = {}; + + if (standardTemplates && Array.isArray(standardTemplates)) { + standardTemplates.forEach((template) => { + if (template.standards) { + // Process IntuneTemplate arrays + if (Array.isArray(template.standards.IntuneTemplate)) { + template.standards.IntuneTemplate.forEach((templateItem) => { + if (templateItem?.TemplateList?.value && templateItem?.TemplateList?.label) { + templateDisplayNameMap[templateItem.TemplateList.value.toLowerCase()] = + templateItem.TemplateList.label; + } + // Handle TemplateList-Tags expansion + const tagTemplates = + templateItem?.["TemplateList-Tags"]?.addedFields?.templates || + templateItem?.["TemplateList-Tags"]?.rawData?.templates; + if (tagTemplates && Array.isArray(tagTemplates)) { + tagTemplates.forEach((expandedTemplate) => { + if ( + expandedTemplate?.GUID && + (expandedTemplate?.displayName || expandedTemplate?.name) + ) { + templateDisplayNameMap[expandedTemplate.GUID.toLowerCase()] = + expandedTemplate.displayName || expandedTemplate.name; + } + }); + } + }); + } + // Process ConditionalAccessTemplate arrays + if (Array.isArray(template.standards.ConditionalAccessTemplate)) { + template.standards.ConditionalAccessTemplate.forEach((templateItem) => { + if (templateItem?.TemplateList?.value && templateItem?.TemplateList?.label) { + templateDisplayNameMap[templateItem.TemplateList.value.toLowerCase()] = + templateItem.TemplateList.label; + } + // Handle TemplateList-Tags expansion + const tagTemplates = + templateItem?.["TemplateList-Tags"]?.addedFields?.templates || + templateItem?.["TemplateList-Tags"]?.rawData?.templates; + if (tagTemplates && Array.isArray(tagTemplates)) { + tagTemplates.forEach((expandedTemplate) => { + if ( + expandedTemplate?.GUID && + (expandedTemplate?.displayName || expandedTemplate?.name) + ) { + templateDisplayNameMap[expandedTemplate.GUID.toLowerCase()] = + expandedTemplate.displayName || expandedTemplate.name; + } + }); + } + }); + } + } + }); + } + + const processedStandards = []; + const tenantData = apiData[0]; // Get the first tenant's data + + // Process each standard from the API response + Object.keys(tenantData).forEach((key) => { + if (key.startsWith("standards.") && key !== "tenantFilter") { + const standardKey = key; + const standardValue = tenantData[key]; + const standardDef = standardsData?.find((std) => std.name === standardKey); + + if (standardDef) { + // Determine compliance status using the same logic as applied-standards.js + let status = "Review"; + let isCompliant = false; + + // FIRST: Check if CurrentValue and ExpectedValue exist and match + if ( + standardValue?.CurrentValue !== undefined && + standardValue?.ExpectedValue !== undefined + ) { + const sortedCurrent = + typeof standardValue.CurrentValue === "object" && standardValue.CurrentValue !== null + ? Object.keys(standardValue.CurrentValue) + .sort() + .reduce((obj, key) => { + obj[key] = standardValue.CurrentValue[key]; + return obj; + }, {}) + : standardValue.CurrentValue; + const sortedExpected = + typeof standardValue.ExpectedValue === "object" && + standardValue.ExpectedValue !== null + ? Object.keys(standardValue.ExpectedValue) + .sort() + .reduce((obj, key) => { + obj[key] = standardValue.ExpectedValue[key]; + return obj; + }, {}) + : standardValue.ExpectedValue; + isCompliant = JSON.stringify(sortedCurrent) === JSON.stringify(sortedExpected); + } + // SECOND: Check if Value is explicitly true + else if (standardValue?.Value === true) { + isCompliant = true; + } + + status = isCompliant ? "Compliant" : "Review"; + + // Get tags for display - fix the tags access + const tags = + standardDef.tag && Array.isArray(standardDef.tag) && standardDef.tag.length > 0 + ? standardDef.tag.slice(0, 2).join(", ") // Show first 2 tags + : "No tags"; + processedStandards.push({ + name: standardDef.label, + description: + standardDef.executiveText || standardDef.helpText || "No description available", + status: status, + tags: tags, + }); + } else { + // If no definition found, still add it with basic info + let status = "Review"; + let isCompliant = false; + + // FIRST: Check if CurrentValue and ExpectedValue exist and match + if ( + standardValue?.CurrentValue !== undefined && + standardValue?.ExpectedValue !== undefined + ) { + const sortedCurrent = + typeof standardValue.CurrentValue === "object" && standardValue.CurrentValue !== null + ? Object.keys(standardValue.CurrentValue) + .sort() + .reduce((obj, key) => { + obj[key] = standardValue.CurrentValue[key]; + return obj; + }, {}) + : standardValue.CurrentValue; + const sortedExpected = + typeof standardValue.ExpectedValue === "object" && + standardValue.ExpectedValue !== null + ? Object.keys(standardValue.ExpectedValue) + .sort() + .reduce((obj, key) => { + obj[key] = standardValue.ExpectedValue[key]; + return obj; + }, {}) + : standardValue.ExpectedValue; + isCompliant = JSON.stringify(sortedCurrent) === JSON.stringify(sortedExpected); + } + // SECOND: Check if Value is explicitly true + else if (standardValue?.Value === true) { + isCompliant = true; + } + + status = isCompliant ? "Compliant" : "Review"; + + // Create a proper name from the key - handle template types specially + let displayName = ""; + + // Check if this is an IntuneTemplate or ConditionalAccessTemplate + const intuneTemplateMatch = standardKey.match( + /^standards\.IntuneTemplate\.([0-9a-f-]+)/i, + ); + const caTemplateMatch = standardKey.match( + /^standards\.ConditionalAccessTemplate\.([0-9a-f-]+)/i, + ); + + if (intuneTemplateMatch) { + // IntuneTemplate - look up display name from template configurations + const guid = intuneTemplateMatch[1]; + const lookupName = templateDisplayNameMap[guid.toLowerCase()]; + displayName = lookupName || `Intune Template - ${guid.substring(0, 8)}`; + } else if (caTemplateMatch) { + // ConditionalAccessTemplate - look up display name from template configurations + const guid = caTemplateMatch[1]; + const lookupName = templateDisplayNameMap[guid.toLowerCase()]; + displayName = lookupName || `CA Template - ${guid.substring(0, 8)}`; + } else { + // Regular standard - use basic name formatting + displayName = standardKey + .replace("standards.", "") + .replace(/([A-Z])/g, " $1") // Add space before capital letters + .replace(/^./, (str) => str.toUpperCase()) // Capitalize first letter + .trim(); + } + + processedStandards.push({ + name: displayName, + description: "Security standard implementation", + status: status, + tags: "No tags", + }); + } + } + }); + + return processedStandards; + }; + + // PROCESS DRIFT COMPLIANCE DATA + const processDriftComplianceData = (driftData, standardsCompareData) => { + if (!driftData || !Array.isArray(driftData) || driftData.length === 0) { + return { + acceptedDeviationsCount: 0, + currentDeviationsCount: 0, + deniedDeviationsCount: 0, + customerSpecificDeviationsCount: 0, + alignedCount: 0, + acceptedDeviations: [], + currentDeviations: [], + deniedDeviations: [], + customerSpecificDeviations: [], + appliedStandards: [], + }; + } + + // Get standards data for pretty names + let standardsData = null; + try { + standardsData = require("../data/standards.json"); + } catch (error) {} + + // Helper function to get pretty name from standards.json (same as manage-drift) + const getStandardPrettyName = (standardName) => { + if (!standardName) return "Unknown Standard"; + const standard = standardsData?.find((s) => s.name === standardName); + if (standard && standard.label) { + return standard.label; + } + return null; + }; + + // Helper function to process deviations with pretty names + const processDeviations = (deviations) => { + return (deviations || []).map((deviation) => ({ + ...deviation, + prettyName: + deviation.standardDisplayName || + getStandardPrettyName(deviation.standardName) || + deviation.standardName || + "Unknown Standard", + })); + }; + + // Aggregate data across all standards for this tenant + const aggregatedData = driftData.reduce( + (acc, item) => { + acc.acceptedDeviationsCount += item.acceptedDeviationsCount || 0; + acc.currentDeviationsCount += item.currentDeviationsCount || 0; + acc.alignedCount += item.alignedCount || 0; + acc.customerSpecificDeviationsCount += item.customerSpecificDeviationsCount || 0; + acc.deniedDeviationsCount += item.deniedDeviationsCount || 0; + + // Collect deviations with pretty names + if (item.currentDeviations && Array.isArray(item.currentDeviations)) { + acc.currentDeviations.push( + ...processDeviations(item.currentDeviations.filter((dev) => dev !== null)), + ); + } + if (item.acceptedDeviations && Array.isArray(item.acceptedDeviations)) { + acc.acceptedDeviations.push( + ...processDeviations(item.acceptedDeviations.filter((dev) => dev !== null)), + ); + } + if (item.customerSpecificDeviations && Array.isArray(item.customerSpecificDeviations)) { + acc.customerSpecificDeviations.push( + ...processDeviations(item.customerSpecificDeviations.filter((dev) => dev !== null)), + ); + } + if (item.deniedDeviations && Array.isArray(item.deniedDeviations)) { + acc.deniedDeviations.push( + ...processDeviations(item.deniedDeviations.filter((dev) => dev !== null)), + ); + } + + return acc; + }, + { + acceptedDeviationsCount: 0, + currentDeviationsCount: 0, + alignedCount: 0, + customerSpecificDeviationsCount: 0, + deniedDeviationsCount: 0, + currentDeviations: [], + acceptedDeviations: [], + customerSpecificDeviations: [], + deniedDeviations: [], + appliedStandards: [], + }, + ); + + // Get complete list of applied standards from standards comparison data (like policies-deployed) + if ( + standardsData && + standardsCompareData && + Array.isArray(standardsCompareData) && + standardsCompareData.length > 0 + ) { + const tenantData = standardsCompareData[0]; + const appliedStandards = []; + + // Process each standard from the API response + Object.keys(tenantData).forEach((key) => { + if (key.startsWith("standards.") && key !== "tenantFilter") { + const standardKey = key; + const standardDef = standardsData.find((std) => std.name === standardKey); + + if (standardDef) { + appliedStandards.push({ + name: standardDef.label || standardKey, + executiveDescription: + standardDef.executiveText || standardDef.helpText || "No description available", + category: standardDef.cat || "General", + }); + } + } + }); + + aggregatedData.appliedStandards = appliedStandards; + } + + return aggregatedData; + }; + + let securityControls = processStandardsData(standardsCompareData, standardTemplatesData); + let driftComplianceInfo = processDriftComplianceData(driftComplianceData, standardsCompareData); + + const getBadgeStyle = (status) => { + switch (status) { + case "Compliant": + return [styles.statusText, styles.statusCompliant]; + case "Partial": + return [styles.statusText, styles.statusPartial]; + case "Review": + case "Review Required": + return [styles.statusText, styles.statusReview]; + default: + return styles.statusText; + } + }; + + return ( + + {/* COVER PAGE - JOBS/RAMS/IVE PERFECTION */} + + + + + {brandingSettings?.logo && ( + + )} + + {currentDate} + + + + SECURITY ASSESSMENT + + + Executive{"\n"} + Summary + + + + Security & Compliance Assessment for {tenantName || "your organization"} + + + + {tenantName || "Organization Name"} + + + + + Confidential & Proprietary + + + + {/* EXECUTIVE SUMMARY - MODULAR COMPOSITION (FROST) */} + {sectionConfig.executiveSummary && ( + + + + Executive Summary + + Strategic overview of your Microsoft 365 security posture + + + {brandingSettings?.logo && ( + + )} + + + + + This security assessment for{" "} + {tenantName || "your organization"}{" "} + provides a clear picture of your organization's cybersecurity posture and readiness + against modern threats. We've evaluated your current security measures against + industry best practices to identify strengths and opportunities for improvement. + + + + Our assessment follows globally recognized security standards to ensure your + organization meets regulatory requirements and industry benchmarks. This approach + helps protect your business assets, maintain customer trust, and reduce operational + risks from cyber threats. + + + + + Environment Overview + + + + {userStats?.licensedUsers || "0"} + Licensed Users + + + {userStats?.unlicensedUsers || "0"} + Unlicensed Users + + + {userStats?.guests || "0"} + Guest Users + + + {userStats?.globalAdmins || "0"} + Global Admins + + + + + + `Page ${pageNumber} of ${totalPages}`} + /> + + + )} + + {/* STATISTIC PAGE 1 - CHAPTER SPLITTER */} + {sectionConfig.infographics && ( + + + + 83% + + of organizations experienced{"\n"} + more than one cyberattack + {"\n"} + in the past year + + + + Proactive security prevents{"\n"} + repeated attacks + + + )} + + {/* SECURITY CONTROLS - Only show if standards data is available and enabled and drift compliance is disabled */} + {sectionConfig.securityStandards && + !sectionConfig.driftCompliance && + (() => { + return securityControls && securityControls.length > 0; + })() && ( + + + + Security Standards Assessment + + Detailed evaluation of implemented security standards + + + {brandingSettings?.logo && ( + + )} + + + + + Your security standards have been carefully evaluated against industry best + practices to protect your business from cyber threats while ensuring smooth daily + operations. These standards help maintain business continuity, protect sensitive + data, and meet regulatory requirements that are essential for your industry. + + + + + Security Standards Status + + + + Standard + Description + Tags + + Status + + + + {securityControls.map((control, index) => ( + + + {control.name.length > 100 + ? control.name.substring(0, 100) + "..." + : control.name} + + + {control.description} + + + {control.tags.length > 0 ? control.tags : "No tags"} + + + {control.status} + + + ))} + + + + + Key Recommendations + + + + โ€ข + + Immediate Actions: Address + standards marked as "Review" to enhance security posture + + + + โ€ข + + Compliance: Ensure all security + standards are properly implemented and maintained + + + + โ€ข + + Monitoring: Establish regular + review cycles for all security standards + + + + โ€ข + + Training: Implement security + awareness programs to reduce human risk factors + + + + + + + `Page ${pageNumber} of ${totalPages}`} + /> + + + )} + + {/* DRIFT COMPLIANCE - Only show if drift compliance is enabled and security standards is disabled */} + {sectionConfig.driftCompliance && + !sectionConfig.securityStandards && + driftComplianceInfo && + (driftComplianceInfo.currentDeviationsCount > 0 || + driftComplianceInfo.acceptedDeviationsCount > 0 || + driftComplianceInfo.deniedDeviationsCount > 0 || + driftComplianceInfo.customerSpecificDeviationsCount > 0 || + driftComplianceInfo.appliedStandards.length > 0) && ( + <> + + + + Drift Compliance Assessment + + Detailed evaluation of policy drift and compliance deviations + + + {brandingSettings?.logo && ( + + )} + + + + + Your drift compliance assessment shows how your current security policies compare + to your organization's approved standards. This analysis helps identify where + configurations have drifted from intended baselines and provides insights into + policy compliance across your Microsoft 365 environment. + + + + {/* Drift Overview Chart */} + + Drift Compliance Overview + + + Policy Deviation Distribution + + + {(() => { + const chartData = [ + driftComplianceInfo.alignedCount, + driftComplianceInfo.acceptedDeviationsCount, + driftComplianceInfo.customerSpecificDeviationsCount, + driftComplianceInfo.currentDeviationsCount, + driftComplianceInfo.deniedDeviationsCount, + ]; + const chartLabels = [ + "Aligned Policies", + "Accepted Deviations", + "Client Specific Deviations", + "Current Deviations", + "Denied Deviations", + ]; + const chartColors = ["#10B981", "#3B82F6", "#8B5CF6", "#F59E0B", "#EF4444"]; + + const total = chartData.reduce((sum, value) => sum + value, 0); + if (total === 0) return null; + + const centerX = 200; + const centerY = 100; + const outerRadius = 60; + const innerRadius = 25; // For donut effect + + let currentAngle = 0; + + return ( + <> + {/* Donut Chart */} + {chartData.map((value, index) => { + if (value === 0) return null; + + const angle = (value / total) * 360; + const startAngle = currentAngle; + const endAngle = currentAngle + angle; + + // Outer arc points + const outerStartX = + centerX + outerRadius * Math.cos((startAngle * Math.PI) / 180); + const outerStartY = + centerY + outerRadius * Math.sin((startAngle * Math.PI) / 180); + const outerEndX = + centerX + outerRadius * Math.cos((endAngle * Math.PI) / 180); + const outerEndY = + centerY + outerRadius * Math.sin((endAngle * Math.PI) / 180); + + // Inner arc points + const innerStartX = + centerX + innerRadius * Math.cos((startAngle * Math.PI) / 180); + const innerStartY = + centerY + innerRadius * Math.sin((startAngle * Math.PI) / 180); + const innerEndX = + centerX + innerRadius * Math.cos((endAngle * Math.PI) / 180); + const innerEndY = + centerY + innerRadius * Math.sin((endAngle * Math.PI) / 180); + + const largeArcFlag = angle > 180 ? 1 : 0; + + // Create donut path + const pathData = [ + `M ${outerStartX} ${outerStartY}`, + `A ${outerRadius} ${outerRadius} 0 ${largeArcFlag} 1 ${outerEndX} ${outerEndY}`, + `L ${innerEndX} ${innerEndY}`, + `A ${innerRadius} ${innerRadius} 0 ${largeArcFlag} 0 ${innerStartX} ${innerStartY}`, + "Z", + ].join(" "); + + currentAngle += angle; + + return ( + + ); + })} + + {/* Center text */} + + {total} + + + Total Policies + + + {/* Clean Horizontal Legend at Bottom */} + {(() => { + const visibleItems = chartData + .map((value, index) => ({ + value, + index, + label: chartLabels[index] + .replace(" Deviations", "") + .replace(" Policies", ""), + color: chartColors[index], + })) + .filter((item) => item.value > 0); + + return visibleItems.map((item, displayIndex) => { + const legendX = 30 + displayIndex * 90; + const legendY = 175; + + return ( + + + + {item.label} ({item.value}) + + + ); + }); + })()} + + ); + })()} + + + + + + {/* Deviation Statistics */} + + Deviation Statistics + + + + + {driftComplianceInfo.acceptedDeviationsCount} + + Accepted Deviations + + + + {driftComplianceInfo.customerSpecificDeviationsCount} + + Client Specific + + + + {driftComplianceInfo.deniedDeviationsCount} + + Denied Deviations + + + + {driftComplianceInfo.currentDeviationsCount} + + Current Deviations + + + + + {/* Chart Legend Explanations */} + + Deviation Types Explained + + + + โ€ข + + Aligned: Policies that match + the approved template exactly with no deviations + + + + โ€ข + + Accepted Deviations: Policy + differences that have been reviewed and approved by administrators + + + + โ€ข + + Client Specific Deviations:{" "} + Policy configurations approved as customer-specific business requirements + + + + โ€ข + + Current Deviations: Policy + differences that require review and administrative action + + + + โ€ข + + Denied Deviations: Policy + differences that have been rejected and require remediation + + + + + + + `Page ${pageNumber} of ${totalPages}`} + /> + + + + {/* Deviations Detail Page */} + {(driftComplianceInfo.currentDeviations.length > 0 || + driftComplianceInfo.acceptedDeviations.length > 0 || + driftComplianceInfo.deniedDeviations.length > 0 || + driftComplianceInfo.customerSpecificDeviations.length > 0) && ( + + + + Policy Deviations Detail + + Comprehensive list of all policy deviations and their status + + + {brandingSettings?.logo && ( + + )} + + + + + The following table shows all identified policy deviations, their current + status, and executive descriptions of what each deviation means for your + organization's security posture and compliance requirements. + + + + + Policy Deviations + + + + Policy + + Description + + Status + + + {/* Current Deviations */} + {driftComplianceInfo.currentDeviations.slice(0, 5).map((deviation, index) => { + let standardsData = null; + try { + standardsData = require("../data/standards.json"); + } catch (error) {} + + const standardDef = standardsData?.find( + (std) => std.name === deviation.standardName, + ); + const description = + standardDef?.executiveText || + standardDef?.helpText || + "Policy deviation detected"; + + return ( + + + {deviation.prettyName || "Unknown Policy"} + + + {description} + + + Current + + + ); + })} + + {/* Accepted Deviations */} + {driftComplianceInfo.acceptedDeviations.slice(0, 3).map((deviation, index) => { + let standardsData = null; + try { + standardsData = require("../data/standards.json"); + } catch (error) {} + + const standardDef = standardsData?.find( + (std) => std.name === deviation.standardName, + ); + const description = + standardDef?.executiveText || + standardDef?.helpText || + "Accepted policy deviation"; + + return ( + + + {deviation.prettyName || "Unknown Policy"} + + + {description} + + + + Accepted + + + + ); + })} + + {/* Customer Specific Deviations */} + {driftComplianceInfo.customerSpecificDeviations + .slice(0, 3) + .map((deviation, index) => { + let standardsData = null; + try { + standardsData = require("../data/standards.json"); + } catch (error) {} + + const standardDef = standardsData?.find( + (std) => std.name === deviation.standardName, + ); + const description = + standardDef?.executiveText || + standardDef?.helpText || + "Customer-specific policy configuration"; + + return ( + + + {deviation.prettyName || "Unknown Policy"} + + + {description} + + + + Client Specific + + + + ); + })} + + {/* Denied Deviations */} + {driftComplianceInfo.deniedDeviations.slice(0, 2).map((deviation, index) => { + let standardsData = null; + try { + standardsData = require("../data/standards.json"); + } catch (error) {} + + const standardDef = standardsData?.find( + (std) => std.name === deviation.standardName, + ); + const description = + standardDef?.executiveText || + standardDef?.helpText || + "Denied policy deviation"; + + return ( + + + {deviation.prettyName || "Unknown Policy"} + + + {description} + + + Denied + + + ); + })} + + + + + `Page ${pageNumber} of ${totalPages}`} + /> + + + )} + + {/* Applied Standards Page */} + {driftComplianceInfo.appliedStandards.length > 0 && ( + + + + Applied Standards + + Security standards currently implemented in your environment + + + {brandingSettings?.logo && ( + + )} + + + + + These are the security standards that have been applied to your Microsoft 365 + environment. Each standard represents a specific security control or policy + designed to protect your organization's data and systems. + + + + {/* Group standards by category */} + {(() => { + const groupedStandards = driftComplianceInfo.appliedStandards.reduce( + (acc, standard) => { + const category = standard.category || "General"; + if (!acc[category]) acc[category] = []; + acc[category].push(standard); + return acc; + }, + {}, + ); + + return Object.entries(groupedStandards).map(([category, standards]) => ( + + {category} + + {standards.map((standard, index) => ( + + โ€ข + + {standard.name}:{" "} + {standard.executiveDescription} + + + ))} + + + )); + })()} + + + Compliance Summary + + + Overall Compliance Status + + Your organization has {driftComplianceInfo.appliedStandards.length} security + standards implemented with {driftComplianceInfo.alignedCount} policies fully + aligned,{" "} + {driftComplianceInfo.acceptedDeviationsCount + + driftComplianceInfo.customerSpecificDeviationsCount}{" "} + approved deviations, and {driftComplianceInfo.currentDeviationsCount}{" "} + deviations requiring attention. + + + + + + `Page ${pageNumber} of ${totalPages}`} + /> + + + )} + + )} + + {/* STATISTIC PAGE 2 - CHAPTER SPLITTER - Only show if secure score data is available and enabled */} + {sectionConfig.infographics && + sectionConfig.secureScore && + secureScoreData && + secureScoreData?.isSuccess && + secureScoreData?.translatedData && ( + + + + 95% + + of successful cyber attacks{"\n"} + could have been prevented with{"\n"} + proactive security measures + + + + Your security resilience is{"\n"} + our primary mission + + + )} + + {/* MICROSOFT SECURE SCORE - DEDICATED PAGE - Only show if secure score data is available and enabled */} + {sectionConfig.secureScore && + secureScoreData && + secureScoreData?.isSuccess && + secureScoreData?.translatedData && ( + + + + Microsoft Secure Score + + Comprehensive security posture measurement and benchmarking + + + {brandingSettings?.logo && ( + + )} + + + + + Microsoft Secure Score measures how well your organization is protected against + cyber threats. This score reflects the effectiveness of your current security + measures and helps identify areas where additional protection could strengthen your + business resilience. + + + + + Score Comparison + + + + + {secureScoreData?.translatedData?.currentScore || "N/A"} + + Current Score + + + + {secureScoreData?.translatedData?.maxScore || "N/A"} + + Max Score + + + + {secureScoreData?.translatedData?.percentageVsSimilar || "N/A"}% + + vs Similar Orgs + + + + {secureScoreData?.translatedData?.percentageVsAllTenants || "N/A"}% + + vs All Orgs + + + + + + 7-Day Score Trend + + + Secure Score Progress + {secureScoreData?.secureScore?.data?.Results && + secureScoreData.secureScore.data.Results.length > 0 ? ( + + + {/* Chart Background */} + + + {/* Chart Grid Lines */} + {[0, 1, 2, 3, 4].map((i) => ( + + ))} + + {/* Chart Data Points and Area */} + {(() => { + const data = secureScoreData.secureScore.data.Results.slice().reverse(); + const maxScore = secureScoreData?.translatedData?.maxScore || 100; + const minScore = 0; // Always start from 0 + const scoreRange = maxScore; // Full range from 0 to max + const chartWidth = 320; + const chartHeight = 140; + const pointSpacing = chartWidth / Math.max(data.length - 1, 1); + + // Generate path for area chart + let pathData = `M 40 ${ + 160 - (data[0].currentScore / scoreRange) * chartHeight + }`; + data.forEach((point, index) => { + if (index > 0) { + const x = 40 + index * pointSpacing; + const y = 160 - (point.currentScore / scoreRange) * chartHeight; + pathData += ` L ${x} ${y}`; + } + }); + pathData += ` L ${40 + (data.length - 1) * pointSpacing} 160 L 40 160 Z`; + + // Generate line path (without area fill) + let lineData = `M 40 ${ + 160 - (data[0].currentScore / scoreRange) * chartHeight + }`; + data.forEach((point, index) => { + if (index > 0) { + const x = 40 + index * pointSpacing; + const y = 160 - (point.currentScore / scoreRange) * chartHeight; + lineData += ` L ${x} ${y}`; + } + }); + + return ( + <> + {/* Area Fill */} + + + {/* Line */} + + + {/* Data Points */} + {data.map((point, index) => { + const x = 40 + index * pointSpacing; + const y = 160 - (point.currentScore / scoreRange) * chartHeight; + return ; + })} + + {/* X-axis Labels */} + {data.map((point, index) => { + const x = 40 + index * pointSpacing; + const date = new Date(point.createdDateTime); + const label = date.toLocaleDateString("en-US", { + month: "short", + day: "numeric", + }); + return ( + + {label} + + ); + })} + + {/* Y-axis Labels */} + {[ + 0, + Math.round(maxScore * 0.25), + Math.round(maxScore * 0.5), + Math.round(maxScore * 0.75), + maxScore, + ].map((score, index) => ( + + {score} + + ))} + + ); + })()} + + + + Current: {secureScoreData?.translatedData?.currentScore || "N/A"} /{" "} + {secureScoreData?.translatedData?.maxScore || "N/A"}( + {secureScoreData?.translatedData?.percentageCurrent || "N/A"}%) + + + ) : ( + + Current Score: {secureScoreData?.translatedData?.currentScore || "N/A"} /{" "} + {secureScoreData?.translatedData?.maxScore || "N/A"} + {"\n"} + Achievement Rate: {secureScoreData?.translatedData?.percentageCurrent || "N/A"}% + {"\n"} + Historical data not available + + )} + + + + + What Your Score Means + + Your current score of {secureScoreData?.translatedData?.currentScore || "N/A"}{" "} + represents {secureScoreData?.translatedData?.percentageCurrent || "N/A"}% of the + maximum protection level available. This indicates how well your organization is + currently defended against common cyber threats and data breaches. + + + + + Why Scores Change + + โ€ข Business growth and new employees may temporarily lower scores until security + measures are applied{"\n"}โ€ข Changes in software licenses can affect available + security features{"\n"}โ€ข New security threats require updated protections, which may + impact scores{"\n"}โ€ข Regular security improvements help maintain and increase your + protection level + + + + + `Page ${pageNumber} of ${totalPages}`} + /> + + + )} + + {/* LICENSING PAGE - Only show if license data is available */} + {sectionConfig.licenseManagement && + licensingData && + Array.isArray(licensingData) && + licensingData.length > 0 && ( + <> + {/* STATISTIC PAGE 3 - CHAPTER SPLITTER */} + {sectionConfig.infographics && ( + + + + Every + 39 + seconds + + a business falls victim to{"\n"} + ransomware attacks + + + + Proactive defense beats{"\n"} + reactive recovery + + + )} + + + + License Management + + Microsoft 365 license allocation and utilization analysis + + + {brandingSettings?.logo && ( + + )} + + + + + Smart license management helps control costs while ensuring your team has the + tools they need to be productive. This analysis shows how your current licenses + are being used and identifies opportunities to optimize spending without + compromising business operations. + + + + + License Allocation Summary + + + + License Type + + Used + + + Available + + + Total + + + + {licensingData.map((license, index) => ( + + + {(() => { + const licenseValue = license.License || license.license || "N/A"; + if (typeof licenseValue === "object") { + } + return licenseValue; + })()} + + + {(() => { + const countUsed = license.CountUsed || license.countUsed || "0"; + if (typeof countUsed === "object") { + console.log( + "DEBUG: license.CountUsed is an object:", + countUsed, + "full license:", + license, + ); + } + return countUsed; + })()} + + + {(() => { + const countAvailable = + license.CountAvailable || license.countAvailable || "0"; + if (typeof countAvailable === "object") { + } + return countAvailable; + })()} + + + {(() => { + const totalLicenses = + license.TotalLicenses || license.totalLicenses || "0"; + if (typeof totalLicenses === "object") { + } + return totalLicenses; + })()} + + + ))} + + + + + License Optimization Recommendations + + + + โ€ข + + Usage Monitoring: Track how + licenses are being used to identify cost-saving opportunities + + + + โ€ข + + Cost Control: Review unused + licenses to reduce unnecessary spending + + + + โ€ข + + Growth Planning: Ensure you + have enough licenses for business expansion without overspending + + + + โ€ข + + Regular Reviews: Conduct + quarterly reviews to maintain cost-effective license allocation + + + + + + + `Page ${pageNumber} of ${totalPages}`} + /> + + + + )} + + {/* DEVICES PAGE - Only show if device data is available */} + {sectionConfig.deviceManagement && + deviceData && + Array.isArray(deviceData) && + deviceData.length > 0 && ( + <> + {/* STATISTIC PAGE 4 - CHAPTER SPLITTER */} + {sectionConfig.infographics && ( + + + + $4.45M + + average cost of a{"\n"} + data breach in 2024 + + + + Investment in security + {"\n"} + saves millions in recovery + + + )} + + + + Device Management + + Device compliance status and management overview + + + {brandingSettings?.logo && ( + + )} + + + + + Managing employee devices is essential for protecting your business data and + maintaining productivity. This analysis shows which devices meet your security + standards and identifies any that may need attention to prevent data breaches or + operational disruptions. + + + + + Device Compliance Overview + + + + {deviceData.length} + Total Devices + + + + { + deviceData.filter( + (device) => + ( + device.complianceState || + device.ComplianceState || + "" + ).toLowerCase() === "compliant", + ).length + } + + Compliant + + + + { + deviceData.filter( + (device) => + ( + device.complianceState || + device.ComplianceState || + "" + ).toLowerCase() !== "compliant", + ).length + } + + Non-Compliant + + + + {Math.round( + (deviceData.filter( + (device) => + ( + device.complianceState || + device.ComplianceState || + "" + ).toLowerCase() === "compliant", + ).length / + deviceData.length) * + 100, + )} + % + + Compliance Rate + + + + + + Device Management Summary + + + + Device Name + OS + Compliance + Last Sync + + + {deviceData.slice(0, 8).map((device, index) => { + const lastSync = device.lastSyncDateTime + ? new Date(device.lastSyncDateTime).toLocaleDateString() + : "N/A"; + return ( + + + {(() => { + const deviceName = device.deviceName || "N/A"; + if (typeof deviceName === "object") { + } + return deviceName; + })()} + + + {(() => { + const operatingSystem = device.operatingSystem || "N/A"; + if (typeof operatingSystem === "object") { + } + return operatingSystem; + })()} + + + + {(() => { + const complianceState = + device.complianceState || device.ComplianceState || "Unknown"; + if (typeof complianceState === "object") { + } + return complianceState; + })()} + + + {lastSync} + + ); + })} + + + + + Device Insights + + + + + {deviceData.filter((device) => device.operatingSystem === "Windows").length} + + Windows Devices + + + + {deviceData.filter((device) => device.operatingSystem === "iOS").length} + + iOS Devices + + + + {deviceData.filter((device) => device.operatingSystem === "Android").length} + + Android Devices + + + + {deviceData.filter((device) => device.isEncrypted === true).length} + + Encrypted + + + + + + Device Management Recommendations + + Keep devices updated and secure to protect business data. Regularly check that all + employee devices meet security standards and address any issues promptly. Consider + automated policies to maintain consistent security across all devices and conduct + regular reviews to identify potential risks. + + + + + `Page ${pageNumber} of ${totalPages}`} + /> + + + + )} + + {/* CONDITIONAL ACCESS POLICIES PAGE - Only show if data is available */} + {sectionConfig.conditionalAccess && + conditionalAccessData && + Array.isArray(conditionalAccessData) && + conditionalAccessData.length > 0 && ( + <> + {/* STATISTIC PAGE 5 - CHAPTER SPLITTER */} + {sectionConfig.infographics && ( + + + + 277 + days + + average time to identify and{"\n"} + contain a data breach + + + + Early detection minimizes{"\n"} + business impact + + + )} + + + + Conditional Access Policies + + Identity and access management security controls + + + {brandingSettings?.logo && ( + + )} + + + + + Access control policies help protect your business by ensuring only the right + people can access sensitive information under appropriate circumstances. These + smart security measures automatically evaluate each access request and apply + additional verification when needed, balancing security with employee + productivity. + + + + + How Access Controls Protect Your Business + + These policies work like intelligent security guards, making decisions based on + who is trying to access what, from where, and when. For example, accessing email + from the office might be seamless, but accessing it from an unusual location might + require additional verification. This approach protects your data while minimizing + disruption to daily work. + + + + + Current Policy Configuration + + + + Policy Name + State + Applications + Controls + + + {conditionalAccessData.slice(0, 8).map((policy, index) => { + const getStateStyle = (state) => { + switch (state) { + case "enabled": + return styles.statusCompliant; + case "enabledForReportingButNotEnforced": + return styles.statusPartial; + case "disabled": + return styles.statusReview; + default: + return styles.statusText; + } + }; + + const getStateDisplay = (state) => { + switch (state) { + case "enabled": + return "Enabled"; + case "enabledForReportingButNotEnforced": + return "Report Only"; + case "disabled": + return "Disabled"; + default: + return state || "Unknown"; + } + }; + + const getControlsText = (policy) => { + const controls = []; + if (policy.builtInControls) { + if (policy.builtInControls.includes("mfa")) controls.push("MFA"); + if (policy.builtInControls.includes("block")) controls.push("Block"); + if (policy.builtInControls.includes("compliantDevice")) + controls.push("Compliant Device"); + } + return controls.length > 0 ? controls.join(", ") : "Custom"; + }; + + return ( + + + {(() => { + const displayName = policy.displayName || "N/A"; + if (typeof displayName === "object") { + } + return displayName; + })()} + + + + {getStateDisplay(policy.state)} + + + + {(() => { + const includeApplications = policy.includeApplications || "All"; + if (typeof includeApplications === "object") { + } + return includeApplications; + })()} + + + {getControlsText(policy)} + + + ); + })} + + + + + Policy Overview + + + + {conditionalAccessData.length} + Total Policies + + + + {conditionalAccessData.filter((policy) => policy.state === "enabled").length} + + Enabled + + + + { + conditionalAccessData.filter( + (policy) => policy.state === "enabledForReportingButNotEnforced", + ).length + } + + Report Only + + + + { + conditionalAccessData.filter( + (policy) => + policy.builtInControls && policy.builtInControls.includes("mfa"), + ).length + } + + MFA Policies + + + + + + Policy Analysis + + + + โ€ข + + Policy Coverage:{" "} + {conditionalAccessData.length} conditional access policies configured + + + + โ€ข + + Enforcement Status:{" "} + {conditionalAccessData.filter((policy) => policy.state === "enabled").length}{" "} + policies actively enforced + + + + โ€ข + + Testing Phase:{" "} + { + conditionalAccessData.filter( + (policy) => policy.state === "enabledForReportingButNotEnforced", + ).length + }{" "} + policies in report-only mode + + + + โ€ข + + Security Controls:{" "} + Multi-factor authentication and access blocking implemented + + + + + + + Access Control Recommendations + + {conditionalAccessData.filter( + (policy) => policy.state === "enabledForReportingButNotEnforced", + ).length > 0 + ? `Consider activating ${ + conditionalAccessData.filter( + (policy) => policy.state === "enabledForReportingButNotEnforced", + ).length + } policies currently in testing mode after ensuring they don't disrupt business operations. ` + : "Your access controls are properly configured. "} + Regularly review how these policies affect employee productivity and adjust as + needed. Consider additional location-based protections for enhanced security + without impacting daily operations. + + + + + `Page ${pageNumber} of ${totalPages}`} + /> + + + + )} + + ); +}; + +export const ExecutiveReportButton = (props) => { + const { ...other } = props; + const settings = useSettings(); + const brandingSettings = settings.customBranding; + + // Preview state + const [previewOpen, setPreviewOpen] = useState(false); + const [sectionConfig, setSectionConfig] = useState({ + executiveSummary: true, + securityStandards: true, + driftCompliance: false, + secureScore: true, + licenseManagement: true, + deviceManagement: true, + conditionalAccess: true, + infographics: true, + }); + + // Fetch organization data - only when preview is open + const organization = ApiGetCall({ + url: "/api/ListOrg", + queryKey: `${settings.currentTenant}-ListOrg-report`, + data: { tenantFilter: settings.currentTenant }, + waiting: previewOpen, + }); + + // Fetch user counts - only when preview is open + const dashboard = ApiGetCall({ + url: "/api/ListuserCounts", + data: { tenantFilter: settings.currentTenant }, + queryKey: `${settings.currentTenant}-ListuserCounts-report`, + waiting: previewOpen, + }); + + // Only fetch additional data when preview dialog is opened + const secureScore = useSecureScore({ waiting: previewOpen }); + + // Get real license data - only when preview is open + const licenseData = ApiGetCall({ + url: "/api/ListLicenses", + data: { + tenantFilter: settings.currentTenant, + }, + queryKey: `licenses-report-${settings.currentTenant}`, + waiting: previewOpen, + }); + + // Get real device data - only when preview is open + const deviceData = ApiGetCall({ + url: "/api/ListDevices", + data: { + tenantFilter: settings.currentTenant, + }, + queryKey: `devices-report-${settings.currentTenant}`, + waiting: previewOpen, + }); + + // Get real conditional access policy data - only when preview is open + const conditionalAccessData = ApiGetCall({ + url: "/api/ListConditionalAccessPolicies", + data: { + tenantFilter: settings.currentTenant, + }, + queryKey: `ca-policies-report-${settings.currentTenant}`, + waiting: previewOpen, + }); + + // Get real standards data - only when preview is open + const standardsCompareData = ApiGetCall({ + url: "/api/ListStandardsCompare", + data: { + tenantFilter: settings.currentTenant, + }, + queryKey: `standards-compare-report-${settings.currentTenant}`, + waiting: previewOpen, + }); + + // Get drift compliance data - only when preview is open + const driftComplianceData = ApiGetCall({ + url: "/api/listTenantDrift", + data: { + TenantFilter: settings.currentTenant, + }, + queryKey: `drift-compliance-report-${settings.currentTenant}`, + waiting: previewOpen, + }); + + // Load all standard templates to resolve template display names + const standardTemplatesData = ApiGetCall({ + url: `/api/listStandardTemplates`, + data: {}, // No templateId filter - get all templates + queryKey: `standard-templates-report-all`, + waiting: previewOpen, + }); + + // Check if all data is loaded (either successful or failed) - only relevant when preview is open + const isDataLoading = + previewOpen && + (organization.isFetching || + dashboard.isFetching || + secureScore.isFetching || + licenseData.isFetching || + deviceData.isFetching || + conditionalAccessData.isFetching || + standardsCompareData.isFetching || + driftComplianceData.isFetching || + standardTemplatesData.isFetching); + + const hasAllDataFinished = + !previewOpen || + ((organization.isSuccess || organization.isError) && + (dashboard.isSuccess || dashboard.isError) && + (secureScore.isSuccess || secureScore.isError) && + (licenseData.isSuccess || licenseData.isError) && + (deviceData.isSuccess || deviceData.isError) && + (conditionalAccessData.isSuccess || conditionalAccessData.isError) && + (standardsCompareData.isSuccess || standardsCompareData.isError) && + (driftComplianceData.isSuccess || driftComplianceData.isError) && + (standardTemplatesData.isSuccess || standardTemplatesData.isError)); + + // Button is always available now since we don't need to wait for data + const shouldShowButton = true; + + const tenantName = organization.data?.displayName || "Tenant"; + const tenantId = organization.data?.id; + const userStats = { + licensedUsers: dashboard.data?.LicUsers || 0, + unlicensedUsers: + dashboard.data?.Users && dashboard.data?.LicUsers + ? dashboard.data?.Users - dashboard.data?.LicUsers + : 0, + guests: dashboard.data?.Guests || 0, + globalAdmins: dashboard.data?.Gas || 0, + }; + + const fileName = `Executive_Report_${tenantName?.replace(/[^a-zA-Z0-9]/g, "_") || "Tenant"}_${ + new Date().toISOString().split("T")[0] + }.pdf`; + + // Memoize the document to prevent unnecessary re-renders - only when dialog is open + const reportDocument = useMemo(() => { + // Don't create document if dialog is closed + if (!previewOpen) { + return null; + } + + // Only create document if preview is open and data is ready + if (!hasAllDataFinished) { + return ( + + + + Loading report data... + + + + ); + } + + try { + return ( + + ); + } catch (error) { + console.error("Error creating ExecutiveReportDocument:", error); + return ( + + + + Error creating document: {error.message} + + + + ); + } + }, [ + previewOpen, // Most important - prevents creation when dialog is closed + hasAllDataFinished, + tenantName, + tenantId, + userStats, + organization.data, + dashboard.data, + brandingSettings, + secureScore?.isSuccess, + licenseData?.isSuccess, + deviceData?.isSuccess, + conditionalAccessData?.isSuccess, + standardsCompareData?.isSuccess, + driftComplianceData?.isSuccess, + JSON.stringify(sectionConfig), // Stringify to prevent reference issues + ]); + + // Handle section toggle with mutual exclusion logic + const handleSectionToggle = (sectionKey) => { + setSectionConfig((prev) => { + // Count currently enabled sections + const enabledSections = Object.values(prev).filter(Boolean).length; + + // If trying to disable the last remaining section, prevent it + if (prev[sectionKey] && enabledSections === 1) { + return prev; // Don't change state + } + + // Mutual exclusion logic for Security Standards and Drift Compliance + if (sectionKey === "securityStandards" && !prev[sectionKey]) { + // Enabling Security Standards, disable Drift Compliance + return { + ...prev, + securityStandards: true, + driftCompliance: false, + }; + } + + if (sectionKey === "driftCompliance" && !prev[sectionKey]) { + // Enabling Drift Compliance, disable Security Standards + return { + ...prev, + driftCompliance: true, + securityStandards: false, + }; + } + + return { + ...prev, + [sectionKey]: !prev[sectionKey], + }; + }); + }; + + // Close handler with cleanup + const handleClose = () => { + setPreviewOpen(false); + }; + + // Section configuration options + const sectionOptions = [ + { + key: "executiveSummary", + label: "Executive Summary", + description: "High-level overview and statistics", + }, + { + key: "securityStandards", + label: "Security Standards", + description: "Compliance assessment and standards evaluation", + }, + { + key: "driftCompliance", + label: "Drift Compliance", + description: "Policy drift analysis and deviation management", + }, + { + key: "secureScore", + label: "Microsoft Secure Score", + description: "Security posture measurement and trends", + }, + { + key: "licenseManagement", + label: "License Management", + description: "License allocation and optimization", + }, + { + key: "deviceManagement", + label: "Device Management", + description: "Device compliance and insights", + }, + { + key: "conditionalAccess", + label: "Conditional Access", + description: "Access control policies and analysis", + }, + { + key: "infographics", + label: "Infographic Pages", + description: "Statistical pages with visual elements between sections", + }, + ]; + + return ( + <> + {/* Main Executive Summary Button - Always available */} + + + + + {/* Combined Preview and Configuration Dialog */} + + + + Executive Report - {tenantName} + + + + + + + + {/* Left Panel - Section Configuration */} + + + + + Report Sections + + + Configure which sections to include in your executive report. Changes are reflected + in real-time. + + + + {sectionOptions.map((option) => ( + handleSectionToggle(option.key)} + sx={{ + p: 1.5, + border: "1px solid", + borderColor: sectionConfig[option.key] ? "primary.main" : "divider", + bgcolor: sectionConfig[option.key] ? "primary.50" : "background.paper", + cursor: "pointer", + transition: "all 0.2s ease-in-out", + display: "flex", + alignItems: "center", + "&:hover": { + borderColor: "primary.main", + bgcolor: sectionConfig[option.key] ? "primary.100" : "primary.25", + }, + }} + > + { + event.stopPropagation(); + handleSectionToggle(option.key); + }} + onClick={(event) => event.stopPropagation()} + color="primary" + size="small" + disabled={ + sectionConfig[option.key] && + Object.values(sectionConfig).filter(Boolean).length === 1 + } + /> + + + {option.label} + + + {option.description} + + + + ))} + + + + + ๐Ÿ’ก Pro Tip + + + Enable only the sections relevant to your audience to create focused, impactful + reports. At least one section must be enabled. + + + + + + {/* Right Panel - PDF Preview */} + + {isDataLoading ? ( + + Loading Report Data... + + Fetching additional data for comprehensive report generation + + + ) : reportDocument ? ( + + {reportDocument} + + ) : ( + + + Report preview will appear here + + + )} + + + + + + + Sections enabled: {Object.values(sectionConfig).filter(Boolean).length} of{" "} + {sectionOptions.length} + + + + + + + + + + ); +}; diff --git a/src/components/PrivateRoute.js b/src/components/PrivateRoute.js index 92bfae5bef81..5b067cf4e7c3 100644 --- a/src/components/PrivateRoute.js +++ b/src/components/PrivateRoute.js @@ -4,12 +4,6 @@ import LoadingPage from "../pages/loading.js"; import ApiOfflinePage from "../pages/api-offline.js"; export const PrivateRoute = ({ children, routeType }) => { - const apiRoles = ApiGetCall({ - url: "/api/me", - queryKey: "authmecipp", - retry: 2, // Reduced retry count to show offline message sooner - }); - const session = ApiGetCall({ url: "/.auth/me", queryKey: "authmeswa", @@ -17,8 +11,19 @@ export const PrivateRoute = ({ children, routeType }) => { staleTime: 120000, // 2 minutes }); + const apiRoles = ApiGetCall({ + url: "/api/me", + queryKey: "authmecipp", + retry: 2, // Reduced retry count to show offline message sooner + waiting: !session.isSuccess || session.data?.clientPrincipal === null, + }); + // Check if the session is still loading before determining authentication status - if (session.isLoading || apiRoles.isLoading) { + if ( + session.isLoading || + apiRoles.isLoading || + (apiRoles.isFetching && (apiRoles.data === null || apiRoles.data === undefined)) + ) { return ; } @@ -26,7 +31,8 @@ export const PrivateRoute = ({ children, routeType }) => { // Or other network errors that would indicate API is unavailable if ( apiRoles?.error?.response?.status === 404 || // API endpoint not found - apiRoles?.error?.response?.status === 502 || // Service unavailable + apiRoles?.error?.response?.status === 502 || // Bad Gateway + apiRoles?.error?.response?.status === 503 || // Service Unavailable (apiRoles?.isSuccess && !apiRoles?.data) // No client principal data, indicating API might be offline ) { return ; @@ -63,10 +69,14 @@ export const PrivateRoute = ({ children, routeType }) => { const userRoles = roles?.filter((role) => !blockedRoles.includes(role)) ?? []; const isAuthenticated = userRoles.length > 0 && !apiRoles?.error; const isAdmin = roles?.includes("admin") || roles?.includes("superadmin"); - if (routeType === "admin") { - return !isAdmin ? : children; - } else { - return !isAuthenticated ? : children; + if (routeType === "admin" && !isAdmin) { + return ; + } + + if (!isAuthenticated) { + return ; } + + return children; } }; diff --git a/src/components/ReleaseNotesDialog.js b/src/components/ReleaseNotesDialog.js new file mode 100644 index 000000000000..6fc9274dbca3 --- /dev/null +++ b/src/components/ReleaseNotesDialog.js @@ -0,0 +1,474 @@ +๏ปฟimport { + Component, + forwardRef, + useCallback, + useEffect, + useImperativeHandle, + useMemo, + useRef, + useState, +} from "react"; +import { + Box, + Button, + CircularProgress, + Dialog, + DialogActions, + DialogContent, + DialogTitle, + Link, + Stack, + Typography, +} from "@mui/material"; +import ReactMarkdown from "react-markdown"; +import remarkGfm from "remark-gfm"; +import remarkParse from "remark-parse"; +import rehypeRaw from "rehype-raw"; +import { unified } from "unified"; +import packageInfo from "../../public/version.json"; +import { ApiGetCall } from "../api/ApiCall"; +import { GitHub } from "@mui/icons-material"; +import { CippAutoComplete } from "./CippComponents/CippAutocomplete"; + +const RELEASE_COOKIE_KEY = "cipp_release_notice"; +const RELEASE_OWNER = "KelvinTegelaar"; +const RELEASE_REPO = "CIPP"; + +const secureFlag = () => { + if (typeof window === "undefined") { + return ""; + } + + return window.location.protocol === "https:" ? " Secure" : ""; +}; + +const getCookie = (name) => { + if (typeof document === "undefined") { + return null; + } + + const cookiePrefix = `${name}=`; + const cookies = document.cookie.split("; "); + + for (const cookie of cookies) { + if (cookie.startsWith(cookiePrefix)) { + return decodeURIComponent(cookie.slice(cookiePrefix.length)); + } + } + + return null; +}; + +const setCookie = (name, value, days = 365) => { + if (typeof document === "undefined") { + return; + } + + const expires = new Date(Date.now() + days * 24 * 60 * 60 * 1000).toUTCString(); + document.cookie = `${name}=${encodeURIComponent( + value + )}; expires=${expires}; path=/; SameSite=Lax;${secureFlag()}`; +}; + +const buildReleaseMetadata = (version) => { + const [major = "0", minor = "0", patch = "0"] = String(version).split("."); + const currentTag = `v${major}.${minor}.${patch}`; + const baseTag = `v${major}.${minor}.0`; + const tagToUse = patch === "0" ? currentTag : baseTag; + + return { + currentTag, + releaseTag: tagToUse, + releaseUrl: `https://github.com/${RELEASE_OWNER}/${RELEASE_REPO}/releases/tag/${tagToUse}`, + }; +}; + +const formatReleaseBody = (body) => { + if (!body) { + return ""; + } + + return body.replace(/(^|[^\w/])@([a-zA-Z0-9-]+)/g, (match, prefix, username) => { + return `${prefix}[@${username}](https://github.com/${username})`; + }); +}; + +class MarkdownErrorBoundary extends Component { + constructor(props) { + super(props); + this.state = { hasError: false, error: null }; + } + + static getDerivedStateFromError(error) { + return { hasError: true, error }; + } + + componentDidCatch(error) { + if (process.env.NODE_ENV !== "production") { + // eslint-disable-next-line no-console + console.error("Failed to render release notes", error); + } + } + + render() { + if (this.state.hasError) { + return this.props.fallback(this.state.error); + } + + return this.props.children; + } +} + +export const ReleaseNotesDialog = forwardRef((_props, ref) => { + const releaseMeta = useMemo(() => buildReleaseMetadata(packageInfo.version), []); + const [isEligible, setIsEligible] = useState(false); + const [open, setOpen] = useState(false); + const [isExpanded, setIsExpanded] = useState(false); + const [manualOpenRequested, setManualOpenRequested] = useState(false); + const [selectedReleaseTag, setSelectedReleaseTag] = useState(releaseMeta.releaseTag); + const hasOpenedRef = useRef(false); + + useEffect(() => { + hasOpenedRef.current = false; + }, [releaseMeta.releaseTag]); + + useEffect(() => { + setSelectedReleaseTag(releaseMeta.releaseTag); + }, [releaseMeta.releaseTag]); + + useEffect(() => { + if (typeof window === "undefined") { + return; + } + + const storedValue = getCookie(RELEASE_COOKIE_KEY); + + if (storedValue !== releaseMeta.releaseTag) { + setIsEligible(true); + } + }, [releaseMeta.releaseTag]); + + const shouldFetchReleaseList = isEligible || manualOpenRequested || open; + + const releaseListQuery = ApiGetCall({ + url: "/api/ListGitHubReleaseNotes", + queryKey: "list-github-release-options", + data: { + Owner: RELEASE_OWNER, + Repository: RELEASE_REPO, + }, + waiting: shouldFetchReleaseList, + staleTime: 300000, + }); + + const isReleaseListLoading = releaseListQuery.isLoading || releaseListQuery.isFetching; + + const releaseCatalog = useMemo(() => { + return Array.isArray(releaseListQuery.data) ? releaseListQuery.data : []; + }, [releaseListQuery.data]); + + useEffect(() => { + if (!releaseCatalog.length) { + return; + } + + if (!selectedReleaseTag) { + setSelectedReleaseTag(releaseCatalog[0].releaseTag); + return; + } + + const hasSelected = releaseCatalog.some((release) => release.releaseTag === selectedReleaseTag); + + if (!hasSelected) { + const fallbackRelease = + releaseCatalog.find((release) => release.releaseTag === releaseMeta.releaseTag) || + releaseCatalog[0]; + if (fallbackRelease) { + setSelectedReleaseTag(fallbackRelease.releaseTag); + } + } + }, [releaseCatalog, selectedReleaseTag, releaseMeta.releaseTag]); + + const releaseOptions = useMemo(() => { + const mapped = releaseCatalog.map((release) => { + const tag = release.releaseTag ?? release.tagName; + const label = release.name ? `${release.name} (${tag})` : tag; + return { + label, + value: tag, + addedFields: { + htmlUrl: release.htmlUrl, + publishedAt: release.publishedAt, + }, + }; + }); + + if (selectedReleaseTag && !mapped.some((option) => option.value === selectedReleaseTag)) { + mapped.push({ + label: selectedReleaseTag, + value: selectedReleaseTag, + addedFields: { + htmlUrl: releaseMeta.releaseUrl, + publishedAt: null, + }, + }); + } + + return mapped; + }, [releaseCatalog, selectedReleaseTag, releaseMeta.releaseUrl]); + + const selectedReleaseValue = useMemo(() => { + if (!selectedReleaseTag) { + return null; + } + + return ( + releaseOptions.find((option) => option.value === selectedReleaseTag) || { + label: selectedReleaseTag, + value: selectedReleaseTag, + } + ); + }, [releaseOptions, selectedReleaseTag]); + + const handleReleaseChange = useCallback( + (newValue) => { + const nextValue = Array.isArray(newValue) ? newValue[0] : newValue; + if (nextValue?.value && nextValue.value !== selectedReleaseTag) { + setSelectedReleaseTag(nextValue.value); + } + }, + [selectedReleaseTag] + ); + + useImperativeHandle(ref, () => ({ + open: () => { + setManualOpenRequested(true); + setOpen(true); + }, + })); + + const selectedReleaseData = useMemo(() => { + if (!selectedReleaseTag) { + return null; + } + + return ( + releaseCatalog.find((release) => release.releaseTag === selectedReleaseTag) || + releaseCatalog.find((release) => release.releaseTag === releaseMeta.releaseTag) || + null + ); + }, [releaseCatalog, selectedReleaseTag, releaseMeta.releaseTag]); + + const handleDismissUntilNextRelease = () => { + const newestRelease = releaseCatalog[0]; + const tagToStore = + newestRelease?.releaseTag ?? newestRelease?.tagName ?? releaseMeta.releaseTag; + setCookie(RELEASE_COOKIE_KEY, tagToStore); + setOpen(false); + setIsExpanded(false); + setManualOpenRequested(false); + setIsEligible(false); + }; + + const handleRemindLater = () => { + setOpen(false); + setIsExpanded(false); + setManualOpenRequested(false); + }; + + const toggleExpanded = () => { + setIsExpanded((prev) => !prev); + }; + + const requestedVersionLabel = + selectedReleaseData?.releaseTag ?? selectedReleaseTag ?? releaseMeta.currentTag; + const releaseName = + selectedReleaseData?.name || selectedReleaseValue?.label || `CIPP ${releaseMeta.currentTag}`; + const releaseHeading = releaseName || requestedVersionLabel; + const releaseBody = typeof selectedReleaseData?.body === "string" ? selectedReleaseData.body : ""; + const releaseUrl = + selectedReleaseData?.htmlUrl ?? + selectedReleaseValue?.addedFields?.htmlUrl ?? + releaseMeta.releaseUrl; + const formattedReleaseBody = useMemo(() => formatReleaseBody(releaseBody), [releaseBody]); + const gfmSupport = useMemo(() => { + if (!formattedReleaseBody) { + return { plugins: [remarkGfm], error: null }; + } + + try { + unified().use(remarkParse).use(remarkGfm).parse(formattedReleaseBody); + return { plugins: [remarkGfm], error: null }; + } catch (err) { + return { plugins: [], error: err }; + } + }, [formattedReleaseBody]); + + useEffect(() => { + if (!isEligible || hasOpenedRef.current) { + return; + } + + if (releaseCatalog.length || releaseListQuery.error) { + setOpen(true); + hasOpenedRef.current = true; + } + }, [isEligible, releaseCatalog.length, releaseListQuery.error]); + + return ( + + + + + {`Release notes for ${releaseHeading}`} + + + + + + + + {releaseListQuery.error ? ( + + We couldn't load additional releases right now. The latest release notes are shown + below. + {releaseListQuery.error?.message ? ` (${releaseListQuery.error.message})` : ""} + + ) : null} + {gfmSupport.error ? ( + + Displaying these release notes without GitHub-flavoured markdown enhancements due to a + parsing issue. Formatting may look different. + + ) : null} + {isReleaseListLoading && !selectedReleaseData ? ( + + + + ) : releaseListQuery.error ? ( + + We couldn't load the release notes right now. You can view them on GitHub instead. + {releaseListQuery.error?.message ? ` (${releaseListQuery.error.message})` : ""} + + ) : ( + + ( + + + We couldn't format these release notes + {error?.message ? ` (${error.message})` : ""}. A plain-text version is shown + below. + + + {releaseBody} + + + )} + > + ( + + ), + img: ({ node, ...props }) => ( + + ), + }} + rehypePlugins={[rehypeRaw]} + remarkPlugins={gfmSupport.plugins} + > + {formattedReleaseBody} + + + + )} + + + + + + + + + + + ); +}); + +ReleaseNotesDialog.displayName = "ReleaseNotesDialog"; diff --git a/src/components/actions-menu.js b/src/components/actions-menu.js index b63ed33e74c8..77a4c1c6a6cc 100644 --- a/src/components/actions-menu.js +++ b/src/components/actions-menu.js @@ -71,6 +71,7 @@ export const ActionsMenu = (props) => { if (action?.noConfirm && action.customFunction) { action.customFunction(data, action, {}); + popover.handleClose(); } else { createDialog.handleOpen(); popover.handleClose(); @@ -92,6 +93,7 @@ export const ActionsMenu = (props) => { api={actionData.action} row={actionData.data} relatedQueryKeys={queryKeys} + {...actionData.action} /> )} diff --git a/src/components/bulk-actions-menu.js b/src/components/bulk-actions-menu.js index fd15898e28a3..ff9a8613665a 100644 --- a/src/components/bulk-actions-menu.js +++ b/src/components/bulk-actions-menu.js @@ -2,7 +2,7 @@ import PropTypes from "prop-types"; import ChevronDownIcon from "@heroicons/react/24/outline/ChevronDownIcon"; import { Button, Link, ListItemText, Menu, MenuItem, SvgIcon } from "@mui/material"; import { usePopover } from "../hooks/use-popover"; -import { FilePresent, Laptop, Mail, Share, Shield, ShieldMoon } from "@mui/icons-material"; +import { FilePresent, Laptop, Mail, Share, Shield, ShieldMoon, PrecisionManufacturing, BarChart, Group } from "@mui/icons-material"; import { GlobeAltIcon, UsersIcon, ServerIcon } from "@heroicons/react/24/outline"; function getIconByName(iconName) { @@ -25,6 +25,12 @@ function getIconByName(iconName) { return ; case "ShieldMoon": return ; + case "PrecisionManufacturing": + return ; + case "BarChart": + return ; + case "Group": + return ; default: return null; } @@ -88,7 +94,15 @@ export const BulkActionsMenu = (props) => { ); } else { return ( - + { + if (action.onClick) { + action.onClick(); + } + popover.handleClose(); + }} + > {getIconByName(action.icon)} diff --git a/src/components/csvExportButton.js b/src/components/csvExportButton.js index 1d1dedddbb28..adce8e92e376 100644 --- a/src/components/csvExportButton.js +++ b/src/components/csvExportButton.js @@ -8,6 +8,7 @@ const csvConfig = mkConfig({ useKeysAsHeaders: true, }); +// Flatten nested objects so deeply nested properties export as dotted columns. const flattenObject = (obj, parentKey = "") => { const flattened = {}; Object.keys(obj).forEach((key) => { @@ -43,50 +44,63 @@ const flattenObject = (obj, parentKey = "") => { return flattened; }; -export const CSVExportButton = (props) => { - const { rows, columns, reportName, columnVisibility, ...other } = props; +// Shared helper so both toolbar buttons and bulk actions reuse identical CSV logic. +export const exportRowsToCsv = ({ + rows = [], + columns = [], + reportName = "Export", + columnVisibility = {}, +}) => { + if (!rows.length || !columns.length) { + return; + } - const handleExportRows = (rows) => { - const rowData = rows.map((row) => flattenObject(row.original)); - const columnKeys = columns.filter((c) => columnVisibility[c.id]).map((c) => c.id); + const rowData = rows.map((row) => flattenObject(row.original ?? row)); + const columnKeys = columns.filter((c) => columnVisibility[c.id]).map((c) => c.id); - const filterRowData = (row, allowedKeys) => { - const filteredRow = {}; - allowedKeys.forEach((key) => { - if (key in row) { - filteredRow[key] = row[key]; - } - }); - return filteredRow; - }; + const filterRowData = (row, allowedKeys) => { + const filteredRow = {}; + allowedKeys.forEach((key) => { + if (key in row) { + filteredRow[key] = row[key]; + } + }); + return filteredRow; + }; - const filteredData = rowData.map((row) => filterRowData(row, columnKeys)); + const filteredData = rowData.map((row) => filterRowData(row, columnKeys)); - const formattedData = filteredData.map((row) => { - const formattedRow = {}; - columnKeys.forEach((key) => { - const value = row[key]; - // check for string and do not format - if (typeof value === "string") { - formattedRow[key] = value; - return; - } + // Apply standard CIPP formatting so CSV values match on-screen representations. + const formattedData = filteredData.map((row) => { + const formattedRow = {}; + columnKeys.forEach((key) => { + const value = row[key]; + if (typeof value === "string") { + formattedRow[key] = value; + return; + } - // Pass flattened data to the formatter for CSV export - formattedRow[key] = getCippFormatting(value, key, "text", false); - }); - return formattedRow; + formattedRow[key] = getCippFormatting(value, key, "text", false); }); + return formattedRow; + }); - const csv = generateCsv(csvConfig)(formattedData); - csvConfig["filename"] = `${reportName}`; - download(csvConfig)(csv); - }; + const csv = generateCsv(csvConfig)(formattedData); + csvConfig["filename"] = `${reportName}`; + download(csvConfig)(csv); +}; + +export const CSVExportButton = (props) => { + const { rows = [], columns = [], reportName, columnVisibility = {}, ...other } = props; return ( - handleExportRows(rows)} {...other}> + exportRowsToCsv({ rows, columns, reportName, columnVisibility })} + {...other} + > diff --git a/src/components/linearProgressWithLabel.jsx b/src/components/linearProgressWithLabel.jsx index f01031da45ca..55b4db2967bd 100644 --- a/src/components/linearProgressWithLabel.jsx +++ b/src/components/linearProgressWithLabel.jsx @@ -1,12 +1,65 @@ -import { Box, LinearProgress, Typography } from "@mui/material"; +import { Box, LinearProgress } from "@mui/material"; export const LinearProgressWithLabel = (props) => { + const { value, colourLevels, addedLabel, ...otherProps } = props; + + // Function to determine color based on value and colourLevels + const getProgressColor = (value, colourLevels) => { + if (!colourLevels) { + return undefined; // Use default MUI color + } + + // Check if flipped mode is enabled + const isFlipped = colourLevels === 'flipped' || colourLevels.flipped === true; + + if (isFlipped) { + // Flipped color order: green -> yellow -> orange -> red + if (value >= 0 && value < 25) { + return "#4caf50"; // Green for low values when flipped + } else if (value >= 25 && value < 50) { + return "#ffeb3b"; // Yellow + } else if (value >= 50 && value < 75) { + return "#ff9800"; // Orange + } else if (value >= 75 && value <= 100) { + return "#f44336"; // Red for high values when flipped + } + } else { + // Normal color order: red -> orange -> yellow -> green + if (value >= 0 && value < 25) { + return colourLevels.level0to25 || "#f44336"; // Default red + } else if (value >= 25 && value < 50) { + return colourLevels.level25to50 || "#ff9800"; // Default orange + } else if (value >= 50 && value < 75) { + return colourLevels.level50to75 || "#ffeb3b"; // Default yellow + } else if (value >= 75 && value <= 100) { + return colourLevels.level75to100 || "#4caf50"; // Default green + } + } + + return undefined; // Fallback to default + }; + + const progressColor = getProgressColor(value, colourLevels); + return ( - + - {`${Math.round(props.value)}% ${props?.addedLabel ?? ""}`} + {`${Math.round(value)}% ${addedLabel ?? ""}`} ); }; diff --git a/src/components/pdfExportButton.js b/src/components/pdfExportButton.js index 3d011fd1ebf2..f0c0ce803b08 100644 --- a/src/components/pdfExportButton.js +++ b/src/components/pdfExportButton.js @@ -3,45 +3,171 @@ import { PictureAsPdf } from "@mui/icons-material"; import jsPDF from "jspdf"; import autoTable from "jspdf-autotable"; import { getCippFormatting } from "../utils/get-cipp-formatting"; +import { useSettings } from "../hooks/use-settings"; -export const PDFExportButton = (props) => { - const { rows, columns, reportName, columnVisibility, ...other } = props; - - const handleExportRows = (rows) => { - const unit = "pt"; - const size = "A3"; // Use A1, A2, A3 or A4 - const orientation = "landscape"; // portrait or landscape - const doc = new jsPDF(orientation, unit, size); - const tableData = rows.map((row) => row.original); - - //only export columns that are visible. - const exportColumns = columns - .filter((c) => columnVisibility[c.id]) - .map((c) => ({ header: c.header, dataKey: c.id })); - //for every existing row, get the valid formatting using getCippFormatting. - const formattedData = tableData.map((row) => { - const formattedRow = {}; - Object.keys(row).forEach((key) => { +// Flatten nested objects so deeply nested properties export properly. +// This function only restructures data without formatting - formatting happens later in one pass. +const flattenObject = (obj, parentKey = "") => { + const flattened = {}; + Object.keys(obj).forEach((key) => { + const fullKey = parentKey ? `${parentKey}.${key}` : key; + if (typeof obj[key] === "object" && obj[key] !== null && !Array.isArray(obj[key])) { + Object.assign(flattened, flattenObject(obj[key], fullKey)); + } else { + // Store the raw value - formatting will happen in a single pass later + flattened[fullKey] = obj[key]; + } + }); + return flattened; +}; + +// Shared helper so the toolbar buttons and bulk export path share the same PDF logic. +export const exportRowsToPdf = ({ + rows = [], + columns = [], + reportName = "Export", + columnVisibility = {}, + brandingSettings = {}, +}) => { + if (!rows.length || !columns.length) { + return; + } + + const unit = "pt"; + const size = "A3"; + const orientation = "landscape"; + const doc = new jsPDF(orientation, unit, size); + const tableData = rows.map((row) => flattenObject(row.original ?? row)); + + const exportColumns = columns + .filter((c) => columnVisibility[c.id]) + .map((c) => ({ header: c.header, dataKey: c.id })); + + // Use the existing formatting helper so PDF output mirrors table formatting. + const formattedData = tableData.map((row) => { + const formattedRow = {}; + exportColumns.forEach((col) => { + const key = col.dataKey; + if (key in row) { formattedRow[key] = getCippFormatting(row[key], key, "text", false); - }); - return formattedRow; + } }); + return formattedRow; + }); + + let logoHeight = 0; + if (brandingSettings?.logo) { + try { + const logoSize = 60; + const logoX = 40; + const logoY = 30; + doc.addImage(brandingSettings.logo, "PNG", logoX, logoY, logoSize, logoSize); + logoHeight = logoSize + 20; + } catch (error) { + console.warn("Failed to add logo to PDF:", error); + } + } - let content = { - startY: 100, - columns: exportColumns, - body: formattedData, - theme: "striped", - headStyles: { fillColor: [247, 127, 0] }, - }; - autoTable(doc, content); + const pageWidth = doc.internal.pageSize.getWidth(); + const margin = 40; + const availableWidth = pageWidth - 2 * margin; + const columnCount = exportColumns.length; - doc.save(`${reportName}.pdf`); + // Estimate column widths from content to keep tables readable regardless of dataset. + const columnWidths = exportColumns.map((col) => { + const headerLength = col.header.length; + const maxContentLength = Math.max( + ...formattedData.map((row) => String(row[col.dataKey] || "").length), + ); + const estimatedWidth = Math.max(headerLength, maxContentLength) * 6; + return Math.min(estimatedWidth, (availableWidth / columnCount) * 1.5); + }); + + const totalEstimatedWidth = columnWidths.reduce((sum, width) => sum + width, 0); + const normalizedWidths = columnWidths.map( + (width) => (width / totalEstimatedWidth) * availableWidth, + ); + + // Honor tenant branding colors when present so exports stay on-brand. + const getHeaderColor = () => { + if (brandingSettings?.colour) { + const hex = brandingSettings.colour.replace("#", ""); + const r = parseInt(hex.substr(0, 2), 16); + const g = parseInt(hex.substr(2, 2), 16); + const b = parseInt(hex.substr(4, 2), 16); + return [r, g, b]; + } + return [247, 127, 0]; + }; + + const content = { + startY: 100 + logoHeight, + head: [exportColumns.map((col) => col.header)], + body: formattedData.map((row) => exportColumns.map((col) => String(row[col.dataKey] || ""))), + theme: "striped", + headStyles: { + fillColor: getHeaderColor(), + textColor: [255, 255, 255], + fontStyle: "bold", + halign: "center", + valign: "middle", + fontSize: 10, + cellPadding: 8, + }, + bodyStyles: { + fontSize: 9, + cellPadding: 6, + valign: "top", + overflow: "linebreak", + cellWidth: "wrap", + }, + columnStyles: exportColumns.reduce((styles, col, index) => { + styles[index] = { + cellWidth: normalizedWidths[index], + halign: "left", + valign: "top", + }; + return styles; + }, {}), + margin: { + top: margin, + right: margin, + bottom: margin, + left: margin, + }, + tableWidth: "auto", + styles: { + overflow: "linebreak", + cellWidth: "wrap", + fontSize: 9, + cellPadding: 6, + }, }; + autoTable(doc, content); + + doc.save(`${reportName}.pdf`); +}; + +export const PDFExportButton = (props) => { + const { rows = [], columns = [], reportName, columnVisibility = {}, ...other } = props; + const brandingSettings = useSettings().customBranding; + return ( - handleExportRows(rows)} {...other}> + + exportRowsToPdf({ + rows, + columns, + reportName, + columnVisibility, + brandingSettings, + }) + } + {...other} + > diff --git a/src/components/property-list-item.js b/src/components/property-list-item.js index aa61fa0b5d23..4249e975cef0 100644 --- a/src/components/property-list-item.js +++ b/src/components/property-list-item.js @@ -1,16 +1,6 @@ -import { - Box, - Button, - IconButton, - ListItem, - ListItemText, - SvgIcon, - Tooltip, - Typography, -} from "@mui/material"; +import { Box, Button, ListItem, ListItemText, Typography } from "@mui/material"; import { useState } from "react"; -import CopyToClipboard from "react-copy-to-clipboard"; -import { CopyAll } from "@mui/icons-material"; +import { CippCopyToClipBoard } from "./CippComponents/CippCopyToClipboard"; export const PropertyListItem = (props) => { const { @@ -57,17 +47,7 @@ export const PropertyListItem = (props) => { )} )} - {copyItems && ( - - - - - - - - - - )} + {copyItems && }
    )} diff --git a/src/components/query-field.js b/src/components/query-field.js index f1078830ee60..dfeb6f37e1a4 100644 --- a/src/components/query-field.js +++ b/src/components/query-field.js @@ -29,7 +29,6 @@ export const QueryField = (props) => { inputRef.current.focus(); } }, - // eslint-disable-next-line react-hooks/exhaustive-deps [disabled]); const handleChange = useCallback((event) => { diff --git a/src/components/resource-loading.js b/src/components/resource-loading.js index 743a53baea03..d80a6b09452a 100644 --- a/src/components/resource-loading.js +++ b/src/components/resource-loading.js @@ -1,5 +1,5 @@ import PropTypes from "prop-types"; -import { CircularProgress, SvgIcon, Typography } from "@mui/material"; +import { CircularProgress, Typography } from "@mui/material"; import { styled } from "@mui/material/styles"; const ResourceLoadingRoot = styled("div")(({ theme }) => ({ diff --git a/src/components/toaster.js b/src/components/toaster.js index aa26b5c462c6..933adf625de1 100644 --- a/src/components/toaster.js +++ b/src/components/toaster.js @@ -1,5 +1,5 @@ import { CloseSharp } from "@mui/icons-material"; -import { Alert, Button, IconButton, Snackbar } from "@mui/material"; +import { Alert, IconButton, Snackbar } from "@mui/material"; import { useSelector } from "react-redux"; import { useDispatch } from "react-redux"; import { closeToast } from "../store/toasts"; diff --git a/src/contexts/release-notes-context.js b/src/contexts/release-notes-context.js new file mode 100644 index 000000000000..54f29623522e --- /dev/null +++ b/src/contexts/release-notes-context.js @@ -0,0 +1,30 @@ +๏ปฟimport { createContext, useCallback, useContext, useMemo, useRef } from "react"; +import PropTypes from "prop-types"; +import { ReleaseNotesDialog } from "../components/ReleaseNotesDialog"; + +const ReleaseNotesContext = createContext({ + openReleaseNotes: () => {}, +}); + +export const ReleaseNotesProvider = ({ children }) => { + const dialogRef = useRef(null); + + const openReleaseNotes = useCallback(() => { + dialogRef.current?.open(); + }, []); + + const value = useMemo(() => ({ openReleaseNotes }), [openReleaseNotes]); + + return ( + + {children} + + + ); +}; + +ReleaseNotesProvider.propTypes = { + children: PropTypes.node.isRequired, +}; + +export const useReleaseNotes = () => useContext(ReleaseNotesContext); diff --git a/src/contexts/settings-context.js b/src/contexts/settings-context.js index a265c9fd09aa..156403b0c472 100644 --- a/src/contexts/settings-context.js +++ b/src/contexts/settings-context.js @@ -67,6 +67,15 @@ const storeSettings = (value) => { storage.setItem(STORAGE_KEY, JSON.stringify(value)); }; +const stripServerManagedSettings = (settings) => { + if (!settings || typeof settings !== "object") { + return settings; + } + + const { bookmarks, ...cleanedSettings } = settings; + return cleanedSettings; +}; + const initialSettings = { direction: "ltr", paletteMode: "light", @@ -74,6 +83,16 @@ const initialSettings = { pinNav: true, currentTenant: null, showDevtools: false, + customBranding: { + colour: "#F77F00", + logo: null, + }, + persistFilters: false, + lastUsedFilters: {}, + breadcrumbMode: "hierarchical", + bookmarkSidebar: true, + bookmarkPopover: false, + compactNav: false, }; const initialState = { @@ -86,6 +105,7 @@ export const SettingsContext = createContext({ handleReset: () => {}, handleUpdate: () => {}, isCustom: false, + setLastUsedFilter: () => {}, }); export const SettingsProvider = (props) => { @@ -96,18 +116,37 @@ export const SettingsProvider = (props) => { const restored = restoreSettings(); if (restored) { - if (!restored.currentTheme && restored.paletteMode) { - restored.currentTheme = { value: restored.paletteMode, label: restored.paletteMode }; + const cleanedRestored = stripServerManagedSettings(restored); + + if (!cleanedRestored.currentTheme && cleanedRestored.paletteMode) { + cleanedRestored.currentTheme = { + value: cleanedRestored.paletteMode, + label: cleanedRestored.paletteMode, + }; } + storeSettings(cleanedRestored); + + setState((prevState) => ({ + ...prevState, + ...cleanedRestored, + isInitialized: true, + })); + } else { + // No stored settings found, initialize with defaults setState((prevState) => ({ ...prevState, - ...restored, isInitialized: true, })); } }, []); + useEffect(() => { + if (state.isInitialized) { + storeSettings(state); + } + }, [state]); + const handleReset = useCallback(() => { deleteSettings(); setState((prevState) => ({ @@ -118,15 +157,22 @@ export const SettingsProvider = (props) => { const handleUpdate = useCallback((settings) => { setState((prevState) => { - storeSettings({ + // Filter out null and undefined values to prevent resetting settings + const filteredSettings = Object.entries(settings).reduce((acc, [key, value]) => { + if (key !== "bookmarks" && value !== null && value !== undefined) { + acc[key] = value; + } + return acc; + }, {}); + + const updatedSettings = stripServerManagedSettings({ ...prevState, - ...settings, + ...filteredSettings, }); - return { - ...prevState, - ...settings, - }; + storeSettings(updatedSettings); + + return updatedSettings; }); }, []); @@ -146,6 +192,19 @@ export const SettingsProvider = (props) => { handleReset, handleUpdate, isCustom, + setLastUsedFilter: (page, filter) => { + setState((prevState) => { + const updated = stripServerManagedSettings({ + ...prevState, + lastUsedFilters: { + ...prevState.lastUsedFilters, + [page]: filter, + }, + }); + storeSettings(updated); + return updated; + }); + }, }} > {children} diff --git a/src/data/AuditLogSchema.json b/src/data/AuditLogSchema.json index 4ed181f46654..93122adbc4cf 100644 --- a/src/data/AuditLogSchema.json +++ b/src/data/AuditLogSchema.json @@ -16,7 +16,10 @@ "CIPPGeoLocation": "List:countryList", "CIPPBadRepIP": "String", "CIPPHostedIP": "String", - "CIPPIPDetected": "String" + "CIPPIPDetected": "String", + "CIPPUserId": "String", + "CIPPUserKey": "String", + "CIPPUsername": "String" }, "Audit.Exchange": { "Id": "Combination GUID", @@ -71,40 +74,126 @@ "LogonError": "String" }, "List:Operation": [ - { "value": "UserLoggedIn", "label": "A user logged in" }, - { "value": "mailitemsaccessed", "label": "accessed mailbox items" }, - { "value": "add delegation entry.", "label": "added delegation entry" }, - { "value": "add domain to company.", "label": "added domain to company" }, - { "value": "add group.", "label": "added group" }, - { "value": "add member to group.", "label": "added member to group" }, - { "value": "add-mailboxpermission", "label": "added delegate mailbox permissions" }, - { "value": "add member to role.", "label": "added member to role" }, - { "value": "add partner to company.", "label": "added a partner to the directory" }, - { "value": "add service principal.", "label": "added service principal" }, + { + "value": "UserLoggedIn", + "label": "A user logged in" + }, + { + "value": "mailitemsaccessed", + "label": "accessed mailbox items" + }, + { + "value": "add delegation entry.", + "label": "added delegation entry" + }, + { + "value": "add domain to company.", + "label": "added domain to company" + }, + { + "value": "add group.", + "label": "added group" + }, + { + "value": "add member to group.", + "label": "added member to group" + }, + { + "value": "add-mailboxpermission", + "label": "added delegate mailbox permissions" + }, + { + "value": "add member to role.", + "label": "added member to role" + }, + { + "value": "add partner to company.", + "label": "added a partner to the directory" + }, + { + "value": "add service principal.", + "label": "added service principal" + }, { "value": "add service principal credentials.", "label": "added credentials to a service principal" }, - { "value": "add user.", "label": "added user" }, - { "value": "addfolderpermissions", "label": "added permissions to folder" }, - { "value": "applyrecordlabel", "label": "labeled message as a record" }, - { "value": "change user license.", "label": "changed user license" }, - { "value": "change user password.", "label": "changed user password" }, - { "value": "copy", "label": "copied messages to another folder" }, - { "value": "create", "label": "created mailbox item" }, - { "value": "delete group.", "label": "deleted group" }, - { "value": "delete user.", "label": "deleted user" }, - { "value": "harddelete", "label": "purged messages from the mailbox" }, - { "value": "mailboxlogin", "label": "user signed in to mailbox" }, - { "value": "move", "label": "moved messages to another folder" }, - { "value": "movetodeleteditems", "label": "moved messages to deleted items folder" }, - { "value": "new-inboxrule", "label": "created new inbox rule in outlook web app" }, - { "value": "remove delegation entry.", "label": "removed delegation entry" }, - { "value": "remove domain from company.", "label": "removed domain from company" }, - { "value": "remove member from group.", "label": "removed member from group" }, - { "value": "remove member from a role.", "label": "remove member from a role" }, - { "value": "Disable Strong Authentication.", "label": "Disable Strong Authentication." }, - + { + "value": "add user.", + "label": "added user" + }, + { + "value": "addfolderpermissions", + "label": "added permissions to folder" + }, + { + "value": "applyrecordlabel", + "label": "labeled message as a record" + }, + { + "value": "change user license.", + "label": "changed user license" + }, + { + "value": "change user password.", + "label": "changed user password" + }, + { + "value": "copy", + "label": "copied messages to another folder" + }, + { + "value": "create", + "label": "created mailbox item" + }, + { + "value": "delete group.", + "label": "deleted group" + }, + { + "value": "delete user.", + "label": "deleted user" + }, + { + "value": "harddelete", + "label": "purged messages from the mailbox" + }, + { + "value": "mailboxlogin", + "label": "user signed in to mailbox" + }, + { + "value": "move", + "label": "moved messages to another folder" + }, + { + "value": "movetodeleteditems", + "label": "moved messages to deleted items folder" + }, + { + "value": "new-inboxrule", + "label": "created new inbox rule in outlook web app" + }, + { + "value": "remove delegation entry.", + "label": "removed delegation entry" + }, + { + "value": "remove domain from company.", + "label": "removed domain from company" + }, + { + "value": "remove member from group.", + "label": "removed member from group" + }, + { + "value": "remove member from a role.", + "label": "remove member from a role" + }, + { + "value": "Disable Strong Authentication.", + "label": "Disable Strong Authentication." + }, { "value": "remove service principal.", "label": "removed a service principal from the directory" @@ -113,19 +202,58 @@ "value": "remove service principal credentials.", "label": "removed credentials from a service principal" }, - { "value": "remove-mailboxpermission", "label": "removed delegate mailbox permissions" }, - { "value": "remove member from role.", "label": "removed a user from a directory role" }, - { "value": "remove partner from company.", "label": "removed a partner from the directory" }, - { "value": "removefolderpermissions", "label": "removed permissions from folder" }, - { "value": "reset user password.", "label": "reset user password" }, - { "value": "send", "label": "sent message" }, - { "value": "sendas", "label": "sent message using send as permissions" }, - { "value": "sendonbehalf", "label": "sent message using send on behalf permissions" }, - { "value": "set company contact information.", "label": "set company contact information" }, - { "value": "set company information.", "label": "set company information" }, - { "value": "set delegation entry.", "label": "set delegation entry" }, - { "value": "set dirsyncenabled flag.", "label": "turned on azure ad sync" }, - { "value": "set domain authentication.", "label": "set domain authentication" }, + { + "value": "remove-mailboxpermission", + "label": "removed delegate mailbox permissions" + }, + { + "value": "remove member from role.", + "label": "removed a user from a directory role" + }, + { + "value": "remove partner from company.", + "label": "removed a partner from the directory" + }, + { + "value": "removefolderpermissions", + "label": "removed permissions from folder" + }, + { + "value": "reset user password.", + "label": "reset user password" + }, + { + "value": "send", + "label": "sent message" + }, + { + "value": "sendas", + "label": "sent message using send as permissions" + }, + { + "value": "sendonbehalf", + "label": "sent message using send on behalf permissions" + }, + { + "value": "set company contact information.", + "label": "set company contact information" + }, + { + "value": "set company information.", + "label": "set company information" + }, + { + "value": "set delegation entry.", + "label": "set delegation entry" + }, + { + "value": "set dirsyncenabled flag.", + "label": "turned on azure ad sync" + }, + { + "value": "set domain authentication.", + "label": "set domain authentication" + }, { "value": "set federation settings on domain.", "label": "updated the federation settings for a domain" @@ -134,29 +262,69 @@ "value": "set force change user password.", "label": "set property that forces user to change password" }, - { "value": "set-inboxrule", "label": "modified inbox rule from outlook web app" }, - { "value": "set license properties.", "label": "set license properties" }, - { "value": "set password policy.", "label": "set password policy" }, - { "value": "softdelete", "label": "deleted messages from deleted items folder" }, - { "value": "update", "label": "updated message" }, - { "value": "update user.", "label": "updated user" }, - { "value": "update group.", "label": "updated group" }, - { "value": "update domain.", "label": "updated domain" }, + { + "value": "set-inboxrule", + "label": "modified inbox rule from outlook web app" + }, + { + "value": "set license properties.", + "label": "set license properties" + }, + { + "value": "set password policy.", + "label": "set password policy" + }, + { + "value": "softdelete", + "label": "deleted messages from deleted items folder" + }, + { + "value": "update", + "label": "updated message" + }, + { + "value": "update user.", + "label": "updated user" + }, + { + "value": "update group.", + "label": "updated group" + }, + { + "value": "update domain.", + "label": "updated domain" + }, { "value": "updatecalendardelegation", "label": "added or removed user with delegate access to calendar folder" }, - { "value": "updatefolderpermissions", "label": "modified folder permission" }, - { "value": "updateinboxrules", "label": "updated inbox rules from outlook client" }, - { "value": "verify domain.", "label": "verified domain" }, - { "value": "verify email verified domain.", "label": "verified email verified domain" }, + { + "value": "updatefolderpermissions", + "label": "modified folder permission" + }, + { + "value": "updateinboxrules", + "label": "updated inbox rules from outlook client" + }, + { + "value": "verify domain.", + "label": "verified domain" + }, + { + "value": "verify email verified domain.", + "label": "verified email verified domain" + }, { "value": "Update StsRefreshTokenValidFrom Timestamp.", "label": "Update StsRefreshTokenValidFrom Timestamp." } ], "List:LogonType": [ - { "value": 0, "Membername": "Owner", "label": "The mailbox owner." }, + { + "value": 0, + "Membername": "Owner", + "label": "The mailbox owner." + }, { "value": 1, "Membername": "Admin", @@ -177,19 +345,63 @@ "Membername": "SystemService", "label": "A service account in the Microsoft datacenter" }, - { "value": 5, "Membername": "BestAccess", "label": "Reserved for internal use." }, - { "value": 6, "Membername": "DelegatedAdmin", "label": "A delegated administrator." } + { + "value": 5, + "Membername": "BestAccess", + "label": "Reserved for internal use." + }, + { + "value": 6, + "Membername": "DelegatedAdmin", + "label": "A delegated administrator." + } ], "List:UserType": [ - { "value": 0, "Membername": "Regular", "label": "A regular user." }, - { "value": 1, "Membername": "Reserved", "label": "A reserved user." }, - { "value": 2, "Membername": "Admin", "label": "An administrator." }, - { "value": 3, "Membername": "DcAdmin", "label": "A Microsoft datacenter operator." }, - { "value": 4, "Membername": "System", "label": "A system account." }, - { "value": 5, "Membername": "Application", "label": "An application." }, - { "value": 6, "Membername": "ServicePrincipal", "label": "A service principal." }, - { "value": 7, "Membername": "CustomPolicy", "label": "A custom policy." }, - { "value": 8, "Membername": "SystemPolicy", "label": "A system policy." } + { + "value": 0, + "Membername": "Regular", + "label": "A regular user." + }, + { + "value": 1, + "Membername": "Reserved", + "label": "A reserved user." + }, + { + "value": 2, + "Membername": "Admin", + "label": "An administrator." + }, + { + "value": 3, + "Membername": "DcAdmin", + "label": "A Microsoft datacenter operator." + }, + { + "value": 4, + "Membername": "System", + "label": "A system account." + }, + { + "value": 5, + "Membername": "Application", + "label": "An application." + }, + { + "value": 6, + "Membername": "ServicePrincipal", + "label": "A service principal." + }, + { + "value": 7, + "Membername": "CustomPolicy", + "label": "A custom policy." + }, + { + "value": 8, + "Membername": "SystemPolicy", + "label": "A system policy." + } ], "List:AuditLogRecordType": [ { @@ -207,13 +419,21 @@ "Membername": "ExchangeItemGroup", "label": "Events from an Exchange mailbox audit log for actions that can be performed on multiple items, such as moving or deleted one or more email messages." }, - { "value": 4, "Membername": "SharePoint", "label": "SharePoint events." }, + { + "value": 4, + "Membername": "SharePoint", + "label": "SharePoint events." + }, { "value": 6, "Membername": "SharePointFileOperation", "label": "SharePoint file operation events." }, - { "value": 7, "Membername": "OneDrive", "label": "OneDrive for Business events." }, + { + "value": 7, + "Membername": "OneDrive", + "label": "OneDrive for Business events." + }, { "value": 8, "Membername": "AzureActiveDirectory", @@ -269,9 +489,21 @@ "Membername": "ExchangeAggregatedOperation", "label": "Aggregated Exchange mailbox auditing events." }, - { "value": 20, "Membername": "PowerBIAudit", "label": "Power BI events." }, - { "value": 21, "Membername": "CRM", "label": "Dynamics 365 events." }, - { "value": 22, "Membername": "Yammer", "label": "Yammer events." }, + { + "value": 20, + "Membername": "PowerBIAudit", + "label": "Power BI events." + }, + { + "value": 21, + "Membername": "CRM", + "label": "Dynamics 365 events." + }, + { + "value": 22, + "Membername": "Yammer", + "label": "Yammer events." + }, { "value": 23, "Membername": "SkypeForBusinessCmdlets", @@ -282,7 +514,11 @@ "Membername": "Discovery", "label": "Events for eDiscovery activities performed by running content searches and managing eDiscovery cases in the Security & Compliance Center." }, - { "value": 25, "Membername": "MicrosoftTeams", "label": "Events from Microsoft Teams." }, + { + "value": 25, + "Membername": "MicrosoftTeams", + "label": "Events from Microsoft Teams." + }, { "value": 28, "Membername": "ThreatIntelligence", @@ -298,8 +534,16 @@ "Membername": "MicrosoftFlow", "label": "Microsoft Power Automate (formerly called Microsoft Flow) events." }, - { "value": 31, "Membername": "AeD", "label": "Advanced eDiscovery events." }, - { "value": 32, "Membername": "MicrosoftStream", "label": "Microsoft Stream events." }, + { + "value": 31, + "Membername": "AeD", + "label": "Advanced eDiscovery events." + }, + { + "value": 32, + "Membername": "MicrosoftStream", + "label": "Microsoft Stream events." + }, { "value": 33, "Membername": "ComplianceDLPSharePointClassification", @@ -310,7 +554,11 @@ "Membername": "ThreatFinder", "label": "Campaign-related events from Microsoft Defender for Office 365." }, - { "value": 35, "Membername": "Project", "label": "Microsoft Project events." }, + { + "value": 35, + "Membername": "Project", + "label": "Microsoft Project events." + }, { "value": 36, "Membername": "SharePointListOperation", @@ -326,7 +574,11 @@ "Membername": "DataGovernance", "label": "Events related to retention policies and retention labels in the Security & Compliance Center" }, - { "value": 39, "Membername": "Kaizala", "label": "Kaizala events." }, + { + "value": 39, + "Membername": "Kaizala", + "label": "Kaizala events." + }, { "value": 40, "Membername": "SecurityComplianceAlerts", @@ -352,7 +604,11 @@ "Membername": "WorkplaceAnalytics", "label": "Workplace Analytics events." }, - { "value": 45, "Membername": "PowerAppsApp", "label": "Power Apps events." }, + { + "value": 45, + "Membername": "PowerAppsApp", + "label": "Power Apps events." + }, { "value": 46, "Membername": "PowerAppsPlan", @@ -408,13 +664,21 @@ "Membername": "SharePointFieldOperation", "label": "SharePoint list field events." }, - { "value": 57, "Membername": "MicrosoftTeamsAdmin", "label": "Teams admin events." }, + { + "value": 57, + "Membername": "MicrosoftTeamsAdmin", + "label": "Teams admin events." + }, { "value": 58, "Membername": "HRSignal", "label": "Events related to HR data signals that support the Insider risk management solution." }, - { "value": 59, "Membername": "MicrosoftTeamsDevice", "label": "Teams device events." }, + { + "value": 59, + "Membername": "MicrosoftTeamsDevice", + "label": "Teams device events." + }, { "value": 60, "Membername": "MicrosoftTeamsAnalytics", @@ -430,15 +694,31 @@ "Membername": "Campaign", "label": "Email campaign events from Microsoft Defender for Office 365." }, - { "value": 63, "Membername": "DLPEndpoint", "label": "Endpoint DLP events." }, + { + "value": 63, + "Membername": "DLPEndpoint", + "label": "Endpoint DLP events." + }, { "value": 64, "Membername": "AirInvestigation", "label": "Automated incident response (AIR) events." }, - { "value": 65, "Membername": "Quarantine", "label": "Quarantine events." }, - { "value": 66, "Membername": "MicrosoftForms", "label": "Microsoft Forms events." }, - { "value": 67, "Membername": "ApplicationAudit", "label": "Application audit events." }, + { + "value": 65, + "Membername": "Quarantine", + "label": "Quarantine events." + }, + { + "value": 66, + "Membername": "MicrosoftForms", + "label": "Microsoft Forms events." + }, + { + "value": 67, + "Membername": "ApplicationAudit", + "label": "Application audit events." + }, { "value": 68, "Membername": "ComplianceSupervisionExchange", @@ -464,13 +744,21 @@ "Membername": "MipAutoLabelSharePointPolicyLocation", "label": "Auto-labeling policy events in SharePoint." }, - { "value": 73, "Membername": "MicrosoftTeamsShifts", "label": "Teams Shifts events." }, + { + "value": 73, + "Membername": "MicrosoftTeamsShifts", + "label": "Teams Shifts events." + }, { "value": 75, "Membername": "MipAutoLabelExchangeItem", "label": "Auto-labeling events in Exchange." }, - { "value": 76, "Membername": "CortanaBriefing", "label": "Briefing email events." }, + { + "value": 76, + "Membername": "CortanaBriefing", + "label": "Briefing email events." + }, { "value": 78, "Membername": "WDATPAlerts", @@ -526,15 +814,31 @@ "Membername": "PhysicalBadgingSignal", "label": "Events related to physical badging signals that support the Insider risk management solution." }, - { "value": 93, "Membername": "AipDiscover", "label": "AIP scanner events" }, + { + "value": 93, + "Membername": "AipDiscover", + "label": "AIP scanner events" + }, { "value": 94, "Membername": "AipSensitivityLabelAction", "label": "AIP sensitivity label events" }, - { "value": 95, "Membername": "AipProtectionAction", "label": "AIP protection events" }, - { "value": 96, "Membername": "AipFileDeleted", "label": "AIP file deletion events" }, - { "value": 97, "Membername": "AipHeartBeat", "label": "AIP heartbeat events" }, + { + "value": 95, + "Membername": "AipProtectionAction", + "label": "AIP protection events" + }, + { + "value": 96, + "Membername": "AipFileDeleted", + "label": "AIP file deletion events" + }, + { + "value": 97, + "Membername": "AipHeartBeat", + "label": "AIP heartbeat events" + }, { "value": 98, "Membername": "MCASAlerts", @@ -560,8 +864,16 @@ "Membername": "SharePointSearch", "label": "Events related to searching an organization's SharePoint home site." }, - { "value": 103, "Membername": "PrivacyInsights", "label": "Privacy insight events." }, - { "value": 105, "Membername": "MyAnalyticsSettings", "label": "MyAnalytics events." }, + { + "value": 103, + "Membername": "PrivacyInsights", + "label": "Privacy insight events." + }, + { + "value": 105, + "Membername": "MyAnalyticsSettings", + "label": "MyAnalytics events." + }, { "value": 106, "Membername": "SecurityComplianceUserChange", @@ -617,13 +929,21 @@ "Membername": "PowerPagesSite", "label": "Activities related to Power Pages site." }, - { "value": 188, "Membername": "PlannerPlan", "label": "Microsoft Planner plan events." }, + { + "value": 188, + "Membername": "PlannerPlan", + "label": "Microsoft Planner plan events." + }, { "value": 189, "Membername": "PlannerCopyPlan", "label": "Microsoft Planner copy plan events." }, - { "value": 190, "Membername": "PlannerTask", "label": "Microsoft Planner task events." }, + { + "value": 190, + "Membername": "PlannerTask", + "label": "Microsoft Planner task events." + }, { "value": 191, "Membername": "PlannerRoster", @@ -674,7 +994,11 @@ "Membername": "ProjectForThewebRoadmapSettings", "label": "Microsoft Project for the web roadmap tenant settings events." }, - { "value": 216, "Membername": "Viva Goals", "label": "Viva Goals events." }, + { + "value": 216, + "Membername": "Viva Goals", + "label": "Viva Goals events." + }, { "value": 217, "Membername": "MicrosoftGraphDataConnectConsent", @@ -685,7 +1009,11 @@ "Membername": "AttackSimAdmin", "label": "Events related to admin activities in Attack Simulation & Training in Microsoft Defender for Office 365." }, - { "value": 230, "Membername": "TeamsUpStrings", "label": "Teams UpStrings App Events." }, + { + "value": 230, + "Membername": "TeamsUpStrings", + "label": "Teams UpStrings App Events." + }, { "value": 231, "Membername": "PlannerRosterSensitivityLabel", @@ -718,257 +1046,1013 @@ } ], "List:countryList": [ - { "value": "AF", "label": "Afghanistan" }, - { "value": "AX", "label": "\u00c5land Islands" }, - { "value": "AL", "label": "Albania" }, - { "value": "DZ", "label": "Algeria" }, - { "value": "AS", "label": "American Samoa" }, - { "value": "AD", "label": "Andorra" }, - { "value": "AO", "label": "Angola" }, - { "value": "AI", "label": "Anguilla" }, - { "value": "AQ", "label": "Antarctica" }, - { "value": "AG", "label": "Antigua and Barbuda" }, - { "value": "AR", "label": "Argentina" }, - { "value": "AM", "label": "Armenia" }, - { "value": "AW", "label": "Aruba" }, - { "value": "AC", "label": "Ascension Island" }, - { "value": "AU", "label": "Australia" }, - { "value": "AT", "label": "Austria" }, - { "value": "AZ", "label": "Azerbaijan" }, - { "value": "BS", "label": "Bahamas" }, - { "value": "BH", "label": "Bahrain" }, - { "value": "BD", "label": "Bangladesh" }, - { "value": "BB", "label": "Barbados" }, - { "value": "BY", "label": "Belarus" }, - { "value": "BE", "label": "Belgium" }, - { "value": "BZ", "label": "Belize" }, - { "value": "BJ", "label": "Benin" }, - { "value": "BM", "label": "Bermuda" }, - { "value": "BT", "label": "Bhutan" }, - { "value": "BO", "label": "Bolivia, Plurinational State of" }, - { "value": "BQ", "label": "Bonaire, Sint Eustatius and Saba" }, - { "value": "BA", "label": "Bosnia and Herzegovina" }, - { "value": "BW", "label": "Botswana" }, - { "value": "BV", "label": "Bouvet Island" }, - { "value": "BR", "label": "Brazil" }, - { "value": "IO", "label": "British Indian Ocean Territory" }, - { "value": "BN", "label": "Brunei Darussalam" }, - { "value": "BG", "label": "Bulgaria" }, - { "value": "BF", "label": "Burkina Faso" }, - { "value": "BI", "label": "Burundi" }, - { "value": "KH", "label": "Cambodia" }, - { "value": "CM", "label": "Cameroon" }, - { "value": "CA", "label": "Canada" }, - { "value": "CV", "label": "Cape Verde" }, - { "value": "KY", "label": "Cayman Islands" }, - { "value": "CF", "label": "Central African Republic" }, - { "value": "TD", "label": "Chad" }, - { "value": "CL", "label": "Chile" }, - { "value": "CN", "label": "China" }, - { "value": "CX", "label": "Christmas Island" }, - { "value": "CC", "label": "Cocos (Keeling) Islands" }, - { "value": "CO", "label": "Colombia" }, - { "value": "KM", "label": "Comoros" }, - { "value": "CG", "label": "Congo" }, - { "value": "CD", "label": "Congo, the Democratic Republic of the" }, - { "value": "CK", "label": "Cook Islands" }, - { "value": "CR", "label": "Costa Rica" }, - { "value": "CI", "label": "C\u00f4te d'Ivoire" }, - { "value": "HR", "label": "Croatia" }, - { "value": "CU", "label": "Cuba" }, - { "value": "CW", "label": "Cura\u00e7ao" }, - { "value": "CY", "label": "Cyprus" }, - { "value": "CZ", "label": "Czech Republic" }, - { "value": "DK", "label": "Denmark" }, - { "value": "DG", "label": "Diego Garcia" }, - { "value": "DJ", "label": "Djibouti" }, - { "value": "DM", "label": "Dominica" }, - { "value": "DO", "label": "Dominican Republic" }, - { "value": "EC", "label": "Ecuador" }, - { "value": "EG", "label": "Egypt" }, - { "value": "SV", "label": "El Salvador" }, - { "value": "GQ", "label": "Equatorial Guinea" }, - { "value": "ER", "label": "Eritrea" }, - { "value": "EE", "label": "Estonia" }, - { "value": "ET", "label": "Ethiopia" }, - { "value": "FK", "label": "Falkland Islands (Malvinas)" }, - { "value": "FO", "label": "Faroe Islands" }, - { "value": "FJ", "label": "Fiji" }, - { "value": "FI", "label": "Finland" }, - { "value": "FR", "label": "France" }, - { "value": "GF", "label": "French Guiana" }, - { "value": "PF", "label": "French Polynesia" }, - { "value": "TF", "label": "French Southern Territories" }, - { "value": "GA", "label": "Gabon" }, - { "value": "GM", "label": "Gambia" }, - { "value": "GE", "label": "Georgia" }, - { "value": "DE", "label": "Germany" }, - { "value": "GH", "label": "Ghana" }, - { "value": "GI", "label": "Gibraltar" }, - { "value": "GR", "label": "Greece" }, - { "value": "GL", "label": "Greenland" }, - { "value": "GD", "label": "Grenada" }, - { "value": "GP", "label": "Guadeloupe" }, - { "value": "GU", "label": "Guam" }, - { "value": "GT", "label": "Guatemala" }, - { "value": "GG", "label": "Guernsey" }, - { "value": "GN", "label": "Guinea" }, - { "value": "GW", "label": "Guinea-Bissau" }, - { "value": "GY", "label": "Guyana" }, - { "value": "HT", "label": "Haiti" }, - { "value": "HM", "label": "Heard Island and McDonald Islands" }, - { "value": "VA", "label": "Holy See (Vatican City State)" }, - { "value": "HN", "label": "Honduras" }, - { "value": "HK", "label": "Hong Kong" }, - { "value": "HU", "label": "Hungary" }, - { "value": "IS", "label": "Iceland" }, - { "value": "IN", "label": "India" }, - { "value": "ID", "label": "Indonesia" }, - { "value": "IR", "label": "Iran, Islamic Republic of" }, - { "value": "IQ", "label": "Iraq" }, - { "value": "IE", "label": "Ireland" }, - { "value": "IM", "label": "Isle of Man" }, - { "value": "IL", "label": "Israel" }, - { "value": "IT", "label": "Italy" }, - { "value": "JM", "label": "Jamaica" }, - { "value": "JP", "label": "Japan" }, - { "value": "JE", "label": "Jersey" }, - { "value": "JO", "label": "Jordan" }, - { "value": "KZ", "label": "Kazakhstan" }, - { "value": "KE", "label": "Kenya" }, - { "value": "KI", "label": "Kiribati" }, - { "value": "KP", "label": "Korea, Democratic People's Republic of" }, - { "value": "KR", "label": "Korea, Republic of" }, - { "value": "XK", "label": "Kosovo" }, - { "value": "KW", "label": "Kuwait" }, - { "value": "KG", "label": "Kyrgyzstan" }, - { "value": "LA", "label": "Lao People's Democratic Republic" }, - { "value": "LV", "label": "Latvia" }, - { "value": "LB", "label": "Lebanon" }, - { "value": "LS", "label": "Lesotho" }, - { "value": "LR", "label": "Liberia" }, - { "value": "LY", "label": "Libya" }, - { "value": "LI", "label": "Liechtenstein" }, - { "value": "LT", "label": "Lithuania" }, - { "value": "LU", "label": "Luxembourg" }, - { "value": "MO", "label": "Macao" }, - { "value": "MK", "label": "Macedonia, the Former Yugoslav Republic of" }, - { "value": "MG", "label": "Madagascar" }, - { "value": "MW", "label": "Malawi" }, - { "value": "MY", "label": "Malaysia" }, - { "value": "MV", "label": "Maldives" }, - { "value": "ML", "label": "Mali" }, - { "value": "MT", "label": "Malta" }, - { "value": "MH", "label": "Marshall Islands" }, - { "value": "MQ", "label": "Martinique" }, - { "value": "MR", "label": "Mauritania" }, - { "value": "MU", "label": "Mauritius" }, - { "value": "YT", "label": "Mayotte" }, - { "value": "MX", "label": "Mexico" }, - { "value": "FM", "label": "Micronesia, Federated States of" }, - { "value": "MD", "label": "Moldova, Republic of" }, - { "value": "MC", "label": "Monaco" }, - { "value": "MN", "label": "Mongolia" }, - { "value": "ME", "label": "Montenegro" }, - { "value": "MS", "label": "Montserrat" }, - { "value": "MA", "label": "Morocco" }, - { "value": "MZ", "label": "Mozambique" }, - { "value": "MM", "label": "Myanmar" }, - { "value": "NA", "label": "Namibia" }, - { "value": "NR", "label": "Nauru" }, - { "value": "NP", "label": "Nepal" }, - { "value": "NL", "label": "Netherlands" }, - { "value": "NC", "label": "New Caledonia" }, - { "value": "NZ", "label": "New Zealand" }, - { "value": "NI", "label": "Nicaragua" }, - { "value": "NE", "label": "Niger" }, - { "value": "NG", "label": "Nigeria" }, - { "value": "NU", "label": "Niue" }, - { "value": "NF", "label": "Norfolk Island" }, - { "value": "MP", "label": "Northern Mariana Islands" }, - { "value": "NO", "label": "Norway" }, - { "value": "OM", "label": "Oman" }, - { "value": "PK", "label": "Pakistan" }, - { "value": "PW", "label": "Palau" }, - { "value": "PS", "label": "Palestine, State of" }, - { "value": "PA", "label": "Panama" }, - { "value": "PG", "label": "Papua New Guinea" }, - { "value": "PY", "label": "Paraguay" }, - { "value": "PE", "label": "Peru" }, - { "value": "PH", "label": "Philippines" }, - { "value": "PN", "label": "Pitcairn" }, - { "value": "PL", "label": "Poland" }, - { "value": "PT", "label": "Portugal" }, - { "value": "PR", "label": "Puerto Rico" }, - { "value": "QA", "label": "Qatar" }, - { "value": "RE", "label": "R\u00e9union" }, - { "value": "RO", "label": "Romania" }, - { "value": "RU", "label": "Russian Federation" }, - { "value": "RW", "label": "Rwanda" }, - { "value": "BL", "label": "Saint Barth\u00e9lemy" }, - { "value": "SH", "label": "Saint Helena, Ascension and Tristan da Cunha" }, - { "value": "KN", "label": "Saint Kitts and Nevis" }, - { "value": "LC", "label": "Saint Lucia" }, - { "value": "MF", "label": "Saint Martin (French part)" }, - { "value": "PM", "label": "Saint Pierre and Miquelon" }, - { "value": "VC", "label": "Saint Vincent and the Grenadines" }, - { "value": "WS", "label": "Samoa" }, - { "value": "SM", "label": "San Marino" }, - { "value": "ST", "label": "Sao Tome and Principe" }, - { "value": "SA", "label": "Saudi Arabia" }, - { "value": "SN", "label": "Senegal" }, - { "value": "RS", "label": "Serbia" }, - { "value": "SC", "label": "Seychelles" }, - { "value": "SL", "label": "Sierra Leone" }, - { "value": "SG", "label": "Singapore" }, - { "value": "SX", "label": "Sint Maarten (Dutch part)" }, - { "value": "SK", "label": "Slovakia" }, - { "value": "SI", "label": "Slovenia" }, - { "value": "SB", "label": "Solomon Islands" }, - { "value": "SO", "label": "Somalia" }, - { "value": "ZA", "label": "South Africa" }, - { "value": "GS", "label": "South Georgia and the South Sandwich Islands" }, - { "value": "SS", "label": "South Sudan" }, - { "value": "ES", "label": "Spain" }, - { "value": "LK", "label": "Sri Lanka" }, - { "value": "SD", "label": "Sudan" }, - { "value": "SR", "label": "Suriname" }, - { "value": "SJ", "label": "Svalbard and Jan Mayen" }, - { "value": "SZ", "label": "Swaziland" }, - { "value": "SE", "label": "Sweden" }, - { "value": "CH", "label": "Switzerland" }, - { "value": "SY", "label": "Syrian Arab Republic" }, - { "value": "TW", "label": "Taiwan, Province of China" }, - { "value": "TJ", "label": "Tajikistan" }, - { "value": "TZ", "label": "Tanzania, United Republic of" }, - { "value": "TH", "label": "Thailand" }, - { "value": "TL", "label": "Timor-Leste" }, - { "value": "TG", "label": "Togo" }, - { "value": "TK", "label": "Tokelau" }, - { "value": "TO", "label": "Tonga" }, - { "value": "TT", "label": "Trinidad and Tobago" }, - { "value": "TN", "label": "Tunisia" }, - { "value": "TR", "label": "Turkey" }, - { "value": "TM", "label": "Turkmenistan" }, - { "value": "TC", "label": "Turks and Caicos Islands" }, - { "value": "TV", "label": "Tuvalu" }, - { "value": "UG", "label": "Uganda" }, - { "value": "UA", "label": "Ukraine" }, - { "value": "AE", "label": "United Arab Emirates" }, - { "value": "GB", "label": "United Kingdom" }, - { "value": "US", "label": "United States" }, - { "value": "UM", "label": "United States Minor Outlying Islands" }, - { "value": "UY", "label": "Uruguay" }, - { "value": "UZ", "label": "Uzbekistan" }, - { "value": "VU", "label": "Vanuatu" }, - { "value": "VE", "label": "Venezuela, Bolivarian Republic of" }, - { "value": "VN", "label": "Viet Nam" }, - { "value": "VG", "label": "Virgin Islands, British" }, - { "value": "VI", "label": "Virgin Islands, U.S." }, - { "value": "WF", "label": "Wallis and Futuna" }, - { "value": "EH", "label": "Western Sahara" }, - { "value": "YE", "label": "Yemen" }, - { "value": "ZM", "label": "Zambia" }, - { "value": "ZW", "label": "Zimbabwe" } + { + "value": "AF", + "label": "Afghanistan" + }, + { + "value": "AX", + "label": "\u00c5land Islands" + }, + { + "value": "AL", + "label": "Albania" + }, + { + "value": "DZ", + "label": "Algeria" + }, + { + "value": "AS", + "label": "American Samoa" + }, + { + "value": "AD", + "label": "Andorra" + }, + { + "value": "AO", + "label": "Angola" + }, + { + "value": "AI", + "label": "Anguilla" + }, + { + "value": "AQ", + "label": "Antarctica" + }, + { + "value": "AG", + "label": "Antigua and Barbuda" + }, + { + "value": "AR", + "label": "Argentina" + }, + { + "value": "AM", + "label": "Armenia" + }, + { + "value": "AW", + "label": "Aruba" + }, + { + "value": "AC", + "label": "Ascension Island" + }, + { + "value": "AU", + "label": "Australia" + }, + { + "value": "AT", + "label": "Austria" + }, + { + "value": "AZ", + "label": "Azerbaijan" + }, + { + "value": "BS", + "label": "Bahamas" + }, + { + "value": "BH", + "label": "Bahrain" + }, + { + "value": "BD", + "label": "Bangladesh" + }, + { + "value": "BB", + "label": "Barbados" + }, + { + "value": "BY", + "label": "Belarus" + }, + { + "value": "BE", + "label": "Belgium" + }, + { + "value": "BZ", + "label": "Belize" + }, + { + "value": "BJ", + "label": "Benin" + }, + { + "value": "BM", + "label": "Bermuda" + }, + { + "value": "BT", + "label": "Bhutan" + }, + { + "value": "BO", + "label": "Bolivia, Plurinational State of" + }, + { + "value": "BQ", + "label": "Bonaire, Sint Eustatius and Saba" + }, + { + "value": "BA", + "label": "Bosnia and Herzegovina" + }, + { + "value": "BW", + "label": "Botswana" + }, + { + "value": "BV", + "label": "Bouvet Island" + }, + { + "value": "BR", + "label": "Brazil" + }, + { + "value": "IO", + "label": "British Indian Ocean Territory" + }, + { + "value": "BN", + "label": "Brunei Darussalam" + }, + { + "value": "BG", + "label": "Bulgaria" + }, + { + "value": "BF", + "label": "Burkina Faso" + }, + { + "value": "BI", + "label": "Burundi" + }, + { + "value": "KH", + "label": "Cambodia" + }, + { + "value": "CM", + "label": "Cameroon" + }, + { + "value": "CA", + "label": "Canada" + }, + { + "value": "CV", + "label": "Cape Verde" + }, + { + "value": "KY", + "label": "Cayman Islands" + }, + { + "value": "CF", + "label": "Central African Republic" + }, + { + "value": "TD", + "label": "Chad" + }, + { + "value": "CL", + "label": "Chile" + }, + { + "value": "CN", + "label": "China" + }, + { + "value": "CX", + "label": "Christmas Island" + }, + { + "value": "CC", + "label": "Cocos (Keeling) Islands" + }, + { + "value": "CO", + "label": "Colombia" + }, + { + "value": "KM", + "label": "Comoros" + }, + { + "value": "CG", + "label": "Congo" + }, + { + "value": "CD", + "label": "Congo, the Democratic Republic of the" + }, + { + "value": "CK", + "label": "Cook Islands" + }, + { + "value": "CR", + "label": "Costa Rica" + }, + { + "value": "CI", + "label": "C\u00f4te d'Ivoire" + }, + { + "value": "HR", + "label": "Croatia" + }, + { + "value": "CU", + "label": "Cuba" + }, + { + "value": "CW", + "label": "Cura\u00e7ao" + }, + { + "value": "CY", + "label": "Cyprus" + }, + { + "value": "CZ", + "label": "Czech Republic" + }, + { + "value": "DK", + "label": "Denmark" + }, + { + "value": "DG", + "label": "Diego Garcia" + }, + { + "value": "DJ", + "label": "Djibouti" + }, + { + "value": "DM", + "label": "Dominica" + }, + { + "value": "DO", + "label": "Dominican Republic" + }, + { + "value": "EC", + "label": "Ecuador" + }, + { + "value": "EG", + "label": "Egypt" + }, + { + "value": "SV", + "label": "El Salvador" + }, + { + "value": "GQ", + "label": "Equatorial Guinea" + }, + { + "value": "ER", + "label": "Eritrea" + }, + { + "value": "EE", + "label": "Estonia" + }, + { + "value": "ET", + "label": "Ethiopia" + }, + { + "value": "FK", + "label": "Falkland Islands (Malvinas)" + }, + { + "value": "FO", + "label": "Faroe Islands" + }, + { + "value": "FJ", + "label": "Fiji" + }, + { + "value": "FI", + "label": "Finland" + }, + { + "value": "FR", + "label": "France" + }, + { + "value": "GF", + "label": "French Guiana" + }, + { + "value": "PF", + "label": "French Polynesia" + }, + { + "value": "TF", + "label": "French Southern Territories" + }, + { + "value": "GA", + "label": "Gabon" + }, + { + "value": "GM", + "label": "Gambia" + }, + { + "value": "GE", + "label": "Georgia" + }, + { + "value": "DE", + "label": "Germany" + }, + { + "value": "GH", + "label": "Ghana" + }, + { + "value": "GI", + "label": "Gibraltar" + }, + { + "value": "GR", + "label": "Greece" + }, + { + "value": "GL", + "label": "Greenland" + }, + { + "value": "GD", + "label": "Grenada" + }, + { + "value": "GP", + "label": "Guadeloupe" + }, + { + "value": "GU", + "label": "Guam" + }, + { + "value": "GT", + "label": "Guatemala" + }, + { + "value": "GG", + "label": "Guernsey" + }, + { + "value": "GN", + "label": "Guinea" + }, + { + "value": "GW", + "label": "Guinea-Bissau" + }, + { + "value": "GY", + "label": "Guyana" + }, + { + "value": "HT", + "label": "Haiti" + }, + { + "value": "HM", + "label": "Heard Island and McDonald Islands" + }, + { + "value": "VA", + "label": "Holy See (Vatican City State)" + }, + { + "value": "HN", + "label": "Honduras" + }, + { + "value": "HK", + "label": "Hong Kong" + }, + { + "value": "HU", + "label": "Hungary" + }, + { + "value": "IS", + "label": "Iceland" + }, + { + "value": "IN", + "label": "India" + }, + { + "value": "ID", + "label": "Indonesia" + }, + { + "value": "IR", + "label": "Iran, Islamic Republic of" + }, + { + "value": "IQ", + "label": "Iraq" + }, + { + "value": "IE", + "label": "Ireland" + }, + { + "value": "IM", + "label": "Isle of Man" + }, + { + "value": "IL", + "label": "Israel" + }, + { + "value": "IT", + "label": "Italy" + }, + { + "value": "JM", + "label": "Jamaica" + }, + { + "value": "JP", + "label": "Japan" + }, + { + "value": "JE", + "label": "Jersey" + }, + { + "value": "JO", + "label": "Jordan" + }, + { + "value": "KZ", + "label": "Kazakhstan" + }, + { + "value": "KE", + "label": "Kenya" + }, + { + "value": "KI", + "label": "Kiribati" + }, + { + "value": "KP", + "label": "Korea, Democratic People's Republic of" + }, + { + "value": "KR", + "label": "Korea, Republic of" + }, + { + "value": "XK", + "label": "Kosovo" + }, + { + "value": "KW", + "label": "Kuwait" + }, + { + "value": "KG", + "label": "Kyrgyzstan" + }, + { + "value": "LA", + "label": "Lao People's Democratic Republic" + }, + { + "value": "LV", + "label": "Latvia" + }, + { + "value": "LB", + "label": "Lebanon" + }, + { + "value": "LS", + "label": "Lesotho" + }, + { + "value": "LR", + "label": "Liberia" + }, + { + "value": "LY", + "label": "Libya" + }, + { + "value": "LI", + "label": "Liechtenstein" + }, + { + "value": "LT", + "label": "Lithuania" + }, + { + "value": "LU", + "label": "Luxembourg" + }, + { + "value": "MO", + "label": "Macao" + }, + { + "value": "MK", + "label": "Macedonia, the Former Yugoslav Republic of" + }, + { + "value": "MG", + "label": "Madagascar" + }, + { + "value": "MW", + "label": "Malawi" + }, + { + "value": "MY", + "label": "Malaysia" + }, + { + "value": "MV", + "label": "Maldives" + }, + { + "value": "ML", + "label": "Mali" + }, + { + "value": "MT", + "label": "Malta" + }, + { + "value": "MH", + "label": "Marshall Islands" + }, + { + "value": "MQ", + "label": "Martinique" + }, + { + "value": "MR", + "label": "Mauritania" + }, + { + "value": "MU", + "label": "Mauritius" + }, + { + "value": "YT", + "label": "Mayotte" + }, + { + "value": "MX", + "label": "Mexico" + }, + { + "value": "FM", + "label": "Micronesia, Federated States of" + }, + { + "value": "MD", + "label": "Moldova, Republic of" + }, + { + "value": "MC", + "label": "Monaco" + }, + { + "value": "MN", + "label": "Mongolia" + }, + { + "value": "ME", + "label": "Montenegro" + }, + { + "value": "MS", + "label": "Montserrat" + }, + { + "value": "MA", + "label": "Morocco" + }, + { + "value": "MZ", + "label": "Mozambique" + }, + { + "value": "MM", + "label": "Myanmar" + }, + { + "value": "NA", + "label": "Namibia" + }, + { + "value": "NR", + "label": "Nauru" + }, + { + "value": "NP", + "label": "Nepal" + }, + { + "value": "NL", + "label": "Netherlands" + }, + { + "value": "NC", + "label": "New Caledonia" + }, + { + "value": "NZ", + "label": "New Zealand" + }, + { + "value": "NI", + "label": "Nicaragua" + }, + { + "value": "NE", + "label": "Niger" + }, + { + "value": "NG", + "label": "Nigeria" + }, + { + "value": "NU", + "label": "Niue" + }, + { + "value": "NF", + "label": "Norfolk Island" + }, + { + "value": "MP", + "label": "Northern Mariana Islands" + }, + { + "value": "NO", + "label": "Norway" + }, + { + "value": "OM", + "label": "Oman" + }, + { + "value": "PK", + "label": "Pakistan" + }, + { + "value": "PW", + "label": "Palau" + }, + { + "value": "PS", + "label": "Palestine, State of" + }, + { + "value": "PA", + "label": "Panama" + }, + { + "value": "PG", + "label": "Papua New Guinea" + }, + { + "value": "PY", + "label": "Paraguay" + }, + { + "value": "PE", + "label": "Peru" + }, + { + "value": "PH", + "label": "Philippines" + }, + { + "value": "PN", + "label": "Pitcairn" + }, + { + "value": "PL", + "label": "Poland" + }, + { + "value": "PT", + "label": "Portugal" + }, + { + "value": "PR", + "label": "Puerto Rico" + }, + { + "value": "QA", + "label": "Qatar" + }, + { + "value": "RE", + "label": "R\u00e9union" + }, + { + "value": "RO", + "label": "Romania" + }, + { + "value": "RU", + "label": "Russian Federation" + }, + { + "value": "RW", + "label": "Rwanda" + }, + { + "value": "BL", + "label": "Saint Barth\u00e9lemy" + }, + { + "value": "SH", + "label": "Saint Helena, Ascension and Tristan da Cunha" + }, + { + "value": "KN", + "label": "Saint Kitts and Nevis" + }, + { + "value": "LC", + "label": "Saint Lucia" + }, + { + "value": "MF", + "label": "Saint Martin (French part)" + }, + { + "value": "PM", + "label": "Saint Pierre and Miquelon" + }, + { + "value": "VC", + "label": "Saint Vincent and the Grenadines" + }, + { + "value": "WS", + "label": "Samoa" + }, + { + "value": "SM", + "label": "San Marino" + }, + { + "value": "ST", + "label": "Sao Tome and Principe" + }, + { + "value": "SA", + "label": "Saudi Arabia" + }, + { + "value": "SN", + "label": "Senegal" + }, + { + "value": "RS", + "label": "Serbia" + }, + { + "value": "SC", + "label": "Seychelles" + }, + { + "value": "SL", + "label": "Sierra Leone" + }, + { + "value": "SG", + "label": "Singapore" + }, + { + "value": "SX", + "label": "Sint Maarten (Dutch part)" + }, + { + "value": "SK", + "label": "Slovakia" + }, + { + "value": "SI", + "label": "Slovenia" + }, + { + "value": "SB", + "label": "Solomon Islands" + }, + { + "value": "SO", + "label": "Somalia" + }, + { + "value": "ZA", + "label": "South Africa" + }, + { + "value": "GS", + "label": "South Georgia and the South Sandwich Islands" + }, + { + "value": "SS", + "label": "South Sudan" + }, + { + "value": "ES", + "label": "Spain" + }, + { + "value": "LK", + "label": "Sri Lanka" + }, + { + "value": "SD", + "label": "Sudan" + }, + { + "value": "SR", + "label": "Suriname" + }, + { + "value": "SJ", + "label": "Svalbard and Jan Mayen" + }, + { + "value": "SZ", + "label": "Swaziland" + }, + { + "value": "SE", + "label": "Sweden" + }, + { + "value": "CH", + "label": "Switzerland" + }, + { + "value": "SY", + "label": "Syrian Arab Republic" + }, + { + "value": "TW", + "label": "Taiwan, Province of China" + }, + { + "value": "TJ", + "label": "Tajikistan" + }, + { + "value": "TZ", + "label": "Tanzania, United Republic of" + }, + { + "value": "TH", + "label": "Thailand" + }, + { + "value": "TL", + "label": "Timor-Leste" + }, + { + "value": "TG", + "label": "Togo" + }, + { + "value": "TK", + "label": "Tokelau" + }, + { + "value": "TO", + "label": "Tonga" + }, + { + "value": "TT", + "label": "Trinidad and Tobago" + }, + { + "value": "TN", + "label": "Tunisia" + }, + { + "value": "TR", + "label": "Turkey" + }, + { + "value": "TM", + "label": "Turkmenistan" + }, + { + "value": "TC", + "label": "Turks and Caicos Islands" + }, + { + "value": "TV", + "label": "Tuvalu" + }, + { + "value": "UG", + "label": "Uganda" + }, + { + "value": "UA", + "label": "Ukraine" + }, + { + "value": "AE", + "label": "United Arab Emirates" + }, + { + "value": "GB", + "label": "United Kingdom" + }, + { + "value": "US", + "label": "United States" + }, + { + "value": "UM", + "label": "United States Minor Outlying Islands" + }, + { + "value": "UY", + "label": "Uruguay" + }, + { + "value": "UZ", + "label": "Uzbekistan" + }, + { + "value": "VU", + "label": "Vanuatu" + }, + { + "value": "VE", + "label": "Venezuela, Bolivarian Republic of" + }, + { + "value": "VN", + "label": "Viet Nam" + }, + { + "value": "VG", + "label": "Virgin Islands, British" + }, + { + "value": "VI", + "label": "Virgin Islands, U.S." + }, + { + "value": "WF", + "label": "Wallis and Futuna" + }, + { + "value": "EH", + "label": "Western Sahara" + }, + { + "value": "YE", + "label": "Yemen" + }, + { + "value": "ZM", + "label": "Zambia" + }, + { + "value": "ZW", + "label": "Zimbabwe" + } ] -} +} \ No newline at end of file diff --git a/src/data/CIPPDBCacheTypes.json b/src/data/CIPPDBCacheTypes.json new file mode 100644 index 000000000000..28fac3a6fde8 --- /dev/null +++ b/src/data/CIPPDBCacheTypes.json @@ -0,0 +1,332 @@ +[ + { + "type": "Users", + "friendlyName": "Users", + "description": "All Azure AD users with sign-in activity" + }, + { + "type": "Groups", + "friendlyName": "Groups", + "description": "All Azure AD groups with members" + }, + { + "type": "Guests", + "friendlyName": "Guest Users", + "description": "All guest users in the tenant" + }, + { + "type": "ServicePrincipals", + "friendlyName": "Service Principals", + "description": "All service principals (applications)" + }, + { + "type": "Apps", + "friendlyName": "Application Registrations", + "description": "All application registrations with owners" + }, + { + "type": "Devices", + "friendlyName": "Azure AD Devices", + "description": "All Azure AD registered devices" + }, + { + "type": "Organization", + "friendlyName": "Organization", + "description": "Tenant organization information" + }, + { + "type": "Roles", + "friendlyName": "Directory Roles", + "description": "All Azure AD directory roles with members" + }, + { + "type": "AdminConsentRequestPolicy", + "friendlyName": "Admin Consent Request Policy", + "description": "Admin consent request policy settings" + }, + { + "type": "AuthorizationPolicy", + "friendlyName": "Authorization Policy", + "description": "Tenant authorization policy" + }, + { + "type": "AuthenticationMethodsPolicy", + "friendlyName": "Authentication Methods Policy", + "description": "Authentication methods policy configuration" + }, + { + "type": "DeviceSettings", + "friendlyName": "Device Settings", + "description": "Device management settings" + }, + { + "type": "DirectoryRecommendations", + "friendlyName": "Directory Recommendations", + "description": "Azure AD directory recommendations" + }, + { + "type": "CrossTenantAccessPolicy", + "friendlyName": "Cross-Tenant Access Policy", + "description": "Cross-tenant access policy configuration" + }, + { + "type": "DefaultAppManagementPolicy", + "friendlyName": "Default App Management Policy", + "description": "Default application management policy" + }, + { + "type": "Settings", + "friendlyName": "Directory Settings", + "description": "Directory settings configuration" + }, + { + "type": "SecureScore", + "friendlyName": "Secure Score", + "description": "Microsoft Secure Score and control profiles" + }, + { + "type": "PIMSettings", + "friendlyName": "PIM Settings", + "description": "Privileged Identity Management settings and assignments" + }, + { + "type": "Domains", + "friendlyName": "Domains", + "description": "All verified and unverified domains" + }, + { + "type": "RoleEligibilitySchedules", + "friendlyName": "Role Eligibility Schedules", + "description": "PIM role eligibility schedules" + }, + { + "type": "RoleManagementPolicies", + "friendlyName": "Role Management Policies", + "description": "Role management policies" + }, + { + "type": "RoleAssignmentScheduleInstances", + "friendlyName": "Role Assignment Schedule Instances", + "description": "Active role assignment instances" + }, + { + "type": "B2BManagementPolicy", + "friendlyName": "B2B Management Policy", + "description": "B2B collaboration policy settings" + }, + { + "type": "AuthenticationFlowsPolicy", + "friendlyName": "Authentication Flows Policy", + "description": "Authentication flows policy configuration" + }, + { + "type": "DeviceRegistrationPolicy", + "friendlyName": "Device Registration Policy", + "description": "Device registration policy settings" + }, + { + "type": "CredentialUserRegistrationDetails", + "friendlyName": "Credential User Registration Details", + "description": "User credential registration details" + }, + { + "type": "UserRegistrationDetails", + "friendlyName": "User Registration Details", + "description": "MFA registration details for users" + }, + { + "type": "OAuth2PermissionGrants", + "friendlyName": "OAuth2 Permission Grants", + "description": "OAuth2 permission grants" + }, + { + "type": "AppRoleAssignments", + "friendlyName": "App Role Assignments", + "description": "Application role assignments" + }, + { + "type": "LicenseOverview", + "friendlyName": "License Overview", + "description": "License usage overview" + }, + { + "type": "MFAState", + "friendlyName": "MFA State", + "description": "Multi-factor authentication state" + }, + { + "type": "ExoAntiPhishPolicies", + "friendlyName": "Exchange Anti-Phish Policies", + "description": "Exchange Online anti-phishing policies" + }, + { + "type": "ExoMalwareFilterPolicies", + "friendlyName": "Exchange Malware Filter Policies", + "description": "Exchange Online malware filter policies" + }, + { + "type": "ExoSafeLinksPolicies", + "friendlyName": "Exchange Safe Links Policies", + "description": "Exchange Online Safe Links policies" + }, + { + "type": "ExoSafeAttachmentPolicies", + "friendlyName": "Exchange Safe Attachment Policies", + "description": "Exchange Online Safe Attachment policies" + }, + { + "type": "ExoTransportRules", + "friendlyName": "Exchange Transport Rules", + "description": "Exchange Online transport rules" + }, + { + "type": "ExoDkimSigningConfig", + "friendlyName": "Exchange DKIM Signing Config", + "description": "Exchange Online DKIM signing configuration" + }, + { + "type": "ExoOrganizationConfig", + "friendlyName": "Exchange Organization Config", + "description": "Exchange Online organization configuration" + }, + { + "type": "ExoAcceptedDomains", + "friendlyName": "Exchange Accepted Domains", + "description": "Exchange Online accepted domains" + }, + { + "type": "ExoHostedContentFilterPolicy", + "friendlyName": "Exchange Hosted Content Filter Policy", + "description": "Exchange Online hosted content filter policy" + }, + { + "type": "ExoHostedOutboundSpamFilterPolicy", + "friendlyName": "Exchange Hosted Outbound Spam Filter Policy", + "description": "Exchange Online hosted outbound spam filter policy" + }, + { + "type": "ExoAntiPhishPolicy", + "friendlyName": "Exchange Anti-Phish Policy", + "description": "Exchange Online anti-phishing policy" + }, + { + "type": "ExoSafeLinksPolicy", + "friendlyName": "Exchange Safe Links Policy", + "description": "Exchange Online Safe Links policy" + }, + { + "type": "ExoSafeAttachmentPolicy", + "friendlyName": "Exchange Safe Attachment Policy", + "description": "Exchange Online Safe Attachment policy" + }, + { + "type": "ExoMalwareFilterPolicy", + "friendlyName": "Exchange Malware Filter Policy", + "description": "Exchange Online malware filter policy" + }, + { + "type": "ExoAtpPolicyForO365", + "friendlyName": "Exchange ATP Policy for O365", + "description": "Exchange Online Advanced Threat Protection policy" + }, + { + "type": "ExoQuarantinePolicy", + "friendlyName": "Exchange Quarantine Policy", + "description": "Exchange Online quarantine policy" + }, + { + "type": "ExoRemoteDomain", + "friendlyName": "Exchange Remote Domain", + "description": "Exchange Online remote domain configuration" + }, + { + "type": "ExoSharingPolicy", + "friendlyName": "Exchange Sharing Policy", + "description": "Exchange Online sharing policies" + }, + { + "type": "ExoAdminAuditLogConfig", + "friendlyName": "Exchange Admin Audit Log Config", + "description": "Exchange Online admin audit log configuration" + }, + { + "type": "ExoPresetSecurityPolicy", + "friendlyName": "Exchange Preset Security Policy", + "description": "Exchange Online preset security policy" + }, + { + "type": "ExoTenantAllowBlockList", + "friendlyName": "Exchange Tenant Allow/Block List", + "description": "Exchange Online tenant allow/block list" + }, + { + "type": "Mailboxes", + "friendlyName": "Mailboxes", + "description": "All Exchange Online mailboxes" + }, + { + "type": "CASMailboxes", + "friendlyName": "CAS Mailboxes", + "description": "Client Access Server mailbox settings" + }, + { + "type": "MailboxUsage", + "friendlyName": "Mailbox Usage", + "description": "Exchange Online mailbox usage statistics" + }, + { + "type": "OneDriveUsage", + "friendlyName": "OneDrive Usage", + "description": "OneDrive usage statistics" + }, + { + "type": "ConditionalAccessPolicies", + "friendlyName": "Conditional Access Policies", + "description": "Azure AD Conditional Access policies" + }, + { + "type": "RiskyUsers", + "friendlyName": "Risky Users", + "description": "Users flagged as risky by Identity Protection" + }, + { + "type": "RiskyServicePrincipals", + "friendlyName": "Risky Service Principals", + "description": "Service principals flagged as risky by Identity Protection" + }, + { + "type": "ServicePrincipalRiskDetections", + "friendlyName": "Service Principal Risk Detections", + "description": "Risk detections for service principals" + }, + { + "type": "RiskDetections", + "friendlyName": "Risk Detections", + "description": "Identity Protection risk detections" + }, + { + "type": "ManagedDevices", + "friendlyName": "Managed Devices", + "description": "Intune managed devices" + }, + { + "type": "IntunePolicies", + "friendlyName": "Intune Policies", + "description": "All Intune policies including compliance, configuration, and app protection" + }, + { + "type": "ManagedDeviceEncryptionStates", + "friendlyName": "Managed Device Encryption States", + "description": "BitLocker encryption states for managed devices" + }, + { + "type": "IntuneAppProtectionPolicies", + "friendlyName": "Intune App Protection Policies", + "description": "Intune app protection policies for iOS and Android" + }, + { + "type": "DetectedApps", + "friendlyName": "Detected Apps", + "description": "All detected applications with devices where each app is installed" + } +] diff --git a/src/data/CIPPDefaultGDAPRoles.json b/src/data/CIPPDefaultGDAPRoles.json index f59aa19422aa..6325d10c4b01 100644 --- a/src/data/CIPPDefaultGDAPRoles.json +++ b/src/data/CIPPDefaultGDAPRoles.json @@ -7,6 +7,10 @@ "label": "Authentication Policy Administrator", "value": "0526716b-113d-4c15-b2c8-68e3c22b9f80" }, + { + "label": "Billing Administrator", + "value": "b0f54661-2d74-4c50-afa3-1ec803f12efe" + }, { "label": "Cloud App Security Administrator", "value": "892c5842-a9a6-463a-8041-72aa08ca3cf6" @@ -15,10 +19,18 @@ "label": "Cloud Device Administrator", "value": "7698a772-787b-4ac8-901f-60d6b08affd2" }, + { + "label": "Domain Name Administrator", + "value": "8329153b-31d0-4727-b945-745eb3bc5f31" + }, { "label": "Exchange Administrator", "value": "29232cdf-9323-42fd-ade2-1d097af3e4de" }, + { + "label": "Global Reader", + "value": "f2ef992c-3afb-46b9-b7cf-a126ee74c451" + }, { "label": "Intune Administrator", "value": "3a2c62db-5318-420d-8d74-23affee5d9d5" diff --git a/src/data/DiagnosticsPresets.json b/src/data/DiagnosticsPresets.json new file mode 100644 index 000000000000..ac354677b226 --- /dev/null +++ b/src/data/DiagnosticsPresets.json @@ -0,0 +1,56 @@ +[ + { + "name": "Completed Tasks Summary (Last 24h)", + "id": "a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d", + "query": "customEvents\n| where timestamp between (ago(1d) .. now())\n| where name == \"CIPP.TaskCompleted\"\n| extend TaskName = tostring(customDimensions.TaskName)\n , Command = tostring(customDimensions.Command)\n , Tenant = tostring(customDimensions.Tenant)\n , DurationMs = todouble(customMeasurements.DurationMs)\n| summarize\n Count = count(),\n TotalDurationMs = sum(DurationMs),\n AvgDurationMs = avg(DurationMs),\n MaxDurationMs = max(DurationMs)\n by TaskName, Command, Tenant\n| extend name = \"CIPP.TaskCompleted\"\n| order by TotalDurationMs desc", + "isBuiltin": true, + "columns": [ + "TaskName", + "Command", + "Tenant", + "Count", + "TotalDurationMs", + "AvgDurationMs", + "MaxDurationMs" + ] + }, + { + "name": "Completed Standards Summary (Last 24h)", + "id": "b2c3d4e5-f6a7-4b5c-9d0e-1f2a3b4c5d6e", + "query": "customEvents\n| where timestamp between (ago(1d) .. now())\n| where name == \"CIPP.StandardCompleted\"\n| extend TaskName = tostring(customDimensions.TaskName)\n , Command = tostring(customDimensions.Command)\n , Tenant = tostring(customDimensions.Tenant)\n , DurationMs = todouble(customMeasurements.DurationMs)\n| summarize\n Count = count(),\n TotalDurationMs = sum(DurationMs),\n AvgDurationMs = avg(DurationMs),\n MaxDurationMs = max(DurationMs)\n by TaskName, Command, Tenant\n| extend name = \"CIPP.StandardCompleted\"\n| order by TotalDurationMs desc", + "isBuiltin": true, + "columns": [ + "TaskName", + "Command", + "Tenant", + "Count", + "TotalDurationMs", + "AvgDurationMs", + "MaxDurationMs" + ] + }, + { + "name": "Console Logs (Last 24h)", + "id": "c3d4e5f6-a7b8-4c5d-0e1f-2a3b4c5d6e7f", + "query": "customEvents\n| where timestamp > ago(1d)\n| where name == \"CIPP.ConsoleLog\"\n| extend Message = tostring(customDimensions['Message'])\n , Level = tostring(customDimensions['Level'])\n , InvocationId = tostring(customDimensions['InvocationId'])\n| project timestamp, name, Level, Message, InvocationId\n| order by timestamp desc", + "isBuiltin": true, + "columns": [ + "timestamp", + "Level", + "Message", + "InvocationId" + ] + }, + { + "name": "Console Errors and Warnings (Last 24h)", + "id": "d4e5f6a7-b8c9-4d5e-1f2a-3b4c5d6e7f8a", + "query": "customEvents\n| where timestamp > ago(1d)\n| where name == \"CIPP.ConsoleLog\"\n| where tostring(customDimensions['Level']) in ('Error', 'Warning')\n| extend Message = tostring(customDimensions['Message'])\n , Level = tostring(customDimensions['Level'])\n , InvocationId = tostring(customDimensions['InvocationId'])\n| project timestamp, name, Level, Message, InvocationId\n| order by timestamp desc", + "isBuiltin": true, + "columns": [ + "timestamp", + "Level", + "Message", + "InvocationId" + ] + } +] \ No newline at end of file diff --git a/src/data/Extensions.json b/src/data/Extensions.json index 4d8bcc01386c..52df55dd4726 100644 --- a/src/data/Extensions.json +++ b/src/data/Extensions.json @@ -29,8 +29,8 @@ "mappingRequired": true, "links": [ { - "name": "Sherweb Cloud Services for MSPs", - "url": "https://info.sherweb.com/sherweb-cloud-services-for-msps" + "name": "Sherweb CIPP Integration", + "url": "https://info.sherweb.com/sherweb-cipp-integration" } ], "SettingOptions": [ @@ -274,7 +274,7 @@ "links": [ { "name": "HaloPSA Documentation", - "url": "https://halopsa.com/guides/" + "url": "https://usehalo.com/halopsa/guides/2697" } ], "SettingOptions": [ @@ -334,10 +334,37 @@ "action": "disable" } }, + { + "type": "textField", + "name": "HaloPSA.ClientID", + "label": "HaloPSA Client ID", + "placeholder": "Enter your HaloPSA Client ID", + "required": true, + "condition": { + "field": "HaloPSA.Enabled", + "compareType": "is", + "compareValue": true, + "action": "disable" + } + }, + { + "type": "password", + "name": "HaloPSA.APIKey", + "label": "HaloPSA Client Secret", + "placeholder": "Enter your client Secret. Leave blank to keep your current key.", + "required": true, + "condition": { + "field": "HaloPSA.Enabled", + "compareType": "is", + "compareValue": true, + "action": "disable" + } + }, { "type": "autoComplete", "name": "HaloPSA.TicketType", - "label": "Select your HaloPSA Ticket Type, leave blank for default.", + "label": "HaloPSA Ticket Type", + "placeholder": "Select your HaloPSA Ticket Type, leave blank for default", "multiple": false, "api": { "url": "/api/ExecExtensionMapping", @@ -358,26 +385,24 @@ } }, { - "type": "textField", - "name": "HaloPSA.ClientID", - "label": "HaloPSA Client ID", - "placeholder": "Enter your HaloPSA Client ID", - "required": true, - "condition": { - "field": "HaloPSA.Enabled", - "compareType": "is", - "compareValue": true, - "action": "disable" - } - }, - { - "type": "password", - "name": "HaloPSA.APIKey", - "label": "HaloPSA Client Secret", - "placeholder": "Enter your client Secret. Leave blank to keep your current key.", - "required": true, + "type": "autoComplete", + "name": "HaloPSA.Outcome", + "label": "HaloPSA Outcome", + "placeholder": "Select your HaloPSA Outcome, leave blank for default", + "multiple": false, + "api": { + "url": "/api/ExecExtensionMapping", + "data": { + "List": "HaloPSAFields" + }, + "queryKey": "HaloOutcomes", + "dataKey": "Outcomes", + "labelField": "buttonname", + "valueField": "id", + "showRefresh": true + }, "condition": { - "field": "HaloPSA.Enabled", + "field": "HaloPSA.ConsolidateTickets", "compareType": "is", "compareValue": true, "action": "disable" @@ -599,6 +624,18 @@ "compareType": "is", "compareValue": true } + }, + { + "type": "datePicker", + "name": "Hudu.NextSync", + "label": "Reschedule next sync date", + "helperText": "Set a future date to delay the next scheduled sync. Leave blank to sync during the next scheduled sync.", + "condition": { + "field": "Hudu.Enabled", + "compareType": "is", + "compareValue": true, + "action": "disable" + } } ], "mappingRequired": true, @@ -673,8 +710,8 @@ "placeholder": "Enter your email address for PWPush. (Email & API Key auth)", "condition": { "field": "PWPush.UseBearerAuth", - "compareType": "is", - "compareValue": false + "compareType": "isNot", + "compareValue": true } }, { @@ -721,10 +758,22 @@ "action": "disable" } }, + { + "type": "password", + "name": "PWPush.DefaultPassphrase", + "label": "Default Passphrase", + "placeholder": "Enter a default passphrase required to view pushed passwords. (optional)", + "condition": { + "field": "PWPush.Enabled", + "compareType": "is", + "compareValue": true, + "action": "disable" + } + }, { "type": "switch", "name": "PWPush.RetrievalStep", - "label": "Click to retrieve password (recommended)", + "label": "Click to retrieve password (recommended if passphrase is not set)", "condition": { "field": "PWPush.Enabled", "compareType": "is", @@ -742,6 +791,16 @@ "compareValue": true, "action": "disable" } + }, + { + "type": "switch", + "name": "PWPush.CFEnabled", + "label": "Behind a CF-ZTNA Tunnel", + "condition": { + "field": "CFZTNA.Enabled", + "compareType": "is", + "compareValue": true + } } ], "mappingRequired": false @@ -829,6 +888,16 @@ "compareValue": true, "action": "disable" } + }, + { + "type": "switch", + "name": "CFZTNA.WebhookEnabled", + "label": "Use CloudFlare Service Account credentials with webhooks.", + "condition": { + "field": "CFZTNA.Enabled", + "compareType": "is", + "compareValue": true + } } ], "mappingRequired": false diff --git a/src/data/GDAPRoles.json b/src/data/GDAPRoles.json index 22553236b533..1d3ca9b38094 100644 --- a/src/data/GDAPRoles.json +++ b/src/data/GDAPRoles.json @@ -63,6 +63,22 @@ "Name": "Attribute Definition Reader", "ObjectId": "1d336d2c-4ae8-42ef-9711-b3604ce3fc2c" }, + { + "ExtensionData": {}, + "Description": "Read audit logs and configure diagnostic settings for events related to custom security attributes.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Attribute Log Administrator", + "ObjectId": "5b784334-f94b-471a-a387-e7219fc49ca2" + }, + { + "ExtensionData": {}, + "Description": "Read audit logs related to custom security attributes.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Attribute Log Reader", + "ObjectId": "9c99539d-8186-4804-835f-fd51ef9e2dcd" + }, { "ExtensionData": {}, "Description": "Allowed to view, set and reset authentication method information for any non-admin user.", @@ -79,6 +95,14 @@ "Name": "Authentication Policy Administrator", "ObjectId": "0526716b-113d-4c15-b2c8-68e3c22b9f80" }, + { + "ExtensionData": {}, + "Description": "Customize sign in and sign up experiences for users by creating and managing custom authentication extensions.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Authentication Extensibility Administrator", + "ObjectId": "25a516ed-2fa0-40ea-a2d0-12923a21473a" + }, { "ExtensionData": {}, "Description": "Users assigned to this role are added to the local administrators group on Azure AD-joined devices.", @@ -255,6 +279,14 @@ "Name": "Dynamics 365 Administrator", "ObjectId": "44367163-eba1-44c3-98af-f5787879f96a" }, + { + "ExtensionData": {}, + "Description": "Access and perform all administrative tasks on Dynamics 365 Business Central environments.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Dynamics 365 Business Central Administrator", + "ObjectId": "963797fb-eb3b-4cde-8ce3-5878b3f32a3f" + }, { "ExtensionData": {}, "Description": "Manage all aspects of Microsoft Edge.", @@ -311,6 +343,14 @@ "Name": "Global Reader", "ObjectId": "f2ef992c-3afb-46b9-b7cf-a126ee74c451" }, + { + "ExtensionData": {}, + "Description": "Create and manage all aspects of Microsoft Entra Internet Access and Microsoft Entra Private Access, including managing access to public and private endpoints.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Global Secure Access Administrator", + "ObjectId": "ac434307-12b9-4fa1-a708-88bf58caabc1" + }, { "ExtensionData": {}, "Description": "Members of this role can create/manage groups, create/manage groups settings like naming and expiration policies, and view groups activity and audit reports.", @@ -439,6 +479,30 @@ "Name": "Message Center Reader", "ObjectId": "790c1fb9-7f7d-4f88-86a1-ef1f95c05c1b" }, + { + "ExtensionData": {}, + "Description": "Perform all migration functionality to migrate content to Microsoft 365 using Migration Manager.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Microsoft 365 Migration Administrator", + "ObjectId": "8c8b803f-96e1-4129-9349-20738d9f9652" + }, + { + "ExtensionData": {}, + "Description": "Create and manage all aspects warranty claims and entitlements for Microsoft manufactured hardware, like Surface and HoloLens.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Microsoft Hardware Warranty Administrator", + "ObjectId": "1501b917-7653-4ff9-a4b5-203eaf33784f" + }, + { + "ExtensionData": {}, + "Description": "Create and read warranty claims for Microsoft manufactured hardware, like Surface and HoloLens.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Microsoft Hardware Warranty Specialist", + "ObjectId": "281fe777-fb20-4fbb-b7a3-ccebce5b0d96" + }, { "ExtensionData": {}, "Description": "Can manage network locations and review enterprise network design insights for Microsoft 365 Software as a Service applications.", @@ -455,6 +519,14 @@ "Name": "Office Apps Administrator", "ObjectId": "2b745bdf-0803-4d80-aa65-822c4493daac" }, + { + "ExtensionData": {}, + "Description": "Write, publish, manage, and review the organizational messages for end-users through Microsoft product surfaces.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Organizational Messages Writer", + "ObjectId": "507f53e4-4e52-4077-abd3-d2e1558b6ea2" + }, { "ExtensionData": {}, "Description": "Can reset passwords for non-administrators and Password Administrators.", @@ -583,6 +655,14 @@ "Name": "SharePoint Administrator", "ObjectId": "f28a1f50-f6e7-4571-818b-6a12f2af6b6c" }, + { + "ExtensionData": {}, + "Description": "Manage all aspects of SharePoint Embedded containers.", + "IsEnabled": true, + "IsSystem": true, + "Name": "SharePoint Embedded Administrator", + "ObjectId": "1a7d78b6-429f-476b-8eb-35fb715fffd4" + }, { "ExtensionData": {}, "Description": "Can manage all aspects of the Skype for Business product.", @@ -631,6 +711,22 @@ "Name": "Teams Devices Administrator", "ObjectId": "3d762c5a-1b6c-493f-843e-55a3b42923d4" }, + { + "ExtensionData": {}, + "Description": "Manage voice and telephony features and troubleshoot communication issues within the Microsoft Teams service.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Teams Telephony Administrator", + "ObjectId": "aa38014f-0993-46e9-9b45-30501a20909d" + }, + { + "ExtensionData": {}, + "Description": "Create new Microsoft Entra or Azure AD B2C tenants.", + "IsEnabled": true, + "IsSystem": true, + "Name": "Tenant Creator", + "ObjectId": "112ca1a2-15ad-4102-995e-45b0bc479a6a" + }, { "ExtensionData": {}, "Description": "Can see only tenant level aggregates in Microsoft 365 Usage Analytics and Productivity Score.", @@ -647,6 +743,14 @@ "Name": "User Administrator", "ObjectId": "fe930be7-5e62-47db-91af-98c3a49a38b1" }, + { + "ExtensionData": {}, + "Description": "View product feedback, survey results, and reports to find training and communication opportunities.", + "IsEnabled": true, + "IsSystem": true, + "Name": "User Experience Success Manager", + "ObjectId": "27460883-1df1-4691-b032-3b79643e5e63" + }, { "ExtensionData": {}, "Description": "Manage and share Virtual Visits information and metrics from admin centers or the Virtual Visits app.", diff --git a/src/data/GraphExplorerPresets.json b/src/data/GraphExplorerPresets.json index f5c549347713..a6939606d285 100644 --- a/src/data/GraphExplorerPresets.json +++ b/src/data/GraphExplorerPresets.json @@ -34,7 +34,7 @@ "id": "e7fdc49a-72a9-4a70-9dbf-a74152495d80", "params": { "endpoint": "/devices", - "$select": "deviceId,DisplayName,profileType,registrationDateTime,trustType", + "$select": "deviceId,displayName,profileType,registrationDateTime,trustType", "$filter": "" }, "isBuiltin": true @@ -44,7 +44,7 @@ "id": "f1844e3d-cb3e-4611-9bab-f5f42169bcd0", "params": { "endpoint": "/contacts", - "$select": "CompanyName,DisplayName,Mail,ProxyAddresses", + "$select": "companyName,displayName,mail,proxyAddresses", "$filter": "" }, "isBuiltin": true @@ -151,5 +151,23 @@ "NoPagination": true }, "isBuiltin": true + }, + { + "name": "User Report with Sign in Activity (Entra ID P1+)", + "id": "7a44a7cf-bf40-4a8a-8eaa-ffd8203f3216", + "params": { + "endpoint": "users", + "$select": "id,displayName,userPrincipalName,accountEnabled,mail,proxyAddresses,createdDateTime,signInActivity.lastSuccessfulSignInDateTime" + }, + "isBuiltin": true + }, + { + "name": "Users with Mailbox Type (Custom Data)", + "id": "f632d3b8-29f3-470c-8483-54cb88004674", + "params": { + "endpoint": "users", + "$select": "id,displayName,userPrincipalName,accountEnabled,mail,proxyAddresses,createdDateTime,%cippuserschema%.mailboxType" + }, + "isBuiltin": true } -] +] \ No newline at end of file diff --git a/src/data/M365Licenses-additional.json b/src/data/M365Licenses-additional.json new file mode 100644 index 000000000000..09733867f764 --- /dev/null +++ b/src/data/M365Licenses-additional.json @@ -0,0 +1,250 @@ +[ + { + "Product_Display_Name": "Office 365 Education E3 for Faculty", + "String_Id": "ENTERPRISEPACK_FACULTY", + "GUID": "e4fa3838-3d01-42df-aa28-5e0a4c68604b", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Office 365 A1 for Faculty", + "String_Id": "STANDARDWOFFPACK_FACULTY", + "GUID": "94763226-9b3c-4e75-a931-5c89701abe66", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Office 365 A5 for Faculty", + "String_Id": "ENTERPRISEPREMIUM_FACULTY", + "GUID": "a4585165-0533-458a-97e3-c400570268c4", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Office 365 A5 without Audio Conferencing for faculty", + "String_Id": "ENTERPRISEPREMIUM_NOPSTNCONF_FACULTY", + "GUID": "9a320620-ca3d-4705-a79d-27c135c96e05", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Office 365 Education E1 for Faculty", + "String_Id": "STANDARDPACK_FACULTY", + "GUID": "a19037fc-48b4-4d57-b079-ce44b7832473", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Microsoft 365 A3 for Faculty", + "String_Id": "M365EDU_A3_FACULTY", + "GUID": "4b590615-0888-425a-a965-b3bf7789848d", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "String_Id": "M365EDU_A5_FACULTY", + "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Microsoft 365 A5 without Audio Conferencing for Faculty", + "String_Id": "M365EDU_A5_NOPSTNCONF_FACULTY", + "GUID": "65200ac3-f927-4407-a3d5-c63562dff461", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Office 365 Education for Homeschool for Faculty", + "String_Id": "STANDARDWOFFPACK_HOMESCHOOL_FAC", + "GUID": "43e691ad-1491-4e8c-8dc9-da6b8262c03b", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Office 365 A1 for Faculty (for Device)", + "String_Id": "STANDARDWOFFPACK_FACULTY_DEVICE", + "GUID": "af4e28de-6b52-4fd3-a5f4-6bf708a304d3", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Microsoft Teams Rooms Basic for EDU", + "String_Id": "Microsoft_Teams_Rooms_Basic_FAC", + "GUID": "a4e376bd-c61e-4618-9901-3fc0cb1b88bb", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Microsoft Teams Rooms Basic without Audio Conferencing for EDU", + "String_Id": "Microsoft_Teams_Rooms_Basic_without_Audio_Conferencing_FAC", + "GUID": "7da0ac23-26f8-4d04-8731-9016d9883340", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Microsoft Teams Rooms Pro for EDU", + "String_Id": "Microsoft_Teams_Rooms_Pro_FAC", + "GUID": "c25e2b36-e161-4946-bef2-69239729f690", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Microsoft Teams Rooms Pro without Audio Conferencing for EDU", + "String_Id": "Microsoft_Teams_Rooms_Pro_without_Audio_Conferencing_FAC", + "GUID": "271f6b1a-de32-4849-bcf4-b79b8a7c2cfe", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Office 365 Education E3 for Students", + "String_Id": "ENTERPRISEPACK_STUDENT", + "GUID": "8fc2205d-4e51-4401-97f0-5c89ef1aafb", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Office 365 A1 for Students", + "String_Id": "STANDARDWOFFPACK_STUDENT", + "GUID": "314c4481-f395-4525-be8b-2ec4bb1e9d91", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Office 365 A5 for Students", + "String_Id": "ENTERPRISEPREMIUM_STUDENT", + "GUID": "ee656612-49fa-43e5-b67e-cb1fdf7699df", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Office 365 A5 without PSTN Conferencing for Students", + "String_Id": "ENTERPRISEPREMIUM_NOPSTNCONF_STUDENT", + "GUID": "1164451b-e2e5-4c9e-8fa6-e5122d90dbdc", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Office 365 Education E1 for Students", + "String_Id": "STANDARDPACK_STUDENT", + "GUID": "d37ba356-38c5-4c82-90da-3d714f72a382", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Microsoft 365 A3 for Students", + "String_Id": "M365EDU_A3_STUDENT", + "GUID": "7cfd9a2b-e110-4c39-bf20-c6a3f36a3121", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Microsoft 365 A3 for Students use benefits", + "String_Id": "M365EDU_A3_STUUSEBNFT", + "GUID": "18250162-5d87-4436-a834-d795c15c80f3", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Microsoft 365 A5 for Students", + "String_Id": "M365EDU_A5_STUDENT", + "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Microsoft 365 A5 Student use benefits", + "String_Id": "M365EDU_A5_STUUSEBNFT", + "GUID": "31d57bc7-3a05-4867-ab53-97a17835a411", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Microsoft 365 A5 without Audio Conferencing for Students", + "String_Id": "M365EDU_A5_NOPSTNCONF_STUDENT", + "GUID": "a25c01ce-bab1-47e9-a6d0-ebe939b99ff9", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Microsoft 365 A5 without Audio Conferencing for Students use benefit", + "String_Id": "M365EDU_A5_NOPSTNCONF_STUUSEBNFT", + "GUID": "81441ae1-0b31-4185-a6c0-32b6b84d419f", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Office 365 A3 for Students", + "String_Id": "ENTERPRISEPACKPLUS_STUDENT", + "GUID": "98b6e773-24d4-4c0d-a968-6e787a1f8204", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Office 365 A3 Student use benefit", + "String_Id": "ENTERPRISEPACKPLUS_STUUSEBNFT", + "GUID": "476aad1e-7a7f-473c-9d20-35665a5cbd4f", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Office 365 A5 Student use benefit", + "String_Id": "ENTERPRISEPREMIUM_STUUSEBNFT", + "GUID": "f6e603f1-1a6d-4d32-a730-34b809cb9731", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Office 365 A5 without Audio Conferencing for Students use benefit", + "String_Id": "ENTERPRISEPREMIUM_NOPSTNCONF_STUUSEBNFT", + "GUID": "bc86c9cd-3058-43ba-9972-141678675ac1", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Office 365 Education for Homeschool for Students", + "String_Id": "STANDARDWOFFPACK_HOMESCHOOL_STU", + "GUID": "afbb89a7-db5f-45fb-8af0-1bc5c5015709", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + }, + { + "Product_Display_Name": "Office 365 A1 for Students (for Device)", + "String_Id": "STANDARDWOFFPACK_STUDENT_DEVICE", + "GUID": "160d609e-ab08-4fce-bc1c-ea13321942ac", + "Service_Plan_Name": "", + "Service_Plan_Id": "", + "Service_Plans_Included_Friendly_Names": "" + } +] diff --git a/src/data/M365Licenses.json b/src/data/M365Licenses.json index d206d18e2f67..7f24d98cdf4f 100644 --- a/src/data/M365Licenses.json +++ b/src/data/M365Licenses.json @@ -167,6 +167,14 @@ "Service_Plan_Id": "f7e5b77d-f293-410a-bae8-f941f19fe680", "Service_Plans_Included_Friendly_Names": "OneDrive for Business (Clipchamp)" }, + { + "Product_Display_Name": "Clipchamp Premium Add-on", + "String_Id": "Clipchamp_Premium_Add_on", + "GUID": "4b2c20e4-939d-4bf4-9dd8-6870240cfe19", + "Service_Plan_Name": "CLIPCHAMP_PREMIUM", + "Service_Plan_Id": "430b908f-78e1-4812-b045-cf83320e7d5d", + "Service_Plans_Included_Friendly_Names": "Microsoft Clipchamp Premium" + }, { "Product_Display_Name": "Microsoft 365 Audio Conferencing", "String_Id": "MCOMEETADV", @@ -519,6 +527,14 @@ "Service_Plan_Id": "3a117d30-cfac-4f00-84ac-54f8b6a18d78", "Service_Plans_Included_Friendly_Names": "Compliance Manager Premium Assessment Add-On" }, + { + "Product_Display_Name": "Compliance Program for Microsoft Cloud", + "String_Id": "Compliance_Program_for_Microsoft_Cloud", + "GUID": "10dd46b2-c5ad-4de3-865c-a6fa1363fb51", + "Service_Plan_Name": "CPMC", + "Service_Plan_Id": "1265e154-5544-4197-bba1-03ef69c3b180", + "Service_Plans_Included_Friendly_Names": "Compliance Program for Microsoft Cloud" + }, { "Product_Display_Name": "Defender Threat Intelligence", "String_Id": "Defender_Threat_Intelligence", @@ -1919,6 +1935,30 @@ "Service_Plan_Id": "113feb6c-3fe4-4440-bddc-54d774bf0318", "Service_Plans_Included_Friendly_Names": "Exchange Foundation" }, + { + "Product_Display_Name": "Dynamics 365 Field Service Contractor", + "String_Id": "D365_FIELD_SERVICE_CONTRACTOR", + "GUID": "23e6e135-e869-4ce4-9ae4-5710cd69ac13", + "Service_Plan_Name": "CDS_FIELD_SERVICE_CONTRACTOR", + "Service_Plan_Id": "f4614a66-d632-443a-bc77-afe92987b322", + "Service_Plans_Included_Friendly_Names": "Common Data Service Field service Part Time Contractors" + }, + { + "Product_Display_Name": "Dynamics 365 Field Service Contractor", + "String_Id": "D365_FIELD_SERVICE_CONTRACTOR", + "GUID": "23e6e135-e869-4ce4-9ae4-5710cd69ac13", + "Service_Plan_Name": "EXCHANGE_S_FOUNDATION", + "Service_Plan_Id": "113feb6c-3fe4-4440-bddc-54d774bf0318", + "Service_Plans_Included_Friendly_Names": "Exchange Foundation" + }, + { + "Product_Display_Name": "Dynamics 365 Field Service Contractor", + "String_Id": "D365_FIELD_SERVICE_CONTRACTOR", + "GUID": "23e6e135-e869-4ce4-9ae4-5710cd69ac13", + "Service_Plan_Name": "POWERAPPS_DYN_APPS", + "Service_Plan_Id": "874fc546-6efe-4d22-90b8-5c4e7aa59f4b", + "Service_Plans_Included_Friendly_Names": "Power Apps for Dynamics 365" + }, { "Product_Display_Name": "Dynamics 365 Field Service Contractor for Government", "String_Id": "D365_FIELD_SERVICE_CONTRACTOR_GOV", @@ -2887,6 +2927,94 @@ "Service_Plan_Id": "7e6d7d78-73de-46ba-83b1-6d25117334ba", "Service_Plans_Included_Friendly_Names": "Power Automate for Dynamics 365" }, + { + "Product_Display_Name": "Dynamics 365 Customer Insights Attach", + "String_Id": "Dynamics_365_Customer_Insights_Attach_New", + "GUID": "ff22b8d4-5073-4b24-ba45-84ad5d9b6642", + "Service_Plan_Name": "CDS_CUSTOMER_INSIGHTS_BASE", + "Service_Plan_Id": "d04ca659-b119-4a92-b8fc-3ede584a9d65", + "Service_Plans_Included_Friendly_Names": "Dataverse for Cust Insightsย BASE" + }, + { + "Product_Display_Name": "Dynamics 365 Customer Insights Attach", + "String_Id": "Dynamics_365_Customer_Insights_Attach_New", + "GUID": "ff22b8d4-5073-4b24-ba45-84ad5d9b6642", + "Service_Plan_Name": "CDS_CUSTOMER_INSIGHTS_COMBINED_BASE", + "Service_Plan_Id": "d66ee5da-07d5-49d6-a1d8-45662c3f37be", + "Service_Plans_Included_Friendly_Names": "Dataverse for Customer Insights Combined Base" + }, + { + "Product_Display_Name": "Dynamics 365 Customer Insights Attach", + "String_Id": "Dynamics_365_Customer_Insights_Attach_New", + "GUID": "ff22b8d4-5073-4b24-ba45-84ad5d9b6642", + "Service_Plan_Name": "DYN365_CUSTOMER_INSIGHTS_JOURNEYS_BASE", + "Service_Plan_Id": "1720c3f7-7da3-4a11-8324-92aad283eb68", + "Service_Plans_Included_Friendly_Names": "Dynamics 365 Customer Insights Journeys" + }, + { + "Product_Display_Name": "Dynamics 365 Customer Insights Attach", + "String_Id": "Dynamics_365_Customer_Insights_Attach_New", + "GUID": "ff22b8d4-5073-4b24-ba45-84ad5d9b6642", + "Service_Plan_Name": "Forms_Pro_Marketing_App", + "Service_Plan_Id": "22b657cf-0a9e-467b-8a91-5e31f21bc570", + "Service_Plans_Included_Friendly_Names": "Microsoft Dynamics 365 Customer Voice for Marketing Application" + }, + { + "Product_Display_Name": "Dynamics 365 Customer Insights Attach", + "String_Id": "Dynamics_365_Customer_Insights_Attach_New", + "GUID": "ff22b8d4-5073-4b24-ba45-84ad5d9b6642", + "Service_Plan_Name": "EXCHANGE_S_FOUNDATION", + "Service_Plan_Id": "113feb6c-3fe4-4440-bddc-54d774bf0318", + "Service_Plans_Included_Friendly_Names": "Exchange Foundation" + }, + { + "Product_Display_Name": "Dynamics 365 Customer Insights Journeys T3 Interacted People", + "String_Id": "Dynamics_365_Customer_Insights_Journeys_T3_Interacted_People", + "GUID": "05735051-46c0-4c84-9107-bb13d77d0b88", + "Service_Plan_Name": "CDS_CUSTOMER_INSIGHTS_JOURNEYS_ADD-ON", + "Service_Plan_Id": "2f2e81a6-15de-4041-9f33-73c06fed3801", + "Service_Plans_Included_Friendly_Names": "Dataverse for Customer Insights Journeys add-on" + }, + { + "Product_Display_Name": "Dynamics 365 Customer Insights Journeys T3 Interacted People", + "String_Id": "Dynamics_365_Customer_Insights_Journeys_T3_Interacted_People", + "GUID": "05735051-46c0-4c84-9107-bb13d77d0b88", + "Service_Plan_Name": "DYN365_MARKETING_50K_CONTACT_ADDON", + "Service_Plan_Id": "e626a4ec-1ba2-409e-bf75-9bc0bc30cca7", + "Service_Plans_Included_Friendly_Names": "Dynamics 365 for Marketing 50K Addnl Contacts" + }, + { + "Product_Display_Name": "Dynamics 365 Customer Insights Journeys T3 Interacted People", + "String_Id": "Dynamics_365_Customer_Insights_Journeys_T3_Interacted_People", + "GUID": "05735051-46c0-4c84-9107-bb13d77d0b88", + "Service_Plan_Name": "EXCHANGE_S_FOUNDATION", + "Service_Plan_Id": "113feb6c-3fe4-4440-bddc-54d774bf0318", + "Service_Plans_Included_Friendly_Names": "Exchange Foundation" + }, + { + "Product_Display_Name": "Dynamics 365 Customer Insights User License", + "String_Id": "Dynamics_365_Customer_Insights_User_License", + "GUID": "12b5a442-a6f2-49e4-868b-2d7408c2356f", + "Service_Plan_Name": "DYN365_MARKETING_MSE_USER", + "Service_Plan_Id": "2824c69a-1ac5-4397-8592-eae51cb8b581", + "Service_Plans_Included_Friendly_Names": "Dynamics 365 for Marketing MSE User" + }, + { + "Product_Display_Name": "Dynamics 365 Customer Insights User License", + "String_Id": "Dynamics_365_Customer_Insights_User_License", + "GUID": "12b5a442-a6f2-49e4-868b-2d7408c2356f", + "Service_Plan_Name": "DYN365_MARKETING_USER", + "Service_Plan_Id": "5d7a6abc-eebd-46ab-96e1-e4a2f54a2248", + "Service_Plans_Included_Friendly_Names": "Dynamics 365 for Marketing USL" + }, + { + "Product_Display_Name": "Dynamics 365 Customer Insights User License", + "String_Id": "Dynamics_365_Customer_Insights_User_License", + "GUID": "12b5a442-a6f2-49e4-868b-2d7408c2356f", + "Service_Plan_Name": "EXCHANGE_S_FOUNDATION", + "Service_Plan_Id": "113feb6c-3fe4-4440-bddc-54d774bf0318", + "Service_Plans_Included_Friendly_Names": "Exchange Foundation" + }, { "Product_Display_Name": "Dynamics 365 for Customer Service Chat", "String_Id": "DYN365_CS_CHAT", @@ -3351,6 +3479,62 @@ "Service_Plan_Id": "26fa8a18-2812-4b3d-96b4-864818ce26be", "Service_Plans_Included_Friendly_Names": "Power Automate for Dynamics 365 Mixed Reality" }, + { + "Product_Display_Name": "Dynamics 365 Human Resources Attach to Qualifying Dynamics 365 Base Offer", + "String_Id": "DYN365_HUMAN_RESOURCES_ATTACH", + "GUID": "83c489a4-94b6-4dcc-9fdc-ff9b107a4621", + "Service_Plan_Name": "Forms_Pro_Talent", + "Service_Plan_Id": "1c4ae475-5608-43fa-b3f7-d20e07cf24b4", + "Service_Plans_Included_Friendly_Names": "Microsoft Dynamics 365 Customer Voice for Talent" + }, + { + "Product_Display_Name": "Dynamics 365 Human Resources Attach to Qualifying Dynamics 365 Base Offer", + "String_Id": "DYN365_HUMAN_RESOURCES_ATTACH", + "GUID": "83c489a4-94b6-4dcc-9fdc-ff9b107a4621", + "Service_Plan_Name": "Power_Pages_Internal_User", + "Service_Plan_Id": "60bf28f9-2b70-4522-96f7-335f5e06c941", + "Service_Plans_Included_Friendly_Names": "Power Pages Internal User" + }, + { + "Product_Display_Name": "Dynamics 365 Human Resources Attach to Qualifying Dynamics 365 Base Offer", + "String_Id": "DYN365_HUMAN_RESOURCES_ATTACH", + "GUID": "83c489a4-94b6-4dcc-9fdc-ff9b107a4621", + "Service_Plan_Name": "D365_HR_SELF_SERVICE_OPS", + "Service_Plan_Id": "835b837b-63c1-410e-bf6b-bdef201ad129", + "Service_Plans_Included_Friendly_Names": "Dynamics 365 Human Resource Self Service" + }, + { + "Product_Display_Name": "Dynamics 365 Human Resources Attach to Qualifying Dynamics 365 Base Offer", + "String_Id": "DYN365_HUMAN_RESOURCES_ATTACH", + "GUID": "83c489a4-94b6-4dcc-9fdc-ff9b107a4621", + "Service_Plan_Name": "D365_HR_OPS", + "Service_Plan_Id": "8b21a5dc-5485-49ed-a2d4-0e772c830f6d", + "Service_Plans_Included_Friendly_Names": "Dynamics 365 Human Resources" + }, + { + "Product_Display_Name": "Dynamics 365 Human Resources Attach to Qualifying Dynamics 365 Base Offer", + "String_Id": "DYN365_HUMAN_RESOURCES_ATTACH", + "GUID": "83c489a4-94b6-4dcc-9fdc-ff9b107a4621", + "Service_Plan_Name": "D365_HR_Attach", + "Service_Plan_Id": "3219525a-4064-45ec-9c35-a33ea6b39a49", + "Service_Plans_Included_Friendly_Names": "Dynamics 365 Human Resources Attach" + }, + { + "Product_Display_Name": "Dynamics 365 Human Resources Attach to Qualifying Dynamics 365 Base Offer", + "String_Id": "DYN365_HUMAN_RESOURCES_ATTACH", + "GUID": "83c489a4-94b6-4dcc-9fdc-ff9b107a4621", + "Service_Plan_Name": "D365_HR_ATTACH_OPS", + "Service_Plan_Id": "90d8cb62-e98a-4639-8342-8c7d2c8215ba", + "Service_Plans_Included_Friendly_Names": "Dynamics 365 Human Resources Attach License" + }, + { + "Product_Display_Name": "Dynamics 365 Human Resources Attach to Qualifying Dynamics 365 Base Offer", + "String_Id": "DYN365_HUMAN_RESOURCES_ATTACH", + "GUID": "83c489a4-94b6-4dcc-9fdc-ff9b107a4621", + "Service_Plan_Name": "EXCHANGE_S_FOUNDATION", + "Service_Plan_Id": "113feb6c-3fe4-4440-bddc-54d774bf0318", + "Service_Plans_Included_Friendly_Names": "Exchange Foundation" + }, { "Product_Display_Name": "Dynamics 365 Hybrid Connector", "String_Id": "CRM_HYBRIDCONNECTOR", @@ -3383,6 +3567,22 @@ "Service_Plan_Id": "113feb6c-3fe4-4440-bddc-54d774bf0318", "Service_Plans_Included_Friendly_Names": "Exchange Foundation" }, + { + "Product_Display_Name": "Dynamics 365 for Marketing Addnl Contacts Tier 1", + "String_Id": "DYN365_MARKETING_CONTACT_ADDON", + "GUID": "fc4581aa-6b1f-459d-95b6-84bd49d6f843", + "Service_Plan_Name": "DYN365_MARKETING_CONTACT_ADDON", + "Service_Plan_Id": "18db5075-2c70-408d-a82b-929059d782af", + "Service_Plans_Included_Friendly_Names": "Dynamics 365 for Marketing Additional Contacts Tier 1" + }, + { + "Product_Display_Name": "Dynamics 365 for Marketing Addnl Contacts Tier 1", + "String_Id": "DYN365_MARKETING_CONTACT_ADDON", + "GUID": "fc4581aa-6b1f-459d-95b6-84bd49d6f843", + "Service_Plan_Name": "EXCHANGE_S_FOUNDATION", + "Service_Plan_Id": "113feb6c-3fe4-4440-bddc-54d774bf0318", + "Service_Plans_Included_Friendly_Names": "Exchange Foundation" + }, { "Product_Display_Name": "Dynamics 365 for Marketing Addnl Contacts Tier 3", "String_Id": "DYN365_MARKETING_CONTACT_ADDON_T3", @@ -7744,15 +7944,15 @@ "Service_Plans_Included_Friendly_Names": "Power Automate for Office 365" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "AAD_BASIC_EDU", "Service_Plan_Id": "1d0f309f-fdf9-4b2a-9ae7-9c48b91f1426", - "Service_Plans_Included_Friendly_Names": "Microsoft Entra ID Basic for Education" + "Service_Plans_Included_Friendly_Names": "Azure Active Directory Basic for Education" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "RMS_S_ENTERPRISE", @@ -7760,7 +7960,7 @@ "Service_Plans_Included_Friendly_Names": "Azure Rights Management" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "CDS_O365_P3", @@ -7768,7 +7968,7 @@ "Service_Plans_Included_Friendly_Names": "Common Data Service for Teams" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "LOCKBOX_ENTERPRISE", @@ -7776,7 +7976,15 @@ "Service_Plans_Included_Friendly_Names": "Customer Lockbox" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", + "String_Id": "M365EDU_A5_FACULTY", + "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", + "Service_Plan_Name": "CustomerLockboxA_Enterprise", + "Service_Plan_Id": "3ec18638-bd4c-4d3b-8905-479ed636b83e", + "Service_Plans_Included_Friendly_Names": "Customer Lockbox (A)" + }, + { + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "MIP_S_Exchange", @@ -7784,7 +7992,15 @@ "Service_Plans_Included_Friendly_Names": "Data Classification in Microsoft 365" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", + "String_Id": "M365EDU_A5_FACULTY", + "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", + "Service_Plan_Name": "COMMON_DEFENDER_PLATFORM_FOR_OFFICE", + "Service_Plan_Id": "a312bdeb-1e21-40d0-84b1-0e73f128144f", + "Service_Plans_Included_Friendly_Names": "Defender Platform for Office 365" + }, + { + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "EducationAnalyticsP1", @@ -7792,7 +8008,7 @@ "Service_Plans_Included_Friendly_Names": "Education Analytics" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "EXCHANGE_S_ENTERPRISE", @@ -7800,7 +8016,15 @@ "Service_Plans_Included_Friendly_Names": "Exchange Online (Plan 2)" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", + "String_Id": "M365EDU_A5_FACULTY", + "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", + "Service_Plan_Name": "GRAPH_CONNECTORS_SEARCH_INDEX", + "Service_Plan_Id": "a6520331-d7d4-4276-95f5-15c0933bc757", + "Service_Plans_Included_Friendly_Names": "Graph Connectors Search with Index" + }, + { + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "INFORMATION_BARRIERS", @@ -7808,7 +8032,7 @@ "Service_Plans_Included_Friendly_Names": "Information Barriers" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "Content_Explorer", @@ -7816,7 +8040,7 @@ "Service_Plans_Included_Friendly_Names": "Information Protection and Governance Analytics - Premium" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "ContentExplorer_Standard", @@ -7824,7 +8048,7 @@ "Service_Plans_Included_Friendly_Names": "Information Protection and Governance Analytics โ€“ Standard" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "MIP_S_CLP2", @@ -7832,7 +8056,7 @@ "Service_Plans_Included_Friendly_Names": "Information Protection for Office 365 - Premium" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "MIP_S_CLP1", @@ -7840,7 +8064,7 @@ "Service_Plans_Included_Friendly_Names": "Information Protection for Office 365 - Standard" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "M365_ADVANCED_AUDITING", @@ -7848,15 +8072,15 @@ "Service_Plans_Included_Friendly_Names": "Microsoft 365 Advanced Auditing" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "OFFICESUBSCRIPTION", "Service_Plan_Id": "43de0ff5-c92c-492b-9116-175376d08c38", - "Service_Plans_Included_Friendly_Names": "Microsoft 365 Apps for Enterprise" + "Service_Plans_Included_Friendly_Names": "Microsoft 365 Apps for enterprise" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "MCOMEETADV", @@ -7864,7 +8088,15 @@ "Service_Plans_Included_Friendly_Names": "Microsoft 365 Audio Conferencing" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", + "String_Id": "M365EDU_A5_FACULTY", + "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", + "Service_Plan_Name": "M365_AUDIT_PLATFORM", + "Service_Plan_Id": "f6de4823-28fa-440b-b886-4783fa86ddba", + "Service_Plans_Included_Friendly_Names": "Microsoft 365 Audit Platform" + }, + { + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "MICROSOFT_COMMUNICATION_COMPLIANCE", @@ -7872,7 +8104,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft 365 Communication Compliance" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "MTP", @@ -7880,7 +8112,15 @@ "Service_Plans_Included_Friendly_Names": "Microsoft 365 Defender" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", + "String_Id": "M365EDU_A5_FACULTY", + "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", + "Service_Plan_Name": "M365_LIGHTHOUSE_CUSTOMER_PLAN1", + "Service_Plan_Id": "6f23d6a9-adbf-481c-8538-b4c095654487", + "Service_Plans_Included_Friendly_Names": "Microsoft 365 Lighthouse (Plan 1)" + }, + { + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "MCOEV", @@ -7888,7 +8128,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft 365 Phone System" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "MICROSOFTBOOKINGS", @@ -7896,7 +8136,15 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Bookings" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", + "String_Id": "M365EDU_A5_FACULTY", + "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", + "Service_Plan_Name": "CLIPCHAMP", + "Service_Plan_Id": "a1ace008-72f3-4ea0-8dac-33b3a23a2472", + "Service_Plans_Included_Friendly_Names": "Microsoft Clipchamp" + }, + { + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "COMMUNICATIONS_DLP", @@ -7904,7 +8152,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Communications DLP" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "CUSTOMER_KEY", @@ -7912,15 +8160,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Customer Key" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", - "String_Id": "M365EDU_A5_FACULTY", - "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", - "Service_Plan_Name": "DATA_INVESTIGATIONS", - "Service_Plan_Id": "46129a58-a698-46f0-aa5b-17f6586297d9", - "Service_Plans_Included_Friendly_Names": "Microsoft Data Investigations" - }, - { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "ATP_ENTERPRISE", @@ -7928,7 +8168,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Defender for Office 365 (Plan 1)" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "THREAT_INTELLIGENCE", @@ -7936,7 +8176,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Defender for Office 365 (Plan 2)" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "EXCEL_PREMIUM", @@ -7944,7 +8184,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Excel Advanced Analytics" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "OFFICE_FORMS_PLAN_3", @@ -7952,7 +8192,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Forms (Plan 3)" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "INFO_GOVERNANCE", @@ -7960,7 +8200,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Information Governance" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "INSIDER_RISK", @@ -7968,7 +8208,15 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Insider Risk Management" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", + "String_Id": "M365EDU_A5_FACULTY", + "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", + "Service_Plan_Name": "INSIDER_RISK_MANAGEMENT", + "Service_Plan_Id": "9d0c4ee5-e4a1-4625-ab39-d82b619b1a34", + "Service_Plans_Included_Friendly_Names": "Microsoft Insider Risk Management - Exchange" + }, + { + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "KAIZALA_STANDALONE", @@ -7976,7 +8224,15 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Kaizala Pro" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", + "String_Id": "M365EDU_A5_FACULTY", + "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", + "Service_Plan_Name": "MICROSOFT_LOOP", + "Service_Plan_Id": "c4b8c31a-fb44-4c65-9837-a21f55fcabda", + "Service_Plans_Included_Friendly_Names": "Microsoft Loop" + }, + { + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "ML_CLASSIFICATION", @@ -7984,7 +8240,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft ML-Based Classification" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "EXCHANGE_ANALYTICS", @@ -7992,7 +8248,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft MyAnalytics (Full)" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "PROJECTWORKMANAGEMENT", @@ -8000,7 +8256,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Planner" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "RECORDS_MANAGEMENT", @@ -8008,7 +8264,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Records Management" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "MICROSOFT_SEARCH", @@ -8016,7 +8272,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Search" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "Deskless", @@ -8024,7 +8280,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft StaffHub" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "STREAM_O365_E5", @@ -8032,7 +8288,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Stream for Office 365 E5" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "TEAMS1", @@ -8040,7 +8296,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Teams" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "MINECRAFT_EDUCATION_EDITION", @@ -8048,7 +8304,7 @@ "Service_Plans_Included_Friendly_Names": "Minecraft Education Edition" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "INTUNE_O365", @@ -8056,7 +8312,7 @@ "Service_Plans_Included_Friendly_Names": "Mobile Device Management for Office 365" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "Nucleus", @@ -8064,7 +8320,7 @@ "Service_Plans_Included_Friendly_Names": "Nucleus" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "EQUIVIO_ANALYTICS", @@ -8072,7 +8328,7 @@ "Service_Plans_Included_Friendly_Names": "Office 365 Advanced eDiscovery" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "ADALLOM_S_O365", @@ -8080,7 +8336,7 @@ "Service_Plans_Included_Friendly_Names": "Office 365 Cloud App Security" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "PAM_ENTERPRISE", @@ -8088,7 +8344,7 @@ "Service_Plans_Included_Friendly_Names": "Office 365 Privileged Access Management" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "SAFEDOCS", @@ -8096,7 +8352,7 @@ "Service_Plans_Included_Friendly_Names": "Office 365 SafeDocs" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "SHAREPOINTWAC_EDU", @@ -8104,7 +8360,7 @@ "Service_Plans_Included_Friendly_Names": "Office for the Web for Education" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "POWERAPPS_O365_P3", @@ -8112,7 +8368,7 @@ "Service_Plans_Included_Friendly_Names": "Power Apps for Office 365 (Plan 3)" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "BI_AZURE_P2", @@ -8120,7 +8376,7 @@ "Service_Plans_Included_Friendly_Names": "Power BI Pro" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "PREMIUM_ENCRYPTION", @@ -8128,7 +8384,7 @@ "Service_Plans_Included_Friendly_Names": "Premium Encryption in Office 365" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "PROJECT_O365_P3", @@ -8136,23 +8392,39 @@ "Service_Plans_Included_Friendly_Names": "Project for Office (Plan E5)" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", + "String_Id": "M365EDU_A5_FACULTY", + "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", + "Service_Plan_Name": "PURVIEW_DISCOVERY", + "Service_Plan_Id": "c948ea65-2053-4a5a-8a62-9eaaaf11b522", + "Service_Plans_Included_Friendly_Names": "Purview Discovery" + }, + { + "Product_Display_Name": "Microsoft 365 A5 for faculty", + "String_Id": "M365EDU_A5_FACULTY", + "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", + "Service_Plan_Name": "Bing_Chat_Enterprise", + "Service_Plan_Id": "0d0c0d31-fae7-41f2-b909-eaf4d7f26dba", + "Service_Plans_Included_Friendly_Names": "RETIRED - Commercial data protection for Microsoft Copilot" + }, + { + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "COMMUNICATIONS_COMPLIANCE", "Service_Plan_Id": "41fcdd7d-4733-4863-9cf4-c65b83ce2df4", - "Service_Plans_Included_Friendly_Names": "Microsoft Communications Compliance" + "Service_Plans_Included_Friendly_Names": "RETIRED - Microsoft Communications Compliance" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", - "Service_Plan_Name": "INSIDER_RISK_MANAGEMENT", - "Service_Plan_Id": "9d0c4ee5-e4a1-4625-ab39-d82b619b1a34", - "Service_Plans_Included_Friendly_Names": "Microsoft Insider Risk Management" + "Service_Plan_Name": "DATA_INVESTIGATIONS", + "Service_Plan_Id": "46129a58-a698-46f0-aa5b-17f6586297d9", + "Service_Plans_Included_Friendly_Names": "Retired - Microsoft Data Investigations" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "SCHOOL_DATA_SYNC_P2", @@ -8160,7 +8432,7 @@ "Service_Plans_Included_Friendly_Names": "School Data Sync (Plan 2)" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "SHAREPOINTENTERPRISE_EDU", @@ -8168,7 +8440,7 @@ "Service_Plans_Included_Friendly_Names": "SharePoint (Plan 2) for Education" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "MCOSTANDARD", @@ -8176,7 +8448,7 @@ "Service_Plans_Included_Friendly_Names": "Skype for Business Online (Plan 2)" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "SWAY", @@ -8184,7 +8456,7 @@ "Service_Plans_Included_Friendly_Names": "Sway" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "BPOS_S_TODO_3", @@ -8192,7 +8464,7 @@ "Service_Plans_Included_Friendly_Names": "To-Do (Plan 3)" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "VIVA_LEARNING_SEEDED", @@ -8200,7 +8472,7 @@ "Service_Plans_Included_Friendly_Names": "Viva Learning Seeded" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "WHITEBOARD_PLAN3", @@ -8208,7 +8480,7 @@ "Service_Plans_Included_Friendly_Names": "Whiteboard (Plan 3)" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "YAMMER_EDU", @@ -8216,7 +8488,7 @@ "Service_Plans_Included_Friendly_Names": "Yammer for Academic" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "WINDEFATP", @@ -8224,7 +8496,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Defender for Endpoint" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "MICROSOFTENDPOINTDLP", @@ -8232,7 +8504,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Endpoint DLP" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "UNIVERSAL_PRINT_01", @@ -8240,7 +8512,7 @@ "Service_Plans_Included_Friendly_Names": "Universal Print" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "Virtualization Rights for Windows 10 (E3/E5+VDA)", @@ -8248,7 +8520,7 @@ "Service_Plans_Included_Friendly_Names": "Windows 10/11 Enterprise" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "WINDOWSUPDATEFORBUSINESS_DEPLOYMENTSERVICE", @@ -8256,23 +8528,7 @@ "Service_Plans_Included_Friendly_Names": "Windows Update for Business Deployment Service" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", - "String_Id": "M365EDU_A5_FACULTY", - "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", - "Service_Plan_Name": "AAD_PREMIUM", - "Service_Plan_Id": "41781fb2-bc02-4b7c-bd55-b576c07bb09d", - "Service_Plans_Included_Friendly_Names": "Microsoft Entra ID P1" - }, - { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", - "String_Id": "M365EDU_A5_FACULTY", - "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", - "Service_Plan_Name": "AAD_PREMIUM_P2", - "Service_Plan_Id": "eec0eb4f-6444-4f95-aba0-50c24d67f998", - "Service_Plans_Included_Friendly_Names": "Microsoft Entra ID P2" - }, - { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "RMS_S_PREMIUM", @@ -8280,7 +8536,7 @@ "Service_Plans_Included_Friendly_Names": "Azure Information Protection Premium P1" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "RMS_S_PREMIUM2", @@ -8288,7 +8544,7 @@ "Service_Plans_Included_Friendly_Names": "Azure Information Protection Premium P2" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "DYN365_CDS_O365_P3", @@ -8296,7 +8552,15 @@ "Service_Plans_Included_Friendly_Names": "Common Data Service" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", + "String_Id": "M365EDU_A5_FACULTY", + "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", + "Service_Plan_Name": "Intune_ServiceNow", + "Service_Plan_Id": "3eeb8536-fecf-41bf-a3f8-d6f17a9f3efc", + "Service_Plans_Included_Friendly_Names": "Intune ServiceNow Integration" + }, + { + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "MFA_PREMIUM", @@ -8304,7 +8568,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Azure Multi-Factor Authentication" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "ADALLOM_S_STANDALONE", @@ -8312,7 +8576,7 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Defender for Cloud Apps" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "ATA", @@ -8320,23 +8584,39 @@ "Service_Plans_Included_Friendly_Names": "Microsoft Defender for Identity" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", + "String_Id": "M365EDU_A5_FACULTY", + "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", + "Service_Plan_Name": "AAD_PREMIUM", + "Service_Plan_Id": "41781fb2-bc02-4b7c-bd55-b576c07bb09d", + "Service_Plans_Included_Friendly_Names": "Microsoft Entra ID P1" + }, + { + "Product_Display_Name": "Microsoft 365 A5 for faculty", + "String_Id": "M365EDU_A5_FACULTY", + "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", + "Service_Plan_Name": "AAD_PREMIUM_P2", + "Service_Plan_Id": "eec0eb4f-6444-4f95-aba0-50c24d67f998", + "Service_Plans_Included_Friendly_Names": "Microsoft Entra ID P2" + }, + { + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "INTUNE_A", "Service_Plan_Id": "c1ec4a95-1f05-45b3-a911-aa3fa01094f5", - "Service_Plans_Included_Friendly_Names": "Microsoft Intune" + "Service_Plans_Included_Friendly_Names": "Microsoft Intune Plan 1" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "INTUNE_EDU", "Service_Plan_Id": "da24caf9-af8e-485c-b7c8-e73336da2693", - "Service_Plans_Included_Friendly_Names": "Microsoft Intune for Education" + "Service_Plans_Included_Friendly_Names": "Microsoft Intune Plan 1 for Education" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "FLOW_O365_P3", @@ -8344,20 +8624,28 @@ "Service_Plans_Included_Friendly_Names": "Power Automate for Office 365" }, { - "Product_Display_Name": "Microsoft 365 A5 for Faculty", + "Product_Display_Name": "Microsoft 365 A5 for faculty", "String_Id": "M365EDU_A5_FACULTY", "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", "Service_Plan_Name": "POWER_VIRTUAL_AGENTS_O365_P3", "Service_Plan_Id": "ded3d325-1bdc-453e-8432-5bac26d7a014", "Service_Plans_Included_Friendly_Names": "Power Virtual Agents for Office 365" }, + { + "Product_Display_Name": "Microsoft 365 A5 for faculty", + "String_Id": "M365EDU_A5_FACULTY", + "GUID": "e97c048c-37a4-45fb-ab50-922fbf07a370", + "Service_Plan_Name": "REMOTE_HELP", + "Service_Plan_Id": "a4c6cf29-1168-4076-ba5c-e8fe0e62b17e", + "Service_Plans_Included_Friendly_Names": "Remote help" + }, { "Product_Display_Name": "Microsoft 365 A5 for Students", "String_Id": "M365EDU_A5_STUDENT", "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", "Service_Plan_Name": "AAD_BASIC_EDU", "Service_Plan_Id": "1d0f309f-fdf9-4b2a-9ae7-9c48b91f1426", - "Service_Plans_Included_Friendly_Names": "Microsoft Entra ID Basic for Education" + "Service_Plans_Included_Friendly_Names": "Azure Active Directory Basic for Education" }, { "Product_Display_Name": "Microsoft 365 A5 for Students", @@ -8383,6 +8671,14 @@ "Service_Plan_Id": "9f431833-0334-42de-a7dc-70aa40db46db", "Service_Plans_Included_Friendly_Names": "Customer Lockbox" }, + { + "Product_Display_Name": "Microsoft 365 A5 for Students", + "String_Id": "M365EDU_A5_STUDENT", + "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", + "Service_Plan_Name": "CustomerLockboxA_Enterprise", + "Service_Plan_Id": "3ec18638-bd4c-4d3b-8905-479ed636b83e", + "Service_Plans_Included_Friendly_Names": "Customer Lockbox (A)" + }, { "Product_Display_Name": "Microsoft 365 A5 for Students", "String_Id": "M365EDU_A5_STUDENT", @@ -8391,6 +8687,14 @@ "Service_Plan_Id": "cd31b152-6326-4d1b-ae1b-997b625182e6", "Service_Plans_Included_Friendly_Names": "Data Classification in Microsoft 365" }, + { + "Product_Display_Name": "Microsoft 365 A5 for Students", + "String_Id": "M365EDU_A5_STUDENT", + "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", + "Service_Plan_Name": "COMMON_DEFENDER_PLATFORM_FOR_OFFICE", + "Service_Plan_Id": "a312bdeb-1e21-40d0-84b1-0e73f128144f", + "Service_Plans_Included_Friendly_Names": "Defender Platform for Office 365" + }, { "Product_Display_Name": "Microsoft 365 A5 for Students", "String_Id": "M365EDU_A5_STUDENT", @@ -8407,6 +8711,14 @@ "Service_Plan_Id": "efb87545-963c-4e0d-99df-69c6916d9eb0", "Service_Plans_Included_Friendly_Names": "Exchange Online (Plan 2)" }, + { + "Product_Display_Name": "Microsoft 365 A5 for Students", + "String_Id": "M365EDU_A5_STUDENT", + "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", + "Service_Plan_Name": "GRAPH_CONNECTORS_SEARCH_INDEX", + "Service_Plan_Id": "a6520331-d7d4-4276-95f5-15c0933bc757", + "Service_Plans_Included_Friendly_Names": "Graph Connectors Search with Index" + }, { "Product_Display_Name": "Microsoft 365 A5 for Students", "String_Id": "M365EDU_A5_STUDENT", @@ -8461,7 +8773,7 @@ "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", "Service_Plan_Name": "OFFICESUBSCRIPTION", "Service_Plan_Id": "43de0ff5-c92c-492b-9116-175376d08c38", - "Service_Plans_Included_Friendly_Names": "Microsoft 365 Apps for Enterprise" + "Service_Plans_Included_Friendly_Names": "Microsoft 365 Apps for enterprise" }, { "Product_Display_Name": "Microsoft 365 A5 for Students", @@ -8471,6 +8783,14 @@ "Service_Plan_Id": "3e26ee1f-8a5f-4d52-aee2-b81ce45c8f40", "Service_Plans_Included_Friendly_Names": "Microsoft 365 Audio Conferencing" }, + { + "Product_Display_Name": "Microsoft 365 A5 for Students", + "String_Id": "M365EDU_A5_STUDENT", + "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", + "Service_Plan_Name": "M365_AUDIT_PLATFORM", + "Service_Plan_Id": "f6de4823-28fa-440b-b886-4783fa86ddba", + "Service_Plans_Included_Friendly_Names": "Microsoft 365 Audit Platform" + }, { "Product_Display_Name": "Microsoft 365 A5 for Students", "String_Id": "M365EDU_A5_STUDENT", @@ -8487,6 +8807,14 @@ "Service_Plan_Id": "bf28f719-7844-4079-9c78-c1307898e192", "Service_Plans_Included_Friendly_Names": "Microsoft 365 Defender" }, + { + "Product_Display_Name": "Microsoft 365 A5 for Students", + "String_Id": "M365EDU_A5_STUDENT", + "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", + "Service_Plan_Name": "M365_LIGHTHOUSE_CUSTOMER_PLAN1", + "Service_Plan_Id": "6f23d6a9-adbf-481c-8538-b4c095654487", + "Service_Plans_Included_Friendly_Names": "Microsoft 365 Lighthouse (Plan 1)" + }, { "Product_Display_Name": "Microsoft 365 A5 for Students", "String_Id": "M365EDU_A5_STUDENT", @@ -8503,6 +8831,14 @@ "Service_Plan_Id": "199a5c09-e0ca-4e37-8f7c-b05d533e1ea2", "Service_Plans_Included_Friendly_Names": "Microsoft Bookings" }, + { + "Product_Display_Name": "Microsoft 365 A5 for Students", + "String_Id": "M365EDU_A5_STUDENT", + "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", + "Service_Plan_Name": "CLIPCHAMP", + "Service_Plan_Id": "a1ace008-72f3-4ea0-8dac-33b3a23a2472", + "Service_Plans_Included_Friendly_Names": "Microsoft Clipchamp" + }, { "Product_Display_Name": "Microsoft 365 A5 for Students", "String_Id": "M365EDU_A5_STUDENT", @@ -8519,14 +8855,6 @@ "Service_Plan_Id": "6db1f1db-2b46-403f-be40-e39395f08dbb", "Service_Plans_Included_Friendly_Names": "Microsoft Customer Key" }, - { - "Product_Display_Name": "Microsoft 365 A5 for Students", - "String_Id": "M365EDU_A5_STUDENT", - "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", - "Service_Plan_Name": "DATA_INVESTIGATIONS", - "Service_Plan_Id": "46129a58-a698-46f0-aa5b-17f6586297d9", - "Service_Plans_Included_Friendly_Names": "Microsoft Data Investigations" - }, { "Product_Display_Name": "Microsoft 365 A5 for Students", "String_Id": "M365EDU_A5_STUDENT", @@ -8575,6 +8903,14 @@ "Service_Plan_Id": "d587c7a3-bda9-4f99-8776-9bcf59c84f75", "Service_Plans_Included_Friendly_Names": "Microsoft Insider Risk Management" }, + { + "Product_Display_Name": "Microsoft 365 A5 for Students", + "String_Id": "M365EDU_A5_STUDENT", + "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", + "Service_Plan_Name": "INSIDER_RISK_MANAGEMENT", + "Service_Plan_Id": "9d0c4ee5-e4a1-4625-ab39-d82b619b1a34", + "Service_Plans_Included_Friendly_Names": "Microsoft Insider Risk Management - Exchange" + }, { "Product_Display_Name": "Microsoft 365 A5 for Students", "String_Id": "M365EDU_A5_STUDENT", @@ -8583,6 +8919,14 @@ "Service_Plan_Id": "0898bdbb-73b0-471a-81e5-20f1fe4dd66e", "Service_Plans_Included_Friendly_Names": "Microsoft Kaizala Pro" }, + { + "Product_Display_Name": "Microsoft 365 A5 for Students", + "String_Id": "M365EDU_A5_STUDENT", + "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", + "Service_Plan_Name": "MICROSOFT_LOOP", + "Service_Plan_Id": "c4b8c31a-fb44-4c65-9837-a21f55fcabda", + "Service_Plans_Included_Friendly_Names": "Microsoft Loop" + }, { "Product_Display_Name": "Microsoft 365 A5 for Students", "String_Id": "M365EDU_A5_STUDENT", @@ -8735,6 +9079,22 @@ "Service_Plan_Id": "b21a6b06-1988-436e-a07b-51ec6d9f52ad", "Service_Plans_Included_Friendly_Names": "Project for Office (Plan E5)" }, + { + "Product_Display_Name": "Microsoft 365 A5 for Students", + "String_Id": "M365EDU_A5_STUDENT", + "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", + "Service_Plan_Name": "PURVIEW_DISCOVERY", + "Service_Plan_Id": "c948ea65-2053-4a5a-8a62-9eaaaf11b522", + "Service_Plans_Included_Friendly_Names": "Purview Discovery" + }, + { + "Product_Display_Name": "Microsoft 365 A5 for Students", + "String_Id": "M365EDU_A5_STUDENT", + "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", + "Service_Plan_Name": "Bing_Chat_Enterprise", + "Service_Plan_Id": "0d0c0d31-fae7-41f2-b909-eaf4d7f26dba", + "Service_Plans_Included_Friendly_Names": "RETIRED - Commercial data protection for Microsoft Copilot" + }, { "Product_Display_Name": "Microsoft 365 A5 for Students", "String_Id": "M365EDU_A5_STUDENT", @@ -8747,9 +9107,9 @@ "Product_Display_Name": "Microsoft 365 A5 for Students", "String_Id": "M365EDU_A5_STUDENT", "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", - "Service_Plan_Name": "INSIDER_RISK_MANAGEMENT", - "Service_Plan_Id": "9d0c4ee5-e4a1-4625-ab39-d82b619b1a34", - "Service_Plans_Included_Friendly_Names": "RETIRED - Microsoft Insider Risk Management" + "Service_Plan_Name": "DATA_INVESTIGATIONS", + "Service_Plan_Id": "46129a58-a698-46f0-aa5b-17f6586297d9", + "Service_Plans_Included_Friendly_Names": "Retired - Microsoft Data Investigations" }, { "Product_Display_Name": "Microsoft 365 A5 for Students", @@ -8847,22 +9207,6 @@ "Service_Plan_Id": "7bf960f6-2cd9-443a-8046-5dbff9558365", "Service_Plans_Included_Friendly_Names": "Windows Update for Business Deployment Service" }, - { - "Product_Display_Name": "Microsoft 365 A5 for Students", - "String_Id": "M365EDU_A5_STUDENT", - "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", - "Service_Plan_Name": "AAD_PREMIUM", - "Service_Plan_Id": "41781fb2-bc02-4b7c-bd55-b576c07bb09d", - "Service_Plans_Included_Friendly_Names": "Microsoft Entra ID P1" - }, - { - "Product_Display_Name": "Microsoft 365 A5 for Students", - "String_Id": "M365EDU_A5_STUDENT", - "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", - "Service_Plan_Name": "AAD_PREMIUM_P2", - "Service_Plan_Id": "eec0eb4f-6444-4f95-aba0-50c24d67f998", - "Service_Plans_Included_Friendly_Names": "Microsoft Entra ID P2" - }, { "Product_Display_Name": "Microsoft 365 A5 for Students", "String_Id": "M365EDU_A5_STUDENT", @@ -8887,6 +9231,14 @@ "Service_Plan_Id": "28b0fa46-c39a-4188-89e2-58e979a6b014", "Service_Plans_Included_Friendly_Names": "Common Data Service" }, + { + "Product_Display_Name": "Microsoft 365 A5 for Students", + "String_Id": "M365EDU_A5_STUDENT", + "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", + "Service_Plan_Name": "Intune_ServiceNow", + "Service_Plan_Id": "3eeb8536-fecf-41bf-a3f8-d6f17a9f3efc", + "Service_Plans_Included_Friendly_Names": "Intune ServiceNow Integration" + }, { "Product_Display_Name": "Microsoft 365 A5 for Students", "String_Id": "M365EDU_A5_STUDENT", @@ -8911,13 +9263,29 @@ "Service_Plan_Id": "14ab5db5-e6c4-4b20-b4bc-13e36fd2227f", "Service_Plans_Included_Friendly_Names": "Microsoft Defender for Identity" }, + { + "Product_Display_Name": "Microsoft 365 A5 for Students", + "String_Id": "M365EDU_A5_STUDENT", + "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", + "Service_Plan_Name": "AAD_PREMIUM", + "Service_Plan_Id": "41781fb2-bc02-4b7c-bd55-b576c07bb09d", + "Service_Plans_Included_Friendly_Names": "Microsoft Entra ID P1" + }, + { + "Product_Display_Name": "Microsoft 365 A5 for Students", + "String_Id": "M365EDU_A5_STUDENT", + "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", + "Service_Plan_Name": "AAD_PREMIUM_P2", + "Service_Plan_Id": "eec0eb4f-6444-4f95-aba0-50c24d67f998", + "Service_Plans_Included_Friendly_Names": "Microsoft Entra ID P2" + }, { "Product_Display_Name": "Microsoft 365 A5 for Students", "String_Id": "M365EDU_A5_STUDENT", "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", "Service_Plan_Name": "INTUNE_A", "Service_Plan_Id": "c1ec4a95-1f05-45b3-a911-aa3fa01094f5", - "Service_Plans_Included_Friendly_Names": "Microsoft Intune" + "Service_Plans_Included_Friendly_Names": "Microsoft Intune Plan 1" }, { "Product_Display_Name": "Microsoft 365 A5 for Students", @@ -8925,7 +9293,7 @@ "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", "Service_Plan_Name": "INTUNE_EDU", "Service_Plan_Id": "da24caf9-af8e-485c-b7c8-e73336da2693", - "Service_Plans_Included_Friendly_Names": "Microsoft Intune for Education" + "Service_Plans_Included_Friendly_Names": "Microsoft Intune Plan 1 for Education" }, { "Product_Display_Name": "Microsoft 365 A5 for Students", @@ -8943,6 +9311,14 @@ "Service_Plan_Id": "ded3d325-1bdc-453e-8432-5bac26d7a014", "Service_Plans_Included_Friendly_Names": "Power Virtual Agents for Office 365" }, + { + "Product_Display_Name": "Microsoft 365 A5 for Students", + "String_Id": "M365EDU_A5_STUDENT", + "GUID": "46c119d4-0379-4a9d-85e4-97c66d3f909e", + "Service_Plan_Name": "REMOTE_HELP", + "Service_Plan_Id": "a4c6cf29-1168-4076-ba5c-e8fe0e62b17e", + "Service_Plans_Included_Friendly_Names": "Remote help" + }, { "Product_Display_Name": "Microsoft 365 A5 for students use benefit", "String_Id": "M365EDU_A5_STUUSEBNFT", @@ -17631,6 +18007,702 @@ "Service_Plan_Id": "ded3d325-1bdc-453e-8432-5bac26d7a014", "Service_Plans_Included_Friendly_Names": "Power Virtual Agents for Office 365" }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "MESH_AVATARS_FOR_TEAMS", + "Service_Plan_Id": "dcf9d2f4-772e-4434-b757-77a453cfbc02", + "Service_Plans_Included_Friendly_Names": "Avatars for Teams" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "MESH_AVATARS_ADDITIONAL_FOR_TEAMS", + "Service_Plan_Id": "3efbd4ed-8958-4824-8389-1321f8730af8", + "Service_Plans_Included_Friendly_Names": "Avatars for Teams (additional)" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "CDS_O365_P3", + "Service_Plan_Id": "afa73018-811e-46e9-988f-f75d2b1b8430", + "Service_Plans_Included_Friendly_Names": "Common Data Service for Teams" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "LOCKBOX_ENTERPRISE", + "Service_Plan_Id": "9f431833-0334-42de-a7dc-70aa40db46db", + "Service_Plans_Included_Friendly_Names": "Customer Lockbox" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "CustomerLockboxA_Enterprise", + "Service_Plan_Id": "3ec18638-bd4c-4d3b-8905-479ed636b83e", + "Service_Plans_Included_Friendly_Names": "Customer Lockbox (A)" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "MIP_S_Exchange", + "Service_Plan_Id": "cd31b152-6326-4d1b-ae1b-997b625182e6", + "Service_Plans_Included_Friendly_Names": "Data Classification in Microsoft 365" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "EXCHANGE_S_ENTERPRISE", + "Service_Plan_Id": "efb87545-963c-4e0d-99df-69c6916d9eb0", + "Service_Plans_Included_Friendly_Names": "Exchange Online (Plan 2)" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "GRAPH_CONNECTORS_SEARCH_INDEX", + "Service_Plan_Id": "a6520331-d7d4-4276-95f5-15c0933bc757", + "Service_Plans_Included_Friendly_Names": "Graph Connectors Search with Index" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "MESH_IMMERSIVE_FOR_TEAMS", + "Service_Plan_Id": "f0ff6ac6-297d-49cd-be34-6dfef97f0c28", + "Service_Plans_Included_Friendly_Names": "Immersive spaces for Teams" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "INFORMATION_BARRIERS", + "Service_Plan_Id": "c4801e8a-cb58-4c35-aca6-f2dcc106f287", + "Service_Plans_Included_Friendly_Names": "Information Barriers" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "Content_Explorer", + "Service_Plan_Id": "d9fa6af4-e046-4c89-9226-729a0786685d", + "Service_Plans_Included_Friendly_Names": "Information Protection and Governance Analytics - Premium" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "ContentExplorer_Standard", + "Service_Plan_Id": "2b815d45-56e4-4e3a-b65c-66cb9175b560", + "Service_Plans_Included_Friendly_Names": "Information Protection and Governance Analytics โ€“ Standard" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "MIP_S_CLP2", + "Service_Plan_Id": "efb0351d-3b08-4503-993d-383af8de41e3", + "Service_Plans_Included_Friendly_Names": "Information Protection for Office 365 - Premium" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "MIP_S_CLP1", + "Service_Plan_Id": "5136a095-5cf0-4aff-bec3-e84448b38ea5", + "Service_Plans_Included_Friendly_Names": "Information Protection for Office 365 - Standard" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "MYANALYTICS_P2", + "Service_Plan_Id": "33c4f319-9bdd-48d6-9c4d-410b750a4a5a", + "Service_Plans_Included_Friendly_Names": "Insights by MyAnalytics" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "M365_ADVANCED_AUDITING", + "Service_Plan_Id": "2f442157-a11c-46b9-ae5b-6e39ff4e5849", + "Service_Plans_Included_Friendly_Names": "Microsoft 365 Advanced Auditing" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "OFFICESUBSCRIPTION", + "Service_Plan_Id": "43de0ff5-c92c-492b-9116-175376d08c38", + "Service_Plans_Included_Friendly_Names": "Microsoft 365 Apps for enterprise" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "MCOMEETADV", + "Service_Plan_Id": "3e26ee1f-8a5f-4d52-aee2-b81ce45c8f40", + "Service_Plans_Included_Friendly_Names": "Microsoft 365 Audio Conferencing" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "M365_AUDIT_PLATFORM", + "Service_Plan_Id": "f6de4823-28fa-440b-b886-4783fa86ddba", + "Service_Plans_Included_Friendly_Names": "Microsoft 365 Audit Platform" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "MICROSOFT_COMMUNICATION_COMPLIANCE", + "Service_Plan_Id": "a413a9ff-720c-4822-98ef-2f37c2a21f4c", + "Service_Plans_Included_Friendly_Names": "Microsoft 365 Communication Compliance" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "MTP", + "Service_Plan_Id": "bf28f719-7844-4079-9c78-c1307898e192", + "Service_Plans_Included_Friendly_Names": "Microsoft 365 Defender" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "M365_LIGHTHOUSE_CUSTOMER_PLAN1", + "Service_Plan_Id": "6f23d6a9-adbf-481c-8538-b4c095654487", + "Service_Plans_Included_Friendly_Names": "Microsoft 365 Lighthouse (Plan 1)" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "MCOEV", + "Service_Plan_Id": "4828c8ec-dc2e-4779-b502-87ac9ce28ab7", + "Service_Plans_Included_Friendly_Names": "Microsoft 365 Phone System" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "MICROSOFTBOOKINGS", + "Service_Plan_Id": "199a5c09-e0ca-4e37-8f7c-b05d533e1ea2", + "Service_Plans_Included_Friendly_Names": "Microsoft Bookings" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "CLIPCHAMP", + "Service_Plan_Id": "a1ace008-72f3-4ea0-8dac-33b3a23a2472", + "Service_Plans_Included_Friendly_Names": "Microsoft Clipchamp" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "COMMUNICATIONS_DLP", + "Service_Plan_Id": "6dc145d6-95dd-4191-b9c3-185575ee6f6b", + "Service_Plans_Included_Friendly_Names": "Microsoft Communications DLP" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "CUSTOMER_KEY", + "Service_Plan_Id": "6db1f1db-2b46-403f-be40-e39395f08dbb", + "Service_Plans_Included_Friendly_Names": "Microsoft Customer Key" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "ATP_ENTERPRISE", + "Service_Plan_Id": "f20fedf3-f3c3-43c3-8267-2bfdd51c0939", + "Service_Plans_Included_Friendly_Names": "Microsoft Defender for Office 365 (Plan 1)" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "THREAT_INTELLIGENCE", + "Service_Plan_Id": "8e0c0a52-6a6c-4d40-8370-dd62790dcd70", + "Service_Plans_Included_Friendly_Names": "Microsoft Defender for Office 365 (Plan 2)" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "EXCEL_PREMIUM", + "Service_Plan_Id": "531ee2f8-b1cb-453b-9c21-d2180d014ca5", + "Service_Plans_Included_Friendly_Names": "Microsoft Excel Advanced Analytics" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "FORMS_PLAN_E5", + "Service_Plan_Id": "e212cbc7-0961-4c40-9825-01117710dcb1", + "Service_Plans_Included_Friendly_Names": "Microsoft Forms (Plan E5)" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "INFO_GOVERNANCE", + "Service_Plan_Id": "e26c2fcc-ab91-4a61-b35c-03cdc8dddf66", + "Service_Plans_Included_Friendly_Names": "Microsoft Information Governance" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "INSIDER_RISK", + "Service_Plan_Id": "d587c7a3-bda9-4f99-8776-9bcf59c84f75", + "Service_Plans_Included_Friendly_Names": "Microsoft Insider Risk Management" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "INSIDER_RISK_MANAGEMENT", + "Service_Plan_Id": "9d0c4ee5-e4a1-4625-ab39-d82b619b1a34", + "Service_Plans_Included_Friendly_Names": "Microsoft Insider Risk Management - Exchange" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "KAIZALA_STANDALONE", + "Service_Plan_Id": "0898bdbb-73b0-471a-81e5-20f1fe4dd66e", + "Service_Plans_Included_Friendly_Names": "Microsoft Kaizala Pro" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "MICROSOFT_LOOP", + "Service_Plan_Id": "c4b8c31a-fb44-4c65-9837-a21f55fcabda", + "Service_Plans_Included_Friendly_Names": "Microsoft Loop" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "ML_CLASSIFICATION", + "Service_Plan_Id": "d2d51368-76c9-4317-ada2-a12c004c432f", + "Service_Plans_Included_Friendly_Names": "Microsoft ML-Based Classification" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "EXCHANGE_ANALYTICS", + "Service_Plan_Id": "34c0d7a0-a70f-4668-9238-47f9fc208882", + "Service_Plans_Included_Friendly_Names": "Microsoft MyAnalytics (Full)" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "PROJECTWORKMANAGEMENT", + "Service_Plan_Id": "b737dad2-2f6c-4c65-90e3-ca563267e8b9", + "Service_Plans_Included_Friendly_Names": "Microsoft Planner" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "RECORDS_MANAGEMENT", + "Service_Plan_Id": "65cc641f-cccd-4643-97e0-a17e3045e541", + "Service_Plans_Included_Friendly_Names": "Microsoft Records Management" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "MICROSOFT_SEARCH", + "Service_Plan_Id": "94065c59-bc8e-4e8b-89e5-5138d471eaff", + "Service_Plans_Included_Friendly_Names": "Microsoft Search" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "Deskless", + "Service_Plan_Id": "8c7d2df8-86f0-4902-b2ed-a0458298f3b3", + "Service_Plans_Included_Friendly_Names": "Microsoft StaffHub" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "STREAM_O365_E5", + "Service_Plan_Id": "6c6042f5-6f01-4d67-b8c1-eb99d36eed3e", + "Service_Plans_Included_Friendly_Names": "Microsoft Stream for Office 365 E5" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "INTUNE_O365", + "Service_Plan_Id": "882e1d05-acd1-4ccb-8708-6ee03664b117", + "Service_Plans_Included_Friendly_Names": "Mobile Device Management for Office 365" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "Nucleus", + "Service_Plan_Id": "db4d623d-b514-490b-b7ef-8885eee514de", + "Service_Plans_Included_Friendly_Names": "Nucleus" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "EQUIVIO_ANALYTICS", + "Service_Plan_Id": "4de31727-a228-4ec3-a5bf-8e45b5ca48cc", + "Service_Plans_Included_Friendly_Names": "Office 365 Advanced eDiscovery" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "ADALLOM_S_O365", + "Service_Plan_Id": "8c098270-9dd4-4350-9b30-ba4703f3b36b", + "Service_Plans_Included_Friendly_Names": "Office 365 Cloud App Security" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "PAM_ENTERPRISE", + "Service_Plan_Id": "b1188c4c-1b36-4018-b48b-ee07604f6feb", + "Service_Plans_Included_Friendly_Names": "Office 365 Privileged Access Management" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "SAFEDOCS", + "Service_Plan_Id": "bf6f5520-59e3-4f82-974b-7dbbc4fd27c7", + "Service_Plans_Included_Friendly_Names": "Office 365 SafeDocs" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "SHAREPOINTWAC", + "Service_Plan_Id": "e95bec33-7c88-4a70-8e19-b10bd9d0c014", + "Service_Plans_Included_Friendly_Names": "Office for the Web" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "PEOPLE_SKILLS_FOUNDATION", + "Service_Plan_Id": "13b6da2c-0d84-450e-9f69-a33e221387ca", + "Service_Plans_Included_Friendly_Names": "People Skills - Foundation" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "POWERAPPS_O365_P3", + "Service_Plan_Id": "9c0dab89-a30c-4117-86e7-97bda240acd2", + "Service_Plans_Included_Friendly_Names": "Power Apps for Office 365 (Plan 3)" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "BI_AZURE_P2", + "Service_Plan_Id": "70d33638-9c74-4d01-bfd3-562de28bd4ba", + "Service_Plans_Included_Friendly_Names": "Power BI Pro" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "PREMIUM_ENCRYPTION", + "Service_Plan_Id": "617b097b-4b93-4ede-83de-5f075bb5fb2f", + "Service_Plans_Included_Friendly_Names": "Premium Encryption in Office 365" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "PROJECT_O365_P3", + "Service_Plan_Id": "b21a6b06-1988-436e-a07b-51ec6d9f52ad", + "Service_Plans_Included_Friendly_Names": "Project for Office (Plan E5)" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "PURVIEW_DISCOVERY", + "Service_Plan_Id": "c948ea65-2053-4a5a-8a62-9eaaaf11b522", + "Service_Plans_Included_Friendly_Names": "Purview Discovery" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "Bing_Chat_Enterprise", + "Service_Plan_Id": "0d0c0d31-fae7-41f2-b909-eaf4d7f26dba", + "Service_Plans_Included_Friendly_Names": "RETIRED - Commercial data protection for Microsoft Copilot" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "COMMUNICATIONS_COMPLIANCE", + "Service_Plan_Id": "41fcdd7d-4733-4863-9cf4-c65b83ce2df4", + "Service_Plans_Included_Friendly_Names": "RETIRED - Microsoft Communications Compliance" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "DATA_INVESTIGATIONS", + "Service_Plan_Id": "46129a58-a698-46f0-aa5b-17f6586297d9", + "Service_Plans_Included_Friendly_Names": "Retired - Microsoft Data Investigations" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "PLACES_CORE", + "Service_Plan_Id": "1fe6227d-3e01-46d0-9510-0acad4ff6e94", + "Service_Plans_Included_Friendly_Names": "RETIRED - Places Core" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "SHAREPOINTENTERPRISE", + "Service_Plan_Id": "5dbe027f-2339-4123-9542-606e4d348a72", + "Service_Plans_Included_Friendly_Names": "SharePoint (Plan 2)" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "MCOSTANDARD", + "Service_Plan_Id": "0feaeb32-d00e-4d66-bd5a-43b5b83db82c", + "Service_Plans_Included_Friendly_Names": "Skype for Business Online (Plan 2)" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "SWAY", + "Service_Plan_Id": "a23b959c-7ce8-4e57-9140-b90eb88a9e97", + "Service_Plans_Included_Friendly_Names": "Sway" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "BPOS_S_TODO_3", + "Service_Plan_Id": "3fb82609-8c27-4f7b-bd51-30634711ee67", + "Service_Plans_Included_Friendly_Names": "To-Do (Plan 3)" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "VIVAENGAGE_CORE", + "Service_Plan_Id": "a82fbf69-b4d7-49f4-83a6-915b2cf354f4", + "Service_Plans_Included_Friendly_Names": "Viva Engage Core" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "VIVA_LEARNING_SEEDED", + "Service_Plan_Id": "b76fb638-6ba6-402a-b9f9-83d28acb3d86", + "Service_Plans_Included_Friendly_Names": "Viva Learning Seeded" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "WHITEBOARD_PLAN3", + "Service_Plan_Id": "4a51bca5-1eff-43f5-878c-177680f191af", + "Service_Plans_Included_Friendly_Names": "Whiteboard (Plan 3)" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "YAMMER_ENTERPRISE", + "Service_Plan_Id": "7547a3fe-08ee-4ccb-b430-5077c5041653", + "Service_Plans_Included_Friendly_Names": "Yammer Enterprise" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "WINDEFATP", + "Service_Plan_Id": "871d91ec-ec1a-452b-a83f-bd76c7d770ef", + "Service_Plans_Included_Friendly_Names": "Microsoft Defender for Endpoint" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "MICROSOFTENDPOINTDLP", + "Service_Plan_Id": "64bfac92-2b17-4482-b5e5-a0304429de3e", + "Service_Plans_Included_Friendly_Names": "Microsoft Endpoint DLP" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "UNIVERSAL_PRINT_01", + "Service_Plan_Id": "795f6fe0-cc4d-4773-b050-5dde4dc704c9", + "Service_Plans_Included_Friendly_Names": "Universal Print" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "WIN10_PRO_ENT_SUB", + "Service_Plan_Id": "21b439ba-a0ca-424f-a6cc-52f954a5b111", + "Service_Plans_Included_Friendly_Names": "Windows 10/11 Enterprise (Original)" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "Windows_Autopatch", + "Service_Plan_Id": "9a6eeb79-0b4b-4bf0-9808-39d99a2cd5a3", + "Service_Plans_Included_Friendly_Names": "Windows Autopatch" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "WINDOWSUPDATEFORBUSINESS_DEPLOYMENTSERVICE", + "Service_Plan_Id": "7bf960f6-2cd9-443a-8046-5dbff9558365", + "Service_Plans_Included_Friendly_Names": "Windows Update for Business Deployment Service" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "RMS_S_PREMIUM", + "Service_Plan_Id": "6c57d4b6-3b23-47a5-9bc9-69f17b4947b3", + "Service_Plans_Included_Friendly_Names": "Azure Information Protection Premium P1" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "RMS_S_PREMIUM2", + "Service_Plan_Id": "5689bec4-755d-4753-8b61-40975025187c", + "Service_Plans_Included_Friendly_Names": "Azure Information Protection Premium P2" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "RMS_S_ENTERPRISE", + "Service_Plan_Id": "bea4c11e-220a-4e6d-8eb8-8ea15d019f90", + "Service_Plans_Included_Friendly_Names": "Azure Rights Management" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "DYN365_CDS_O365_P3", + "Service_Plan_Id": "28b0fa46-c39a-4188-89e2-58e979a6b014", + "Service_Plans_Included_Friendly_Names": "Common Data Service" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "Defender_for_Iot_Enterprise", + "Service_Plan_Id": "99cd49a9-0e54-4e07-aea1-d8d9f5f704f5", + "Service_Plans_Included_Friendly_Names": "Defender for IoT - Enterprise IoT Security" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "MFA_PREMIUM", + "Service_Plan_Id": "8a256a2b-b617-496d-b51b-e76466e88db0", + "Service_Plans_Included_Friendly_Names": "Microsoft Azure Multi-Factor Authentication" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "ADALLOM_S_STANDALONE", + "Service_Plan_Id": "2e2ddb96-6af9-4b1d-a3f0-d6ecfd22edb2", + "Service_Plans_Included_Friendly_Names": "Microsoft Defender for Cloud Apps" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "ATA", + "Service_Plan_Id": "14ab5db5-e6c4-4b20-b4bc-13e36fd2227f", + "Service_Plans_Included_Friendly_Names": "Microsoft Defender for Identity" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "AAD_PREMIUM", + "Service_Plan_Id": "41781fb2-bc02-4b7c-bd55-b576c07bb09d", + "Service_Plans_Included_Friendly_Names": "Microsoft Entra ID P1" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "AAD_PREMIUM_P2", + "Service_Plan_Id": "eec0eb4f-6444-4f95-aba0-50c24d67f998", + "Service_Plans_Included_Friendly_Names": "Microsoft Entra ID P2" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "INTUNE_A", + "Service_Plan_Id": "c1ec4a95-1f05-45b3-a911-aa3fa01094f5", + "Service_Plans_Included_Friendly_Names": "Microsoft Intune Plan 1" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "FLOW_O365_P3", + "Service_Plan_Id": "07699545-9485-468e-95b6-2fca3738be01", + "Service_Plans_Included_Friendly_Names": "Power Automate for Office 365" + }, + { + "Product_Display_Name": "Microsoft 365 E5 (no Teams)", + "String_Id": "Microsoft_365_E5_(no_Teams)", + "GUID": "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e", + "Service_Plan_Name": "POWER_VIRTUAL_AGENTS_O365_P3", + "Service_Plan_Id": "ded3d325-1bdc-453e-8432-5bac26d7a014", + "Service_Plans_Included_Friendly_Names": "Power Virtual Agents for Office 365" + }, { "Product_Display_Name": "Microsoft 365 E5 EEA (no Teams) with Calling Minutes", "String_Id": "Microsoft_365_E5_EEA_(no_Teams)_with_Calling_Minutes", @@ -29071,6 +30143,46 @@ "Service_Plan_Id": "e866a266-3cff-43a3-acca-0c90a7e00c8b", "Service_Plans_Included_Friendly_Names": "Entra Identity Governance" }, + { + "Product_Display_Name": "Microsoft Entra Suite Add-on for Microsoft Entra ID P2", + "String_Id": "Microsoft_Entra_Suite_Step_Up_for_Microsoft_Entra_ID_P2", + "GUID": "2ef3064c-c95c-426c-96dd-9ffeaa2f2c37", + "Service_Plan_Name": "Entra_Premium_Internet_Access", + "Service_Plan_Id": "8d23cb83-ab07-418f-8517-d7aca77307dc", + "Service_Plans_Included_Friendly_Names": "Microsoft Entra Internet Access" + }, + { + "Product_Display_Name": "Microsoft Entra Suite Add-on for Microsoft Entra ID P2", + "String_Id": "Microsoft_Entra_Suite_Step_Up_for_Microsoft_Entra_ID_P2", + "GUID": "2ef3064c-c95c-426c-96dd-9ffeaa2f2c37", + "Service_Plan_Name": "Entra_Premium_Private_Access", + "Service_Plan_Id": "f057aab1-b184-49b2-85c0-881b02a405c5", + "Service_Plans_Included_Friendly_Names": "Microsoft Entra Private Access" + }, + { + "Product_Display_Name": "Microsoft Entra Suite Add-on for Microsoft Entra ID P2", + "String_Id": "Microsoft_Entra_Suite_Step_Up_for_Microsoft_Entra_ID_P2", + "GUID": "2ef3064c-c95c-426c-96dd-9ffeaa2f2c37", + "Service_Plan_Name": "Verifiable_Credentials_Service_Request", + "Service_Plan_Id": "aae826b7-14cd-4691-8178-2b312f7072ea", + "Service_Plans_Included_Friendly_Names": "Verifiable Credentials Service Request" + }, + { + "Product_Display_Name": "Microsoft Entra Suite Add-on for Microsoft Entra ID P2", + "String_Id": "Microsoft_Entra_Suite_Step_Up_for_Microsoft_Entra_ID_P2", + "GUID": "2ef3064c-c95c-426c-96dd-9ffeaa2f2c37", + "Service_Plan_Name": "Entra_Identity_Governance", + "Service_Plan_Id": "e866a266-3cff-43a3-acca-0c90a7e00c8b", + "Service_Plans_Included_Friendly_Names": "Entra Identity Governance" + }, + { + "Product_Display_Name": "Microsoft Entra Workload ID", + "String_Id": "Workload_Identities_P2", + "GUID": "52cdf00e-8303-4223-a749-ff69a13e2dd0", + "Service_Plan_Name": "AAD_WRKLDID_P2", + "Service_Plan_Id": "7dc0e92d-bf15-401d-907e-0884efe7c760", + "Service_Plans_Included_Friendly_Names": "Microsoft Entra Workload ID" + }, { "Product_Display_Name": "Microsoft Fabric (Free)", "String_Id": "POWER_BI_STANDARD", @@ -29087,6 +30199,14 @@ "Service_Plan_Id": "2049e525-b859-401b-b2a0-e0a31c4b1fe4", "Service_Plans_Included_Friendly_Names": "Power BI (free)" }, + { + "Product_Display_Name": "Microsoft Fabric (Free)", + "String_Id": "POWER_BI_STANDARD", + "GUID": "a403ebcc-fae0-4ca2-8c8c-7a907fd6c235", + "Service_Plan_Name": "PURVIEW_DISCOVERY", + "Service_Plan_Id": "c948ea65-2053-4a5a-8a62-9eaaaf11b522", + "Service_Plans_Included_Friendly_Names": "Purview Discovery" + }, { "Product_Display_Name": "Microsoft Fabric (Free) for faculty", "String_Id": "POWER_BI_STANDARD_FACULTY", @@ -29127,6 +30247,14 @@ "Service_Plan_Id": "d736def0-1fde-43f0-a5be-e3f8b2de6e41", "Service_Plans_Included_Friendly_Names": "MS IMAGINE ACADEMY" }, + { + "Product_Display_Name": "Microsoft Intune Advanced Analytics", + "String_Id": "Microsoft_Intune_Advanced_Analytics", + "GUID": "5e36d0d4-e9e5-4052-aba0-0257465c9b86", + "Service_Plan_Name": "Intune_AdvancedEA", + "Service_Plan_Id": "2a4baa0e-5e99-4c38-b1f2-6864960f1bd1", + "Service_Plans_Included_Friendly_Names": "Microsoft Intune Advanced Analytics" + }, { "Product_Display_Name": "Microsoft Intune Device", "String_Id": "INTUNE_A_D", @@ -29175,6 +30303,22 @@ "Service_Plan_Id": "d216f254-796f-4dab-bbfa-710686e646b9", "Service_Plans_Included_Friendly_Names": "Microsoft Intune G" }, + { + "Product_Display_Name": "Microsoft Intune Plan 1 A VL", + "String_Id": "INTUNE_A_VL", + "GUID": "99fc2803-fa72-42d3-ae78-b055e177d275", + "Service_Plan_Name": "EXCHANGE_S_FOUNDATION", + "Service_Plan_Id": "113feb6c-3fe4-4440-bddc-54d774bf0318", + "Service_Plans_Included_Friendly_Names": "Exchange Foundation" + }, + { + "Product_Display_Name": "Microsoft Intune Plan 1 A VL", + "String_Id": "INTUNE_A_VL", + "GUID": "99fc2803-fa72-42d3-ae78-b055e177d275", + "Service_Plan_Name": "INTUNE_A_VL", + "Service_Plan_Id": "3e170737-c728-4eae-bbb9-3f3360f7184c", + "Service_Plans_Included_Friendly_Names": "Microsoft Intune Plan 1" + }, { "Product_Display_Name": "Microsoft Intune Plan 1 A VL_USGOV_GCCHIGH", "String_Id": "INTUNE_A_VL_USGOV_GCCHIGH", @@ -29575,6 +30719,38 @@ "Service_Plan_Id": "113feb6c-3fe4-4440-bddc-54d774bf0318", "Service_Plans_Included_Friendly_Names": "Exchange Foundation" }, + { + "Product_Display_Name": "Microsoft Sustainability Manager Premium USL Plus", + "String_Id": "MICROSOFT_SUSTAINABILITY_MANAGER_PREMIUM_USL_ADDON", + "GUID": "9d576ffb-dd32-4c33-91ee-91625b61424a", + "Service_Plan_Name": "MCS_BIZAPPS_CLOUD_FOR_SUSTAINABILITY_USL_PLUS", + "Service_Plan_Id": "beaf5b5c-d11c-4417-b5cb-cd9f9e6719b0", + "Service_Plans_Included_Friendly_Names": "MCS - BizApps Cloud for Sustainability USL Plus" + }, + { + "Product_Display_Name": "Microsoft Sustainability Manager Premium USL Plus", + "String_Id": "MICROSOFT_SUSTAINABILITY_MANAGER_PREMIUM_USL_ADDON", + "GUID": "9d576ffb-dd32-4c33-91ee-91625b61424a", + "Service_Plan_Name": "POWER_APPS_FOR_MCS_USL_PLUS", + "Service_Plan_Id": "c5502fe7-406d-442a-827f-4948b821ba08", + "Service_Plans_Included_Friendly_Names": "Power Apps for Cloud for Sustainability USL Plus" + }, + { + "Product_Display_Name": "Microsoft Sustainability Manager Premium USL Plus", + "String_Id": "MICROSOFT_SUSTAINABILITY_MANAGER_PREMIUM_USL_ADDON", + "GUID": "9d576ffb-dd32-4c33-91ee-91625b61424a", + "Service_Plan_Name": "POWER_AUTOMATE_FOR_MCS_USL_PLUS", + "Service_Plan_Id": "1c22bb50-96fb-49e5-baa6-195cab19eee2", + "Service_Plans_Included_Friendly_Names": "Power Automate for Cloud for Sustainability USL Plus" + }, + { + "Product_Display_Name": "Microsoft Sustainability Manager Premium USL Plus", + "String_Id": "MICROSOFT_SUSTAINABILITY_MANAGER_PREMIUM_USL_ADDON", + "GUID": "9d576ffb-dd32-4c33-91ee-91625b61424a", + "Service_Plan_Name": "EXCHANGE_S_FOUNDATION", + "Service_Plan_Id": "113feb6c-3fe4-4440-bddc-54d774bf0318", + "Service_Plans_Included_Friendly_Names": "Exchange Foundation" + }, { "Product_Display_Name": "Microsoft Sustainability Manager USL Essentials", "String_Id": "Microsoft_Cloud_for_Sustainability_USL", @@ -30477,7 +31653,7 @@ "GUID": "c25e2b36-e161-4946-bef2-69239729f690", "Service_Plan_Name": "AAD_BASIC_EDU", "Service_Plan_Id": "1d0f309f-fdf9-4b2a-9ae7-9c48b91f1426", - "Service_Plans_Included_Friendly_Names": "Microsoft Entra ID Basic for Education" + "Service_Plans_Included_Friendly_Names": "Azure Active Directory Basic for Education" }, { "Product_Display_Name": "Microsoft Teams Rooms Pro for EDU", @@ -30519,6 +31695,14 @@ "Service_Plan_Id": "0feaeb32-d00e-4d66-bd5a-43b5b83db82c", "Service_Plans_Included_Friendly_Names": "Skype for Business Online (Plan 2)" }, + { + "Product_Display_Name": "Microsoft Teams Rooms Pro for EDU", + "String_Id": "Microsoft_Teams_Rooms_Pro_FAC", + "GUID": "c25e2b36-e161-4946-bef2-69239729f690", + "Service_Plan_Name": "Teams_Rooms_Pro", + "Service_Plan_Id": "0374d34c-6be4-4dbb-b3f0-26105db0b28a", + "Service_Plans_Included_Friendly_Names": "Teams Rooms Pro" + }, { "Product_Display_Name": "Microsoft Teams Rooms Pro for EDU", "String_Id": "Microsoft_Teams_Rooms_Pro_FAC", @@ -30567,6 +31751,14 @@ "Service_Plan_Id": "c1ec4a95-1f05-45b3-a911-aa3fa01094f5", "Service_Plans_Included_Friendly_Names": "Microsoft Intune Plan 1" }, + { + "Product_Display_Name": "Microsoft Teams Rooms Pro for EDU", + "String_Id": "Microsoft_Teams_Rooms_Pro_FAC", + "GUID": "c25e2b36-e161-4946-bef2-69239729f690", + "Service_Plan_Name": "SPECIALTY_DEVICES", + "Service_Plan_Id": "cfce7ae3-4b41-4438-999c-c0e91f3b7fb9", + "Service_Plans_Included_Friendly_Names": "Specialty devices" + }, { "Product_Display_Name": "Microsoft Teams Rooms Pro for GCC", "String_Id": "Microsoft_Teams_Rooms_Pro_GCC", @@ -31325,15 +32517,15 @@ "GUID": "94763226-9b3c-4e75-a931-5c89701abe66", "Service_Plan_Name": "AAD_BASIC_EDU", "Service_Plan_Id": "1d0f309f-fdf9-4b2a-9ae7-9c48b91f1426", - "Service_Plans_Included_Friendly_Names": "Microsoft Entra ID Basic for Education" + "Service_Plans_Included_Friendly_Names": "Azure Active Directory Basic for Education" }, { "Product_Display_Name": "Office 365 A1 for faculty", "String_Id": "STANDARDWOFFPACK_FACULTY", "GUID": "94763226-9b3c-4e75-a931-5c89701abe66", - "Service_Plan_Name": "DYN365_CDS_O365_P1", - "Service_Plan_Id": "40b010bb-0b69-4654-ac5e-ba161433f4b4", - "Service_Plans_Included_Friendly_Names": "Common Data Service - O365 P1" + "Service_Plan_Name": "RMS_S_ENTERPRISE", + "Service_Plan_Id": "bea4c11e-220a-4e6d-8eb8-8ea15d019f90", + "Service_Plans_Included_Friendly_Names": "Azure Rights Management" }, { "Product_Display_Name": "Office 365 A1 for faculty", @@ -31363,9 +32555,9 @@ "Product_Display_Name": "Office 365 A1 for faculty", "String_Id": "STANDARDWOFFPACK_FACULTY", "GUID": "94763226-9b3c-4e75-a931-5c89701abe66", - "Service_Plan_Name": "RMS_S_ENTERPRISE", - "Service_Plan_Id": "bea4c11e-220a-4e6d-8eb8-8ea15d019f90", - "Service_Plans_Included_Friendly_Names": "Microsoft Microsoft Entra Rights" + "Service_Plan_Name": "M365_LIGHTHOUSE_CUSTOMER_PLAN1", + "Service_Plan_Id": "6f23d6a9-adbf-481c-8538-b4c095654487", + "Service_Plans_Included_Friendly_Names": "Microsoft 365 Lighthouse (Plan 1)" }, { "Product_Display_Name": "Office 365 A1 for faculty", @@ -31381,7 +32573,7 @@ "GUID": "94763226-9b3c-4e75-a931-5c89701abe66", "Service_Plan_Name": "KAIZALA_O365_P2", "Service_Plan_Id": "54fc630f-5a40-48ee-8965-af0503c1386e", - "Service_Plans_Included_Friendly_Names": "Microsoft Kaizala Pro Plan 2" + "Service_Plans_Included_Friendly_Names": "Microsoft Kaizala Pro" }, { "Product_Display_Name": "Office 365 A1 for faculty", @@ -31459,25 +32651,17 @@ "Product_Display_Name": "Office 365 A1 for faculty", "String_Id": "STANDARDWOFFPACK_FACULTY", "GUID": "94763226-9b3c-4e75-a931-5c89701abe66", - "Service_Plan_Name": "POWERAPPS_O365_P2", - "Service_Plan_Id": "c68f8d98-5534-41c8-bf36-22fa496fa792", - "Service_Plans_Included_Friendly_Names": "Power Apps for Office 365" - }, - { - "Product_Display_Name": "Office 365 A1 for faculty", - "String_Id": "STANDARDWOFFPACK_FACULTY", - "GUID": "94763226-9b3c-4e75-a931-5c89701abe66", - "Service_Plan_Name": "FLOW_O365_P2", - "Service_Plan_Id": "76846ad7-7776-4c40-a281-a386362dd1b9", - "Service_Plans_Included_Friendly_Names": "Power Automate for Office 365" + "Service_Plan_Name": "PROJECT_O365_P1", + "Service_Plan_Id": "a55dfd10-0864-46d9-a3cd-da5991a3e0e2", + "Service_Plans_Included_Friendly_Names": "Project for Office (Plan E1)" }, { "Product_Display_Name": "Office 365 A1 for faculty", "String_Id": "STANDARDWOFFPACK_FACULTY", "GUID": "94763226-9b3c-4e75-a931-5c89701abe66", - "Service_Plan_Name": "PROJECT_O365_P1", - "Service_Plan_Id": "a55dfd10-0864-46d9-a3cd-da5991a3e0e2", - "Service_Plans_Included_Friendly_Names": "Project for Office (Plan E1)" + "Service_Plan_Name": "Bing_Chat_Enterprise", + "Service_Plan_Id": "0d0c0d31-fae7-41f2-b909-eaf4d7f26dba", + "Service_Plans_Included_Friendly_Names": "RETIRED - Commercial data protection for Microsoft Copilot" }, { "Product_Display_Name": "Office 365 A1 for faculty", @@ -31543,6 +32727,30 @@ "Service_Plan_Id": "2078e8df-cff6-4290-98cb-5408261a760a", "Service_Plans_Included_Friendly_Names": "Yammer for Academic" }, + { + "Product_Display_Name": "Office 365 A1 for faculty", + "String_Id": "STANDARDWOFFPACK_FACULTY", + "GUID": "94763226-9b3c-4e75-a931-5c89701abe66", + "Service_Plan_Name": "DYN365_CDS_O365_P1", + "Service_Plan_Id": "40b010bb-0b69-4654-ac5e-ba161433f4b4", + "Service_Plans_Included_Friendly_Names": "Common Data Service" + }, + { + "Product_Display_Name": "Office 365 A1 for faculty", + "String_Id": "STANDARDWOFFPACK_FACULTY", + "GUID": "94763226-9b3c-4e75-a931-5c89701abe66", + "Service_Plan_Name": "POWERAPPS_O365_P2", + "Service_Plan_Id": "c68f8d98-5534-41c8-bf36-22fa496fa792", + "Service_Plans_Included_Friendly_Names": "Power Apps for Office 365" + }, + { + "Product_Display_Name": "Office 365 A1 for faculty", + "String_Id": "STANDARDWOFFPACK_FACULTY", + "GUID": "94763226-9b3c-4e75-a931-5c89701abe66", + "Service_Plan_Name": "FLOW_O365_P2", + "Service_Plan_Id": "76846ad7-7776-4c40-a281-a386362dd1b9", + "Service_Plans_Included_Friendly_Names": "Power Automate for Office 365" + }, { "Product_Display_Name": "Office 365 A1 Plus for faculty", "String_Id": "STANDARDWOFFPACK_IW_FACULTY", @@ -31765,15 +32973,15 @@ "GUID": "314c4481-f395-4525-be8b-2ec4bb1e9d91", "Service_Plan_Name": "AAD_BASIC_EDU", "Service_Plan_Id": "1d0f309f-fdf9-4b2a-9ae7-9c48b91f1426", - "Service_Plans_Included_Friendly_Names": "Microsoft Entra ID Basic for Education" + "Service_Plans_Included_Friendly_Names": "Azure Active Directory Basic for Education" }, { "Product_Display_Name": "Office 365 A1 for students", "String_Id": "STANDARDWOFFPACK_STUDENT", "GUID": "314c4481-f395-4525-be8b-2ec4bb1e9d91", - "Service_Plan_Name": "DYN365_CDS_O365_P1", - "Service_Plan_Id": "40b010bb-0b69-4654-ac5e-ba161433f4b4", - "Service_Plans_Included_Friendly_Names": "Common Data Service - O365 P1" + "Service_Plan_Name": "RMS_S_ENTERPRISE", + "Service_Plan_Id": "bea4c11e-220a-4e6d-8eb8-8ea15d019f90", + "Service_Plans_Included_Friendly_Names": "Azure Rights Management" }, { "Product_Display_Name": "Office 365 A1 for students", @@ -31803,9 +33011,9 @@ "Product_Display_Name": "Office 365 A1 for students", "String_Id": "STANDARDWOFFPACK_STUDENT", "GUID": "314c4481-f395-4525-be8b-2ec4bb1e9d91", - "Service_Plan_Name": "RMS_S_ENTERPRISE", - "Service_Plan_Id": "bea4c11e-220a-4e6d-8eb8-8ea15d019f90", - "Service_Plans_Included_Friendly_Names": "Microsoft Microsoft Entra Rights" + "Service_Plan_Name": "M365_LIGHTHOUSE_CUSTOMER_PLAN1", + "Service_Plan_Id": "6f23d6a9-adbf-481c-8538-b4c095654487", + "Service_Plans_Included_Friendly_Names": "Microsoft 365 Lighthouse (Plan 1)" }, { "Product_Display_Name": "Office 365 A1 for students", @@ -31821,7 +33029,7 @@ "GUID": "314c4481-f395-4525-be8b-2ec4bb1e9d91", "Service_Plan_Name": "KAIZALA_O365_P2", "Service_Plan_Id": "54fc630f-5a40-48ee-8965-af0503c1386e", - "Service_Plans_Included_Friendly_Names": "Microsoft Kaizala Pro Plan 2" + "Service_Plans_Included_Friendly_Names": "Microsoft Kaizala Pro" }, { "Product_Display_Name": "Office 365 A1 for students", @@ -31891,25 +33099,17 @@ "Product_Display_Name": "Office 365 A1 for students", "String_Id": "STANDARDWOFFPACK_STUDENT", "GUID": "314c4481-f395-4525-be8b-2ec4bb1e9d91", - "Service_Plan_Name": "POWERAPPS_O365_P2", - "Service_Plan_Id": "c68f8d98-5534-41c8-bf36-22fa496fa792", - "Service_Plans_Included_Friendly_Names": "Power Apps for Office 365" - }, - { - "Product_Display_Name": "Office 365 A1 for students", - "String_Id": "STANDARDWOFFPACK_STUDENT", - "GUID": "314c4481-f395-4525-be8b-2ec4bb1e9d91", - "Service_Plan_Name": "FLOW_O365_P2", - "Service_Plan_Id": "76846ad7-7776-4c40-a281-a386362dd1b9", - "Service_Plans_Included_Friendly_Names": "Power Automate for Office 365" + "Service_Plan_Name": "PROJECT_O365_P1", + "Service_Plan_Id": "a55dfd10-0864-46d9-a3cd-da5991a3e0e2", + "Service_Plans_Included_Friendly_Names": "Project for Office (Plan E1)" }, { "Product_Display_Name": "Office 365 A1 for students", "String_Id": "STANDARDWOFFPACK_STUDENT", "GUID": "314c4481-f395-4525-be8b-2ec4bb1e9d91", - "Service_Plan_Name": "PROJECT_O365_P1", - "Service_Plan_Id": "a55dfd10-0864-46d9-a3cd-da5991a3e0e2", - "Service_Plans_Included_Friendly_Names": "Project for Office (Plan E1)" + "Service_Plan_Name": "Bing_Chat_Enterprise", + "Service_Plan_Id": "0d0c0d31-fae7-41f2-b909-eaf4d7f26dba", + "Service_Plans_Included_Friendly_Names": "RETIRED - Commercial data protection for Microsoft Copilot" }, { "Product_Display_Name": "Office 365 A1 for students", @@ -31967,6 +33167,30 @@ "Service_Plan_Id": "2078e8df-cff6-4290-98cb-5408261a760a", "Service_Plans_Included_Friendly_Names": "Yammer for Academic" }, + { + "Product_Display_Name": "Office 365 A1 for students", + "String_Id": "STANDARDWOFFPACK_STUDENT", + "GUID": "314c4481-f395-4525-be8b-2ec4bb1e9d91", + "Service_Plan_Name": "DYN365_CDS_O365_P1", + "Service_Plan_Id": "40b010bb-0b69-4654-ac5e-ba161433f4b4", + "Service_Plans_Included_Friendly_Names": "Common Data Service" + }, + { + "Product_Display_Name": "Office 365 A1 for students", + "String_Id": "STANDARDWOFFPACK_STUDENT", + "GUID": "314c4481-f395-4525-be8b-2ec4bb1e9d91", + "Service_Plan_Name": "POWERAPPS_O365_P2", + "Service_Plan_Id": "c68f8d98-5534-41c8-bf36-22fa496fa792", + "Service_Plans_Included_Friendly_Names": "Power Apps for Office 365" + }, + { + "Product_Display_Name": "Office 365 A1 for students", + "String_Id": "STANDARDWOFFPACK_STUDENT", + "GUID": "314c4481-f395-4525-be8b-2ec4bb1e9d91", + "Service_Plan_Name": "FLOW_O365_P2", + "Service_Plan_Id": "76846ad7-7776-4c40-a281-a386362dd1b9", + "Service_Plans_Included_Friendly_Names": "Power Automate for Office 365" + }, { "Product_Display_Name": "Office 365 A1 Plus for students", "String_Id": "STANDARDWOFFPACK_IW_STUDENT", @@ -34167,6 +35391,310 @@ "Service_Plan_Id": "0683001c-0492-4d59-9515-d9a6426b5813", "Service_Plans_Included_Friendly_Names": "Power Virtual Agents for Office 365" }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "MESH_AVATARS_FOR_TEAMS", + "Service_Plan_Id": "dcf9d2f4-772e-4434-b757-77a453cfbc02", + "Service_Plans_Included_Friendly_Names": "Avatars for Teams" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "MESH_AVATARS_ADDITIONAL_FOR_TEAMS", + "Service_Plan_Id": "3efbd4ed-8958-4824-8389-1321f8730af8", + "Service_Plans_Included_Friendly_Names": "Avatars for Teams (additional)" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "CDS_O365_P1", + "Service_Plan_Id": "bed136c6-b799-4462-824d-fc045d3a9d25", + "Service_Plans_Included_Friendly_Names": "Common Data Service for Teams" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "MICROSOFT_MYANALYTICS_FULL", + "Service_Plan_Id": "0403bb98-9d17-4f94-b53e-eca56a7698a6", + "Service_Plans_Included_Friendly_Names": "DO NOT USE - Microsoft MyAnalytics (Full)" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "EXCHANGE_S_STANDARD", + "Service_Plan_Id": "9aaf7827-d63c-4b61-89c3-182f06f82e5c", + "Service_Plans_Included_Friendly_Names": "Exchange Online (Plan 1)" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "GRAPH_CONNECTORS_SEARCH_INDEX", + "Service_Plan_Id": "a6520331-d7d4-4276-95f5-15c0933bc757", + "Service_Plans_Included_Friendly_Names": "Graph Connectors Search with Index" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "MESH_IMMERSIVE_FOR_TEAMS", + "Service_Plan_Id": "f0ff6ac6-297d-49cd-be34-6dfef97f0c28", + "Service_Plans_Included_Friendly_Names": "Immersive spaces for Teams" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "MYANALYTICS_P2", + "Service_Plan_Id": "33c4f319-9bdd-48d6-9c4d-410b750a4a5a", + "Service_Plans_Included_Friendly_Names": "Insights by MyAnalytics" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "INSIGHTS_BY_MYANALYTICS", + "Service_Plan_Id": "b088306e-925b-44ab-baa0-63291c629a91", + "Service_Plans_Included_Friendly_Names": "Insights by MyAnalytics Backend" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "M365_LIGHTHOUSE_CUSTOMER_PLAN1", + "Service_Plan_Id": "6f23d6a9-adbf-481c-8538-b4c095654487", + "Service_Plans_Included_Friendly_Names": "Microsoft 365 Lighthouse (Plan 1)" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "MICROSOFTBOOKINGS", + "Service_Plan_Id": "199a5c09-e0ca-4e37-8f7c-b05d533e1ea2", + "Service_Plans_Included_Friendly_Names": "Microsoft Bookings" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "FORMS_PLAN_E1", + "Service_Plan_Id": "159f4cd6-e380-449f-a816-af1a9ef76344", + "Service_Plans_Included_Friendly_Names": "Microsoft Forms (Plan E1)" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "KAIZALA_O365_P2", + "Service_Plan_Id": "54fc630f-5a40-48ee-8965-af0503c1386e", + "Service_Plans_Included_Friendly_Names": "Microsoft Kaizala Pro" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "PROJECTWORKMANAGEMENT", + "Service_Plan_Id": "b737dad2-2f6c-4c65-90e3-ca563267e8b9", + "Service_Plans_Included_Friendly_Names": "Microsoft Planner" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "MICROSOFT_SEARCH", + "Service_Plan_Id": "94065c59-bc8e-4e8b-89e5-5138d471eaff", + "Service_Plans_Included_Friendly_Names": "Microsoft Search" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "Deskless", + "Service_Plan_Id": "8c7d2df8-86f0-4902-b2ed-a0458298f3b3", + "Service_Plans_Included_Friendly_Names": "Microsoft StaffHub" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "INTUNE_O365", + "Service_Plan_Id": "882e1d05-acd1-4ccb-8708-6ee03664b117", + "Service_Plans_Included_Friendly_Names": "Mobile Device Management for Office 365" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "Nucleus", + "Service_Plan_Id": "db4d623d-b514-490b-b7ef-8885eee514de", + "Service_Plans_Included_Friendly_Names": "Nucleus" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "SHAREPOINTWAC", + "Service_Plan_Id": "e95bec33-7c88-4a70-8e19-b10bd9d0c014", + "Service_Plans_Included_Friendly_Names": "Office for the Web" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "OFFICEMOBILE_SUBSCRIPTION", + "Service_Plan_Id": "c63d4d19-e8cb-460e-b37c-4d6c34603745", + "Service_Plans_Included_Friendly_Names": "Office Mobile Apps for Office 365" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "PEOPLE_SKILLS_FOUNDATION", + "Service_Plan_Id": "13b6da2c-0d84-450e-9f69-a33e221387ca", + "Service_Plans_Included_Friendly_Names": "People Skills - Foundation" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "PROJECT_O365_P1", + "Service_Plan_Id": "a55dfd10-0864-46d9-a3cd-da5991a3e0e2", + "Service_Plans_Included_Friendly_Names": "Project for Office (Plan E1)" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "Bing_Chat_Enterprise", + "Service_Plan_Id": "0d0c0d31-fae7-41f2-b909-eaf4d7f26dba", + "Service_Plans_Included_Friendly_Names": "RETIRED - Commercial data protection for Microsoft Copilot" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "PLACES_CORE", + "Service_Plan_Id": "1fe6227d-3e01-46d0-9510-0acad4ff6e94", + "Service_Plans_Included_Friendly_Names": "RETIRED - Places Core" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "SHAREPOINTSTANDARD", + "Service_Plan_Id": "c7699d2e-19aa-44de-8edf-1736da088ca1", + "Service_Plans_Included_Friendly_Names": "SharePoint (Plan 1)" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "MCOSTANDARD", + "Service_Plan_Id": "0feaeb32-d00e-4d66-bd5a-43b5b83db82c", + "Service_Plans_Included_Friendly_Names": "Skype for Business Online (Plan 2)" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "SWAY", + "Service_Plan_Id": "a23b959c-7ce8-4e57-9140-b90eb88a9e97", + "Service_Plans_Included_Friendly_Names": "Sway" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "BPOS_S_TODO_1", + "Service_Plan_Id": "5e62787c-c316-451f-b873-1d05acd4d12c", + "Service_Plans_Included_Friendly_Names": "To-Do (Plan 1)" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "VIVAENGAGE_CORE", + "Service_Plan_Id": "a82fbf69-b4d7-49f4-83a6-915b2cf354f4", + "Service_Plans_Included_Friendly_Names": "Viva Engage Core" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "VIVA_LEARNING_SEEDED", + "Service_Plan_Id": "b76fb638-6ba6-402a-b9f9-83d28acb3d86", + "Service_Plans_Included_Friendly_Names": "Viva Learning Seeded" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "WHITEBOARD_PLAN1", + "Service_Plan_Id": "b8afc642-032e-4de5-8c0a-507a7bba7e5d", + "Service_Plans_Included_Friendly_Names": "Whiteboard (Plan 1)" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "YAMMER_ENTERPRISE", + "Service_Plan_Id": "7547a3fe-08ee-4ccb-b430-5077c5041653", + "Service_Plans_Included_Friendly_Names": "Yammer Enterprise" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "DYN365_CDS_O365_P1", + "Service_Plan_Id": "40b010bb-0b69-4654-ac5e-ba161433f4b4", + "Service_Plans_Included_Friendly_Names": "Common Data Service" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "RMS_S_BASIC", + "Service_Plan_Id": "31cf2cfc-6b0d-4adc-a336-88b724ed8122", + "Service_Plans_Included_Friendly_Names": "Microsoft Azure Rights Management Service" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "STREAM_O365_E1", + "Service_Plan_Id": "743dd19e-1ce3-4c62-a3ad-49ba8f63a2f6", + "Service_Plans_Included_Friendly_Names": "Microsoft Stream for Office 365 E1" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "POWERAPPS_O365_P1", + "Service_Plan_Id": "92f7a6f3-b89b-4bbd-8c30-809e6da5ad1c", + "Service_Plans_Included_Friendly_Names": "Power Apps for Office 365" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "FLOW_O365_P1", + "Service_Plan_Id": "0f9b09cb-62d1-4ff4-9129-43f4996f83f4", + "Service_Plans_Included_Friendly_Names": "Power Automate for Office 365" + }, + { + "Product_Display_Name": "Office 365 E1 (no Teams)", + "String_Id": "Office_365_E1_(no_Teams)", + "GUID": "f8ced641-8e17-4dc5-b014-f5a2d53f6ac8", + "Service_Plan_Name": "POWER_VIRTUAL_AGENTS_O365_P1", + "Service_Plan_Id": "0683001c-0492-4d59-9515-d9a6426b5813", + "Service_Plans_Included_Friendly_Names": "Power Virtual Agents for Office 365" + }, { "Product_Display_Name": "Office 365 E1 EEA (no Teams)", "String_Id": "Office_365_w/o_Teams_Bundle_E1", @@ -40483,9 +42011,9 @@ "Product_Display_Name": "Power Apps Premium", "String_Id": "POWERAPPS_PER_USER", "GUID": "b30411f5-fea1-4a59-9ad9-3db7c7ead579", - "Service_Plan_Name": "DYN365_CDS_P2", - "Service_Plan_Id": "6ea4c1ef-c259-46df-bce2-943342cd3cb2", - "Service_Plans_Included_Friendly_Names": "Common Data Service - P2" + "Service_Plan_Name": "Power_Pages_Internal_User", + "Service_Plan_Id": "60bf28f9-2b70-4522-96f7-335f5e06c941", + "Service_Plans_Included_Friendly_Names": "Power Pages Internal User" }, { "Product_Display_Name": "Power Apps Premium", @@ -40495,6 +42023,30 @@ "Service_Plan_Id": "113feb6c-3fe4-4440-bddc-54d774bf0318", "Service_Plans_Included_Friendly_Names": "Exchange Foundation" }, + { + "Product_Display_Name": "Power Apps Premium", + "String_Id": "POWERAPPS_PER_USER", + "GUID": "b30411f5-fea1-4a59-9ad9-3db7c7ead579", + "Service_Plan_Name": "CDSAICAPACITY_PERUSER_NEW", + "Service_Plan_Id": "74d93933-6f22-436e-9441-66d205435abb", + "Service_Plans_Included_Friendly_Names": "AI Builder capacity Per User add-on" + }, + { + "Product_Display_Name": "Power Apps Premium", + "String_Id": "POWERAPPS_PER_USER", + "GUID": "b30411f5-fea1-4a59-9ad9-3db7c7ead579", + "Service_Plan_Name": "DYN365_CDS_P2", + "Service_Plan_Id": "6ea4c1ef-c259-46df-bce2-943342cd3cb2", + "Service_Plans_Included_Friendly_Names": "Common Data Service" + }, + { + "Product_Display_Name": "Power Apps Premium", + "String_Id": "POWERAPPS_PER_USER", + "GUID": "b30411f5-fea1-4a59-9ad9-3db7c7ead579", + "Service_Plan_Name": "CDSAICAPACITY_PERUSER", + "Service_Plan_Id": "91f50f7b-2204-4803-acac-5cf5668b8b39", + "Service_Plans_Included_Friendly_Names": "DO NOT USE - AI Builder capacity Per User add-on" + }, { "Product_Display_Name": "Power Apps Premium", "String_Id": "POWERAPPS_PER_USER", @@ -40511,6 +42063,46 @@ "Service_Plan_Id": "dc789ed8-0170-4b65-a415-eb77d5bb350a", "Service_Plans_Included_Friendly_Names": "Power Automate for Power Apps per User Plan" }, + { + "Product_Display_Name": "Power Apps Premium embedded", + "String_Id": "POWERAPPS_PER_USER_ISVEMB", + "GUID": "2a6fb3c6-30cc-4558-a69d-032425c1a3ba", + "Service_Plan_Name": "Power_Pages_Internal_User", + "Service_Plan_Id": "60bf28f9-2b70-4522-96f7-335f5e06c941", + "Service_Plans_Included_Friendly_Names": "Power Pages Internal User" + }, + { + "Product_Display_Name": "Power Apps Premium embedded", + "String_Id": "POWERAPPS_PER_USER_ISVEMB", + "GUID": "2a6fb3c6-30cc-4558-a69d-032425c1a3ba", + "Service_Plan_Name": "EXCHANGE_S_FOUNDATION", + "Service_Plan_Id": "113feb6c-3fe4-4440-bddc-54d774bf0318", + "Service_Plans_Included_Friendly_Names": "Exchange Foundation" + }, + { + "Product_Display_Name": "Power Apps Premium embedded", + "String_Id": "POWERAPPS_PER_USER_ISVEMB", + "GUID": "2a6fb3c6-30cc-4558-a69d-032425c1a3ba", + "Service_Plan_Name": "DYN365_CDS_P2", + "Service_Plan_Id": "6ea4c1ef-c259-46df-bce2-943342cd3cb2", + "Service_Plans_Included_Friendly_Names": "Common Data Service" + }, + { + "Product_Display_Name": "Power Apps Premium embedded", + "String_Id": "POWERAPPS_PER_USER_ISVEMB", + "GUID": "2a6fb3c6-30cc-4558-a69d-032425c1a3ba", + "Service_Plan_Name": "POWERAPPS_PER_USER", + "Service_Plan_Id": "ea2cf03b-ac60-46ae-9c1d-eeaeb63cec86", + "Service_Plans_Included_Friendly_Names": "Power Apps per User Plan" + }, + { + "Product_Display_Name": "Power Apps Premium embedded", + "String_Id": "POWERAPPS_PER_USER_ISVEMB", + "GUID": "2a6fb3c6-30cc-4558-a69d-032425c1a3ba", + "Service_Plan_Name": "Flow_PowerApps_PerUser", + "Service_Plan_Id": "dc789ed8-0170-4b65-a415-eb77d5bb350a", + "Service_Plans_Included_Friendly_Names": "Power Automate for Power Apps per User Plan" + }, { "Product_Display_Name": "Power Apps Premium for Government", "String_Id": "POWERAPPS_PER_USER_GCC", @@ -41047,6 +42639,22 @@ "Service_Plan_Id": "0bf3c642-7bb5-4ccc-884e-59d09df0266c", "Service_Plans_Included_Friendly_Names": "Power BI Premium Per User" }, + { + "Product_Display_Name": "Power BI Premium Per User Add-On for Faculty", + "String_Id": "PBI_PREMIUM_PER_USER_ADDON_FACULTY", + "GUID": "c05b235f-be75-4029-8851-6a4170758eef", + "Service_Plan_Name": "BI_AZURE_P3", + "Service_Plan_Id": "0bf3c642-7bb5-4ccc-884e-59d09df0266c", + "Service_Plans_Included_Friendly_Names": "Power BI Premium Per User" + }, + { + "Product_Display_Name": "Power BI Premium Per User Add-On for Faculty", + "String_Id": "PBI_PREMIUM_PER_USER_ADDON_FACULTY", + "GUID": "c05b235f-be75-4029-8851-6a4170758eef", + "Service_Plan_Name": "PURVIEW_DISCOVERY", + "Service_Plan_Id": "c948ea65-2053-4a5a-8a62-9eaaaf11b522", + "Service_Plans_Included_Friendly_Names": "Purview Discovery" + }, { "Product_Display_Name": "Power BI Premium Per User Add-On for GCC", "String_Id": "PBI_PREMIUM_PER_USER_ADDON_CE_GCC", @@ -43415,6 +45023,70 @@ "Service_Plan_Id": "78b58230-ec7e-4309-913c-93a45cc4735b", "Service_Plans_Included_Friendly_Names": "Microsoft Teams Premium Webinar" }, + { + "Product_Display_Name": "Teams Premium for Faculty", + "String_Id": "Teams_Premium_for_Faculty", + "GUID": "960a972f-d017-4a17-8f64-b42c8035bc7d", + "Service_Plan_Name": "MICROSOFT_ECDN", + "Service_Plan_Id": "85704d55-2e73-47ee-93b4-4b8ea14db92b", + "Service_Plans_Included_Friendly_Names": "Microsoft eCDN" + }, + { + "Product_Display_Name": "Teams Premium for Faculty", + "String_Id": "Teams_Premium_for_Faculty", + "GUID": "960a972f-d017-4a17-8f64-b42c8035bc7d", + "Service_Plan_Name": "TEAMSPRO_MGMT", + "Service_Plan_Id": "0504111f-feb8-4a3c-992a-70280f9a2869", + "Service_Plans_Included_Friendly_Names": "Microsoft Teams Premium Intelligent" + }, + { + "Product_Display_Name": "Teams Premium for Faculty", + "String_Id": "Teams_Premium_for_Faculty", + "GUID": "960a972f-d017-4a17-8f64-b42c8035bc7d", + "Service_Plan_Name": "TEAMSPRO_CUST", + "Service_Plan_Id": "cc8c0802-a325-43df-8cba-995d0c6cb373", + "Service_Plans_Included_Friendly_Names": "Microsoft Teams Premium Personalized" + }, + { + "Product_Display_Name": "Teams Premium for Faculty", + "String_Id": "Teams_Premium_for_Faculty", + "GUID": "960a972f-d017-4a17-8f64-b42c8035bc7d", + "Service_Plan_Name": "TEAMSPRO_PROTECTION", + "Service_Plan_Id": "f8b44f54-18bb-46a3-9658-44ab58712968", + "Service_Plans_Included_Friendly_Names": "Microsoft Teams Premium Secure" + }, + { + "Product_Display_Name": "Teams Premium for Faculty", + "String_Id": "Teams_Premium_for_Faculty", + "GUID": "960a972f-d017-4a17-8f64-b42c8035bc7d", + "Service_Plan_Name": "TEAMSPRO_VIRTUALAPPT", + "Service_Plan_Id": "9104f592-f2a7-4f77-904c-ca5a5715883f", + "Service_Plans_Included_Friendly_Names": "Microsoft Teams Premium Virtual Appointment" + }, + { + "Product_Display_Name": "Teams Premium for Faculty", + "String_Id": "Teams_Premium_for_Faculty", + "GUID": "960a972f-d017-4a17-8f64-b42c8035bc7d", + "Service_Plan_Name": "MCO_VIRTUAL_APPT", + "Service_Plan_Id": "711413d0-b36e-4cd4-93db-0a50a4ab7ea3", + "Service_Plans_Included_Friendly_Names": "Microsoft Teams Premium Virtual Appointments" + }, + { + "Product_Display_Name": "Teams Premium for Faculty", + "String_Id": "Teams_Premium_for_Faculty", + "GUID": "960a972f-d017-4a17-8f64-b42c8035bc7d", + "Service_Plan_Name": "TEAMSPRO_WEBINAR", + "Service_Plan_Id": "78b58230-ec7e-4309-913c-93a45cc4735b", + "Service_Plans_Included_Friendly_Names": "Microsoft Teams Premium Webinar" + }, + { + "Product_Display_Name": "Teams Premium for Faculty", + "String_Id": "Teams_Premium_for_Faculty", + "GUID": "960a972f-d017-4a17-8f64-b42c8035bc7d", + "Service_Plan_Name": "QUEUES_APP", + "Service_Plan_Id": "ab2d4fb5-f80a-4bf1-a11d-7f1da254041b", + "Service_Plans_Included_Friendly_Names": "Queues app for Microsoft Teams" + }, { "Product_Display_Name": "Teams Rooms Premium", "String_Id": "MTR_PREM", diff --git a/src/data/alerts.json b/src/data/alerts.json index ef62b6d13373..7e93eb047e8b 100644 --- a/src/data/alerts.json +++ b/src/data/alerts.json @@ -7,6 +7,25 @@ { "name": "MFAAdmins", "label": "Alert on admins without any form of MFA", + "recommendedRunInterval": "1d", + "requiresInput": true, + "inputType": "switch", + "inputLabel": "Include disabled admin accounts?", + "inputName": "IncludeDisabled" + }, + { + "name": "NewMFADevice", + "label": "Alert when users register new MFA devices", + "recommendedRunInterval": "1h" + }, + { + "name": "LicenseAssignmentErrors", + "label": "Alert on license assignment errors", + "recommendedRunInterval": "1d" + }, + { + "name": "SmtpAuthSuccess", + "label": "Alert on SMTP AUTH usage with success, helps to phase out SMTP AUTH (Entra P1 Required)", "recommendedRunInterval": "1d" }, { @@ -21,12 +40,60 @@ }, { "name": "InactiveLicensedUsers", - "label": "Alert on licensed users that have not logged in for 90 days", + "label": "Alert on licensed users that have not logged in for X days", + "recommendedRunInterval": "1d", "requiresInput": true, - "inputType": "switch", - "inputLabel": "Exclude disabled users?", - "inputName": "InactiveLicensedUsersExcludeDisabled", - "recommendedRunInterval": "1d" + "multipleInput": true, + "inputs": [ + { + "inputType": "number", + "inputLabel": "Days since last login (default: 90)", + "inputName": "DaysSinceLastLogin" + }, + { + "inputType": "switch", + "inputLabel": "Exclude disabled users?", + "inputName": "ExcludeDisabled" + } + ] + }, + { + "name": "InactiveGuestUsers", + "label": "Alert on guest users that have not logged in for X days", + "recommendedRunInterval": "1d", + "requiresInput": true, + "multipleInput": true, + "inputs": [ + { + "inputType": "number", + "inputLabel": "Days since last login (default: 90)", + "inputName": "DaysSinceLastLogin" + }, + { + "inputType": "switch", + "inputLabel": "Exclude disabled guest users?", + "inputName": "ExcludeDisabled" + } + ] + }, + { + "name": "InactiveUsers", + "label": "Alert on users that have not logged in for X days", + "recommendedRunInterval": "1d", + "requiresInput": true, + "multipleInput": true, + "inputs": [ + { + "inputType": "number", + "inputLabel": "Days since last login (default: 90)", + "inputName": "DaysSinceLastLogin" + }, + { + "inputType": "switch", + "inputLabel": "Exclude disabled users?", + "inputName": "ExcludeDisabled" + } + ] }, { "name": "EntraConnectSyncStatus", @@ -55,10 +122,33 @@ "inputName": "SharePointQuota", "recommendedRunInterval": "4h" }, + { + "name": "OneDriveQuota", + "label": "Alert on % OneDrive quota used", + "requiresInput": true, + "inputType": "textField", + "inputLabel": "Enter quota percentage (default: 90)", + "inputName": "OneDriveQuota", + "recommendedRunInterval": "4h" + }, { "name": "ExpiringLicenses", - "label": "Alert on licenses expiring in 30 days", - "recommendedRunInterval": "7d" + "label": "Alert on licenses expiring in X days", + "recommendedRunInterval": "7d", + "requiresInput": true, + "multipleInput": true, + "inputs": [ + { + "inputType": "number", + "inputLabel": "Days until expiration (default: 30)", + "inputName": "ExpiringLicensesDays" + }, + { + "inputType": "switch", + "inputLabel": "Alert only on unassigned licenses", + "inputName": "ExpiringLicensesUnassignedOnly" + } + ] }, { "name": "NewAppApproval", @@ -70,6 +160,11 @@ "label": "Alert on Security Defaults automatic enablement", "recommendedRunInterval": "1d" }, + { + "name": "SecDefaultsDisabled", + "label": "Alert when Security Defaults is disabled with no Conditional Access policies", + "recommendedRunInterval": "1d" + }, { "name": "DefenderStatus", "label": "Alert if Defender is not running (Tenant must be on-boarded in Lighthouse)", @@ -83,7 +178,117 @@ { "name": "DefenderIncidents", "label": "Alert on new Defender Incidents found", - "recommendedRunInterval": "4h" + "recommendedRunInterval": "4h", + "requiresInput": true, + "multipleInput": true, + "inputs": [ + { + "inputType": "autoComplete", + "inputLabel": "Incident severities to include", + "inputName": "IncidentSeverities", + "creatable": false, + "multiple": true, + "options": [ + { "label": "All Severities", "value": "All" }, + { "label": "High", "value": "high" }, + { "label": "Medium", "value": "medium" }, + { "label": "Low", "value": "low" }, + { "label": "Informational", "value": "informational" } + ] + } + ] + }, + { + "name": "DefenderAlerts", + "label": "Alert on new Defender Alerts found", + "recommendedRunInterval": "4h", + "requiresInput": true, + "multipleInput": true, + "inputs": [ + { + "inputType": "autoComplete", + "inputLabel": "Alert severities to include", + "inputName": "AlertSeverities", + "creatable": false, + "multiple": true, + "options": [ + { "label": "All Severities", "value": "All" }, + { "label": "High", "value": "high" }, + { "label": "Medium", "value": "medium" }, + { "label": "Low", "value": "low" }, + { "label": "Informational", "value": "informational" } + ] + } + ] + }, + { + "name": "Vulnerabilities", + "label": "Alert on software vulnerabilities", + "requiresInput": true, + "multipleInput": true, + "inputs": [ + { + "inputType": "number", + "inputLabel": "Minimum age in hours (default: 0)", + "inputName": "VulnerabilityAgeHours" + }, + { + "inputType": "autoComplete", + "inputLabel": "Minimum CVSS severity", + "inputName": "CVSSSeverity", + "creatable": false, + "multiple": false, + "options": [ + { + "label": "Low (0.0+)", + "value": "low" + }, + { + "label": "Medium (4.0+)", + "value": "medium" + }, + { + "label": "High (7.0+)", + "value": "high" + }, + { + "label": "Critical (9.0+)", + "value": "critical" + } + ] + }, + { + "inputType": "autoComplete", + "inputLabel": "Exploitability levels to include", + "inputName": "ExploitabilityLevels", + "creatable": false, + "multiple": true, + "options": [ + { + "label": "All Levels", + "value": "All" + }, + { + "label": "No Known Exploit", + "value": "NoExploit" + }, + { + "label": "Public Exploit Available", + "value": "ExploitIsPublic" + }, + { + "label": "Exploit Verified", + "value": "ExploitIsVerified" + }, + { + "label": "Exploit In Kit", + "value": "ExploitIsInKit" + } + ] + } + ], + "recommendedRunInterval": "4h", + "description": "Monitors for software vulnerabilities based on age, CVSS severity, and exploitability level. Filter by minimum CVSS score (low=0+, medium=4+, high=7+, critical=9+) and select which exploitability levels to include. Requires Defender for Endpoint/Business." }, { "name": "UnusedLicenses", @@ -144,11 +349,51 @@ "label": "Alert on device compliance issues", "recommendedRunInterval": "4h" }, + { + "name": "IntunePolicyConflicts", + "label": "Alert on Intune policy or app conflicts/errors", + "recommendedRunInterval": "4h", + "requiresInput": true, + "multipleInput": true, + "inputs": [ + { + "inputType": "switch", + "inputLabel": "Alert per issue (off = aggregated)", + "inputName": "AlertEachIssue" + }, + { + "inputType": "switch", + "inputLabel": "Include policy status issues", + "inputName": "IncludePolicies" + }, + { + "inputType": "switch", + "inputLabel": "Include app install issues", + "inputName": "IncludeApplications" + }, + { + "inputType": "switch", + "inputLabel": "Alert on conflicts", + "inputName": "AlertConflicts" + }, + { + "inputType": "switch", + "inputLabel": "Alert on errors/failures", + "inputName": "AlertErrors" + } + ], + "description": "Monitors Intune policy assignment states and app install statuses for conflicts or errors. Defaults to aggregated alerts with all mechanisms enabled and both conflicts and errors included." + }, { "name": "BreachAlert", "label": "Alert on (new) potentially breached passwords. Generates an alert if a password is found to be breached.", "recommendedRunInterval": "7d" }, + { + "name": "LicensedUsersWithRoles", + "label": "Alert on licensed users with any administrator roles", + "recommendedRunInterval": "7d" + }, { "name": "HuntressRogueApps", "label": "Alert on Huntress Rogue Apps detected", @@ -168,5 +413,143 @@ "inputName": "TERRLThreshold", "recommendedRunInterval": "1h", "description": "Monitors tenant outbound email volume against Microsoft's TERRL limits. Tenant data is updated every hour." + }, + { + "name": "LowDomainScore", + "label": "Alert on domains with low security score", + "requiresInput": true, + "inputType": "number", + "inputLabel": "Alert when score is below % (default: 70)", + "inputName": "InputValue", + "recommendedRunInterval": "7d", + "description": "Monitors domain security scores from the DomainAnalyser and alerts when scores fall below the specified threshold." + }, + { + "name": "MXRecordChanged", + "label": "Alert on MX record changes", + "recommendedRunInterval": "1d", + "description": "Monitors MX records for all domains and alerts when changes are detected. This helps identify potential mail routing changes that could indicate security issues or unauthorized modifications." + }, + { + "name": "GlobalAdminNoAltEmail", + "label": "Alert on Global Admin accounts without alternate email address", + "recommendedRunInterval": "7d", + "description": "Monitors Global Admin accounts and alerts when they don't have an alternate email address set, which is important for password recovery of key accounts." + }, + { + "name": "GlobalAdminAllowList", + "label": "Alert on Global Admins outside approved list", + "recommendedRunInterval": "4h", + "requiresInput": true, + "multipleInput": true, + "inputs": [ + { + "inputType": "textField", + "inputLabel": "Approved Global Admin UPN prefixes (comma separated)", + "inputName": "ApprovedGlobalAdmins" + }, + { + "inputType": "switch", + "inputLabel": "Alert per non-compliant admin? (off = single aggregated alert)", + "inputName": "AlertEachAdmin" + } + ], + "description": "Alerts when Global Administrator accounts are present whose UPN prefix (before @domain) is not in your approved comma-separated allow list. Toggle per-admin alerts to get one alert per user or a single aggregated alert." + }, + { + "name": "NewRiskyUsers", + "label": "Alert on new risky users (P2 License Required)", + "recommendedRunInterval": "30m", + "description": "Monitors for new risky users in the tenant. Risky users are defined as users who have performed actions that are considered risky, such as password resets, MFA failures, or suspicious activity." + }, + { + "name": "GroupMembershipChange", + "label": "Alert on group membership changes for monitored groups", + "recommendedRunInterval": "1h", + "requiresInput": true, + "inputType": "textField", + "inputLabel": "Group display names to monitor (comma separated, wildcards supported)", + "inputName": "InputValue", + "description": "Monitors audit logs for membership changes (add/remove) in specified groups. Supports wildcards like 'CA*' or '*Exclusion*'. Particularly useful for tracking changes to groups used in Conditional Access exclusions or other security-critical groups." + }, + { + "name": "LowTenantAlignment", + "label": "Alert on low tenant alignment percentage", + "requiresInput": true, + "inputType": "number", + "inputLabel": "Alert when alignment is below % (default: 99)", + "inputName": "InputValue", + "recommendedRunInterval": "1d", + "description": "Monitors tenant alignment scores against standards templates and alerts when the alignment percentage falls below the specified threshold. This helps ensure compliance across all managed tenants." + }, + { + "name": "RestrictedUsers", + "label": "Alert on users restricted from sending email", + "recommendedRunInterval": "30m", + "description": "Monitors for users who have been restricted from sending email due to exceeding outbound spam limits. These users typically indicate a compromised account that needs immediate attention." + }, + { + "name": "ReportOnlyCA", + "label": "Alert on tenants with Conditional Access policies in report-only mode", + "recommendedRunInterval": "1d" + }, + { + "name": "QuarantineReleaseRequests", + "label": "Alert on quarantine release requests", + "recommendedRunInterval": "1h", + "description": "Monitors for user requests to release quarantined messages and provides a CIPP-native alternative to the external email forwarding method. This helps MSPs maintain secure configurations while getting timely notifications about quarantine activity. Links to the tenant's quarantine page are provided in alerts." + }, + { + "name": "StaleEntraDevices", + "label": "Alert on stale Entra devices that have not been active for X days", + "recommendedRunInterval": "1d", + "requiresInput": true, + "multipleInput": true, + "inputs": [ + { + "inputType": "number", + "inputLabel": "Days since last activity (default: 90)", + "inputName": "DaysSinceLastActivity" + }, + { + "inputType": "switch", + "inputLabel": "Exclude disabled devices?", + "inputName": "ExcludeDisabled" + } + ] + }, + { + "name": "SecureScore", + "label": "Alert on a low Secure Score", + "recommendedRunInterval": "1d", + "requiresInput": true, + "multipleInput": true, + "inputs": [ + { + "inputType": "autoComplete", + "inputLabel": "Threshold type absolute number or percent", + "inputName": "ThresholdType", + "creatable": false, + "multiple": false, + "options": [ + { + "label": "Percent", + "value": "percent" + }, + { + "label": "Absolute", + "value": "absolute" + } + ], + "required": true + }, + { + "inputType": "number", + "inputLabel": "Threshold Value (below this will trigger the alert)", + "inputName": "InputValue", + "required": true + } + ], + "description": "Monitors Secure Score and alerts when it falls below the specified threshold (absolute or percent value). Helps identify security gaps and areas for improvement." } ] diff --git a/src/data/dashboardv2-demo-data.js b/src/data/dashboardv2-demo-data.js new file mode 100644 index 000000000000..e5e23eee579a --- /dev/null +++ b/src/data/dashboardv2-demo-data.js @@ -0,0 +1,131 @@ +// Demo data structure matching Zero Trust Assessment +export const dashboardDemoData = { + ExecutedAt: "2025-12-16T10:00:00Z", + TenantName: "Demo Tenant", + Domain: "demo.contoso.com", + TestResultSummary: { + IdentityPassed: 85, + IdentityTotal: 100, + DevicesPassed: 25, + DevicesTotal: 36, + DataPassed: 20, + DataTotal: 30, + }, + TenantInfo: { + TenantOverview: { + UserCount: 1250, + GuestCount: 85, + GroupCount: 340, + ApplicationCount: 156, + DeviceCount: 765, + ManagedDeviceCount: 733, + }, + OverviewCaMfaAllUsers: { + description: + "Over the past 30 days, 68.5% of sign-ins were protected by conditional access policies enforcing multifactor authentication.", + nodes: [ + { source: "User sign in", target: "No CA applied", value: 394 }, + { source: "User sign in", target: "CA applied", value: 856 }, + { source: "CA applied", target: "No MFA", value: 146 }, + { source: "CA applied", target: "MFA", value: 710 }, + ], + }, + OverviewCaDevicesAllUsers: { + description: "Over the past 30 days, 71.2% of sign-ins were from compliant devices.", + nodes: [ + { source: "User sign in", target: "Unmanaged", value: 500 }, + { source: "User sign in", target: "Managed", value: 1150 }, + { source: "Managed", target: "Non-compliant", value: 260 }, + { source: "Managed", target: "Compliant", value: 890 }, + ], + }, + OverviewAuthMethodsPrivilegedUsers: { + description: "Authentication methods used by privileged users over the past 30 days.", + nodes: [ + { source: "Users", target: "Single factor", value: 5 }, + { source: "Users", target: "Phishable", value: 28 }, + { source: "Users", target: "Phish resistant", value: 15 }, + { source: "Phishable", target: "Phone", value: 8 }, + { source: "Phishable", target: "Authenticator", value: 20 }, + { source: "Phish resistant", target: "Passkey", value: 12 }, + { source: "Phish resistant", target: "WHfB", value: 3 }, + ], + }, + OverviewAuthMethodsAllUsers: { + description: "Authentication methods used by all users over the past 30 days.", + nodes: [ + { source: "Users", target: "Single factor", value: 120 }, + { source: "Users", target: "Phishable", value: 580 }, + { source: "Users", target: "Phish resistant", value: 550 }, + { source: "Phishable", target: "Phone", value: 180 }, + { source: "Phishable", target: "Authenticator", value: 400 }, + { source: "Phish resistant", target: "Passkey", value: 450 }, + { source: "Phish resistant", target: "WHfB", value: 100 }, + ], + }, + DeviceOverview: { + DesktopDevicesSummary: { + description: "Desktop devices (Windows and macOS) by join type and compliance status.", + nodes: [ + // Level 1: Desktop devices to OS + { source: "Desktop devices", target: "Windows", value: 585 }, + { source: "Desktop devices", target: "macOS", value: 75 }, + // Level 2: Windows to join types + { source: "Windows", target: "Entra joined", value: 285 }, + { source: "Windows", target: "Entra registered", value: 100 }, + { source: "Windows", target: "Entra hybrid joined", value: 200 }, + // Level 3: Windows join types to compliance + { source: "Entra joined", target: "Compliant", value: 171 }, + { source: "Entra joined", target: "Non-compliant", value: 42 }, + { source: "Entra joined", target: "Unmanaged", value: 72 }, + { source: "Entra hybrid joined", target: "Compliant", value: 50 }, + { source: "Entra hybrid joined", target: "Non-compliant", value: 23 }, + { source: "Entra hybrid joined", target: "Unmanaged", value: 127 }, + { source: "Entra registered", target: "Compliant", value: 60 }, + { source: "Entra registered", target: "Non-compliant", value: 40 }, + { source: "Entra registered", target: "Unmanaged", value: 0 }, + // Level 2: macOS directly to compliance + { source: "macOS", target: "Compliant", value: 56 }, + { source: "macOS", target: "Non-compliant", value: 15 }, + { source: "macOS", target: "Unmanaged", value: 4 }, + ], + }, + MobileSummary: { + description: "Mobile devices by compliance status.", + nodes: [ + { source: "Mobile devices", target: "Android", value: 105 }, + { source: "Mobile devices", target: "iOS", value: 75 }, + { source: "Android", target: "Android (Company)", value: 72 }, + { source: "Android", target: "Android (Personal)", value: 33 }, + { source: "iOS", target: "iOS (Company)", value: 58 }, + { source: "iOS", target: "iOS (Personal)", value: 17 }, + { source: "Android (Company)", target: "Compliant", value: 60 }, + { source: "Android (Company)", target: "Non-compliant", value: 12 }, + { source: "Android (Personal)", target: "Compliant", value: 10 }, + { source: "Android (Personal)", target: "Non-compliant", value: 23 }, + { source: "iOS (Company)", target: "Compliant", value: 52 }, + { source: "iOS (Company)", target: "Non-compliant", value: 6 }, + { source: "iOS (Personal)", target: "Compliant", value: 11 }, + { source: "iOS (Personal)", target: "Non-compliant", value: 6 }, + ], + }, + ManagedDevices: { + deviceOperatingSystemSummary: { + androidCount: 105, + iosCount: 75, + macOSCount: 75, + windowsCount: 585, + linuxCount: 15, + }, + }, + DeviceCompliance: { + compliantDeviceCount: 400, + nonCompliantDeviceCount: 150, + }, + DeviceOwnership: { + corporateCount: 600, + personalCount: 100, + }, + }, + }, +}; diff --git a/src/data/intuneCollection.json b/src/data/intuneCollection.json index 1c6291fefa62..c6d19ca27858 100644 --- a/src/data/intuneCollection.json +++ b/src/data/intuneCollection.json @@ -111,7 +111,7 @@ }, { "id": "3~policy~microsoft_edge_targetblankimpliesnoopener", - "displayName": "Do not set window.opener for links targeting _blank (User)", + "displayName": "Do not set window.opener for links targeting _blank (obsolete) (User)", "options": [ { "id": "3~policy~microsoft_edge_targetblankimpliesnoopener_0", @@ -170,15 +170,24 @@ { "id": "ade_authenticationmethod", "displayName": "Intune authentication method", + "options": { + "id": "ade_authenticationmethod_2", + "displayName": "Setup Assistant with modern authentication", + "description": null + } + }, + { + "id": "ade_awaitconfiguration_basic", + "displayName": "Await final configuration", "options": [ { - "id": "ade_authenticationmethod_2", - "displayName": "Setup Assistant with modern authentication", + "id": "ade_awaitconfiguration_basic_0", + "displayName": "No", "description": null }, { - "id": "ade_authenticationmethod_0", - "displayName": "Company Portal", + "id": "ade_awaitconfiguration_basic_1", + "displayName": "Yes", "description": null } ] @@ -267,6 +276,22 @@ } ] }, + { + "id": "ade_setupassistant_actionbutton", + "displayName": "Action Button", + "options": [ + { + "id": "ade_setupassistant_actionbutton_0", + "displayName": "Hide", + "description": null + }, + { + "id": "ade_setupassistant_actionbutton_1", + "displayName": "Show", + "description": null + } + ] + }, { "id": "ade_setupassistant_androidmigration", "displayName": "Android migration", @@ -374,16 +399,16 @@ ] }, { - "id": "ade_setupassistant_displaytone", - "displayName": "Display Tone", + "id": "ade_setupassistant_enablelockdownmode", + "displayName": "Enable Lock down Mode", "options": [ { - "id": "ade_setupassistant_displaytone_0", + "id": "ade_setupassistant_enablelockdownmode_0", "displayName": "Hide", "description": null }, { - "id": "ade_setupassistant_displaytone_1", + "id": "ade_setupassistant_enablelockdownmode_1", "displayName": "Show", "description": null } @@ -405,22 +430,6 @@ } ] }, - { - "id": "ade_setupassistant_homebutton", - "displayName": "Home button", - "options": [ - { - "id": "ade_setupassistant_homebutton_0", - "displayName": "Hide", - "description": null - }, - { - "id": "ade_setupassistant_homebutton_1", - "displayName": "Show", - "description": null - } - ] - }, { "id": "ade_setupassistant_imessagefacetime", "displayName": "iMessage and FaceTime", @@ -438,32 +447,32 @@ ] }, { - "id": "ade_setupassistant_locationservices", - "displayName": "Location services", + "id": "ade_setupassistant_intelligence", + "displayName": "Intelligence", "options": [ { - "id": "ade_setupassistant_locationservices_0", + "id": "ade_setupassistant_intelligence_0", "displayName": "Hide", "description": null }, { - "id": "ade_setupassistant_locationservices_1", + "id": "ade_setupassistant_intelligence_1", "displayName": "Show", "description": null } ] }, { - "id": "ade_setupassistant_onboarding", - "displayName": "Onboarding", + "id": "ade_setupassistant_locationservices", + "displayName": "Location services", "options": [ { - "id": "ade_setupassistant_onboarding_0", + "id": "ade_setupassistant_locationservices_0", "displayName": "Hide", "description": null }, { - "id": "ade_setupassistant_onboarding_1", + "id": "ade_setupassistant_locationservices_1", "displayName": "Show", "description": null } @@ -533,6 +542,22 @@ } ] }, + { + "id": "ade_setupassistant_safety", + "displayName": "Emergency SOS", + "options": [ + { + "id": "ade_setupassistant_safety_0", + "displayName": "Hide", + "description": null + }, + { + "id": "ade_setupassistant_safety_1", + "displayName": "Show", + "description": null + } + ] + }, { "id": "ade_setupassistant_screentime", "displayName": "Screen Time", @@ -662,32 +687,32 @@ ] }, { - "id": "ade_setupassistant_watchmigration", - "displayName": "Watch migration", + "id": "ade_setupassistant_voiceselection", + "displayName": "Voice selection", "options": [ { - "id": "ade_setupassistant_watchmigration_0", + "id": "ade_setupassistant_voiceselection_0", "displayName": "Hide", "description": null }, { - "id": "ade_setupassistant_watchmigration_1", + "id": "ade_setupassistant_voiceselection_1", "displayName": "Show", "description": null } ] }, { - "id": "ade_setupassistant_zoom", - "displayName": "Zoom", + "id": "ade_setupassistant_watchmigration", + "displayName": "Watch migration", "options": [ { - "id": "ade_setupassistant_zoom_0", + "id": "ade_setupassistant_watchmigration_0", "displayName": "Hide", "description": null }, { - "id": "ade_setupassistant_zoom_1", + "id": "ade_setupassistant_watchmigration_1", "displayName": "Show", "description": null } @@ -735,6 +760,1244 @@ } ] }, + { + "id": "ade_useraffinitybasic", + "displayName": "User affinity", + "options": { + "id": "ade_useraffinitybasic_0", + "displayName": "Enroll without user affinity", + "description": null + } + }, + { + "id": "apple_customprofile_profile", + "displayName": "Profile", + "options": null + }, + { + "id": "audioaccessory_audioaccessory", + "displayName": "com.apple.configuration.audio-accessory.settings", + "options": null + }, + { + "id": "audioaccessory_temporarypairing", + "displayName": "Temporary Pairing", + "options": null + }, + { + "id": "audioaccessory_temporarypairing_configuration", + "displayName": "Configuration", + "options": null + }, + { + "id": "audioaccessory_temporarypairing_configuration_unpairingtime", + "displayName": "Unpairing Time", + "options": null + }, + { + "id": "audioaccessory_temporarypairing_configuration_unpairingtime_hour", + "displayName": "Hour", + "options": null + }, + { + "id": "audioaccessory_temporarypairing_configuration_unpairingtime_policy", + "displayName": "Policy", + "options": [ + { + "id": "audioaccessory_temporarypairing_configuration_unpairingtime_policy_0", + "displayName": "None", + "description": null + }, + { + "id": "audioaccessory_temporarypairing_configuration_unpairingtime_policy_1", + "displayName": "Hour", + "description": null + } + ] + }, + { + "id": "audioaccessory_temporarypairing_disabled", + "displayName": "Disabled", + "options": [ + { + "id": "audioaccessory_temporarypairing_disabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "audioaccessory_temporarypairing_disabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.accountsblockmodification", + "displayName": "Block account changes", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.accountsblockmodification_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.accountsblockmodification_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.appsallowinstallfromunknownsources", + "displayName": "Allow installation from unknown sources", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.appsallowinstallfromunknownsources_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.appsallowinstallfromunknownsources_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.appsautoupdatepolicy", + "displayName": "App auto-updates (work profile-level)", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.appsautoupdatepolicy_notconfigured", + "displayName": "Not configured", + "description": "Not configured; this value is ignored." + }, + { + "id": "com.android.devicerestrictionpolicy.appsautoupdatepolicy_userchoice", + "displayName": "User choice", + "description": "The user can control auto-updates." + }, + { + "id": "com.android.devicerestrictionpolicy.appsautoupdatepolicy_never", + "displayName": "Never", + "description": "Apps are never auto-updated." + }, + { + "id": "com.android.devicerestrictionpolicy.appsautoupdatepolicy_wifionly", + "displayName": "Wi-Fi only", + "description": "Apps are auto-updated over Wi-Fi only." + }, + { + "id": "com.android.devicerestrictionpolicy.appsautoupdatepolicy_always", + "displayName": "Always", + "description": "Apps are auto-updated at any time. Data charges may apply." + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.appsblockinstallfromunknownsourcesaosp", + "displayName": "Block user from turning on unknown sources", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.appsblockinstallfromunknownsourcesaosp_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.appsblockinstallfromunknownsourcesaosp_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.appsdefaultpermissionpolicy", + "displayName": "Default permission policy (work profile-level)", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.appsdefaultpermissionpolicy_devicedefault", + "displayName": "Device default", + "description": "Device default value, no intent." + }, + { + "id": "com.android.devicerestrictionpolicy.appsdefaultpermissionpolicy_prompt", + "displayName": "Prompt", + "description": "Prompt." + }, + { + "id": "com.android.devicerestrictionpolicy.appsdefaultpermissionpolicy_autogrant", + "displayName": "Auto grant", + "description": "Auto grant." + }, + { + "id": "com.android.devicerestrictionpolicy.appsdefaultpermissionpolicy_autodeny", + "displayName": "Auto deny", + "description": "Auto deny." + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.appsrecommendskippingfirstusehints", + "displayName": "Skip first use hints", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.appsrecommendskippingfirstusehints_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.appsrecommendskippingfirstusehints_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.assistcontentpolicy", + "displayName": "Block assist content sharing with privileged apps", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.assistcontentpolicy_false", + "displayName": "False", + "description": "Assist content is allowed to be sent to a privileged app." + }, + { + "id": "com.android.devicerestrictionpolicy.assistcontentpolicy_true", + "displayName": "True", + "description": "Assist content is blocked from being sent to a privileged app." + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.bluetoothblockconfiguration", + "displayName": "Block Bluetooth configuration", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.bluetoothblockconfiguration_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.bluetoothblockconfiguration_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.bluetoothblockconfigurationaosp", + "displayName": "Block Bluetooth configuration", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.bluetoothblockconfigurationaosp_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.bluetoothblockconfigurationaosp_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.bluetoothblockcontactsharing", + "displayName": "Block contact sharing via Bluetooth (work profile-level)", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.bluetoothblockcontactsharing_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.bluetoothblockcontactsharing_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.bluetoothblocked", + "displayName": "Block Bluetooth", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.bluetoothblocked_true", + "displayName": "True", + "description": "True" + }, + { + "id": "com.android.devicerestrictionpolicy.bluetoothblocked_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.bluetoothblockedaosp", + "displayName": "Block Bluetooth", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.bluetoothblockedaosp_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.bluetoothblockedaosp_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.camerablocked", + "displayName": "Block access to camera (work profile-level)", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.camerablocked_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.camerablocked_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.camerablockedaosp", + "displayName": "Block access to camera", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.camerablockedaosp_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.camerablockedaosp_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.cellularblockwifitethering", + "displayName": "Block tethering and access to hotspots", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.cellularblockwifitethering_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.cellularblockwifitethering_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.certificatecredentialconfigurationdisabled", + "displayName": "Block users from configuring credentials (work profile-level)", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.certificatecredentialconfigurationdisabled_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.certificatecredentialconfigurationdisabled_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.crossprofilepoliciesallowcopypaste", + "displayName": "Allow copy and paste between work and personal profilesย ", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.crossprofilepoliciesallowcopypaste_false", + "displayName": "False", + "description": "false" + }, + { + "id": "com.android.devicerestrictionpolicy.crossprofilepoliciesallowcopypaste_true", + "displayName": "True", + "description": "true" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.crossprofilepoliciesallowdatasharing", + "displayName": "Data sharing between work and personal profile", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.crossprofilepoliciesallowdatasharing_notconfigured", + "displayName": "Device default", + "description": "Not configured; this value defaults to CROSS_PROFILE_DATA_SHARING_UNSPECIFIED." + }, + { + "id": "com.android.devicerestrictionpolicy.crossprofilepoliciesallowdatasharing_crossprofiledatasharingblocked", + "displayName": "Block all sharing between profiles", + "description": "Data cannot be shared from both the personal profile to work profile and the work profile to the personal profile." + }, + { + "id": "com.android.devicerestrictionpolicy.crossprofilepoliciesallowdatasharing_datasharingfromworktopersonalblocked", + "displayName": "Block sharing from work to personal profile", + "description": "Prevents users from sharing data from the work profile to apps in the personal profile. Personal data can be shared with work apps." + }, + { + "id": "com.android.devicerestrictionpolicy.crossprofilepoliciesallowdatasharing_crossprofiledatasharingallowed", + "displayName": "No restrictions on sharing", + "description": "Data from either profile can be shared with the other profile." + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.crossprofilepoliciesshowworkcontactsinpersonalprofile", + "displayName": "Block searching of work contacts and displaying work contact caller-id in personal profile", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.crossprofilepoliciesshowworkcontactsinpersonalprofile_false", + "displayName": "False", + "description": "false" + }, + { + "id": "com.android.devicerestrictionpolicy.crossprofilepoliciesshowworkcontactsinpersonalprofile_true", + "displayName": "True", + "description": "true" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.dataroamingblocked", + "displayName": "Block roaming data services", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.dataroamingblocked_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.dataroamingblocked_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.datetimeconfigurationblocked", + "displayName": "Block date and time changes", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.datetimeconfigurationblocked_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.datetimeconfigurationblocked_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.enterprisedisplaynamevisibility", + "displayName": "Hide organization name", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.enterprisedisplaynamevisibility_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.enterprisedisplaynamevisibility_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.factoryresetblocked", + "displayName": "Block factory reset", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.factoryresetblocked_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.factoryresetblocked_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.factoryresetblockedaosp", + "displayName": "Block factory reset", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.factoryresetblockedaosp_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.factoryresetblockedaosp_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.locationmode", + "displayName": "Block location", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.locationmode_notconfigured", + "displayName": "False", + "description": "No restrictions on the location setting and no specific behavior is set or enforced. This is the default." + }, + { + "id": "com.android.devicerestrictionpolicy.locationmode_disabled", + "displayName": "True", + "description": "Location setting is disabled on the device." + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.microphoneforcemute", + "displayName": "Block microphone adjustment", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.microphoneforcemute_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.microphoneforcemute_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.networkescapehatchallowed", + "displayName": "Allow network escape hatch", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.networkescapehatchallowed_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.networkescapehatchallowed_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.nfcblockoutgoingbeam", + "displayName": "Block beaming data from apps using NFC (work profile-level)", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.nfcblockoutgoingbeam_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.nfcblockoutgoingbeam_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.passwordblockkeyguard", + "displayName": "Disable lock screen", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.passwordblockkeyguard_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.passwordblockkeyguard_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.passwordexpirationdays", + "displayName": "Number of days until password expires", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.passwordminimumlength", + "displayName": "Minimum password length", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.passwordminimumlengthaosp", + "displayName": "Minimum password length", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.passwordminimumlettercharacters", + "displayName": "Number of characters required", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.passwordminimumlowercasecharacters", + "displayName": "Number of lowercase characters required", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.passwordminimumnonlettercharacters", + "displayName": "Number of non-letter characters required", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.passwordminimumnumericcharacters", + "displayName": "Number of numeric characters required", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.passwordminimumsymbolcharacters", + "displayName": "Number of symbol characters required", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.passwordminimumuppercasecharacters", + "displayName": "Number of uppercase characters required", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.passwordminutesofinactivitybeforescreentimeoutaosp", + "displayName": "Maximum minutes of inactivity until screen locks", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.passwordminutesofinactivitybeforescreentimeoutaosp_1minute", + "displayName": "1 Minute", + "description": "Screen Timeout after 1 Minute of Inactivity" + }, + { + "id": "com.android.devicerestrictionpolicy.passwordminutesofinactivitybeforescreentimeoutaosp_5minutes", + "displayName": "5 Minutes", + "description": "Screen Timeout after 5 Minutes of Inactivity" + }, + { + "id": "com.android.devicerestrictionpolicy.passwordminutesofinactivitybeforescreentimeoutaosp_15minutes", + "displayName": "15 Minutes", + "description": "Screen Timeout after 15 Minutes of Inactivity" + }, + { + "id": "com.android.devicerestrictionpolicy.passwordminutesofinactivitybeforescreentimeoutaosp_30minutes", + "displayName": "30 Minutes", + "description": "Screen Timeout after 30 Minutes of Inactivity" + }, + { + "id": "com.android.devicerestrictionpolicy.passwordminutesofinactivitybeforescreentimeoutaosp_1hour", + "displayName": "1 Hour", + "description": "Screen Timeout after 1 Hour of Inactivity" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.passwordpreviouspasswordcounttoblock", + "displayName": "Number of passwords required before user can reuse a password", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtype", + "displayName": "Required password type", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtype_devicedefault", + "displayName": "Device default", + "description": "Device default value, no intent." + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtype_required", + "displayName": "Password required, no restrictions", + "description": "There must be a password set, but there are no restrictions on type." + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtype_lowsecuritybiometric", + "displayName": "Weak Biometric", + "description": "Low security biometrics based password required." + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtype_numeric", + "displayName": "Numeric", + "description": "At least numeric." + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtype_numericcomplex", + "displayName": "Numeric Complex", + "description": "At least numeric with no repeating or ordered sequences." + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtype_alphabetic", + "displayName": "Alphabetic", + "description": "At least alphabetic password." + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtype_alphanumeric", + "displayName": "Alphanumeric", + "description": "At least alphanumeric password" + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtype_alphanumericwithsymbols", + "displayName": "Alphanumeric with symbols", + "description": "At least alphanumeric with symbols." + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtypeaosp", + "displayName": "Required password type", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtypeaosp_devicedefault", + "displayName": "Device default", + "description": "Device default value, no intent." + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtypeaosp_required", + "displayName": "Password required, no restrictions", + "description": "There must be a password set, but there are no restrictions on type." + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtypeaosp_lowsecuritybiometric", + "displayName": "Weak Biometric", + "description": "Low security biometrics based password required." + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtypeaosp_numeric", + "displayName": "Numeric", + "description": "At least numeric." + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtypeaosp_numericcomplex", + "displayName": "Numeric Complex", + "description": "At least numeric with no repeating or ordered sequences." + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtypeaosp_alphabetic", + "displayName": "Alphabetic", + "description": "At least alphabetic password." + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtypeaosp_alphanumeric", + "displayName": "Alphanumeric", + "description": "At least alphanumeric password" + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequiredtypeaosp_alphanumericwithsymbols", + "displayName": "Alphanumeric with symbols", + "description": "At least alphanumeric with symbols." + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequireunlock", + "displayName": "Required unlock frequency", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.passwordrequireunlock_devicedefault", + "displayName": "Device default", + "description": null + }, + { + "id": "com.android.devicerestrictionpolicy.passwordrequireunlock_requiredpasswordunlockdailyoption", + "displayName": "24 hours since last PIN, password, or pattern unlock", + "description": null + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.passwordsigninfailurecountbeforefactoryreset", + "displayName": "Number of sign-in failures before wiping device", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.passwordsigninfailurecountbeforefactoryresetaosp", + "displayName": "Number of sign-in failures before wiping device", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.personalprofileappsallowinstallfromunknownsources", + "displayName": "Allow users to enable app installation from unknown sources in the personal profile", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.personalprofileappsallowinstallfromunknownsources_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.personalprofileappsallowinstallfromunknownsources_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.personalprofilecamerablocked", + "displayName": "Block camera", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.personalprofilecamerablocked_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.personalprofilecamerablocked_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.personalprofilescreencaptureblocked", + "displayName": "Block screen capture", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.personalprofilescreencaptureblocked_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.personalprofilescreencaptureblocked_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.privatespacepolicy", + "displayName": "Block private space", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.privatespacepolicy_allowed", + "displayName": "False", + "description": "Users can create a private space profile." + }, + { + "id": "com.android.devicerestrictionpolicy.privatespacepolicy_disallowed", + "displayName": "True", + "description": "Users cannot create a private space profile. Supported only for company-owned devices with a work profile. Caution: Any existing private space will be removed." + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.screencaptureblocked", + "displayName": "Block screen capture", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.screencaptureblocked_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.screencaptureblocked_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.screencaptureblockedaosp", + "displayName": "Block screen capture", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.screencaptureblockedaosp_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.screencaptureblockedaosp_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.securityallowdebuggingfeaturesaosp", + "displayName": "Allow users to turn on debugging features", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.securityallowdebuggingfeaturesaosp_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.securityallowdebuggingfeaturesaosp_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.securitycommoncriteriamodeenabled", + "displayName": "Require Common Criteria modeโ€‹", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.securitycommoncriteriamodeenabled_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.securitycommoncriteriamodeenabled_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.securitydevelopersettingsenabled", + "displayName": "Allow access to developer settings", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.securitydevelopersettingsenabled_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.securitydevelopersettingsenabled_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.securityrequireverifyapps", + "displayName": "Require threat scan on apps", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.securityrequireverifyapps_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.securityrequireverifyapps_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.statusbarblocked", + "displayName": "Block access to status bar", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.statusbarblocked_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.statusbarblocked_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.storageallowusb", + "displayName": "Allow USB storage", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.storageallowusb_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.storageallowusb_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.storageblockexternalmedia", + "displayName": "Block mounting of external media", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.storageblockexternalmedia_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.storageblockexternalmedia_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.storageblockexternalmediaaosp", + "displayName": "Block mounting of external media", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.storageblockexternalmediaaosp_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.storageblockexternalmediaaosp_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.storageblockusbfiletransferaosp", + "displayName": "Block USB file transfer", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.storageblockusbfiletransferaosp_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.storageblockusbfiletransferaosp_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.systemwindowsblocked", + "displayName": "Block notification windows", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.systemwindowsblocked_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.systemwindowsblocked_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.usbdataaccess", + "displayName": "USB access", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.usbdataaccess_allowusbdatatransfer", + "displayName": "Allow USB data transfer", + "description": "All types of USB data transfers are allowed. usbFileTransferDisabled is ignored." + }, + { + "id": "com.android.devicerestrictionpolicy.usbdataaccess_disallowusbfiletransfer", + "displayName": "Disallow USB file transfer", + "description": "Transferring files over USB is disallowed. Other types of USB data connections, such as mouse and keyboard connection, are allowed. usbFileTransferDisabled is ignored." + }, + { + "id": "com.android.devicerestrictionpolicy.usbdataaccess_disallowusbdatatransfer", + "displayName": "Disallow USB data transfer", + "description": "When set, all types of USB data transfers are prohibited. Supported for devices running Android 12 or above with USB HAL 1.3 or above. If the setting is not supported, DISALLOW_USB_FILE_TRANSFER will be set. A NonComplianceDetail with API_LEVEL is reported if the Android version is less than 12. A NonComplianceDetail with DEVICE_INCOMPATIBLE is reported if the device does not have USB HAL 1.3 or above. usbFileTransferDisabled is ignored." + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.volumeblockadjustment", + "displayName": "Block volume changes", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.volumeblockadjustment_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.volumeblockadjustment_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.wifiblockeditconfigurations", + "displayName": "Block Wi-Fi access point configuration", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.wifiblockeditconfigurations_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.wifiblockeditconfigurations_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.wifiblockeditconfigurationsaosp", + "displayName": "Block Wi-Fi setting changes", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.wifiblockeditconfigurationsaosp_false", + "displayName": "False", + "description": "False" + }, + { + "id": "com.android.devicerestrictionpolicy.wifiblockeditconfigurationsaosp_true", + "displayName": "True", + "description": "True" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.wifiblockeditpolicydefinedconfigurations", + "displayName": "Block Wi-Fi setting changes", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.wifiblockeditpolicydefinedconfigurations_true", + "displayName": "True", + "description": "true" + }, + { + "id": "com.android.devicerestrictionpolicy.wifiblockeditpolicydefinedconfigurations_false", + "displayName": "False", + "description": "false" + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.wifidirectsettings", + "displayName": "Block Wi-Fi Direct", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.wifidirectsettings_allowed", + "displayName": "False", + "description": "The user is allowed to use Wi-Fi direct." + }, + { + "id": "com.android.devicerestrictionpolicy.wifidirectsettings_disallowed", + "displayName": "True", + "description": "The user is not allowed to use Wi-Fi direct. A NonComplianceDetail with API_LEVEL is reported if the Android version is less than 13." + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordexpirationdays", + "displayName": "Number of days until password expires", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordminimumlength", + "displayName": "Minimum password length", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordminimumlettercharacters", + "displayName": "Number of characters required", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordminimumlowercasecharacters", + "displayName": "Number of lowercase characters required", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordminimumnonlettercharacters", + "displayName": "Number of non-letter characters required", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordminimumnumericcharacters", + "displayName": "Number of numeric characters required", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordminimumsymbolcharacters", + "displayName": "Number of symbol characters required", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordminimumuppercasecharacters", + "displayName": "Number of uppercase characters required", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordpreviouspasswordcounttoblock", + "displayName": "Number of passwords required before user can reuse a password", + "options": null + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordrequiredtype", + "displayName": "Required password type", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordrequiredtype_devicedefault", + "displayName": "Device default", + "description": "Device default value, no intent." + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordrequiredtype_required", + "displayName": "Password required, no restrictions", + "description": "There must be a password set, but there are no restrictions on type." + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordrequiredtype_lowsecuritybiometric", + "displayName": "Weak Biometric", + "description": "Low security biometrics based password required." + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordrequiredtype_numeric", + "displayName": "Numeric", + "description": "At least numeric." + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordrequiredtype_numericcomplex", + "displayName": "Numeric Complex", + "description": "At least numeric with no repeating or ordered sequences." + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordrequiredtype_alphabetic", + "displayName": "Alphabetic", + "description": "At least alphabetic password." + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordrequiredtype_alphanumeric", + "displayName": "Alphanumeric", + "description": "At least alphanumeric password" + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordrequiredtype_alphanumericwithsymbols", + "displayName": "Alphanumeric with symbols", + "description": "At least alphanumeric with symbols." + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordrequireunlock", + "displayName": "Required unlock frequency", + "options": [ + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordrequireunlock_devicedefault", + "displayName": "Device default", + "description": null + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordrequireunlock_requiredpasswordunlockdailyoption", + "displayName": "24 hours since last PIN, password, or pattern unlock", + "description": null + } + ] + }, + { + "id": "com.android.devicerestrictionpolicy.workprofilepasswordsigninfailurecountbeforefactoryreset", + "displayName": "Number of sign-in failures before wiping device", + "options": null + }, { "id": "com.apple.airplay_allowlist", "displayName": "Allow List", @@ -742,7 +2005,12 @@ }, { "id": "com.apple.airplay_allowlist_item_deviceid", - "displayName": "Device ID", + "displayName": "Device ID (Deprecated)", + "options": null + }, + { + "id": "com.apple.airplay_allowlist_item_devicename", + "displayName": "Device Name", "options": null }, { @@ -811,7 +2079,11 @@ "displayName": "Top Level Setting Group Collection", "options": null }, - { "id": "com.apple.app.lock_app", "displayName": "App", "options": null }, + { + "id": "com.apple.app.lock_app", + "displayName": "App", + "options": null + }, { "id": "com.apple.app.lock_app_identifier", "displayName": "App Identifier", @@ -1120,27 +2392,6 @@ "displayName": "Top Level Setting Group Collection", "options": null }, - { - "id": "com.apple.applicationaccess.new_com.apple.applicationaccess.new", - "displayName": "Top Level Setting Group Collection", - "options": null - }, - { - "id": "com.apple.applicationaccess.new_familycontrolsenabled", - "displayName": "Family Controls Enabled", - "options": [ - { - "id": "com.apple.applicationaccess.new_familycontrolsenabled_false", - "displayName": "False", - "description": null - }, - { - "id": "com.apple.applicationaccess.new_familycontrolsenabled_true", - "displayName": "True", - "description": null - } - ] - }, { "id": "com.apple.applicationaccess_allowaccountmodification", "displayName": "Allow Account Modification", @@ -1211,12 +2462,12 @@ "options": [ { "id": "com.apple.applicationaccess_allowairplayincomingrequests_false", - "displayName": "Disabled", + "displayName": "False", "description": null }, { "id": "com.apple.applicationaccess_allowairplayincomingrequests_true", - "displayName": "Enabled", + "displayName": "True", "description": null } ] @@ -1317,6 +2568,22 @@ } ] }, + { + "id": "com.apple.applicationaccess_allowappleintelligencereport", + "displayName": "Allow Apple Intelligence Report", + "options": [ + { + "id": "com.apple.applicationaccess_allowappleintelligencereport_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.applicationaccess_allowappleintelligencereport_true", + "displayName": "True", + "description": null + } + ] + }, { "id": "com.apple.applicationaccess_allowapplepersonalizedadvertising", "displayName": "Allow Apple Personalized Advertising", @@ -1893,6 +3160,38 @@ } ] }, + { + "id": "com.apple.applicationaccess_allowdefaultcallingappmodification", + "displayName": "Allow Default Calling App Modification", + "options": [ + { + "id": "com.apple.applicationaccess_allowdefaultcallingappmodification_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.applicationaccess_allowdefaultcallingappmodification_true", + "displayName": "True", + "description": null + } + ] + }, + { + "id": "com.apple.applicationaccess_allowdefaultmessagingappmodification", + "displayName": "Allow Default Messaging App Modification", + "options": [ + { + "id": "com.apple.applicationaccess_allowdefaultmessagingappmodification_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.applicationaccess_allowdefaultmessagingappmodification_true", + "displayName": "True", + "description": null + } + ] + }, { "id": "com.apple.applicationaccess_allowdefinitionlookup", "displayName": "Allow Definition Lookup", @@ -1973,6 +3272,16 @@ } ] }, + { + "id": "com.apple.applicationaccess_allowedcamerarestrictionbundleids", + "displayName": "Allowed Camera Restriction Bundle IDs", + "options": null + }, + { + "id": "com.apple.applicationaccess_allowedexternalintelligenceworkspaceids", + "displayName": "Allowed External Intelligence Workspace IDs", + "options": null + }, { "id": "com.apple.applicationaccess_allowenablingrestrictions", "displayName": "Allow Enabling Restrictions", @@ -2071,16 +3380,16 @@ }, { "id": "com.apple.applicationaccess_allowesimoutgoingtransfers", - "displayName": "allow ESIM Outgoing Transfers", + "displayName": "Allow ESIM Outgoing Transfers", "options": [ { "id": "com.apple.applicationaccess_allowesimoutgoingtransfers_false", - "displayName": "Disabled", + "displayName": "False", "description": null }, { "id": "com.apple.applicationaccess_allowesimoutgoingtransfers_true", - "displayName": "Enabled", + "displayName": "True", "description": null } ] @@ -2279,7 +3588,7 @@ }, { "id": "com.apple.applicationaccess_allowgenmoji", - "displayName": "allow Genmoji", + "displayName": "Allow Genmoji", "options": [ { "id": "com.apple.applicationaccess_allowgenmoji_false", @@ -2570,6 +3879,22 @@ } ] }, + { + "id": "com.apple.applicationaccess_allowmailsmartreplies", + "displayName": "Allow Mail Smart Replies", + "options": [ + { + "id": "com.apple.applicationaccess_allowmailsmartreplies_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.applicationaccess_allowmailsmartreplies_true", + "displayName": "True", + "description": null + } + ] + }, { "id": "com.apple.applicationaccess_allowmailsummary", "displayName": "Allow Mail Summary", @@ -2620,16 +3945,16 @@ }, { "id": "com.apple.applicationaccess_allowmarketplaceappinstallation", - "displayName": "allow Marketplace App Installation", + "displayName": "Allow Marketplace App Installation", "options": [ { "id": "com.apple.applicationaccess_allowmarketplaceappinstallation_false", - "displayName": "Disabled", + "displayName": "False", "description": null }, { "id": "com.apple.applicationaccess_allowmarketplaceappinstallation_true", - "displayName": "Enabled", + "displayName": "True", "description": null } ] @@ -2714,6 +4039,38 @@ } ] }, + { + "id": "com.apple.applicationaccess_allownotestranscription", + "displayName": "Allow Notes Transcription", + "options": [ + { + "id": "com.apple.applicationaccess_allownotestranscription_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.applicationaccess_allownotestranscription_true", + "displayName": "True", + "description": null + } + ] + }, + { + "id": "com.apple.applicationaccess_allownotestranscriptionsummary", + "displayName": "Allow Notes Transcription Summary", + "options": [ + { + "id": "com.apple.applicationaccess_allownotestranscriptionsummary_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.applicationaccess_allownotestranscriptionsummary_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.applicationaccess_allownotificationsmodification", "displayName": "Allow Notifications Modification", @@ -3004,7 +4361,7 @@ }, { "id": "com.apple.applicationaccess_allowrapidsecurityresponseinstallation", - "displayName": "Allow Rapid Security Response Installation", + "displayName": "Allow Background Security Improvement Installation (Deprecated)", "options": [ { "id": "com.apple.applicationaccess_allowrapidsecurityresponseinstallation_false", @@ -3020,7 +4377,7 @@ }, { "id": "com.apple.applicationaccess_allowrapidsecurityresponseremoval", - "displayName": "Allow Rapid Security Response Removal", + "displayName": "Allow Background Security Improvement Removal (Deprecated)", "options": [ { "id": "com.apple.applicationaccess_allowrapidsecurityresponseremoval_false", @@ -3098,6 +4455,70 @@ } ] }, + { + "id": "com.apple.applicationaccess_allowsafarihistoryclearing", + "displayName": "Allow Safari History Clearing", + "options": [ + { + "id": "com.apple.applicationaccess_allowsafarihistoryclearing_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.applicationaccess_allowsafarihistoryclearing_true", + "displayName": "True", + "description": null + } + ] + }, + { + "id": "com.apple.applicationaccess_allowsafariprivatebrowsing", + "displayName": "Allow Safari Private Browsing", + "options": [ + { + "id": "com.apple.applicationaccess_allowsafariprivatebrowsing_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.applicationaccess_allowsafariprivatebrowsing_true", + "displayName": "True", + "description": null + } + ] + }, + { + "id": "com.apple.applicationaccess_allowsafarisummary", + "displayName": "Allow Safari Summary", + "options": [ + { + "id": "com.apple.applicationaccess_allowsafarisummary_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.applicationaccess_allowsafarisummary_true", + "displayName": "True", + "description": null + } + ] + }, + { + "id": "com.apple.applicationaccess_allowsatelliteconnection", + "displayName": "Allow Satellite Connection", + "options": [ + { + "id": "com.apple.applicationaccess_allowsatelliteconnection_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.applicationaccess_allowsatelliteconnection_true", + "displayName": "True", + "description": null + } + ] + }, { "id": "com.apple.applicationaccess_allowscreenshot", "displayName": "Allow Screen Shot", @@ -3370,6 +4791,22 @@ } ] }, + { + "id": "com.apple.applicationaccess_allowvisualintelligencesummary", + "displayName": "Allow Visual Intelligence Summary", + "options": [ + { + "id": "com.apple.applicationaccess_allowvisualintelligencesummary_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.applicationaccess_allowvisualintelligencesummary_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.applicationaccess_allowvoicedialing", "displayName": "Allow Voice Dialing (Deprecated)", @@ -3420,16 +4857,16 @@ }, { "id": "com.apple.applicationaccess_allowwebdistributionappinstallation", - "displayName": "allow Web Distribution App Installation", + "displayName": "Allow Web Distribution App Installation", "options": [ { "id": "com.apple.applicationaccess_allowwebdistributionappinstallation_false", - "displayName": "Disabled", + "displayName": "False", "description": null }, { "id": "com.apple.applicationaccess_allowwebdistributionappinstallation_true", - "displayName": "Enabled", + "displayName": "True", "description": null } ] @@ -3465,6 +4902,16 @@ "displayName": "Top Level Setting Group Collection", "options": null }, + { + "id": "com.apple.applicationaccess_deniediccidsforimessagefacetime", + "displayName": "Denied ICCIDs For iMessage And FaceTime", + "options": null + }, + { + "id": "com.apple.applicationaccess_deniediccidsforrcs", + "displayName": "Denied ICCIDs For RCS", + "options": null + }, { "id": "com.apple.applicationaccess_enforcedfingerprinttimeout", "displayName": "Enforced Fingerprint Timeout", @@ -3472,22 +4919,22 @@ }, { "id": "com.apple.applicationaccess_enforcedsoftwareupdatedelay", - "displayName": "Enforced Software Update Delay", + "displayName": "Enforced Software Update Delay (Deprecated)", "options": null }, { "id": "com.apple.applicationaccess_enforcedsoftwareupdatemajorosdeferredinstalldelay", - "displayName": "Enforced Software Update Major OS Deferred Install Delay", + "displayName": "Enforced Software Update Major OS Deferred Install Delay (Deprecated)", "options": null }, { "id": "com.apple.applicationaccess_enforcedsoftwareupdateminorosdeferredinstalldelay", - "displayName": "Enforced Software Update Minor OS Deferred Install Delay", + "displayName": "Enforced Software Update Minor OS Deferred Install Delay (Deprecated)", "options": null }, { "id": "com.apple.applicationaccess_enforcedsoftwareupdatenonosdeferredinstalldelay", - "displayName": "Enforced Software Update Non OS Deferred Install Delay", + "displayName": "Enforced Software Update Non OS Deferred Install Delay (Deprecated)", "options": null }, { @@ -3668,7 +5115,7 @@ }, { "id": "com.apple.applicationaccess_forcedelayedappsoftwareupdates", - "displayName": "Force Delayed App Software Updates", + "displayName": "Force Delayed App Software Updates (Deprecated)", "options": [ { "id": "com.apple.applicationaccess_forcedelayedappsoftwareupdates_false", @@ -3684,7 +5131,7 @@ }, { "id": "com.apple.applicationaccess_forcedelayedmajorsoftwareupdates", - "displayName": "Force Delayed Major Software Updates", + "displayName": "Force Delayed Major Software Updates (Deprecated)", "options": [ { "id": "com.apple.applicationaccess_forcedelayedmajorsoftwareupdates_false", @@ -3700,7 +5147,7 @@ }, { "id": "com.apple.applicationaccess_forcedelayedsoftwareupdates", - "displayName": "Force Delayed Software Updates", + "displayName": "Force Delayed Software Updates (Deprecated)", "options": [ { "id": "com.apple.applicationaccess_forcedelayedsoftwareupdates_false", @@ -3869,26 +5316,111 @@ }, { "id": "com.apple.applicationaccess_ratingappsau_1", - "displayName": "4+", + "displayName": "1+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsau_2", - "displayName": "9+", + "displayName": "2+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsau_3", - "displayName": "12+", + "displayName": "3+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsau_4", - "displayName": "17+", + "displayName": "4+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsau_5", + "displayName": "5+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsau_6", + "displayName": "6+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsau_7", + "displayName": "7+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsau_8", + "displayName": "8+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsau_9", + "displayName": "9+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsau_10", + "displayName": "10+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsau_11", + "displayName": "11+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsau_12", + "displayName": "12+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsau_13", + "displayName": "13+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsau_14", + "displayName": "14+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsau_15", + "displayName": "15+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsau_16", + "displayName": "16+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsau_17", + "displayName": "17+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsau_18", + "displayName": "18+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsau_19", + "displayName": "19+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsau_20", + "displayName": "20+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsau_21", + "displayName": "21+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsau_22", "displayName": "All", "description": null } @@ -3905,26 +5437,111 @@ }, { "id": "com.apple.applicationaccess_ratingappsca_1", - "displayName": "4+", + "displayName": "1+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsca_2", - "displayName": "9+", + "displayName": "2+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsca_3", - "displayName": "12+", + "displayName": "3+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsca_4", - "displayName": "17+", + "displayName": "4+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsca_5", + "displayName": "5+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsca_6", + "displayName": "6+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsca_7", + "displayName": "7+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsca_8", + "displayName": "8+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsca_9", + "displayName": "9+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsca_10", + "displayName": "10+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsca_11", + "displayName": "11+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsca_12", + "displayName": "12+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsca_13", + "displayName": "13+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsca_14", + "displayName": "14+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsca_15", + "displayName": "15+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsca_16", + "displayName": "16+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsca_17", + "displayName": "17+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsca_18", + "displayName": "18+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsca_19", + "displayName": "19+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsca_20", + "displayName": "20+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsca_21", + "displayName": "21+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsca_22", "displayName": "All", "description": null } @@ -3941,31 +5558,121 @@ }, { "id": "com.apple.applicationaccess_ratingappsde_1", - "displayName": "4+", + "displayName": "1+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsde_2", - "displayName": "9+", + "displayName": "2+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsde_3", - "displayName": "12+", + "displayName": "3+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsde_4", - "displayName": "17+", + "displayName": "4+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsde_5", + "displayName": "5+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsde_6", + "displayName": "6+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsde_7", + "displayName": "7+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsde_8", + "displayName": "8+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsde_9", + "displayName": "9+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsde_10", + "displayName": "10+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsde_11", + "displayName": "11+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsde_12", + "displayName": "12+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsde_13", + "displayName": "13+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsde_14", + "displayName": "14+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsde_15", + "displayName": "15+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsde_16", + "displayName": "16+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsde_17", + "displayName": "17+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsde_18", + "displayName": "18+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsde_19", + "displayName": "19+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsde_20", + "displayName": "20+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsde_21", + "displayName": "21+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsde_22", "displayName": "All", "description": null } ] }, + { + "id": "com.apple.applicationaccess_ratingappsexemptedbundleids", + "displayName": "Rating Apps Exempted Bundle IDs", + "options": null + }, { "id": "com.apple.applicationaccess_ratingappsfr", "displayName": "Rating Apps - France", @@ -3977,26 +5684,111 @@ }, { "id": "com.apple.applicationaccess_ratingappsfr_1", - "displayName": "4+", + "displayName": "1+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsfr_2", - "displayName": "9+", + "displayName": "2+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsfr_3", - "displayName": "12+", + "displayName": "3+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsfr_4", - "displayName": "17+", + "displayName": "4+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsfr_5", + "displayName": "5+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsfr_6", + "displayName": "6+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsfr_7", + "displayName": "7+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsfr_8", + "displayName": "8+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsfr_9", + "displayName": "9+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsfr_10", + "displayName": "10+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsfr_11", + "displayName": "11+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsfr_12", + "displayName": "12+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsfr_13", + "displayName": "13+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsfr_14", + "displayName": "14+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsfr_15", + "displayName": "15+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsfr_16", + "displayName": "16+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsfr_17", + "displayName": "17+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsfr_18", + "displayName": "18+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsfr_19", + "displayName": "19+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsfr_20", + "displayName": "20+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsfr_21", + "displayName": "21+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsfr_22", "displayName": "All", "description": null } @@ -4013,26 +5805,111 @@ }, { "id": "com.apple.applicationaccess_ratingappsgb_1", - "displayName": "4+", + "displayName": "1+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsgb_2", - "displayName": "9+", + "displayName": "2+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsgb_3", - "displayName": "12+", + "displayName": "3+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsgb_4", - "displayName": "17+", + "displayName": "4+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsgb_5", + "displayName": "5+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsgb_6", + "displayName": "6+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsgb_7", + "displayName": "7+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsgb_8", + "displayName": "8+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsgb_9", + "displayName": "9+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsgb_10", + "displayName": "10+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsgb_11", + "displayName": "11+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsgb_12", + "displayName": "12+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsgb_13", + "displayName": "13+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsgb_14", + "displayName": "14+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsgb_15", + "displayName": "15+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsgb_16", + "displayName": "16+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsgb_17", + "displayName": "17+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsgb_18", + "displayName": "18+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsgb_19", + "displayName": "19+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsgb_20", + "displayName": "20+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsgb_21", + "displayName": "21+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsgb_22", "displayName": "All", "description": null } @@ -4049,26 +5926,111 @@ }, { "id": "com.apple.applicationaccess_ratingappsie_1", - "displayName": "4+", + "displayName": "1+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsie_2", - "displayName": "9+", + "displayName": "2+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsie_3", - "displayName": "12+", + "displayName": "3+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsie_4", - "displayName": "17+", + "displayName": "4+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsie_5", + "displayName": "5+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsie_6", + "displayName": "6+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsie_7", + "displayName": "7+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsie_8", + "displayName": "8+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsie_9", + "displayName": "9+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsie_10", + "displayName": "10+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsie_11", + "displayName": "11+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsie_12", + "displayName": "12+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsie_13", + "displayName": "13+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsie_14", + "displayName": "14+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsie_15", + "displayName": "15+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsie_16", + "displayName": "16+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsie_17", + "displayName": "17+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsie_18", + "displayName": "18+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsie_19", + "displayName": "19+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsie_20", + "displayName": "20+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsie_21", + "displayName": "21+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsie_22", "displayName": "All", "description": null } @@ -4085,26 +6047,111 @@ }, { "id": "com.apple.applicationaccess_ratingappsjp_1", - "displayName": "4+", + "displayName": "1+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsjp_2", - "displayName": "9+", + "displayName": "2+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsjp_3", - "displayName": "12+", + "displayName": "3+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsjp_4", - "displayName": "17+", + "displayName": "4+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsjp_5", + "displayName": "5+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsjp_6", + "displayName": "6+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsjp_7", + "displayName": "7+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsjp_8", + "displayName": "8+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsjp_9", + "displayName": "9+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsjp_10", + "displayName": "10+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsjp_11", + "displayName": "11+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsjp_12", + "displayName": "12+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsjp_13", + "displayName": "13+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsjp_14", + "displayName": "14+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsjp_15", + "displayName": "15+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsjp_16", + "displayName": "16+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsjp_17", + "displayName": "17+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsjp_18", + "displayName": "18+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsjp_19", + "displayName": "19+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsjp_20", + "displayName": "20+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsjp_21", + "displayName": "21+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsjp_22", "displayName": "All", "description": null } @@ -4121,26 +6168,111 @@ }, { "id": "com.apple.applicationaccess_ratingappsnz_1", - "displayName": "4+", + "displayName": "1+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsnz_2", - "displayName": "9+", + "displayName": "2+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsnz_3", - "displayName": "12+", + "displayName": "3+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsnz_4", - "displayName": "17+", + "displayName": "4+", "description": null }, { "id": "com.apple.applicationaccess_ratingappsnz_5", + "displayName": "5+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsnz_6", + "displayName": "6+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsnz_7", + "displayName": "7+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsnz_8", + "displayName": "8+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsnz_9", + "displayName": "9+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsnz_10", + "displayName": "10+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsnz_11", + "displayName": "11+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsnz_12", + "displayName": "12+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsnz_13", + "displayName": "13+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsnz_14", + "displayName": "14+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsnz_15", + "displayName": "15+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsnz_16", + "displayName": "16+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsnz_17", + "displayName": "17+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsnz_18", + "displayName": "18+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsnz_19", + "displayName": "19+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsnz_20", + "displayName": "20+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsnz_21", + "displayName": "21+", + "description": null + }, + { + "id": "com.apple.applicationaccess_ratingappsnz_22", "displayName": "All", "description": null } @@ -5067,6 +7199,27 @@ } ] }, + { + "id": "com.apple.applicationaccess.new_com.apple.applicationaccess.new", + "displayName": "Top Level Setting Group Collection", + "options": null + }, + { + "id": "com.apple.applicationaccess.new_familycontrolsenabled", + "displayName": "Family Controls Enabled", + "options": [ + { + "id": "com.apple.applicationaccess.new_familycontrolsenabled_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.applicationaccess.new_familycontrolsenabled_true", + "displayName": "True", + "description": null + } + ] + }, { "id": "com.apple.appstore_com.apple.appstore", "displayName": "Top Level Setting Group Collection", @@ -5090,7 +7243,7 @@ }, { "id": "com.apple.appstore_restrict-store-disable-app-adoption", - "displayName": "restrict-store-disable-app-adoption", + "displayName": "Restrict-store-disable-app-adoption", "options": [ { "id": "com.apple.appstore_restrict-store-disable-app-adoption_false", @@ -5666,7 +7819,11 @@ "displayName": "Top Level Setting Group Collection", "options": null }, - { "id": "com.apple.cellular_apns", "displayName": "APNs", "options": null }, + { + "id": "com.apple.cellular_apns", + "displayName": "APNs", + "options": null + }, { "id": "com.apple.cellular_apns_item_allowedprotocolmask", "displayName": "Allowed Protocol Mask", @@ -5849,6 +8006,88 @@ "displayName": "Top Level Setting Group Collection", "options": null }, + { + "id": "com.apple.cellularprivatenetwork.managed_cellulardatapreferred", + "displayName": "Cellular Data Preferred", + "options": [ + { + "id": "com.apple.cellularprivatenetwork.managed_cellulardatapreferred_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.cellularprivatenetwork.managed_cellulardatapreferred_true", + "displayName": "True", + "description": null + } + ] + }, + { + "id": "com.apple.cellularprivatenetwork.managed_com.apple.cellularprivatenetwork.managed", + "displayName": "com.apple.cellularprivatenetwork.managed", + "options": null + }, + { + "id": "com.apple.cellularprivatenetwork.managed_csgnetworkidentifier", + "displayName": "Csg Network Identifier", + "options": null + }, + { + "id": "com.apple.cellularprivatenetwork.managed_datasetname", + "displayName": "Data Set Name", + "options": null + }, + { + "id": "com.apple.cellularprivatenetwork.managed_enablenrstandalone", + "displayName": "Enable NR Standalone", + "options": [ + { + "id": "com.apple.cellularprivatenetwork.managed_enablenrstandalone_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.cellularprivatenetwork.managed_enablenrstandalone_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.cellularprivatenetwork.managed_geofences", + "displayName": "Geofences", + "options": null + }, + { + "id": "com.apple.cellularprivatenetwork.managed_geofences_item_geofenceid", + "displayName": "Geofence Id", + "options": null + }, + { + "id": "com.apple.cellularprivatenetwork.managed_geofences_item_latitude", + "displayName": "Latitude", + "options": null + }, + { + "id": "com.apple.cellularprivatenetwork.managed_geofences_item_longitude", + "displayName": "Longitude", + "options": null + }, + { + "id": "com.apple.cellularprivatenetwork.managed_geofences_item_radius", + "displayName": "Radius", + "options": null + }, + { + "id": "com.apple.cellularprivatenetwork.managed_networkidentifier", + "displayName": "Network Identifier", + "options": null + }, + { + "id": "com.apple.cellularprivatenetwork.managed_versionnumber", + "displayName": "Version Number", + "options": null + }, { "id": "com.apple.configurationprofile.identification_com.apple.configurationprofile.identification", "displayName": "Top Level Setting Group Collection", @@ -5856,7 +8095,7 @@ }, { "id": "com.apple.configurationprofile.identification_payloadidentification", - "displayName": "Payload Identification", + "displayName": "Payload Identification (Deprecated)", "options": null }, { @@ -6448,7 +8687,7 @@ }, { "id": "com.apple.dnssettings.managed_dnssettings_servername", - "displayName": "Server Name (Deprecated)", + "displayName": "Server Name", "options": null }, { @@ -7013,48 +9252,48 @@ ] }, { - "id": "com.apple.dock_showindicators-immutable", - "displayName": "Show Indicators Immutable", + "id": "com.apple.dock_show-process-indicators", + "displayName": "Show Process Indicators", "options": [ { - "id": "com.apple.dock_showindicators-immutable_false", + "id": "com.apple.dock_show-process-indicators_false", "displayName": "False", "description": null }, { - "id": "com.apple.dock_showindicators-immutable_true", + "id": "com.apple.dock_show-process-indicators_true", "displayName": "True", "description": null } ] }, { - "id": "com.apple.dock_show-process-indicators", - "displayName": "Show Process Indicators", + "id": "com.apple.dock_show-recents", + "displayName": "Show Recents", "options": [ { - "id": "com.apple.dock_show-process-indicators_false", + "id": "com.apple.dock_show-recents_false", "displayName": "False", "description": null }, { - "id": "com.apple.dock_show-process-indicators_true", + "id": "com.apple.dock_show-recents_true", "displayName": "True", "description": null } ] }, { - "id": "com.apple.dock_show-recents", - "displayName": "Show Recents", + "id": "com.apple.dock_showindicators-immutable", + "displayName": "Show Indicators Immutable", "options": [ { - "id": "com.apple.dock_show-recents_false", + "id": "com.apple.dock_showindicators-immutable_false", "displayName": "False", "description": null }, { - "id": "com.apple.dock_show-recents_true", + "id": "com.apple.dock_showindicators-immutable_true", "displayName": "True", "description": null } @@ -7279,6 +9518,11 @@ "displayName": "Top Level Setting Group Collection", "options": null }, + { + "id": "com.apple.domains_crosssitetrackingpreventionrelaxedapps", + "displayName": "Cross Site Tracking Prevention Relaxed Apps", + "options": null + }, { "id": "com.apple.domains_crosssitetrackingpreventionrelaxeddomains", "displayName": "Cross Site Tracking Prevention Relaxed Domains", @@ -7353,7 +9597,7 @@ }, { "id": "com.apple.extensiblesso_extensiondata_allowpassword_kerberos", - "displayName": "allow Password", + "displayName": "Allow Password", "options": [ { "id": "com.apple.extensiblesso_extensiondata_allowpassword_kerberos_false", @@ -7383,9 +9627,25 @@ } ] }, + { + "id": "com.apple.extensiblesso_extensiondata_allowplatformssoauthfallback_kerberos", + "displayName": "Allow Platform SSO OAuth Fallback", + "options": [ + { + "id": "com.apple.extensiblesso_extensiondata_allowplatformssoauthfallback_kerberos_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.extensiblesso_extensiondata_allowplatformssoauthfallback_kerberos_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.extensiblesso_extensiondata_allowsmartcard_kerberos", - "displayName": "allow Smart Card", + "displayName": "Allow Smart Card", "options": [ { "id": "com.apple.extensiblesso_extensiondata_allowsmartcard_kerberos_false", @@ -7504,7 +9764,7 @@ }, { "id": "com.apple.extensiblesso_extensiondata_identityissuerautoselectfilter_kerberos", - "displayName": "identity Issuer Auto Select Filter", + "displayName": "Identity Issuer Auto Select Filter", "options": null }, { @@ -7687,7 +9947,7 @@ }, { "id": "com.apple.extensiblesso_extensiondata_startinsmartcardmode_kerberos", - "displayName": "start In Smart Card Mode", + "displayName": "Start In Smart Card Mode", "options": [ { "id": "com.apple.extensiblesso_extensiondata_startinsmartcardmode_kerberos_false", @@ -7717,6 +9977,22 @@ } ] }, + { + "id": "com.apple.extensiblesso_extensiondata_useplatformssotgt_kerberos", + "displayName": "Use Platform SSOTGT", + "options": [ + { + "id": "com.apple.extensiblesso_extensiondata_useplatformssotgt_kerberos_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.extensiblesso_extensiondata_useplatformssotgt_kerberos_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.extensiblesso_extensiondata_usesiteautodiscovery_kerberos", "displayName": "Use Site Auto Discovery", @@ -7807,6 +10083,22 @@ "displayName": "Administrator Groups", "options": null }, + { + "id": "com.apple.extensiblesso_platformsso_allowdeviceidentifiersinattestation", + "displayName": "Allow Device Identifiers In Attestation", + "options": [ + { + "id": "com.apple.extensiblesso_platformsso_allowdeviceidentifiersinattestation_false", + "displayName": "Blocked", + "description": null + }, + { + "id": "com.apple.extensiblesso_platformsso_allowdeviceidentifiersinattestation_true", + "displayName": "Allowed", + "description": null + } + ] + }, { "id": "com.apple.extensiblesso_platformsso_authenticationgraceperiod", "displayName": "Authentication Grace Period", @@ -7923,6 +10215,11 @@ "id": "com.apple.extensiblesso_platformsso_newuserauthorizationmode_2", "displayName": "Groups", "description": null + }, + { + "id": "com.apple.extensiblesso_platformsso_newuserauthorizationmode_3", + "displayName": "Temporary", + "description": null } ] }, @@ -8068,7 +10365,12 @@ }, { "id": "com.apple.familycontrols.contentfilter_filterblacklist", - "displayName": "Filter Blocklist", + "displayName": "Filter Blocklist (Deprecated)", + "options": null + }, + { + "id": "com.apple.familycontrols.contentfilter_filterdenylist", + "displayName": "Filter Denylist", "options": null }, { @@ -8394,6 +10696,27 @@ "displayName": "Top Level Setting Group Collection", "options": null }, + { + "id": "com.apple.fileproviderd_managementallowsknownfoldersyncing", + "displayName": "Management Allows Known Folder Syncing", + "options": [ + { + "id": "com.apple.fileproviderd_managementallowsknownfoldersyncing_false", + "displayName": "Blocked", + "description": null + }, + { + "id": "com.apple.fileproviderd_managementallowsknownfoldersyncing_true", + "displayName": "Allowed", + "description": null + } + ] + }, + { + "id": "com.apple.fileproviderd_managementknownfoldersyncingallowlist", + "displayName": "Management Known Folder Syncing Allow List", + "options": null + }, { "id": "com.apple.finder_com.apple.finder", "displayName": "Top Level Setting Group Collection", @@ -8548,8 +10871,16 @@ "displayName": "com.apple.font", "options": null }, - { "id": "com.apple.font_font", "displayName": "Font", "options": null }, - { "id": "com.apple.font_name", "displayName": "Name", "options": null }, + { + "id": "com.apple.font_font", + "displayName": "Font", + "options": null + }, + { + "id": "com.apple.font_name", + "displayName": "Name", + "options": null + }, { "id": "com.apple.gamed_com.apple.gamed", "displayName": "Top Level Setting Group Collection", @@ -8874,6 +11205,22 @@ } ] }, + { + "id": "com.apple.loginwindow_showinputmenu", + "displayName": "Show Input Menu", + "options": [ + { + "id": "com.apple.loginwindow_showinputmenu_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.loginwindow_showinputmenu_true", + "displayName": "True", + "description": null + } + ] + }, { "id": "com.apple.loginwindow_showotherusers_managed", "displayName": "Show Other Users Managed", @@ -8938,6 +11285,38 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_accesscontrolallowmethodsincorspreflightspecconformant", + "displayName": "Make Access-Control-Allow-Methods matching in CORS preflight spec conformant", + "options": [ + { + "id": "com.apple.managedclient.preferences_accesscontrolallowmethodsincorspreflightspecconformant_false", + "displayName": "Blocked", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_accesscontrolallowmethodsincorspreflightspecconformant_true", + "displayName": "Allowed", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_accessibilityimagelabelsenabled", + "displayName": "Let screen reader users get image descriptions from Microsoft", + "options": [ + { + "id": "com.apple.managedclient.preferences_accessibilityimagelabelsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_accessibilityimagelabelsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_acknowledgeddatacollectionpolicy", "displayName": "Automatically acknowledge data collection policy", @@ -8954,6 +11333,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_additionalsearchboxenabled", + "displayName": "Enable additional search box in browser", + "options": [ + { + "id": "com.apple.managedclient.preferences_additionalsearchboxenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_additionalsearchboxenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_addressbarmicrosoftsearchinbingproviderenabled", "displayName": "Enable Microsoft Search in Bing suggestions in the address bar", @@ -8986,6 +11381,59 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_adstransparencyenabled", + "displayName": "Configure if the ads transparency feature is enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_adstransparencyenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_adstransparencyenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_aigenthemesenabled", + "displayName": "Enables DALL-E themes generation", + "options": [ + { + "id": "com.apple.managedclient.preferences_aigenthemesenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_aigenthemesenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_allhttpauthschemesallowedfororigins", + "displayName": "List of origins that allow all HTTP authentication", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_allowbackforwardcacheforcachecontrolnostorepageenabled", + "displayName": "Allow pages with Cache-Control: no-store header to enter back/forward cache", + "options": [ + { + "id": "com.apple.managedclient.preferences_allowbackforwardcacheforcachecontrolnostorepageenabled_false", + "displayName": "Blocked", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_allowbackforwardcacheforcachecontrolnostorepageenabled_true", + "displayName": "Allowed", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_allowcertswithoutmatchingemailaddress", "displayName": "Allow S/MIME certificates without a matching email address", @@ -9034,6 +11482,11 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_alloweddomainsforapps", + "displayName": "Define domains allowed to access Google Workspace", + "options": null + }, { "id": "com.apple.managedclient.preferences_allowedemaildomains", "displayName": "Allowed Email Domains", @@ -9129,6 +11582,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_allowwebauthnwithbrokentlscerts", + "displayName": "Allow Web Authentication requests on sites with broken TLS certificates.", + "options": [ + { + "id": "com.apple.managedclient.preferences_allowwebauthnwithbrokentlscerts_false", + "displayName": "Blocked", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_allowwebauthnwithbrokentlscerts_true", + "displayName": "Allowed", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_alternateerrorpagesenabled", "displayName": "Suggest similar pages when a webpage canโ€™t be found", @@ -9892,12 +12361,12 @@ }, { "id": "com.apple.managedclient.preferences_applicationssystem_applications_microsoft remote desktop.app", - "displayName": "Microsoft Remote Desktop", + "displayName": "Microsoft Remote Desktop (Deprecated)", "options": null }, { "id": "com.apple.managedclient.preferences_applicationssystem_applications_microsoft remote desktop.app_application id", - "displayName": "Microsoft Remote Desktop Application ID", + "displayName": "Microsoft Remote Desktop Application ID (Deprecated)", "options": null }, { @@ -9923,12 +12392,12 @@ }, { "id": "com.apple.managedclient.preferences_applicationssystem_applications_microsoft remote desktop.app_lcid", - "displayName": "Microsoft Remote Desktop LCID", + "displayName": "Microsoft Remote Desktop LCID (Deprecated)", "options": null }, { "id": "com.apple.managedclient.preferences_applicationssystem_applications_microsoft remote desktop.app_manifestserver", - "displayName": "Update channel override", + "displayName": "Update channel override (Deprecated)", "options": [ { "id": "com.apple.managedclient.preferences_applicationssystem_applications_microsoft remote desktop.app_manifestserver_0", @@ -10282,6 +12751,68 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_applicationssystem_applications_windows app.app", + "displayName": "Windows App", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_applicationssystem_applications_windows app.app_application id", + "displayName": "Application ID", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_applicationssystem_applications_windows app.app_channelname", + "displayName": "Channel Name", + "options": [ + { + "id": "com.apple.managedclient.preferences_applicationssystem_applications_windows app.app_channelname_0", + "displayName": "Current Channel", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_applicationssystem_applications_windows app.app_channelname_1", + "displayName": "Current Channel (Preview)", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_applicationssystem_applications_windows app.app_channelname_2", + "displayName": "Beta Channel", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_applicationssystem_applications_windows app.app_lcid", + "displayName": "LCID", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_applicationssystem_applications_windows app.app_manifestserver", + "displayName": "Manifest Server", + "options": [ + { + "id": "com.apple.managedclient.preferences_applicationssystem_applications_windows app.app_manifestserver_0", + "displayName": "Current Channel", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_applicationssystem_applications_windows app.app_manifestserver_1", + "displayName": "Current Channel (Preview)", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_applicationssystem_applications_windows app.app_manifestserver_2", + "displayName": "Beta Channel", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_applicationssystem_applications_windows app.app_manifestserver_3", + "displayName": "Change Freeze", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_applicationssystem_library_application support_microsoft_mau2.0_microsoft autoupdate.app", "displayName": "Microsoft Auto Update", @@ -10344,6 +12875,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_askbeforecloseenabled", + "displayName": "Get user confirmation before closing a browser window with multiple tabs", + "options": [ + { + "id": "com.apple.managedclient.preferences_askbeforecloseenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_askbeforecloseenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_audiocaptureallowed", "displayName": "Allow or block audio capture", @@ -10396,6 +12943,22 @@ "displayName": "Configure list of allowed authentication servers", "options": null }, + { + "id": "com.apple.managedclient.preferences_autodiscardsleepingtabsenabled", + "displayName": "Configure auto discard sleeping tabs", + "options": [ + { + "id": "com.apple.managedclient.preferences_autodiscardsleepingtabsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_autodiscardsleepingtabsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_autofilladdressenabled", "displayName": "Enable AutoFill for addresses", @@ -10428,6 +12991,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_autofillmembershipsenabled", + "displayName": "Save and fill memberships", + "options": [ + { + "id": "com.apple.managedclient.preferences_autofillmembershipsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_autofillmembershipsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_autoimportatfirstrun", "displayName": "Automatically import another browser's data and settings at first run", @@ -10464,6 +13043,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_autolaunchprotocolscomponentenabled", + "displayName": "AutoLaunch Protocols Component Enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_autolaunchprotocolscomponentenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_autolaunchprotocolscomponentenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_automaticallydownloadexternalcontent", "displayName": "Download embedded images", @@ -10501,6 +13096,37 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_automaticdownloadsallowedforurls", + "displayName": "Allow multiple automatic downloads in quick succession on specific sites", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_automaticdownloadsblockedforurls", + "displayName": "Block multiple automatic downloads in quick succession on specific sites", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_automatichttpsdefault", + "displayName": "Configure Automatic HTTPS", + "options": [ + { + "id": "com.apple.managedclient.preferences_automatichttpsdefault_0", + "displayName": "Automatic HTTPS functionality is disabled.", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_automatichttpsdefault_1", + "displayName": "(Deprecated) Navigations delivered over HTTP are switched to HTTPS, only on domains likely to support HTTPS.", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_automatichttpsdefault_2", + "displayName": "All navigations delivered over HTTP are switched to HTTPS. Connection errors might occur more often.", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_automaticsamplesubmission", "displayName": "Enable / disable automatic sample submissions", @@ -10517,6 +13143,27 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_automaticsamplesubmissionconsent", + "displayName": "Automatic sample submission Consent", + "options": [ + { + "id": "com.apple.managedclient.preferences_automaticsamplesubmissionconsent_0", + "displayName": "none", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_automaticsamplesubmissionconsent_1", + "displayName": "safe", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_automaticsamplesubmissionconsent_2", + "displayName": "all", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_automaticuploadbandwidthpercentage", "displayName": "Automatic upload bandwidth percentage", @@ -10548,6 +13195,11 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_autoplayallowlist", + "displayName": "Allow media autoplay on specific sites", + "options": null + }, { "id": "com.apple.managedclient.preferences_autoselectcertificateforurls", "displayName": "Automatically select client certificates for these sites", @@ -10585,6 +13237,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_behaviormonitoring", + "displayName": "Behavior Monitoring", + "options": [ + { + "id": "com.apple.managedclient.preferences_behaviormonitoring_0", + "displayName": "enabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_behaviormonitoring_1", + "displayName": "disabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_bingadssuppression", "displayName": "Block all ads on Bing search results", @@ -10649,6 +13317,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_blocktruncatedcookies", + "displayName": "Block truncated cookies", + "options": [ + { + "id": "com.apple.managedclient.preferences_blocktruncatedcookies_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_blocktruncatedcookies_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_browseraddprofileenabled", "displayName": "Enable profile creation from the Identity flyout menu or the Settings page", @@ -10837,6 +13521,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_checkfordefinitionsupdate", + "displayName": "Check for definitions update", + "options": [ + { + "id": "com.apple.managedclient.preferences_checkfordefinitionsupdate_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_checkfordefinitionsupdate_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_clearbrowsingdataonexit", "displayName": "Clear browsing data when Microsoft Edge closes", @@ -10869,6 +13569,16 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_clipboardallowedforurls", + "displayName": "Allow clipboard use on specific sites", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_clipboardblockedforurls", + "displayName": "Block clipboard use on specific sites", + "options": null + }, { "id": "com.apple.managedclient.preferences_cloudblocklevel", "displayName": "Cloud Block Level", @@ -10937,6 +13647,38 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_composeinlineenabled", + "displayName": "Compose is enabled for writing on the web", + "options": [ + { + "id": "com.apple.managedclient.preferences_composeinlineenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_composeinlineenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_compressiondictionarytransportenabled", + "displayName": "Enable compression dictionary transport support", + "options": [ + { + "id": "com.apple.managedclient.preferences_compressiondictionarytransportenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_compressiondictionarytransportenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_configuredonottrack", "displayName": "Configure Do Not Track", @@ -10990,6 +13732,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_configureshare", + "displayName": "Configure the Share experience", + "options": [ + { + "id": "com.apple.managedclient.preferences_configureshare_0", + "displayName": "Allow using the Share experience", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_configureshare_1", + "displayName": "Don't allow using the Share experience", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_consumerexperience", "displayName": "Control sign-in to consumer version", @@ -11006,6 +13764,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_controldefaultstateofallowextensionfromotherstoressettingenabled", + "displayName": "Configure default state of Allow extensions from other stores setting", + "options": [ + { + "id": "com.apple.managedclient.preferences_controldefaultstateofallowextensionfromotherstoressettingenabled_false", + "displayName": "Blocked", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_controldefaultstateofallowextensionfromotherstoressettingenabled_true", + "displayName": "Allowed", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_cookiesallowedforurls", "displayName": "Allow cookies on specific sites", @@ -11021,11 +13795,74 @@ "displayName": "Limit cookies from specific websites to the current session", "options": null }, + { + "id": "com.apple.managedclient.preferences_copilotpagecontext", + "displayName": "Control Copilot access to page context for Microsoft Entra ID profiles", + "options": [ + { + "id": "com.apple.managedclient.preferences_copilotpagecontext_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_copilotpagecontext_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_corsnonwildcardrequestheaderssupport", + "displayName": "CORS non-wildcard request header support enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_corsnonwildcardrequestheaderssupport_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_corsnonwildcardrequestheaderssupport_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_csscustomstatedeprecatedsyntaxenabled", + "displayName": "Controls whether the deprecated :--foo syntax for CSS custom state is enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_csscustomstatedeprecatedsyntaxenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_csscustomstatedeprecatedsyntaxenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_customhelplink", "displayName": "Specify custom help link", "options": null }, + { + "id": "com.apple.managedclient.preferences_dailyconfiguration", + "displayName": "Daily and Hourly quick scan configuration", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_dailyconfiguration_interval", + "displayName": "Start time", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_dailyconfiguration_timeofday", + "displayName": "Time of day", + "options": null + }, { "id": "com.apple.managedclient.preferences_datalossprevention", "displayName": "Use Data Loss Prevention", @@ -11042,6 +13879,38 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_dataurlinsvguseenabled", + "displayName": "Data URL support for SVGUseElement", + "options": [ + { + "id": "com.apple.managedclient.preferences_dataurlinsvguseenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_dataurlinsvguseenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_defaultautomaticdownloadssetting", + "displayName": "Default automatic downloads setting", + "options": [ + { + "id": "com.apple.managedclient.preferences_defaultautomaticdownloadssetting_0", + "displayName": "Allow all websites to perform automatic downloads", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_defaultautomaticdownloadssetting_1", + "displayName": "Don't allow any website to perform automatic downloads", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_defaultbrowsersettingenabled", "displayName": "Set Microsoft Edge as default browser", @@ -11058,6 +13927,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_defaultclipboardsetting", + "displayName": "Default clipboard site permission", + "options": [ + { + "id": "com.apple.managedclient.preferences_defaultclipboardsetting_0", + "displayName": "Do not allow any site to use the clipboard site permission", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_defaultclipboardsetting_1", + "displayName": "Allow sites to ask the user to grant the clipboard site permission", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_defaultcookiessetting", "displayName": "Configure cookies", @@ -11169,6 +14054,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_defaultjavascriptjitsetting", + "displayName": "Control use of JavaScript JIT", + "options": [ + { + "id": "com.apple.managedclient.preferences_defaultjavascriptjitsetting_0", + "displayName": "Allow any site to run JavaScript JIT", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_defaultjavascriptjitsetting_1", + "displayName": "Do not allow any site to run JavaScript JIT", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_defaultjavascriptsetting", "displayName": "Default JavaScript setting", @@ -11342,6 +14243,27 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_defaultshareadditionalosregionsetting", + "displayName": "Set the default \"share additional operating system region\" setting", + "options": [ + { + "id": "com.apple.managedclient.preferences_defaultshareadditionalosregionsetting_0", + "displayName": "Limited", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_defaultshareadditionalosregionsetting_1", + "displayName": "Always share the OS Regional format", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_defaultshareadditionalosregionsetting_2", + "displayName": "Never share the OS Regional format", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_defaultstolocalopensave", "displayName": "Default to local files for open/save", @@ -11358,6 +14280,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_defaultthirdpartystoragepartitioningsetting", + "displayName": "Default setting for third-party storage partitioning", + "options": [ + { + "id": "com.apple.managedclient.preferences_defaultthirdpartystoragepartitioningsetting_0", + "displayName": "Let third-party storage partitioning to be enabled.", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_defaultthirdpartystoragepartitioningsetting_1", + "displayName": "Block third-party storage partitioning from being enabled.", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_defaultweatherlocation", "displayName": "Default weather location", @@ -11379,6 +14317,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_defaultwebhidguardsetting", + "displayName": "Control use of the WebHID API", + "options": [ + { + "id": "com.apple.managedclient.preferences_defaultwebhidguardsetting_0", + "displayName": "Do not allow any site to request access to HID devices via the WebHID API", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_defaultwebhidguardsetting_1", + "displayName": "Allow sites to ask the user to grant access to a HID device", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_defaultwebusbguardsetting", "displayName": "Control use of the WebUSB API", @@ -11395,6 +14349,32 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_defaultwindowmanagementsetting", + "displayName": "Default Window Management permission setting", + "options": [ + { + "id": "com.apple.managedclient.preferences_defaultwindowmanagementsetting_0", + "displayName": "Denies the Window Management permission on all sites by default", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_defaultwindowmanagementsetting_1", + "displayName": "Ask every time a site wants obtain the Window Management permission", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_definitionupdatedue", + "displayName": "Security intelligence update due (in days)", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_definitionupdatesinterval", + "displayName": "Security intelligence update interval (in seconds)", + "options": null + }, { "id": "com.apple.managedclient.preferences_developertoolsavailability", "displayName": "Control where developer tools can be used", @@ -11538,6 +14518,38 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_disablednsovertcpparsing", + "displayName": "Disable DNS over TCP parsing", + "options": [ + { + "id": "com.apple.managedclient.preferences_disablednsovertcpparsing_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_disablednsovertcpparsing_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_disablednsparsing", + "displayName": "Disable DNS parsing", + "options": [ + { + "id": "com.apple.managedclient.preferences_disablednsparsing_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_disablednsparsing_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_disabledonotforward", "displayName": "Disable 'Do Not Forward' options", @@ -11586,6 +14598,38 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_disableftpparsing", + "displayName": "Disable FTP parsing", + "options": [ + { + "id": "com.apple.managedclient.preferences_disableftpparsing_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_disableftpparsing_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_disablehttpparsing", + "displayName": "Disable HTTP parsing", + "options": [ + { + "id": "com.apple.managedclient.preferences_disablehttpparsing_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_disablehttpparsing_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_disablehydrationtoast", "displayName": "Disable download toasts", @@ -11602,6 +14646,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_disableicmpparsing", + "displayName": "Disable ICMP parsing", + "options": [ + { + "id": "com.apple.managedclient.preferences_disableicmpparsing_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_disableicmpparsing_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_disableimport", "displayName": "Disable import from OLM and PST files", @@ -11618,6 +14678,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_disableinboundconnectionfiltering", + "displayName": "Disable inbound connection filtering", + "options": [ + { + "id": "com.apple.managedclient.preferences_disableinboundconnectionfiltering_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_disableinboundconnectionfiltering_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_disableinsidercheckbox", "displayName": "Disable Office Insider membership", @@ -11650,6 +14726,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_disablerdpparsing", + "displayName": "Disable RDP parsing", + "options": [ + { + "id": "com.apple.managedclient.preferences_disablerdpparsing_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_disablerdpparsing_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_disablerespondtomeetingwithoutresponse", "displayName": "Disable 'Do not send response'", @@ -11730,6 +14822,38 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_disablesmtpparsing", + "displayName": "Disable SMTP parsing", + "options": [ + { + "id": "com.apple.managedclient.preferences_disablesmtpparsing_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_disablesmtpparsing_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_disablesshparsing", + "displayName": "Disable SSH parsing", + "options": [ + { + "id": "com.apple.managedclient.preferences_disablesshparsing_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_disablesshparsing_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_disableteamsmeeting", "displayName": "Disable Microsoft Teams meeting support", @@ -11746,6 +14870,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_disabletlsparsing", + "displayName": "Disable TLS parsing", + "options": [ + { + "id": "com.apple.managedclient.preferences_disabletlsparsing_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_disabletlsparsing_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_disabletutorial", "displayName": "Disable tutorial", @@ -11867,6 +15007,22 @@ "displayName": "Specify URI template of desired DNS-over-HTTPS resolver", "options": null }, + { + "id": "com.apple.managedclient.preferences_doubleclickclosetabenabled", + "displayName": "Double Click feature in Microsoft Edge enabled (only available in China)", + "options": [ + { + "id": "com.apple.managedclient.preferences_doubleclickclosetabenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_doubleclickclosetabenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_downloadbandwidthlimited", "displayName": "Set maximum download throughput", @@ -11900,6 +15056,11 @@ "id": "com.apple.managedclient.preferences_downloadrestrictions_3", "displayName": "Block all downloads", "description": null + }, + { + "id": "com.apple.managedclient.preferences_downloadrestrictions_4", + "displayName": "Block malicious downloads", + "description": null } ] }, @@ -11919,6 +15080,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_edgeassetdeliveryserviceenabled", + "displayName": "Allow features to download assets from the Asset Delivery Service", + "options": [ + { + "id": "com.apple.managedclient.preferences_edgeassetdeliveryserviceenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_edgeassetdeliveryserviceenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_edgecollectionsenabled", "displayName": "Enable the Collections feature", @@ -11935,6 +15112,102 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_edgedisabledialprotocolforcastdiscovery", + "displayName": "Disable DIAL protocol for cast device discovery", + "options": [ + { + "id": "com.apple.managedclient.preferences_edgedisabledialprotocolforcastdiscovery_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_edgedisabledialprotocolforcastdiscovery_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_edgeedropenabled", + "displayName": "Enable Drop feature in Microsoft Edge", + "options": [ + { + "id": "com.apple.managedclient.preferences_edgeedropenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_edgeedropenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_edgeentracopilotpagecontext", + "displayName": "Control access to page content for Entra ID Profiles accessing Microsoft Copilot with Enterprise Data Protection (EDP) from the Microsoft Edge sidebar", + "options": [ + { + "id": "com.apple.managedclient.preferences_edgeentracopilotpagecontext_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_edgeentracopilotpagecontext_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_edgemanagementextensionsfeedbackenabled", + "displayName": "Microsoft Edge management extensions feedback enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_edgemanagementextensionsfeedbackenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_edgemanagementextensionsfeedbackenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_edgemanagementpolicyoverridesplatformpolicy", + "displayName": "Microsoft Edge management service policy overrides platform policy.", + "options": [ + { + "id": "com.apple.managedclient.preferences_edgemanagementpolicyoverridesplatformpolicy_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_edgemanagementpolicyoverridesplatformpolicy_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_edgemanagementuserpolicyoverridescloudmachinepolicy", + "displayName": "Allow cloud-based Microsoft Edge management service user policies to override local user policies.", + "options": [ + { + "id": "com.apple.managedclient.preferences_edgemanagementuserpolicyoverridescloudmachinepolicy_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_edgemanagementuserpolicyoverridescloudmachinepolicy_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_edgeshoppingassistantenabled", "displayName": "Shopping in Microsoft Edge Enabled", @@ -11951,6 +15224,64 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_edgesidebarappurlhostallowlist", + "displayName": "Allow specific apps to be opened in Microsoft Edge sidebar", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_edgesidebarappurlhostblocklist", + "displayName": "Control which apps cannot be opened in Microsoft Edge sidebar", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_edgesidebarcustomizeenabled", + "displayName": "Enable sidebar customize", + "options": [ + { + "id": "com.apple.managedclient.preferences_edgesidebarcustomizeenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_edgesidebarcustomizeenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_edgewalletetreeenabled", + "displayName": "Edge Wallet E-Tree Enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_edgewalletetreeenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_edgewalletetreeenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_edgeworkspacesenabled", + "displayName": "Enable Workspaces", + "options": [ + { + "id": "com.apple.managedclient.preferences_edgeworkspacesenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_edgeworkspacesenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_editfavoritesenabled", "displayName": "Allows users to edit favorites", @@ -11967,6 +15298,74 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_efficiencymode", + "displayName": "Configure when efficiency mode should become active", + "options": [ + { + "id": "com.apple.managedclient.preferences_efficiencymode_0", + "displayName": "Efficiency mode is always active", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_efficiencymode_1", + "displayName": "Efficiency mode is never active", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_efficiencymode_2", + "displayName": "Efficiency mode is active when the device is unplugged", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_efficiencymode_3", + "displayName": "Efficiency mode is active when the device is unplugged and the battery is low", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_efficiencymode_4", + "displayName": "When the device is unplugged, efficiency mode takes moderate steps to save battery. When the device is unplugged and the battery is low, efficiency mode takes additional steps to save battery.", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_efficiencymode_5", + "displayName": "When the device is unplugged or unplugged and the battery is low, efficiency mode takes additional steps to save battery.", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_efficiencymodeenabled", + "displayName": "Efficiency mode enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_efficiencymodeenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_efficiencymodeenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_efficiencymodeonpowerenabled", + "displayName": "Enable efficiency mode when the device is connected to a power source", + "options": [ + { + "id": "com.apple.managedclient.preferences_efficiencymodeonpowerenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_efficiencymodeonpowerenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_enableallocsiclients", "displayName": "Enable simultaneous edits for Office apps", @@ -12163,6 +15562,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_enablesetwarntoblock", + "displayName": "Enable set warn to block", + "options": [ + { + "id": "com.apple.managedclient.preferences_enablesetwarntoblock_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_enablesetwarntoblock_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_enablesha1forlocalanchors", "displayName": "Allow certificates signed using SHA-1 when issued by local trust anchors", @@ -12179,6 +15594,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_encryptedclienthelloenabled", + "displayName": "TLS Encrypted ClientHello Enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_encryptedclienthelloenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_encryptedclienthelloenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_enforcementlevel", "displayName": "Enforcement level", @@ -12242,6 +15673,74 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_enhancesecuritymode", + "displayName": "Enhance the security state in Microsoft Edge", + "options": [ + { + "id": "com.apple.managedclient.preferences_enhancesecuritymode_0", + "displayName": "Standard mode", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_enhancesecuritymode_1", + "displayName": "Balanced mode", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_enhancesecuritymode_2", + "displayName": "Strict mode", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_enhancesecuritymode_3", + "displayName": "(Deprecated) Basic mode", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_enhancesecuritymodebypasslistdomains", + "displayName": "Configure the list of domains for which enhance security mode will not be enforced", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_enhancesecuritymodeenforcelistdomains", + "displayName": "Configure the list of domains for which enhance security mode will always be enforced", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_enhancesecuritymodeindicatoruienabled", + "displayName": "Manage the indicator UI of the Enhanced Security Mode (ESM) feature in Microsoft Edge", + "options": [ + { + "id": "com.apple.managedclient.preferences_enhancesecuritymodeindicatoruienabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_enhancesecuritymodeindicatoruienabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_enhancesecuritymodeoptoutuxenabled", + "displayName": "Manage opt-out user experience for Enhanced Security Mode (ESM) in Microsoft Edge (deprecated)", + "options": [ + { + "id": "com.apple.managedclient.preferences_enhancesecuritymodeoptoutuxenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_enhancesecuritymodeoptoutuxenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_enterprisehardwareplatformapienabled", "displayName": "Allow managed extensions to use the Enterprise Hardware Platform API", @@ -12382,6 +15881,11 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_explicitlyallowednetworkports", + "displayName": "Explicitly allowed network ports", + "options": null + }, { "id": "com.apple.managedclient.preferences_extendedlogging", "displayName": "Enable extended logging", @@ -12403,6 +15907,27 @@ "displayName": "Configure allowed extension types", "options": null }, + { + "id": "com.apple.managedclient.preferences_extensiondevelopermodesettings", + "displayName": "Control the availability of developer mode on extensions page", + "options": [ + { + "id": "com.apple.managedclient.preferences_extensiondevelopermodesettings_0", + "displayName": "Allow the usage of developer mode on extensions page", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_extensiondevelopermodesettings_1", + "displayName": "Do not allow the usage of developer mode on extensions page", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_extensionextendedbackgroundlifetimeforportconnectionstourls", + "displayName": "Configure a list of origins that grant an extended background lifetime to connecting extensions.", + "options": null + }, { "id": "com.apple.managedclient.preferences_extensioninstallallowlist", "displayName": "Allow specific extensions to be installed", @@ -12423,6 +15948,53 @@ "displayName": "Configure extension and user script install sources", "options": null }, + { + "id": "com.apple.managedclient.preferences_extensioninstalltypeblocklist", + "displayName": "Blocklist for extension install types", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_extensionmanifestv2availability", + "displayName": "Control Manifest v2 extension availability", + "options": [ + { + "id": "com.apple.managedclient.preferences_extensionmanifestv2availability_0", + "displayName": "Default browser behavior", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_extensionmanifestv2availability_1", + "displayName": "Manifest v2 is disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_extensionmanifestv2availability_2", + "displayName": "Manifest v2 is enabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_extensionmanifestv2availability_3", + "displayName": "Manifest v2 is enabled for forced extensions only", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_extensionsperformancedetectorenabled", + "displayName": "Extensions Performance Detector enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_extensionsperformancedetectorenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_extensionsperformancedetectorenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_externalprotocoldialogshowalwaysopencheckbox", "displayName": "Show an \"Always open\" checkbox in external protocol dialog", @@ -12471,6 +16043,37 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_featureflagoverridescontrol", + "displayName": "Configure users ability to override feature flags", + "options": [ + { + "id": "com.apple.managedclient.preferences_featureflagoverridescontrol_0", + "displayName": "Prevent users from overriding feature flags", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_featureflagoverridescontrol_1", + "displayName": "Allow users to override feature flags", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_featureflagoverridescontrol_2", + "displayName": "Allow users to override feature flags using command line arguments only", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_fetchkeepalivedurationsecondsonshutdown", + "displayName": "Fetch keepalive duration on shutdown", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_fileordirectorypickerwithoutgestureallowedfororigins", + "displayName": "Allow file or directory picker APIs to be called without prior user gesture", + "options": null + }, { "id": "com.apple.managedclient.preferences_filesondemandenabled", "displayName": "Enable Files On-Demand", @@ -12592,6 +16195,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_forcepermissionpolicyunloaddefaultenabled", + "displayName": "Controls whether unload event handlers can be disabled.", + "options": [ + { + "id": "com.apple.managedclient.preferences_forcepermissionpolicyunloaddefaultenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_forcepermissionpolicyunloaddefaultenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_forcesync", "displayName": "Force synchronization of browser data and do not show the sync consent prompt", @@ -12608,6 +16227,11 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_forcesynctypes", + "displayName": "Configure the list of types that are included for synchronization", + "options": null + }, { "id": "com.apple.managedclient.preferences_forceyoutuberestrict", "displayName": "Force minimum YouTube Restricted Mode", @@ -12661,6 +16285,11 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_groupids", + "displayName": "Group identifier", + "options": null + }, { "id": "com.apple.managedclient.preferences_guardagainstappmodification", "displayName": "Guard against app modification", @@ -12677,6 +16306,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_guidedswitchenabled", + "displayName": "Guided Switch Enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_guidedswitchenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_guidedswitchenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_hardwareaccelerationmodeenabled", "displayName": "Use hardware acceleration when available", @@ -12693,6 +16338,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_headlessmodeenabled", + "displayName": "Control use of the Headless Mode", + "options": [ + { + "id": "com.apple.managedclient.preferences_headlessmodeenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_headlessmodeenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_hidedockicon", "displayName": "Hide dock icon", @@ -12804,6 +16465,43 @@ "displayName": "Configure the list of names that will bypass the HSTS policy check", "options": null }, + { + "id": "com.apple.managedclient.preferences_httpallowlist", + "displayName": "HTTP Allowlist", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_hubssidebarenabled", + "displayName": "Show Hubs Sidebar", + "options": [ + { + "id": "com.apple.managedclient.preferences_hubssidebarenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_hubssidebarenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_ignoreexclusions", + "displayName": "Ignore exclusions", + "options": [ + { + "id": "com.apple.managedclient.preferences_ignoreexclusions_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_ignoreexclusions_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_imagesallowedforurls", "displayName": "Allow images on these sites", @@ -13006,6 +16704,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_inappsupportenabled", + "displayName": "In-app support Enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_inappsupportenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_inappsupportenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_inprivatemodeavailability", "displayName": "Configure InPrivate mode availability", @@ -13053,6 +16767,27 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_insecureprivatenetworkrequestsallowed", + "displayName": "Specifies whether to allow websites to make requests to any network endpoint in an insecure manner.", + "options": [ + { + "id": "com.apple.managedclient.preferences_insecureprivatenetworkrequestsallowed_false", + "displayName": "Blocked", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_insecureprivatenetworkrequestsallowed_true", + "displayName": "Allowed", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_insecureprivatenetworkrequestsallowedforurls", + "displayName": "Allow the listed sites to make requests to more-private network endpoints from in an insecure manner", + "options": null + }, { "id": "com.apple.managedclient.preferences_intensivewakeupthrottlingenabled", "displayName": "Control the IntensiveWakeUpThrottling feature", @@ -13110,6 +16845,32 @@ "displayName": "Block JavaScript on specific sites", "options": null }, + { + "id": "com.apple.managedclient.preferences_javascriptjitallowedforsites", + "displayName": "Allow JavaScript to use JIT on these sites", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_javascriptjitblockedforsites", + "displayName": "Block JavaScript from using JIT on these sites", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_keyboardfocusablescrollersenabled", + "displayName": "Enable keyboard focusable scrollers", + "options": [ + { + "id": "com.apple.managedclient.preferences_keyboardfocusablescrollersenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_keyboardfocusablescrollersenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_kfmblockoptin", "displayName": "Prevent users from using the Folder Backup feature (Known Folder Move)", @@ -13242,6 +17003,22 @@ "displayName": "Revert to legacy SameSite behavior for cookies on specified sites", "options": null }, + { + "id": "com.apple.managedclient.preferences_linkedaccountenabled", + "displayName": "Enable the linked account feature", + "options": [ + { + "id": "com.apple.managedclient.preferences_linkedaccountenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_linkedaccountenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_localprovidersenabled", "displayName": "Allow suggestions from local providers", @@ -13258,6 +17035,94 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_lowpriorityscheduledscan", + "displayName": "Low priority scheduled scan", + "options": [ + { + "id": "com.apple.managedclient.preferences_lowpriorityscheduledscan_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_lowpriorityscheduledscan_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_managedsearchengines", + "displayName": "Managed Search Engines", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_managedsearchengines_item_allow_search_engine_discovery", + "displayName": "Allow search engine discovery", + "options": [ + { + "id": "com.apple.managedclient.preferences_managedsearchengines_item_allow_search_engine_discovery_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_managedsearchengines_item_allow_search_engine_discovery_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_managedsearchengines_item_encoding", + "displayName": "Encoding", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_managedsearchengines_item_image_search_post_params", + "displayName": "Image search post params", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_managedsearchengines_item_image_search_url", + "displayName": "Image search URL", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_managedsearchengines_item_is_default", + "displayName": "Is default", + "options": [ + { + "id": "com.apple.managedclient.preferences_managedsearchengines_item_is_default_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_managedsearchengines_item_is_default_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_managedsearchengines_item_keyword", + "displayName": "Keyword", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_managedsearchengines_item_name", + "displayName": "Name", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_managedsearchengines_item_search_url", + "displayName": "Search URL", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_managedsearchengines_item_suggest_url", + "displayName": "Suggest URL", + "options": null + }, { "id": "com.apple.managedclient.preferences_manifestserver", "displayName": "Deferred updates (Deprecated)", @@ -13491,6 +17356,86 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_microsoftedgeinsiderpromotionenabled", + "displayName": "Microsoft Edge Insider Promotion Enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_microsoftedgeinsiderpromotionenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_microsoftedgeinsiderpromotionenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_microsofteditorproofingenabled", + "displayName": "Spell checking provided by Microsoft Editor", + "options": [ + { + "id": "com.apple.managedclient.preferences_microsofteditorproofingenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_microsofteditorproofingenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_microsofteditorsynonymsenabled", + "displayName": "Synonyms are provided when using Microsoft Editor spell checker", + "options": [ + { + "id": "com.apple.managedclient.preferences_microsofteditorsynonymsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_microsofteditorsynonymsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_msawebsitessousingthisprofileallowed", + "displayName": "Allow single sign-on for Microsoft personal sites using this profile", + "options": [ + { + "id": "com.apple.managedclient.preferences_msawebsitessousingthisprofileallowed_false", + "displayName": "Blocked", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_msawebsitessousingthisprofileallowed_true", + "displayName": "Allowed", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_mutationeventsenabled", + "displayName": "Enable deprecated/removed Mutation Events", + "options": [ + { + "id": "com.apple.managedclient.preferences_mutationeventsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_mutationeventsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_nativemessagingallowlist", "displayName": "Control which native messaging hosts users can use", @@ -13538,6 +17483,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_newpdfreaderenabled", + "displayName": "Microsoft Edge built-in PDF reader powered by Adobe Acrobat enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_newpdfreaderenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_newpdfreaderenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_newtabpageallowedbackgroundtypes", "displayName": "Configure the background types allowed for the new tab page layout", @@ -13559,6 +17520,89 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_newtabpageapplauncherenabled", + "displayName": "Hide App Launcher on Microsoft Edge new tab page", + "options": [ + { + "id": "com.apple.managedclient.preferences_newtabpageapplauncherenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_newtabpageapplauncherenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_newtabpagebingchatenabled", + "displayName": "Disable Bing chat entry-points on Microsoft Edge Enterprise new tab page", + "options": [ + { + "id": "com.apple.managedclient.preferences_newtabpagebingchatenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_newtabpagebingchatenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_newtabpagecompanylogo", + "displayName": "New Tab Page Company Logo", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_newtabpagecompanylogo_default_logo", + "displayName": "Default logo", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_newtabpagecompanylogo_default_logo_hash", + "displayName": "Hash", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_newtabpagecompanylogo_default_logo_url", + "displayName": "URL", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_newtabpagecompanylogo_light_logo", + "displayName": "Light logo", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_newtabpagecompanylogo_light_logo_hash", + "displayName": "Hash", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_newtabpagecompanylogo_light_logo_url", + "displayName": "URL", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_newtabpagecompanylogoenabled", + "displayName": "Hide the company logo on the Microsoft Edge new tab page", + "options": [ + { + "id": "com.apple.managedclient.preferences_newtabpagecompanylogoenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_newtabpagecompanylogoenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_newtabpagehidedefaulttopsites", "displayName": "Hide the default top sites from the new tab page", @@ -13580,6 +17624,37 @@ "displayName": "Configure the new tab page URL", "options": null }, + { + "id": "com.apple.managedclient.preferences_newtabpagemanagedquicklinks", + "displayName": "New Tab Page Managed Quick Links", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_newtabpagemanagedquicklinks_item_pinned", + "displayName": "Pinned", + "options": [ + { + "id": "com.apple.managedclient.preferences_newtabpagemanagedquicklinks_item_pinned_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_newtabpagemanagedquicklinks_item_pinned_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_newtabpagemanagedquicklinks_item_title", + "displayName": "Title", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_newtabpagemanagedquicklinks_item_url", + "displayName": "URL", + "options": null + }, { "id": "com.apple.managedclient.preferences_newtabpageprerenderenabled", "displayName": "Enable preload of the new tab page for faster rendering", @@ -13596,6 +17671,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_newtabpagequicklinksenabled", + "displayName": "Allow quick links on the new tab page", + "options": [ + { + "id": "com.apple.managedclient.preferences_newtabpagequicklinksenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_newtabpagequicklinksenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_newtabpagesearchbox", "displayName": "Configure the new tab page search box experience", @@ -13739,6 +17830,43 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_offlinedefinitionupdate", + "displayName": "Enable offline security intelligence updates", + "options": [ + { + "id": "com.apple.managedclient.preferences_offlinedefinitionupdate_0", + "displayName": "enabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_offlinedefinitionupdate_1", + "displayName": "disabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_offlinedefinitionupdateurl", + "displayName": "URL for a security intelligence updates mirror server", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_offlinedefinitionupdateverifysig", + "displayName": "offline security intelligence updates signature verification", + "options": [ + { + "id": "com.apple.managedclient.preferences_offlinedefinitionupdateverifysig_0", + "displayName": "enabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_offlinedefinitionupdateverifysig_1", + "displayName": "disabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_oldisablejunkoptionsprefkey", "displayName": "Disable Junk settings", @@ -13787,6 +17915,54 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_organizationalbrandingonworkprofileuienabled", + "displayName": "Allow the use of your organization's branding assets from Microsoft Entra on the profile-related UI of a work profile", + "options": [ + { + "id": "com.apple.managedclient.preferences_organizationalbrandingonworkprofileuienabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_organizationalbrandingonworkprofileuienabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_organizationlogooverlayonappiconenabled", + "displayName": "Allow your organization's logo from Microsoft Entra to be overlaid on the Microsoft Edge app icon of a work profile", + "options": [ + { + "id": "com.apple.managedclient.preferences_organizationlogooverlayonappiconenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_organizationlogooverlayonappiconenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_originagentclusterdefaultenabled", + "displayName": "Origin-keyed agent clustering enabled by default", + "options": [ + { + "id": "com.apple.managedclient.preferences_originagentclusterdefaultenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_originagentclusterdefaultenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_overridesecurityrestrictionsoninsecureorigin", "displayName": "Control where security restrictions on insecure origins apply", @@ -13808,6 +17984,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_passworddeleteonbrowsercloseenabled", + "displayName": "Prevent passwords from being deleted if any Edge settings is enabled to delete browsing data when Microsoft Edge closes", + "options": [ + { + "id": "com.apple.managedclient.preferences_passworddeleteonbrowsercloseenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_passworddeleteonbrowsercloseenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_passwordmanagerenabled", "displayName": "Enable saving passwords to the password manager", @@ -13824,6 +18016,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_passwordmanagerrestrictlengthenabled", + "displayName": "Restrict the length of passwords that can be saved in the Password Manager", + "options": [ + { + "id": "com.apple.managedclient.preferences_passwordmanagerrestrictlengthenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_passwordmanagerrestrictlengthenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_passwordmonitorallowed", "displayName": "Allow Microsoft Edge to monitor user passwords", @@ -13898,6 +18106,54 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_pdfsecuremode", + "displayName": "Secure mode and Certificate-based Digital Signature validation in native PDF reader", + "options": [ + { + "id": "com.apple.managedclient.preferences_pdfsecuremode_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_pdfsecuremode_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_pdfxfaenabled", + "displayName": "XFA support in native PDF reader enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_pdfxfaenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_pdfxfaenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_performancedetectorenabled", + "displayName": "Performance Detector Enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_performancedetectorenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_performancedetectorenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_personalizationreportingenabled", "displayName": "Allow personalization of ads, search and news by sending browsing history to Microsoft", @@ -13930,6 +18186,43 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_pictureinpictureoverlayenabled", + "displayName": "Enable Picture in Picture overlay feature on supported webpages in Microsoft Edge", + "options": [ + { + "id": "com.apple.managedclient.preferences_pictureinpictureoverlayenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_pictureinpictureoverlayenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_pinbrowseressentialstoolbarbutton", + "displayName": "Pin browser essentials toolbar button", + "options": [ + { + "id": "com.apple.managedclient.preferences_pinbrowseressentialstoolbarbutton_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_pinbrowseressentialstoolbarbutton_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_pluginsallowedforurls", + "displayName": "Allow the Adobe Flash plug-in on specific sites", + "options": null + }, { "id": "com.apple.managedclient.preferences_pluginsblockedforurls", "displayName": "Block the Adobe Flash plug-in on specific sites", @@ -13945,6 +18238,22 @@ "displayName": "Block pop-up windows on specific sites", "options": null }, + { + "id": "com.apple.managedclient.preferences_postquantumkeyagreementenabled", + "displayName": "Enable post-quantum key agreement for TLS", + "options": [ + { + "id": "com.apple.managedclient.preferences_postquantumkeyagreementenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_postquantumkeyagreementenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_preventsmartscreenpromptoverride", "displayName": "Prevent bypassing Microsoft Defender SmartScreen prompts for sites", @@ -13977,6 +18286,48 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_preventtyposquattingpromptoverride", + "displayName": "Prevent bypassing Edge Website Typo Protection prompts for sites", + "options": [ + { + "id": "com.apple.managedclient.preferences_preventtyposquattingpromptoverride_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_preventtyposquattingpromptoverride_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_primarypasswordsetting", + "displayName": "Configures a setting that asks users to enter their device password while using password autofill", + "options": [ + { + "id": "com.apple.managedclient.preferences_primarypasswordsetting_0", + "displayName": "Automatically", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_primarypasswordsetting_1", + "displayName": "With device password", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_primarypasswordsetting_2", + "displayName": "With custom primary password", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_primarypasswordsetting_3", + "displayName": "Autofill off", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_printertypedenylist", "displayName": "Disable printer types on the deny list", @@ -13998,6 +18349,43 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_printingallowedbackgroundgraphicsmodes", + "displayName": "Restrict background graphics printing mode", + "options": [ + { + "id": "com.apple.managedclient.preferences_printingallowedbackgroundgraphicsmodes_0", + "displayName": "Allow printing with and without background graphics", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_printingallowedbackgroundgraphicsmodes_1", + "displayName": "Allow printing only without background graphics", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_printingallowedbackgroundgraphicsmodes_2", + "displayName": "Allow printing only with background graphics", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_printingbackgroundgraphicsdefault", + "displayName": "Default background graphics printing mode", + "options": [ + { + "id": "com.apple.managedclient.preferences_printingbackgroundgraphicsdefault_0", + "displayName": "Disable background graphics printing mode by default", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_printingbackgroundgraphicsdefault_1", + "displayName": "Enable background graphics printing mode by default", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_printingenabled", "displayName": "Enable printing", @@ -14014,6 +18402,38 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_printingwebpagelayout", + "displayName": "Sets layout for printing", + "options": [ + { + "id": "com.apple.managedclient.preferences_printingwebpagelayout_0", + "displayName": "Sets layout option as portrait", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_printingwebpagelayout_1", + "displayName": "Sets layout option as landscape", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_printpdfasimagedefault", + "displayName": "Print PDF as Image Default", + "options": [ + { + "id": "com.apple.managedclient.preferences_printpdfasimagedefault_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_printpdfasimagedefault_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_printpreviewusesystemdefaultprinter", "displayName": "Set the system default printer as the default printer", @@ -14030,6 +18450,53 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_printrasterizepdfdpi", + "displayName": "Print Rasterize PDF DPI", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_printstickysettings", + "displayName": "Print preview sticky settings", + "options": [ + { + "id": "com.apple.managedclient.preferences_printstickysettings_0", + "displayName": "Enable sticky settings for PDF and Webpages", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_printstickysettings_1", + "displayName": "Disable sticky settings for PDF and Webpages", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_printstickysettings_2", + "displayName": "Disable sticky settings for PDF", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_printstickysettings_3", + "displayName": "Disable sticky settings for Webpages", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_privatenetworkaccessrestrictionsenabled", + "displayName": "Specifies whether to apply restrictions to requests to more private network endpoints", + "options": [ + { + "id": "com.apple.managedclient.preferences_privatenetworkaccessrestrictionsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_privatenetworkaccessrestrictionsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_proactiveauthenabled", "displayName": "Enable Proactive Authentication", @@ -14046,6 +18513,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_proactiveauthworkflowenabled", + "displayName": "Enable proactive authentication", + "options": [ + { + "id": "com.apple.managedclient.preferences_proactiveauthworkflowenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_proactiveauthworkflowenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_promotionaltabsenabled", "displayName": "Enable full-tab promotional content", @@ -14078,6 +18561,27 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_promptonmultiplematchingcertificates", + "displayName": "Prompt the user to select a certificate when multiple certificates match", + "options": [ + { + "id": "com.apple.managedclient.preferences_promptonmultiplematchingcertificates_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_promptonmultiplematchingcertificates_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_proxy", + "displayName": "Set proxy for MDE communication", + "options": null + }, { "id": "com.apple.managedclient.preferences_proxybypasslist", "displayName": "Configure proxy bypass rules", @@ -14124,6 +18628,73 @@ "displayName": "Configure address or URL of proxy server", "options": null }, + { + "id": "com.apple.managedclient.preferences_proxysettings", + "displayName": "Proxy Settings", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_proxysettings_proxybypasslist", + "displayName": "Proxy Bypass List", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_proxysettings_proxymode", + "displayName": "Proxy Mode", + "options": [ + { + "id": "com.apple.managedclient.preferences_proxysettings_proxymode_0", + "displayName": "direct", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_proxysettings_proxymode_1", + "displayName": "auto_detect", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_proxysettings_proxymode_2", + "displayName": "pac_script", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_proxysettings_proxymode_3", + "displayName": "fixed_servers", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_proxysettings_proxymode_4", + "displayName": "system", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_proxysettings_proxypacurl", + "displayName": "Proxy PAC URL", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_proxysettings_proxyserver", + "displayName": "Proxy Server", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_qrcodegeneratorenabled", + "displayName": "Enable QR Code Generator", + "options": [ + { + "id": "com.apple.managedclient.preferences_qrcodegeneratorenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_qrcodegeneratorenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_quicallowed", "displayName": "Allow QUIC protocol", @@ -14140,6 +18711,122 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_quicksearchshowminimenu", + "displayName": "Enables Microsoft Edge mini menu", + "options": [ + { + "id": "com.apple.managedclient.preferences_quicksearchshowminimenu_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_quicksearchshowminimenu_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_quickviewofficefilesenabled", + "displayName": "Manage QuickView Office files capability in Microsoft Edge", + "options": [ + { + "id": "com.apple.managedclient.preferences_quickviewofficefilesenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_quickviewofficefilesenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_randomizescanstarttime", + "displayName": "Randomize scheduled scan start time", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_readaloudenabled", + "displayName": "Enable Read Aloud feature in Microsoft Edge", + "options": [ + { + "id": "com.apple.managedclient.preferences_readaloudenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_readaloudenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_registeredprotocolhandlers", + "displayName": "Registered Protocol Handlers", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_registeredprotocolhandlers_item_default", + "displayName": "Default", + "options": [ + { + "id": "com.apple.managedclient.preferences_registeredprotocolhandlers_item_default_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_registeredprotocolhandlers_item_default_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_registeredprotocolhandlers_item_protocol", + "displayName": "Protocol", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_registeredprotocolhandlers_item_url", + "displayName": "URL", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_relatedmatchescloudserviceenabled", + "displayName": "Configure Related Matches in Find on Page", + "options": [ + { + "id": "com.apple.managedclient.preferences_relatedmatchescloudserviceenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_relatedmatchescloudserviceenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_relatedwebsitesetsenabled", + "displayName": "Enable Related Website Sets", + "options": [ + { + "id": "com.apple.managedclient.preferences_relatedwebsitesetsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_relatedwebsitesetsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_relaunchnotification", "displayName": "Notify a user that a browser restart is recommended or required for pending updates", @@ -14161,6 +18848,22 @@ "displayName": "Set the time period for update notifications", "options": null }, + { + "id": "com.apple.managedclient.preferences_remotedebuggingallowed", + "displayName": "Allow remote debugging", + "options": [ + { + "id": "com.apple.managedclient.preferences_remotedebuggingallowed_false", + "displayName": "Blocked", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_remotedebuggingallowed_true", + "displayName": "Allowed", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_resolvenavigationerrorsusewebservice", "displayName": "Enable resolution of navigation errors using a web service", @@ -14195,6 +18898,11 @@ "id": "com.apple.managedclient.preferences_restoreonstartup_2", "displayName": "Open a new tab", "description": null + }, + { + "id": "com.apple.managedclient.preferences_restoreonstartup_3", + "displayName": "Open a list of URLs and restore the last session", + "description": null } ] }, @@ -14203,6 +18911,38 @@ "displayName": "Sites to open when the browser starts", "options": null }, + { + "id": "com.apple.managedclient.preferences_restoreonstartupuserurlsenabled", + "displayName": "Allow users to add and remove their own sites during startup when the RestoreOnStartupURLs policy is configured", + "options": [ + { + "id": "com.apple.managedclient.preferences_restoreonstartupuserurlsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_restoreonstartupuserurlsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_restorepdfview", + "displayName": "Restore PDF view", + "options": [ + { + "id": "com.apple.managedclient.preferences_restorepdfview_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_restorepdfview_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_restrictsignintopattern", "displayName": "Restrict which accounts can be used as Microsoft Edge primary accounts", @@ -14224,6 +18964,43 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_runscanwhenidle", + "displayName": "Run scheduled scan when idle", + "options": [ + { + "id": "com.apple.managedclient.preferences_runscanwhenidle_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_runscanwhenidle_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_sameorigintabcaptureallowedbyorigins", + "displayName": "Allow Same Origin Tab capture by these origins", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_sandboxexternalprotocolblocked", + "displayName": "Allow Microsoft Edge to block navigations to external protocols in a sandboxed iframe", + "options": [ + { + "id": "com.apple.managedclient.preferences_sandboxexternalprotocolblocked_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_sandboxexternalprotocolblocked_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_savecookiesonexit", "displayName": "Save cookies when Microsoft Edge closes", @@ -14287,6 +19064,22 @@ "displayName": "Scan results retention", "options": null }, + { + "id": "com.apple.managedclient.preferences_scheduledscan", + "displayName": "Scheduled Scan", + "options": [ + { + "id": "com.apple.managedclient.preferences_scheduledscan_0", + "displayName": "enabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_scheduledscan_1", + "displayName": "disabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_screencaptureallowed", "displayName": "Allow or deny screen capture", @@ -14303,6 +19096,16 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_screencaptureallowedbyorigins", + "displayName": "Allow Desktop, Window, and Tab capture by these origins", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_screencapturewithoutgestureallowedfororigins", + "displayName": "Allow screen capture without prior user gesture", + "options": null + }, { "id": "com.apple.managedclient.preferences_scrolltotextfragmentenabled", "displayName": "Enable scrolling to text specified in URL fragments", @@ -14319,6 +19122,59 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_searchfiltersenabled", + "displayName": "Search Filters Enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_searchfiltersenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_searchfiltersenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_searchforimageenabled", + "displayName": "Search for image enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_searchforimageenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_searchforimageenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_searchinsidebarenabled", + "displayName": "Search in Sidebar enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_searchinsidebarenabled_0", + "displayName": "Enable search in sidebar", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_searchinsidebarenabled_1", + "displayName": "Disable search in sidebar for Kids Mode", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_searchinsidebarenabled_2", + "displayName": "Disable search in sidebar", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_searchsuggestenabled", "displayName": "Enable search suggestions", @@ -14366,6 +19222,11 @@ "displayName": "Block access to sensors on specific sites", "options": null }, + { + "id": "com.apple.managedclient.preferences_serialallowallportsforurls", + "displayName": "Automatically grant sites permission to connect all serial ports", + "options": null + }, { "id": "com.apple.managedclient.preferences_serialaskforurls", "displayName": "Allow the Serial API on specific sites", @@ -14376,6 +19237,38 @@ "displayName": "Block the Serial API on specific sites", "options": null }, + { + "id": "com.apple.managedclient.preferences_sharedarraybufferunrestrictedaccessallowed", + "displayName": "Specifies whether SharedArrayBuffers can be used in a non cross-origin-isolated context", + "options": [ + { + "id": "com.apple.managedclient.preferences_sharedarraybufferunrestrictedaccessallowed_false", + "displayName": "Blocked", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_sharedarraybufferunrestrictedaccessallowed_true", + "displayName": "Allowed", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_sharedlinksenabled", + "displayName": "Show links shared from Microsoft 365 apps in History", + "options": [ + { + "id": "com.apple.managedclient.preferences_sharedlinksenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_sharedlinksenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_sharepointonpremfrontdoorurl", "displayName": "SharePoint Server Front Door URL", @@ -14402,6 +19295,22 @@ "displayName": "SharePoint Server Tenant Name", "options": null }, + { + "id": "com.apple.managedclient.preferences_showacrobatsubscriptionbutton", + "displayName": "Shows button on native PDF viewer in Microsoft Edge that allows users to sign up for Adobe Acrobat subscription", + "options": [ + { + "id": "com.apple.managedclient.preferences_showacrobatsubscriptionbutton_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_showacrobatsubscriptionbutton_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_showcasticonintoolbar", "displayName": "Show the cast icon in the toolbar", @@ -14434,6 +19343,54 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_showdownloadsinsecurewarningsenabled", + "displayName": "Enable insecure download warnings", + "options": [ + { + "id": "com.apple.managedclient.preferences_showdownloadsinsecurewarningsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_showdownloadsinsecurewarningsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_showdownloadstoolbarbutton", + "displayName": "Show Downloads button on the toolbar", + "options": [ + { + "id": "com.apple.managedclient.preferences_showdownloadstoolbarbutton_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_showdownloadstoolbarbutton_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_showhistorythumbnails", + "displayName": "Show thumbnail images for browsing history", + "options": [ + { + "id": "com.apple.managedclient.preferences_showhistorythumbnails_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_showhistorythumbnails_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_showhomebutton", "displayName": "Show Home button on toolbar", @@ -14482,6 +19439,38 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_showpdfdefaultrecommendationsenabled", + "displayName": "Allow notifications to set Microsoft Edge as default PDF reader", + "options": [ + { + "id": "com.apple.managedclient.preferences_showpdfdefaultrecommendationsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_showpdfdefaultrecommendationsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_showrecommendationsenabled", + "displayName": "Allow feature recommendations and browser assistance notifications from Microsoft Edge", + "options": [ + { + "id": "com.apple.managedclient.preferences_showrecommendationsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_showrecommendationsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_showwhatsnewonlaunch", "displayName": "Show Whats New dialog", @@ -14594,14 +19583,40 @@ "id": "com.apple.managedclient.preferences_sleepingtabstimeout_7", "displayName": "12 hours of inactivity", "description": null + }, + { + "id": "com.apple.managedclient.preferences_sleepingtabstimeout_8", + "displayName": "12 hours of inactivity", + "description": null } ] }, + { + "id": "com.apple.managedclient.preferences_smartactionsblocklist", + "displayName": "Block smart actions for a list of services", + "options": null + }, { "id": "com.apple.managedclient.preferences_smartscreenallowlistdomains", "displayName": "Configure the list of domains for which Microsoft Defender SmartScreen won't trigger warnings", "options": null }, + { + "id": "com.apple.managedclient.preferences_smartscreendnsrequestsenabled", + "displayName": "Enable Microsoft Defender SmartScreen DNS requests", + "options": [ + { + "id": "com.apple.managedclient.preferences_smartscreendnsrequestsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_smartscreendnsrequestsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_smartscreenenabled", "displayName": "Configure Microsoft Defender SmartScreen", @@ -14692,6 +19707,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_splitscreenenabled", + "displayName": "Enable split screen feature in Microsoft Edge", + "options": [ + { + "id": "com.apple.managedclient.preferences_splitscreenenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_splitscreenenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_sslerroroverrideallowed", "displayName": "Allow users to proceed from the HTTPS warning page", @@ -14708,6 +19739,11 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_sslerroroverrideallowedfororigins", + "displayName": "Allow users to proceed from the HTTPS warning page for specific origins", + "options": null + }, { "id": "com.apple.managedclient.preferences_sslversionmin", "displayName": "Minimum TLS version enabled", @@ -14793,6 +19829,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_switchintranetsitestoworkprofile", + "displayName": "Switch intranet sites to a work profile", + "options": [ + { + "id": "com.apple.managedclient.preferences_switchintranetsitestoworkprofile_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_switchintranetsitestoworkprofile_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_syncdisabled", "displayName": "Disable synchronization of data using Microsoft sync services", @@ -14830,6 +19882,11 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_tabcaptureallowedbyorigins", + "displayName": "Allow Tab capture by these origins", + "options": null + }, { "id": "com.apple.managedclient.preferences_tabfreezingenabled", "displayName": "Allow freezing of background tabs", @@ -14846,6 +19903,22 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_tabservicesenabled", + "displayName": "Enable tab organization suggestions", + "options": [ + { + "id": "com.apple.managedclient.preferences_tabservicesenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_tabservicesenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_tags", "displayName": "Device tags", @@ -14897,6 +19970,27 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_textpredictionenabled", + "displayName": "Text prediction enabled by default", + "options": [ + { + "id": "com.apple.managedclient.preferences_textpredictionenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_textpredictionenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_thirdpartystoragepartitioningblockedfororigins", + "displayName": "Block third-party storage partitioning for these origins", + "options": null + }, { "id": "com.apple.managedclient.preferences_threattypesettings", "displayName": "Threat type settings", @@ -15039,6 +20133,43 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_typosquattingallowlistdomains", + "displayName": "Configure the list of domains for which Edge Website Typo Protection won't trigger warnings", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_typosquattingcheckerenabled", + "displayName": "Configure Edge Website Typo Protection", + "options": [ + { + "id": "com.apple.managedclient.preferences_typosquattingcheckerenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_typosquattingcheckerenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_unthrottlednestedtimeoutenabled", + "displayName": "JavaScript setTimeout will not be clamped until a higher nesting threshold is set (deprecated)", + "options": [ + { + "id": "com.apple.managedclient.preferences_unthrottlednestedtimeoutenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_unthrottlednestedtimeoutenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_updatecache", "displayName": "Update cache server", @@ -15059,6 +20190,22 @@ "displayName": "Number of minutes for the final countdown timer", "options": null }, + { + "id": "com.apple.managedclient.preferences_updatepolicyoverride", + "displayName": "Specifies how Microsoft Edge Update handles available updates from Microsoft Edge", + "options": [ + { + "id": "com.apple.managedclient.preferences_updatepolicyoverride_0", + "displayName": "silent-only - Updates are applied only when they're found by the periodic update check.", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_updatepolicyoverride_1", + "displayName": "only - Updates are applied only when the user runs a manual update check. (Not all apps provide an interface for this option.)", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_updateroptimization", "displayName": "Updater optimization technique", @@ -15085,6 +20232,22 @@ "displayName": "Set maximum upload throughput", "options": null }, + { + "id": "com.apple.managedclient.preferences_uploadfromphoneenabled", + "displayName": "Enable upload files from mobile in Microsoft Edge desktop", + "options": [ + { + "id": "com.apple.managedclient.preferences_uploadfromphoneenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_uploadfromphoneenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_urlallowlist", "displayName": "Define a list of allowed URLs", @@ -15111,6 +20274,27 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_useragentreduction", + "displayName": "Enable or disable the User-Agent Reduction", + "options": [ + { + "id": "com.apple.managedclient.preferences_useragentreduction_0", + "displayName": "User-Agent reduction will be controllable via Experimentation", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_useragentreduction_1", + "displayName": "User-Agent reduction diabled, and not enabled by Experimentation", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_useragentreduction_2", + "displayName": "User-Agent reduction will be enabled for all origins", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_userdatadir", "displayName": "Set the user data directory", @@ -15306,6 +20490,38 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_visualsearchenabled", + "displayName": "Visual search enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_visualsearchenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_visualsearchenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_walletdonationenabled", + "displayName": "Wallet Donation Enabled", + "options": [ + { + "id": "com.apple.managedclient.preferences_walletdonationenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_walletdonationenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.managedclient.preferences_weather_update_automatically", "displayName": "Disable automatic updating of weather location", @@ -15322,6 +20538,48 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_webappinstallforcelist", + "displayName": "Web App Install Force List", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_webappinstallforcelist_item_create_desktop_shortcut", + "displayName": "Create desktop shortcut", + "options": [ + { + "id": "com.apple.managedclient.preferences_webappinstallforcelist_item_create_desktop_shortcut_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_webappinstallforcelist_item_create_desktop_shortcut_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_webappinstallforcelist_item_default_launch_container", + "displayName": "Default launch container", + "options": [ + { + "id": "com.apple.managedclient.preferences_webappinstallforcelist_item_default_launch_container_0", + "displayName": "tab", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_webappinstallforcelist_item_default_launch_container_1", + "displayName": "window", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_webappinstallforcelist_item_url", + "displayName": "URL", + "options": null + }, { "id": "com.apple.managedclient.preferences_webcaptureenabled", "displayName": "Enable web capture feature in Microsoft Edge", @@ -15338,6 +20596,53 @@ } ] }, + { + "id": "com.apple.managedclient.preferences_webcomponentsv0enabled", + "displayName": "Re-enable Web Components v0 API until M84.", + "options": [ + { + "id": "com.apple.managedclient.preferences_webcomponentsv0enabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_webcomponentsv0enabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_webdriveroverridesincompatiblepolicies", + "displayName": "Allow WebDriver to Override Incompatible Policies", + "options": [ + { + "id": "com.apple.managedclient.preferences_webdriveroverridesincompatiblepolicies_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_webdriveroverridesincompatiblepolicies_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.managedclient.preferences_webhidallowalldevicesforurls", + "displayName": "Allow listed sites to connect to any HID device", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_webhidaskforurls", + "displayName": "Allow the WebHID API on these sites", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_webhidblockedforurls", + "displayName": "Block the WebHID API on these sites", + "options": null + }, { "id": "com.apple.managedclient.preferences_webrtcallowlegacytlsprotocols", "displayName": "Allow legacy TLS/DTLS downgrade in WebRTC", @@ -15401,331 +20706,110 @@ "options": null }, { - "id": "com.apple.managedclient.preferences_wpadquickcheckenabled", - "displayName": "Set WPAD optimization", + "id": "com.apple.managedclient.preferences_weeklyconfiguration", + "displayName": "Weekly scheduled scan configuration", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_weeklyconfiguration_dayofweek", + "displayName": "Day of week", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_weeklyconfiguration_scantype", + "displayName": "Scan type", "options": [ { - "id": "com.apple.managedclient.preferences_wpadquickcheckenabled_false", - "displayName": "Disabled", + "id": "com.apple.managedclient.preferences_weeklyconfiguration_scantype_0", + "displayName": "quick", "description": null }, { - "id": "com.apple.managedclient.preferences_wpadquickcheckenabled_true", - "displayName": "Enabled", + "id": "com.apple.managedclient.preferences_weeklyconfiguration_scantype_1", + "displayName": "full", "description": null } ] }, { - "id": "com.apple.mcx.filevault2_com.apple.mcx.filevault2", - "displayName": "Top Level Setting Group Collection", + "id": "com.apple.managedclient.preferences_weeklyconfiguration_timeofday", + "displayName": "Time of day", "options": null }, { - "id": "com.apple.mcx.filevault2_defer", - "displayName": "Defer", - "options": { - "id": "com.apple.mcx.filevault2_defer_true", - "displayName": "Enabled", - "description": null - } + "id": "com.apple.managedclient.preferences_windowcaptureallowedbyorigins", + "displayName": "Allow Window and Tab capture by these origins", + "options": null }, { - "id": "com.apple.mcx.filevault2_deferdontaskatuserlogout", - "displayName": "Defer Dont Ask At User Logout", + "id": "com.apple.managedclient.preferences_windowmanagementallowedforurls", + "displayName": "Allow Window Management permission on specified sites", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_windowmanagementblockedforurls", + "displayName": "Block Window Management permission on specified sites", + "options": null + }, + { + "id": "com.apple.managedclient.preferences_wpadquickcheckenabled", + "displayName": "Set WPAD optimization", "options": [ { - "id": "com.apple.mcx.filevault2_deferdontaskatuserlogout_false", + "id": "com.apple.managedclient.preferences_wpadquickcheckenabled_false", "displayName": "Disabled", "description": null }, { - "id": "com.apple.mcx.filevault2_deferdontaskatuserlogout_true", + "id": "com.apple.managedclient.preferences_wpadquickcheckenabled_true", "displayName": "Enabled", "description": null } ] }, { - "id": "com.apple.mcx.filevault2_deferforceatuserloginmaxbypassattempts", - "displayName": "Defer Force At User Login Max Bypass Attempts", - "options": null + "id": "com.apple.managedclient.preferences_zstdcontentencodingenabled", + "displayName": "Enable zstd content encoding support", + "options": [ + { + "id": "com.apple.managedclient.preferences_zstdcontentencodingenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.managedclient.preferences_zstdcontentencodingenabled_true", + "displayName": "Enabled", + "description": null + } + ] }, { - "id": "com.apple.mcx.filevault2_enable", - "displayName": "Enable", + "id": "com.apple.managedclient.preferences_aadwebsitessousingthisprofileenabled", + "displayName": "Single sign-on for work or school sites using this profile enabled", "options": [ { - "id": "com.apple.mcx.filevault2_enable_0", - "displayName": "On", + "id": "com.apple.managedclient.preferences_aadwebsitessousingthisprofileenabled_false", + "displayName": "Disabled", "description": null }, { - "id": "com.apple.mcx.filevault2_enable_1", - "displayName": "Off", + "id": "com.apple.managedclient.preferences_aadwebsitessousingthisprofileenabled_true", + "displayName": "Enabled", "description": null } ] }, { - "id": "com.apple.mcx.filevault2_forceenableinsetupassistant", - "displayName": "Force Enable In Setup Assistant", + "id": "com.apple.mcx_cachedaccounts.askforsecuretokenauthbypass", + "displayName": "Ask For Secure Token Auth Bypass", "options": [ { - "id": "com.apple.mcx.filevault2_forceenableinsetupassistant_false", + "id": "com.apple.mcx_cachedaccounts.askforsecuretokenauthbypass_false", "displayName": "False", "description": null }, { - "id": "com.apple.mcx.filevault2_forceenableinsetupassistant_true", - "displayName": "True", - "description": null - } - ] - }, - { - "id": "com.apple.mcx.filevault2_outputpath", - "displayName": "Output Path", - "options": null - }, - { - "id": "com.apple.mcx.filevault2_password", - "displayName": "Password", - "options": null - }, - { - "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths", - "displayName": "Recovery Key Rotation In Months", - "options": [ - { - "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_0", - "displayName": "Not configured", - "description": null - }, - { - "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_1", - "displayName": "1 month", - "description": null - }, - { - "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_2", - "displayName": "2 months", - "description": null - }, - { - "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_3", - "displayName": "3 months", - "description": null - }, - { - "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_4", - "displayName": "4 months", - "description": null - }, - { - "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_5", - "displayName": "5 months", - "description": null - }, - { - "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_6", - "displayName": "6 months", - "description": null - }, - { - "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_7", - "displayName": "7 months", - "description": null - }, - { - "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_8", - "displayName": "8 months", - "description": null - }, - { - "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_9", - "displayName": "9 months", - "description": null - }, - { - "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_10", - "displayName": "10 months", - "description": null - }, - { - "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_11", - "displayName": "11 months", - "description": null - }, - { - "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_12", - "displayName": "12 months", - "description": null - } - ] - }, - { - "id": "com.apple.mcx.filevault2_showrecoverykey", - "displayName": "Show Recovery Key", - "options": [ - { - "id": "com.apple.mcx.filevault2_showrecoverykey_false", - "displayName": "Disabled", - "description": null - }, - { - "id": "com.apple.mcx.filevault2_showrecoverykey_true", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "com.apple.mcx.filevault2_usekeychain", - "displayName": "Use Keychain", - "options": [ - { - "id": "com.apple.mcx.filevault2_usekeychain_false", - "displayName": "Disabled", - "description": null - }, - { - "id": "com.apple.mcx.filevault2_usekeychain_true", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "com.apple.mcx.filevault2_userecoverykey", - "displayName": "Use Recovery Key", - "options": { - "id": "com.apple.mcx.filevault2_userecoverykey_true", - "displayName": "Enabled", - "description": null - } - }, - { - "id": "com.apple.mcx.filevault2_userentersmissinginfo", - "displayName": "User Enters Missing Info", - "options": [ - { - "id": "com.apple.mcx.filevault2_userentersmissinginfo_false", - "displayName": "False", - "description": null - }, - { - "id": "com.apple.mcx.filevault2_userentersmissinginfo_true", - "displayName": "True", - "description": null - } - ] - }, - { - "id": "com.apple.mcx.filevault2_username", - "displayName": "Username", - "options": null - }, - { - "id": "com.apple.mcx.timemachine_autobackup", - "displayName": "Auto Backup", - "options": [ - { - "id": "com.apple.mcx.timemachine_autobackup_false", - "displayName": "False", - "description": null - }, - { - "id": "com.apple.mcx.timemachine_autobackup_true", - "displayName": "True", - "description": null - } - ] - }, - { - "id": "com.apple.mcx.timemachine_backupallvolumes", - "displayName": "Backup All Volumes", - "options": [ - { - "id": "com.apple.mcx.timemachine_backupallvolumes_false", - "displayName": "False", - "description": null - }, - { - "id": "com.apple.mcx.timemachine_backupallvolumes_true", - "displayName": "True", - "description": null - } - ] - }, - { - "id": "com.apple.mcx.timemachine_backupdesturl", - "displayName": "Backup Destination URL", - "options": null - }, - { - "id": "com.apple.mcx.timemachine_backupsizemb", - "displayName": "Backup Size MB", - "options": null - }, - { - "id": "com.apple.mcx.timemachine_backupskipsys", - "displayName": "Backup Skip System", - "options": [ - { - "id": "com.apple.mcx.timemachine_backupskipsys_false", - "displayName": "False", - "description": null - }, - { - "id": "com.apple.mcx.timemachine_backupskipsys_true", - "displayName": "True", - "description": null - } - ] - }, - { - "id": "com.apple.mcx.timemachine_basepaths", - "displayName": "Base Paths", - "options": null - }, - { - "id": "com.apple.mcx.timemachine_com.apple.mcx.timemachine", - "displayName": "Top Level Setting Group Collection", - "options": null - }, - { - "id": "com.apple.mcx.timemachine_mobilebackups", - "displayName": "Mobile Backups", - "options": [ - { - "id": "com.apple.mcx.timemachine_mobilebackups_false", - "displayName": "False", - "description": null - }, - { - "id": "com.apple.mcx.timemachine_mobilebackups_true", - "displayName": "True", - "description": null - } - ] - }, - { - "id": "com.apple.mcx.timemachine_skippaths", - "displayName": "Skip Paths", - "options": null - }, - { - "id": "com.apple.mcx_cachedaccounts.askforsecuretokenauthbypass", - "displayName": "Ask For Secure Token Auth Bypass", - "options": [ - { - "id": "com.apple.mcx_cachedaccounts.askforsecuretokenauthbypass_false", - "displayName": "False", - "description": null - }, - { - "id": "com.apple.mcx_cachedaccounts.askforsecuretokenauthbypass_true", + "id": "com.apple.mcx_cachedaccounts.askforsecuretokenauthbypass_true", "displayName": "True", "description": null } @@ -16394,6 +21478,305 @@ "displayName": "Time Zone", "options": null }, + { + "id": "com.apple.mcx.filevault2_com.apple.mcx.filevault2", + "displayName": "Top Level Setting Group Collection", + "options": null + }, + { + "id": "com.apple.mcx.filevault2_defer", + "displayName": "Defer", + "options": { + "id": "com.apple.mcx.filevault2_defer_true", + "displayName": "Enabled", + "description": null + } + }, + { + "id": "com.apple.mcx.filevault2_deferdontaskatuserlogout", + "displayName": "Defer Dont Ask At User Logout", + "options": [ + { + "id": "com.apple.mcx.filevault2_deferdontaskatuserlogout_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_deferdontaskatuserlogout_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.mcx.filevault2_deferforceatuserloginmaxbypassattempts", + "displayName": "Defer Force At User Login Max Bypass Attempts", + "options": null + }, + { + "id": "com.apple.mcx.filevault2_enable", + "displayName": "Enable", + "options": [ + { + "id": "com.apple.mcx.filevault2_enable_0", + "displayName": "On", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_enable_1", + "displayName": "Off", + "description": null + } + ] + }, + { + "id": "com.apple.mcx.filevault2_forceenableinsetupassistant", + "displayName": "Force Enable In Setup Assistant", + "options": [ + { + "id": "com.apple.mcx.filevault2_forceenableinsetupassistant_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_forceenableinsetupassistant_true", + "displayName": "True", + "description": null + } + ] + }, + { + "id": "com.apple.mcx.filevault2_outputpath", + "displayName": "Output Path", + "options": null + }, + { + "id": "com.apple.mcx.filevault2_password", + "displayName": "Password", + "options": null + }, + { + "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths", + "displayName": "Recovery Key Rotation In Months", + "options": [ + { + "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_0", + "displayName": "Not configured", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_1", + "displayName": "1 month", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_2", + "displayName": "2 months", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_3", + "displayName": "3 months", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_4", + "displayName": "4 months", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_5", + "displayName": "5 months", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_6", + "displayName": "6 months", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_7", + "displayName": "7 months", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_8", + "displayName": "8 months", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_9", + "displayName": "9 months", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_10", + "displayName": "10 months", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_11", + "displayName": "11 months", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_recoverykeyrotationinmonths_12", + "displayName": "12 months", + "description": null + } + ] + }, + { + "id": "com.apple.mcx.filevault2_showrecoverykey", + "displayName": "Show Recovery Key", + "options": [ + { + "id": "com.apple.mcx.filevault2_showrecoverykey_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_showrecoverykey_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.mcx.filevault2_usekeychain", + "displayName": "Use Keychain", + "options": [ + { + "id": "com.apple.mcx.filevault2_usekeychain_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_usekeychain_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.apple.mcx.filevault2_userecoverykey", + "displayName": "Use Recovery Key", + "options": { + "id": "com.apple.mcx.filevault2_userecoverykey_true", + "displayName": "Enabled", + "description": null + } + }, + { + "id": "com.apple.mcx.filevault2_userentersmissinginfo", + "displayName": "User Enters Missing Info", + "options": [ + { + "id": "com.apple.mcx.filevault2_userentersmissinginfo_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.mcx.filevault2_userentersmissinginfo_true", + "displayName": "True", + "description": null + } + ] + }, + { + "id": "com.apple.mcx.filevault2_username", + "displayName": "Username", + "options": null + }, + { + "id": "com.apple.mcx.timemachine_autobackup", + "displayName": "Auto Backup", + "options": [ + { + "id": "com.apple.mcx.timemachine_autobackup_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.mcx.timemachine_autobackup_true", + "displayName": "True", + "description": null + } + ] + }, + { + "id": "com.apple.mcx.timemachine_backupallvolumes", + "displayName": "Backup All Volumes", + "options": [ + { + "id": "com.apple.mcx.timemachine_backupallvolumes_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.mcx.timemachine_backupallvolumes_true", + "displayName": "True", + "description": null + } + ] + }, + { + "id": "com.apple.mcx.timemachine_backupdesturl", + "displayName": "Backup Destination URL", + "options": null + }, + { + "id": "com.apple.mcx.timemachine_backupsizemb", + "displayName": "Backup Size MB", + "options": null + }, + { + "id": "com.apple.mcx.timemachine_backupskipsys", + "displayName": "Backup Skip System", + "options": [ + { + "id": "com.apple.mcx.timemachine_backupskipsys_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.mcx.timemachine_backupskipsys_true", + "displayName": "True", + "description": null + } + ] + }, + { + "id": "com.apple.mcx.timemachine_basepaths", + "displayName": "Base Paths", + "options": null + }, + { + "id": "com.apple.mcx.timemachine_com.apple.mcx.timemachine", + "displayName": "Top Level Setting Group Collection", + "options": null + }, + { + "id": "com.apple.mcx.timemachine_mobilebackups", + "displayName": "Mobile Backups", + "options": [ + { + "id": "com.apple.mcx.timemachine_mobilebackups_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.mcx.timemachine_mobilebackups_true", + "displayName": "True", + "description": null + } + ] + }, + { + "id": "com.apple.mcx.timemachine_skippaths", + "displayName": "Skip Paths", + "options": null + }, { "id": "com.apple.mcxmenuextras_airport.menu", "displayName": "AirPort", @@ -17542,7 +22925,7 @@ }, { "id": "com.apple.proxy.http.global_proxypacurl", - "displayName": "Proxy PAC URL (Deprecated)", + "displayName": "Proxy PAC URL", "options": null }, { @@ -17552,12 +22935,12 @@ }, { "id": "com.apple.proxy.http.global_proxyserver", - "displayName": "Proxy Server (Deprecated)", + "displayName": "Proxy Server", "options": null }, { "id": "com.apple.proxy.http.global_proxyserverport", - "displayName": "Proxy Server Port (Deprecated)", + "displayName": "Proxy Server Port", "options": null }, { @@ -17581,26 +22964,6 @@ "displayName": "Proxy Username", "options": null }, - { - "id": "com.apple.screensaver.user_com.apple.screensaver.user", - "displayName": "Top Level Setting Group Collection", - "options": null - }, - { - "id": "com.apple.screensaver.user_idletime", - "displayName": "Idle Time", - "options": null - }, - { - "id": "com.apple.screensaver.user_modulename", - "displayName": "Module Name", - "options": null - }, - { - "id": "com.apple.screensaver.user_modulepath", - "displayName": "Module Path", - "options": null - }, { "id": "com.apple.screensaver_askforpassword", "displayName": "Ask For Password", @@ -17642,6 +23005,26 @@ "displayName": "Module Name", "options": null }, + { + "id": "com.apple.screensaver.user_com.apple.screensaver.user", + "displayName": "Top Level Setting Group Collection", + "options": null + }, + { + "id": "com.apple.screensaver.user_idletime", + "displayName": "Idle Time", + "options": null + }, + { + "id": "com.apple.screensaver.user_modulename", + "displayName": "Module Name", + "options": null + }, + { + "id": "com.apple.screensaver.user_modulepath", + "displayName": "Module Path", + "options": null + }, { "id": "com.apple.security.fderecoverykeyescrow_com.apple.security.fderecoverykeyescrow", "displayName": "Top Level Setting Group Collection", @@ -17989,7 +23372,7 @@ }, { "id": "com.apple.softwareupdate_allowprereleaseinstallation", - "displayName": "Allow Pre Release Installation", + "displayName": "Allow Pre Release Installation (Deprecated)", "options": [ { "id": "com.apple.softwareupdate_allowprereleaseinstallation_false", @@ -18005,7 +23388,7 @@ }, { "id": "com.apple.softwareupdate_automaticallyinstallappupdates", - "displayName": "Automatically Install App Updates", + "displayName": "Automatically Install App Updates (Deprecated)", "options": [ { "id": "com.apple.softwareupdate_automaticallyinstallappupdates_false", @@ -18021,7 +23404,7 @@ }, { "id": "com.apple.softwareupdate_automaticallyinstallmacosupdates", - "displayName": "Automatically Install Mac OS Updates", + "displayName": "Automatically Install Mac OS Updates (Deprecated)", "options": [ { "id": "com.apple.softwareupdate_automaticallyinstallmacosupdates_false", @@ -18037,7 +23420,7 @@ }, { "id": "com.apple.softwareupdate_automaticcheckenabled", - "displayName": "Automatic Check Enabled", + "displayName": "Automatic Check Enabled (Deprecated)", "options": [ { "id": "com.apple.softwareupdate_automaticcheckenabled_false", @@ -18053,7 +23436,7 @@ }, { "id": "com.apple.softwareupdate_automaticdownload", - "displayName": "Automatic Download", + "displayName": "Automatic Download (Deprecated)", "options": [ { "id": "com.apple.softwareupdate_automaticdownload_false", @@ -18074,7 +23457,7 @@ }, { "id": "com.apple.softwareupdate_configdatainstall", - "displayName": "Config Data Install", + "displayName": "Config Data Install (Deprecated)", "options": [ { "id": "com.apple.softwareupdate_configdatainstall_false", @@ -18090,7 +23473,7 @@ }, { "id": "com.apple.softwareupdate_criticalupdateinstall", - "displayName": "Critical Update Install", + "displayName": "Critical Update Install (Deprecated)", "options": [ { "id": "com.apple.softwareupdate_criticalupdateinstall_false", @@ -18106,7 +23489,7 @@ }, { "id": "com.apple.softwareupdate_restrict-software-update-require-admin-to-install", - "displayName": "Restrict Software Update Require Admin To Install", + "displayName": "Restrict Software Update Require Admin To Install (Deprecated)", "options": [ { "id": "com.apple.softwareupdate_restrict-software-update-require-admin-to-install_false", @@ -18161,6 +23544,107 @@ } ] }, + { + "id": "com.apple.system-extension-policy_allowedsystemextensions", + "displayName": "Allowed System Extensions", + "options": null + }, + { + "id": "com.apple.system-extension-policy_allowedsystemextensions_generickey", + "displayName": "Allowed System Extensions", + "options": null + }, + { + "id": "com.apple.system-extension-policy_allowedsystemextensions_generickey_keytobereplaced", + "displayName": "Team Identifier", + "options": null + }, + { + "id": "com.apple.system-extension-policy_allowedsystemextensiontypes", + "displayName": "Allowed System Extension Types", + "options": null + }, + { + "id": "com.apple.system-extension-policy_allowedsystemextensiontypes_generickey", + "displayName": "Allowed System Extension Types", + "options": null + }, + { + "id": "com.apple.system-extension-policy_allowedsystemextensiontypes_generickey_keytobereplaced", + "displayName": "Team Identifier", + "options": null + }, + { + "id": "com.apple.system-extension-policy_allowedteamidentifiers", + "displayName": "Allowed Team Identifiers", + "options": null + }, + { + "id": "com.apple.system-extension-policy_allowuseroverrides", + "displayName": "Allow User Overrides", + "options": [ + { + "id": "com.apple.system-extension-policy_allowuseroverrides_false", + "displayName": "False", + "description": null + }, + { + "id": "com.apple.system-extension-policy_allowuseroverrides_true", + "displayName": "True", + "description": null + } + ] + }, + { + "id": "com.apple.system-extension-policy_com.apple.system-extension-policy", + "displayName": "Top Level Setting Group Collection", + "options": null + }, + { + "id": "com.apple.system-extension-policy_nonremovablefromuisystemextensions", + "displayName": "Non Removable From UI System Extensions", + "options": null + }, + { + "id": "com.apple.system-extension-policy_nonremovablefromuisystemextensions_generickey", + "displayName": "ANY", + "options": null + }, + { + "id": "com.apple.system-extension-policy_nonremovablefromuisystemextensions_generickey_keytobereplaced", + "displayName": "Non Removable From UI System Extensions", + "options": null + }, + { + "id": "com.apple.system-extension-policy_nonremovablesystemextensions", + "displayName": "Non Removable System Extensions", + "options": null + }, + { + "id": "com.apple.system-extension-policy_nonremovablesystemextensions_generickey", + "displayName": "ANY", + "options": null + }, + { + "id": "com.apple.system-extension-policy_nonremovablesystemextensions_generickey_keytobereplaced", + "displayName": "Non Removable System Extensions", + "options": null + }, + { + "id": "com.apple.system-extension-policy_removablesystemextensions", + "displayName": "Removable System Extensions", + "options": null + }, + { + "id": "com.apple.system-extension-policy_removablesystemextensions_generickey", + "displayName": "Removable System Extensions", + "options": null + }, + { + "id": "com.apple.system-extension-policy_removablesystemextensions_generickey_keytobereplaced", + "displayName": "Team Identifier", + "options": null + }, { "id": "com.apple.system.logging_com.apple.system.logging", "displayName": "Top Level Setting Group Collection", @@ -18427,107 +23911,6 @@ "displayName": "SOCKS Proxy", "options": null }, - { - "id": "com.apple.system-extension-policy_allowedsystemextensions", - "displayName": "Allowed System Extensions", - "options": null - }, - { - "id": "com.apple.system-extension-policy_allowedsystemextensions_generickey", - "displayName": "Allowed System Extensions", - "options": null - }, - { - "id": "com.apple.system-extension-policy_allowedsystemextensions_generickey_keytobereplaced", - "displayName": "Team Identifier", - "options": null - }, - { - "id": "com.apple.system-extension-policy_allowedsystemextensiontypes", - "displayName": "Allowed System Extension Types", - "options": null - }, - { - "id": "com.apple.system-extension-policy_allowedsystemextensiontypes_generickey", - "displayName": "Allowed System Extension Types", - "options": null - }, - { - "id": "com.apple.system-extension-policy_allowedsystemextensiontypes_generickey_keytobereplaced", - "displayName": "Team Identifier", - "options": null - }, - { - "id": "com.apple.system-extension-policy_allowedteamidentifiers", - "displayName": "Allowed Team Identifiers", - "options": null - }, - { - "id": "com.apple.system-extension-policy_allowuseroverrides", - "displayName": "Allow User Overrides", - "options": [ - { - "id": "com.apple.system-extension-policy_allowuseroverrides_false", - "displayName": "False", - "description": null - }, - { - "id": "com.apple.system-extension-policy_allowuseroverrides_true", - "displayName": "True", - "description": null - } - ] - }, - { - "id": "com.apple.system-extension-policy_com.apple.system-extension-policy", - "displayName": "Top Level Setting Group Collection", - "options": null - }, - { - "id": "com.apple.system-extension-policy_nonremovablefromuisystemextensions", - "displayName": "Non Removable From UI System Extensions", - "options": null - }, - { - "id": "com.apple.system-extension-policy_nonremovablefromuisystemextensions_generickey", - "displayName": "ANY", - "options": null - }, - { - "id": "com.apple.system-extension-policy_nonremovablefromuisystemextensions_generickey_keytobereplaced", - "displayName": "Non Removable From UI System Extensions", - "options": null - }, - { - "id": "com.apple.system-extension-policy_nonremovablesystemextensions", - "displayName": "Non Removable System Extensions", - "options": null - }, - { - "id": "com.apple.system-extension-policy_nonremovablesystemextensions_generickey", - "displayName": "ANY", - "options": null - }, - { - "id": "com.apple.system-extension-policy_nonremovablesystemextensions_generickey_keytobereplaced", - "displayName": "Non Removable System Extensions", - "options": null - }, - { - "id": "com.apple.system-extension-policy_removablesystemextensions", - "displayName": "Removable System Extensions", - "options": null - }, - { - "id": "com.apple.system-extension-policy_removablesystemextensions_generickey", - "displayName": "Removable System Extensions", - "options": null - }, - { - "id": "com.apple.system-extension-policy_removablesystemextensions_generickey_keytobereplaced", - "displayName": "Team Identifier", - "options": null - }, { "id": "com.apple.systempolicy.control_allowidentifieddevelopers", "displayName": "Allow Identified Developers", @@ -21141,6 +26524,22 @@ "displayName": "Plugin Bundle ID", "options": null }, + { + "id": "com.apple.webcontent-filter_safarihistoryretentionenabled", + "displayName": "Safari History Retention Enabled", + "options": [ + { + "id": "com.apple.webcontent-filter_safarihistoryretentionenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.apple.webcontent-filter_safarihistoryretentionenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.apple.webcontent-filter_serveraddress", "displayName": "Server Address", @@ -21156,6 +26555,40 @@ "displayName": "User Name", "options": null }, + { + "id": "com.apple.xsan_com.apple.xsan", + "displayName": "Top Level Setting Group Collection", + "options": null + }, + { + "id": "com.apple.xsan_fsnameservers", + "displayName": "FS Name Servers", + "options": null + }, + { + "id": "com.apple.xsan_sanauthmethod", + "displayName": "San Auth Method", + "options": { + "id": "com.apple.xsan_sanauthmethod_0", + "displayName": "auth_secret", + "description": null + } + }, + { + "id": "com.apple.xsan_sanconfigurls", + "displayName": "San Config URLs", + "options": null + }, + { + "id": "com.apple.xsan_sanname", + "displayName": "San Name", + "options": null + }, + { + "id": "com.apple.xsan_sharedsecret", + "displayName": "Shared Secret", + "options": null + }, { "id": "com.apple.xsan.preferences_com.apple.xsan.preferences", "displayName": "Top Level Setting Group Collection", @@ -21198,38 +26631,20 @@ ] }, { - "id": "com.apple.xsan_com.apple.xsan", - "displayName": "Top Level Setting Group Collection", - "options": null - }, - { - "id": "com.apple.xsan_fsnameservers", - "displayName": "FS Name Servers", - "options": null - }, - { - "id": "com.apple.xsan_sanauthmethod", - "displayName": "San Auth Method", - "options": { - "id": "com.apple.xsan_sanauthmethod_0", - "displayName": "auth_secret", - "description": null - } - }, - { - "id": "com.apple.xsan_sanconfigurls", - "displayName": "San Config URLs", - "options": null - }, - { - "id": "com.apple.xsan_sanname", - "displayName": "San Name", - "options": null - }, - { - "id": "com.apple.xsan_sharedsecret", - "displayName": "Shared Secret", - "options": null + "id": "com.microsoft.edge.mamedgeappconfigsettings.accesscontrolallowmethodsincorspreflightspecconformant", + "displayName": "Make Access-Control-Allow-Methods matching in CORS preflight spec conformant", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.accesscontrolallowmethodsincorspreflightspecconformant_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.accesscontrolallowmethodsincorspreflightspecconformant_true", + "displayName": "Enabled", + "description": null + } + ] }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.accessibilityimagelabelsenabled", @@ -21247,6 +26662,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.additionalsearchboxenabled", + "displayName": "Enable additional search box in browser", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.additionalsearchboxenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.additionalsearchboxenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.addressbareditingenabled", "displayName": "Configure address bar editing", @@ -21265,7 +26696,7 @@ }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.addressbarmicrosoftsearchinbingproviderenabled", - "displayName": "Enable Microsoft Search in Bing suggestions in the address bar", + "displayName": "Enable Microsoft Search in Bing suggestions in the address bar (Obsolete)", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.addressbarmicrosoftsearchinbingproviderenabled_false", @@ -21279,6 +26710,38 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.addressbartrendingsuggestenabled", + "displayName": "Enable Microsoft Bing trending suggestions in the address bar", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.addressbartrendingsuggestenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.addressbartrendingsuggestenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.addressbarworksearchresultsenabled", + "displayName": "Enable Work Search suggestions in the address bar", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.addressbarworksearchresultsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.addressbarworksearchresultsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.adssettingforintrusiveadssites", "displayName": "Ads setting for sites with intrusive ads", @@ -21311,6 +26774,38 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.aigenthemesenabled", + "displayName": "Enables DALL-E themes generation", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.aigenthemesenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.aigenthemesenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.allowbackforwardcacheforcachecontrolnostorepageenabled", + "displayName": "Allow pages with Cache-Control: no-store header to enter back/forward cache", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.allowbackforwardcacheforcachecontrolnostorepageenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.allowbackforwardcacheforcachecontrolnostorepageenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.allowdeletingbrowserhistory", "displayName": "Enable deleting browser and download history", @@ -21334,7 +26829,7 @@ }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.allowgamesmenu", - "displayName": "Allow users to access the games menu", + "displayName": "Allow users to access the games menu (Deprecated)", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.allowgamesmenu_false", @@ -21396,11 +26891,43 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.allowsystemnotifications", + "displayName": "Allows system notifications", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.allowsystemnotifications_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.allowsystemnotifications_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.allowtrackingforurls", "displayName": "Configure tracking prevention exceptions for specific sites", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.allowwebauthnwithbrokentlscerts", + "displayName": "Allow Web Authentication requests on sites with broken TLS certificates.", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.allowwebauthnwithbrokentlscerts_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.allowwebauthnwithbrokentlscerts_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.alternateerrorpagesenabled", "displayName": "Suggest similar pages when a webpage can't be found", @@ -21486,6 +27013,38 @@ "displayName": "Sites that can access audio capture devices without requesting permission", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.autodiscardsleepingtabsenabled", + "displayName": "Configure auto discard sleeping tabs", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.autodiscardsleepingtabsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.autodiscardsleepingtabsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.autodiscardsleepingtabsenabled_recommended", + "displayName": "Configure auto discard sleeping tabs (users can override)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.autodiscardsleepingtabsenabled_recommended_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.autodiscardsleepingtabsenabled_recommended_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.autofilladdressenabled", "displayName": "Enable AutoFill for addresses", @@ -21613,9 +27172,19 @@ "displayName": "Block multiple automatic downloads in quick succession on specific sites", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.automaticfullscreenallowedforurls", + "displayName": "Allow automatic full screen on specified sites", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.automaticfullscreenblockedforurls", + "displayName": "Block automatic full screen on specified sites", + "options": null + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.automatichttpsdefault", - "displayName": "Configure Automatic HTTPS", + "displayName": "Configure Automatic HTTPS (Obsolete)", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.automatichttpsdefault_disableautomatichttps", @@ -21636,7 +27205,7 @@ }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.automatichttpsdefault_recommended", - "displayName": "Configure Automatic HTTPS (users can override)", + "displayName": "Configure Automatic HTTPS (Obsolete) (users can override)", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.automatichttpsdefault_recommended_disableautomatichttps", @@ -21707,6 +27276,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.beforeunloadeventcancelbypreventdefaultenabled", + "displayName": "Control the behavior for the cancel dialog produced by the beforeunload event (Obsolete)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.beforeunloadeventcancelbypreventdefaultenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.beforeunloadeventcancelbypreventdefaultenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.blockexternalextensions", "displayName": "Blocks external extensions from being installed", @@ -21755,6 +27340,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.blocktruncatedcookies", + "displayName": "Block truncated cookies (Obsolete)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.blocktruncatedcookies_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.blocktruncatedcookies_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.browsernetworktimequeriesenabled", "displayName": "Allow queries to a Browser Network Time service", @@ -21776,6 +27377,79 @@ "displayName": "Browsing Data Lifetime Settings", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.builtinaiapisenabled", + "displayName": "Allow pages to use the built-in AI APIs.", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.builtinaiapisenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.builtinaiapisenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.cacertificatemanagementallowed", + "displayName": "Allow users to manage installed CA certificates.", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.cacertificatemanagementallowed_all", + "displayName": "Allow users to manage all certificates", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.cacertificatemanagementallowed_useronly", + "displayName": "Allow users to manage user certificates", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.cacertificatemanagementallowed_none", + "displayName": "Disallow users from managing certificates", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.cacertificates", + "displayName": "TLS server certificates that should be trusted by Microsoft Edge", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.cacertificateswithconstraints", + "displayName": "TLS certificates that should be trusted by Microsoft Edge for server authentication with constraints", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.cadistrustedcertificates", + "displayName": "TLS certificates that should be distrusted by Microsoft Edge for server authentication", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.cahintcertificates", + "displayName": "TLS certificates that are not trusted or distrusted but can be used in path-building for server authentication", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.caplatformintegrationenabled", + "displayName": "Use user-added TLS certificates from platform trust stores for server authentication", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.caplatformintegrationenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.caplatformintegrationenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.certificatetransparencyenforcementdisabledforcas", "displayName": "Disable Certificate Transparency enforcement for a list of subjectPublicKeyInfo hashes", @@ -21783,7 +27457,7 @@ }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.certificatetransparencyenforcementdisabledforlegacycas", - "displayName": "Disable Certificate Transparency enforcement for a list of legacy certificate authorities", + "displayName": "Disable Certificate Transparency enforcement for a list of legacy certificate authorities (Obsolete)", "options": null }, { @@ -21864,6 +27538,11 @@ "id": "com.microsoft.edge.mamedgeappconfigsettings.collectionsservicesandexportsblocklist", "displayName": "Block access to a specified list of services and export targets in Collections", "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.collectionsservicesandexportsblocklist_pinterest_suggestions", + "displayName": "Pinterest suggestions", + "description": null + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.collectionsservicesandexportsblocklist_collections_share", "displayName": "Sharing of Collections", @@ -21888,6 +27567,43 @@ "id": "com.microsoft.edge.mamedgeappconfigsettings.collectionsservicesandexportsblocklist_send_onenote", "displayName": "Send collection to Microsoft OneNote", "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.collectionsservicesandexportsblocklist_send_pinterest", + "displayName": "Send collection to Pinterest", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.composeinlineenabled", + "displayName": "Control access to Microsoft 365 Copilot writing assistance in Microsoft Edge for Business", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.composeinlineenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.composeinlineenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.compressiondictionarytransportenabled", + "displayName": "Enable compression dictionary transport support", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.compressiondictionarytransportenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.compressiondictionarytransportenabled_true", + "displayName": "Enabled", + "description": null } ] }, @@ -21986,6 +27702,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.controldefaultstateofallowextensionfromotherstoressettingenabled", + "displayName": "Configure default state of Allow extensions from other stores setting", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.controldefaultstateofallowextensionfromotherstoressettingenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.controldefaultstateofallowextensionfromotherstoressettingenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.controldefaultstateofallowextensionfromotherstoressettingenabled_recommended", "displayName": "Configure default state of Allow extensions from other stores setting (users can override)", @@ -22017,6 +27749,38 @@ "displayName": "Limit cookies from specific websites to the current session", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.copilotcdppagecontext", + "displayName": "Control Copilot with Commercial Data Protection access to page context for Microsoft Entra ID profiles (Obsolete)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.copilotcdppagecontext_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.copilotcdppagecontext_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.copilotpagecontext", + "displayName": "Control Copilot access to page context for Microsoft Entra ID profiles", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.copilotpagecontext_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.copilotpagecontext_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.corsnonwildcardrequestheaderssupport", "displayName": "CORS non-wildcard request header support enabled", @@ -22033,6 +27797,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.createpasskeysinicloudkeychain", + "displayName": "Control whether passkey creation will default to iCloud Keychain.", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.createpasskeysinicloudkeychain_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.createpasskeysinicloudkeychain_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.crossoriginwebassemblymodulesharingenabled", "displayName": "Specifies whether WebAssembly modules can be sent cross-origin (Obsolete)", @@ -22051,7 +27831,7 @@ }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.cryptowalletenabled", - "displayName": "Enable CryptoWallet feature", + "displayName": "Enable CryptoWallet feature (Obsolete)", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.cryptowalletenabled_false", @@ -22065,23 +27845,55 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.csscustomstatedeprecatedsyntaxenabled", + "displayName": "Controls whether the deprecated :--foo syntax for CSS custom state is enabled (Obsolete)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.csscustomstatedeprecatedsyntaxenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.csscustomstatedeprecatedsyntaxenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.customhelplink", "displayName": "Specify custom help link", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.dataurlinsvguseenabled", + "displayName": "Data URL support for SVGUseElement", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.dataurlinsvguseenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.dataurlinsvguseenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.defaultautomaticdownloadssetting", "displayName": "Default automatic downloads setting", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.defaultautomaticdownloadssetting_allowautomaticdownloads", - "displayName": "Allow all websites to perform automatic downloads", + "displayName": "Allow all websites to perform multiple downloads without requiring a user gesture between each download.", "description": null }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.defaultautomaticdownloadssetting_blockautomaticdownloads", - "displayName": "Don't allow any website to perform automatic downloads", + "displayName": "Prevent all websites from performing multiple downloads, even after a user gesture.", "description": null } ] @@ -22224,6 +28036,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.defaultjavascriptoptimizersetting", + "displayName": "Control use of JavaScript optimizers", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.defaultjavascriptoptimizersetting_allowjavascriptoptimizer", + "displayName": "Enable advanced JavaScript optimizations on all sites", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.defaultjavascriptoptimizersetting_blockjavascriptoptimizer", + "displayName": "Disable advanced JavaScript optimizations on all sites", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.defaultjavascriptsetting", "displayName": "Default JavaScript setting", @@ -22490,6 +28318,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.defaultthirdpartystoragepartitioningsetting", + "displayName": "Default setting for third-party storage partitioning (Deprecated)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.defaultthirdpartystoragepartitioningsetting_allowpartitioning", + "displayName": "Allow third-party storage partitioning by default.", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.defaultthirdpartystoragepartitioningsetting_blockpartitioning", + "displayName": "Disable third-party storage partitioning.", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.defaultwebbluetoothguardsetting", "displayName": "Control use of the Web Bluetooth API", @@ -22538,6 +28382,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.defaultwindowmanagementsetting", + "displayName": "Default Window Management permission setting", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.defaultwindowmanagementsetting_blockwindowmanagement", + "displayName": "Denies the Window Management permission on all sites by default", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.defaultwindowmanagementsetting_askwindowmanagement", + "displayName": "Ask every time a site wants obtain the Window Management permission", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.definepreferredlanguages", "displayName": "Define an ordered list of preferred languages that websites should display in if the site supports the language", @@ -22559,6 +28419,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.deletingundecryptablepasswordsenabled", + "displayName": "Enable deleting undecryptable passwords", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.deletingundecryptablepasswordsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.deletingundecryptablepasswordsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.developertoolsavailability", "displayName": "Control where developer tools can be used", @@ -22596,6 +28472,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.discoverpagecontextenabled", + "displayName": "Enable Discover access to page contents for AAD profiles (Obsolete)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.discoverpagecontextenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.discoverpagecontextenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.displaycapturepermissionspolicyenabled", "displayName": "Specifies whether the display-capture permissions-policy is checked or skipped (Obsolete)", @@ -22737,6 +28629,38 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgeautofillmlenabled", + "displayName": "Machine learning powered autofill suggestions", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgeautofillmlenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgeautofillmlenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgeautofillmlenabled_recommended", + "displayName": "Machine learning powered autofill suggestions (users can override)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgeautofillmlenabled_recommended_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgeautofillmlenabled_recommended_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.edgecollectionsenabled", "displayName": "Enable the Collections feature", @@ -22803,7 +28727,7 @@ }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.edgeenhanceimagesenabled", - "displayName": "Enhance images enabled", + "displayName": "Enhance images enabled (Obsolete)", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.edgeenhanceimagesenabled_false", @@ -22817,9 +28741,25 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgeentracopilotpagecontext", + "displayName": "Control Copilot access to Microsoft Edge page content for Entra account user profiles when using Copilot in the Microsoft Edge sidepane", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgeentracopilotpagecontext_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgeentracopilotpagecontext_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.edgefollowenabled", - "displayName": "Enable Follow service in Microsoft Edge", + "displayName": "Enable Follow service in Microsoft Edge (Obsolete)", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.edgefollowenabled_false", @@ -22833,6 +28773,38 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgehistoryaisearchenabled", + "displayName": "Control access to AI-enhanced search in History", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgehistoryaisearchenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgehistoryaisearchenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgemanagementextensionsfeedbackenabled", + "displayName": "Microsoft Edge management extensions feedback enabled", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgemanagementextensionsfeedbackenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgemanagementextensionsfeedbackenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.edgeshoppingassistantenabled", "displayName": "Shopping in Microsoft Edge Enabled", @@ -22865,6 +28837,85 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgesidebarappurlhostallowlist", + "displayName": "Allow specific apps to be opened in Microsoft Edge sidebar", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgesidebarappurlhostblocklist", + "displayName": "Control which apps cannot be opened in Microsoft Edge sidebar", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgesidebarappurlhostforcelist", + "displayName": "Control which apps are forced to be shown in Microsoft Edge sidebar", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgewalletcheckoutenabled", + "displayName": "Enable Wallet Checkout feature", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgewalletcheckoutenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgewalletcheckoutenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgewalletcheckoutenabled_recommended", + "displayName": "Enable Wallet Checkout feature (users can override)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgewalletcheckoutenabled_recommended_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgewalletcheckoutenabled_recommended_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgewalletetreeenabled", + "displayName": "Edge Wallet E-Tree Enabled", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgewalletetreeenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgewalletetreeenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgewalletetreeenabled_recommended", + "displayName": "Edge Wallet E-Tree Enabled (users can override)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgewalletetreeenabled_recommended_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.edgewalletetreeenabled_recommended_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.edgeworkspacesenabled", "displayName": "Enable Workspaces", @@ -22943,7 +28994,23 @@ }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.enhancesecuritymode_basicmode", - "displayName": "Basic mode", + "displayName": "(Deprecated) Basic mode", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.enhancesecuritymodeallowuserbypass", + "displayName": "Allow users to bypass Enhanced Security Mode", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.enhancesecuritymodeallowuserbypass_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.enhancesecuritymodeallowuserbypass_true", + "displayName": "Enabled", "description": null } ] @@ -22974,6 +29041,38 @@ "displayName": "Configure the list of domains for which enhance security mode will always be enforced", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.enhancesecuritymodeindicatoruienabled", + "displayName": "Manage the indicator UI of the Enhanced Security Mode (ESM) feature in Microsoft Edge", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.enhancesecuritymodeindicatoruienabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.enhancesecuritymodeindicatoruienabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.enhancesecuritymodeoptoutuxenabled", + "displayName": "Manage opt-out user experience for Enhanced Security Mode (ESM) in Microsoft Edge (Obsolete)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.enhancesecuritymodeoptoutuxenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.enhancesecuritymodeoptoutuxenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.enterprisehardwareplatformapienabled", "displayName": "Allow managed extensions to use the Enterprise Hardware Platform API", @@ -23008,7 +29107,7 @@ }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.eventpathenabled", - "displayName": "Re-enable the Event.path API until Microsoft Edge version 115", + "displayName": "Re-enable the Event.path API until Microsoft Edge version 115 (Obsolete)", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.eventpathenabled_false", @@ -23032,6 +29131,11 @@ "displayName": "Disable download file type extension-based warnings for specified file types on domains", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.exemptsmartscreendownloadwarnings", + "displayName": "Disable SmartScreen AppRep based warnings for specified file types on specified domains", + "options": null + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.extensionallowedtypes", "displayName": "Configure allowed extension types", @@ -23068,6 +29172,27 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.extensiondevelopermodesettings", + "displayName": "Control the availability of developer mode on extensions page", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.extensiondevelopermodesettings_allow", + "displayName": "Allow the usage of developer mode on extensions page", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.extensiondevelopermodesettings_disallow", + "displayName": "Do not allow the usage of developer mode on extensions page", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.extensionextendedbackgroundlifetimeforportconnectionstourls", + "displayName": "Configure a list of origins that grant an extended background lifetime to connecting extensions.", + "options": null + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.extensioninstallallowlist", "displayName": "Allow specific extensions to be installed", @@ -23088,11 +29213,78 @@ "displayName": "Configure extension and user script install sources", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.extensioninstalltypeblocklist", + "displayName": "Blocklist for extension install types", + "options": { + "id": "com.microsoft.edge.mamedgeappconfigsettings.extensioninstalltypeblocklist_command_line", + "displayName": "Blocks extensions from being loaded from command line", + "description": null + } + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.extensionmanifestv2availability", + "displayName": "Control Manifest v2 extension availability", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.extensionmanifestv2availability_default", + "displayName": "Default browser behavior", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.extensionmanifestv2availability_disable", + "displayName": "Manifest v2 is disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.extensionmanifestv2availability_enable", + "displayName": "Manifest v2 is enabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.extensionmanifestv2availability_enableforforcedextensions", + "displayName": "Manifest v2 is enabled for forced extensions only", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.extensionsettings", "displayName": "Configure extension management settings", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.extensionsperformancedetectorenabled", + "displayName": "Extensions Performance Detector enabled", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.extensionsperformancedetectorenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.extensionsperformancedetectorenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.extensionsperformancedetectorenabled_recommended", + "displayName": "Extensions Performance Detector enabled (users can override)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.extensionsperformancedetectorenabled_recommended_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.extensionsperformancedetectorenabled_recommended_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.externalprotocoldialogshowalwaysopencheckbox", "displayName": "Show an \"Always open\" checkbox in external protocol dialog", @@ -23162,6 +29354,11 @@ "displayName": "Fetch keepalive duration on shutdown", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.fileordirectorypickerwithoutgestureallowedfororigins", + "displayName": "Allow file or directory picker APIs to be called without prior user gesture", + "options": null + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.filesystemreadaskforurls", "displayName": "Allow read access via the File System API on these sites", @@ -23237,7 +29434,7 @@ }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.forcemajorversiontominorpositioninuseragent", - "displayName": "Enable or disable freezing the User-Agent string at major version 99", + "displayName": "Enable or disable freezing the User-Agent string at major version 99 (Obsolete)", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.forcemajorversiontominorpositioninuseragent_default", @@ -23314,6 +29511,43 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.gamermodeenabled", + "displayName": "Enable Gamer Mode (Obsolete)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.gamermodeenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.gamermodeenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.gamermodeenabled_recommended", + "displayName": "Enable Gamer Mode (Obsolete) (users can override)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.gamermodeenabled_recommended_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.gamermodeenabled_recommended_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.geolocationblockedforurls", + "displayName": "Block geolocation on these sites", + "options": null + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.globallyscopehttpauthcacheenabled", "displayName": "Enable globally scoped HTTP auth cache", @@ -23330,6 +29564,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.guidedswitchenabled", + "displayName": "Guided Switch Enabled", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.guidedswitchenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.guidedswitchenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.homepageisnewtabpage", "displayName": "Set the new tab page as the home page", @@ -23377,6 +29627,53 @@ "displayName": "Configure the list of names that will bypass the HSTS policy check", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.httpallowlist", + "displayName": "HTTP Allowlist", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.httpsonlymode", + "displayName": "Allow HTTPS-Only Mode to be enabled", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.httpsonlymode_allowed", + "displayName": "Don't restrict users' HTTPS-Only Mode setting", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.httpsonlymode_disallowed", + "displayName": "Don't allow users to enable any HTTPS-Only Mode", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.httpsonlymode_force_enabled", + "displayName": "Force enable HTTPS-Only Mode in Strict mode", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.httpsonlymode_force_balanced_enabled", + "displayName": "Force enable HTTPS-Only Mode in Balanced Mode", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.httpsupgradesenabled", + "displayName": "Enable automatic HTTPS upgrades", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.httpsupgradesenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.httpsupgradesenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.hubssidebarenabled", "displayName": "Show Hubs Sidebar", @@ -23409,6 +29706,72 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.idletimeout", + "displayName": "Delay before running idle actions", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.idletimeoutactions", + "displayName": "Actions to run when the computer is idle", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.idletimeoutactions_close_browsers", + "displayName": "Close Browsers", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.idletimeoutactions_clear_browsing_history", + "displayName": "Clear Browsing History", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.idletimeoutactions_clear_download_history", + "displayName": "Clear Download History", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.idletimeoutactions_clear_cookies_and_other_site_data", + "displayName": "Clear Cookies and Other Site Data", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.idletimeoutactions_clear_cached_images_and_files", + "displayName": "Clear Cached Images and Files", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.idletimeoutactions_clear_password_signin", + "displayName": "Clear Password sign in", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.idletimeoutactions_clear_autofill", + "displayName": "Clear Autofill", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.idletimeoutactions_clear_site_settings", + "displayName": "Clear Site Settings", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.idletimeoutactions_reload_pages", + "displayName": "Reload Pages", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.idletimeoutactions_sign_out", + "displayName": "Sign Out", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.idletimeoutactions_close_tabs", + "displayName": "Close Tabs", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.imagesallowedforurls", "displayName": "Allow images on these sites", @@ -23421,7 +29784,7 @@ }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.immersivereadergrammartoolsenabled", - "displayName": "Enable Grammar Tools feature within Immersive Reader in Microsoft Edge", + "displayName": "Enable Grammar Tools feature within Immersive Reader in Microsoft Edge (Obsolete)", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.immersivereadergrammartoolsenabled_false", @@ -23437,7 +29800,7 @@ }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.immersivereaderpicturedictionaryenabled", - "displayName": "Enable Picture Dictionary feature within Immersive Reader in Microsoft Edge", + "displayName": "Enable Picture Dictionary feature within Immersive Reader in Microsoft Edge (Obsolete)", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.immersivereaderpicturedictionaryenabled_false", @@ -23900,7 +30263,7 @@ }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.insecureformswarningsenabled", - "displayName": "Enable warnings for insecure forms", + "displayName": "Enable warnings for insecure forms (Deprecated)", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.insecureformswarningsenabled_false", @@ -23916,7 +30279,7 @@ }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.insecureprivatenetworkrequestsallowed", - "displayName": "Specifies whether to allow websites to make requests to more-private network endpoints", + "displayName": "Specifies whether to allow websites to make requests to any network endpoint in an insecure manner. (Obsolete)", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.insecureprivatenetworkrequestsallowed_false", @@ -23932,7 +30295,7 @@ }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.insecureprivatenetworkrequestsallowedforurls", - "displayName": "Allow the listed sites to make requests to more-private network endpoints from in an insecure manner", + "displayName": "Allow the listed sites to make requests to more-private network endpoints from in an insecure manner (Obsolete)", "options": null }, { @@ -24187,6 +30550,22 @@ "displayName": "Configure the pixel adjustment between window.open widths sourced from IE mode pages vs. Edge mode pages", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.internetexplorerintegrationzoneidentifiermhtfileallowed", + "displayName": "Automatically open downloaded MHT or MHTML files from the web in Internet Explorer mode", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.internetexplorerintegrationzoneidentifiermhtfileallowed_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.internetexplorerintegrationzoneidentifiermhtfileallowed_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.internetexplorermodecleardataonexitenabled", "displayName": "Clear history for IE and IE mode every time you exit", @@ -24267,6 +30646,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.internetexplorersetforegroundwhenactive", + "displayName": "Keep the active Microsoft Edge window with an Internet Explorer mode tab always in the foreground.", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.internetexplorersetforegroundwhenactive_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.internetexplorersetforegroundwhenactive_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.internetexplorerzoomdisplay", "displayName": "Display zoom in IE Mode tabs with DPI Scale included like it is in Internet Explorer", @@ -24319,6 +30714,32 @@ "displayName": "Block JavaScript from using JIT on these sites", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.javascriptoptimizerallowedforsites", + "displayName": "Allow JavaScript optimization on these sites", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.javascriptoptimizerblockedforsites", + "displayName": "Block JavaScript optimizations on these sites", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.keyboardfocusablescrollersenabled", + "displayName": "Enable keyboard focusable scrollers (Obsolete)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.keyboardfocusablescrollersenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.keyboardfocusablescrollersenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.legacysamesitecookiebehaviorenabled", "displayName": "Enable default legacy SameSite cookie behavior setting (Obsolete)", @@ -24337,12 +30758,12 @@ }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.legacysamesitecookiebehaviorenabledfordomainlist", - "displayName": "Revert to legacy SameSite behavior for cookies on specified sites", + "displayName": "Revert to legacy SameSite behavior for cookies on specified sites (Obsolete)", "options": null }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.linkedaccountenabled", - "displayName": "Enable the linked account feature", + "displayName": "Enable the linked account feature (Obsolete)", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.linkedaccountenabled_false", @@ -24372,6 +30793,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.livevideotranslationenabled", + "displayName": "Allows users to translate videos to different languages.", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.livevideotranslationenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.livevideotranslationenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.localbrowserdatashareenabled", "displayName": "Enable Windows to search local Microsoft Edge browsing data", @@ -24404,6 +30841,48 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.localnetworkaccessallowedforurls", + "displayName": "Allow sites to make requests to local network endpoints.", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.localnetworkaccessblockedforurls", + "displayName": "Block sites from making requests to local network endpoints.", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.localnetworkaccessrestrictionsenabled", + "displayName": "Specifies whether to block requests from public websites to devices on a user's local network. (Deprecated)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.localnetworkaccessrestrictionsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.localnetworkaccessrestrictionsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.localnetworkaccessrestrictionstemporaryoptout", + "displayName": "Specifies whether to opt out of Local Network Access restrictions", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.localnetworkaccessrestrictionstemporaryoptout_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.localnetworkaccessrestrictionstemporaryoptout_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.localprovidersenabled", "displayName": "Allow suggestions from local providers", @@ -24456,6 +30935,43 @@ "displayName": "Manage Search Engines (users can override)", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.mandatoryextensionsforinprivatenavigation", + "displayName": "Specify extensions users must allow in order to navigate using InPrivate mode", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.microsoft365copilotchaticonenabled", + "displayName": "Control whether Microsoft 365 Copilot Chat shows in the Microsoft Edge for Business toolbar", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.microsoft365copilotchaticonenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.microsoft365copilotchaticonenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.microsoft365copilotchaticonenabled_recommended", + "displayName": "Control whether Microsoft 365 Copilot Chat shows in the Microsoft Edge for Business toolbar (users can override)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.microsoft365copilotchaticonenabled_recommended_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.microsoft365copilotchaticonenabled_recommended_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.microsoftedgeinsiderpromotionenabled", "displayName": "Microsoft Edge Insider Promotion Enabled", @@ -24536,6 +31052,38 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.mutationeventsenabled", + "displayName": "Enable deprecated/removed Mutation Events (Obsolete)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.mutationeventsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.mutationeventsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.nativehostsexecutableslaunchdirectly", + "displayName": "Force Windows executable Native Messaging hosts to launch directly", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.nativehostsexecutableslaunchdirectly_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.nativehostsexecutableslaunchdirectly_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.nativemessagingallowlist", "displayName": "Control which native messaging hosts users can use", @@ -24678,14 +31226,51 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.newtabpagebingchatenabled", + "displayName": "Disable Bing chat entry-points on Microsoft Edge Enterprise new tab page", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.newtabpagebingchatenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.newtabpagebingchatenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.newtabpagecompanylogo", "displayName": "Set new tab page company logo (Obsolete)", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.newtabpagecompanylogobackplatecolor", + "displayName": "Set the company logo backplate color on the new tab page.", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.newtabpagecompanylogoenabled", + "displayName": "Hide the company logo on the Microsoft Edge new tab page", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.newtabpagecompanylogoenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.newtabpagecompanylogoenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.newtabpagecontentenabled", - "displayName": "Allow Microsoft News content on the new tab page", + "displayName": "Allow Microsoft content on the new tab page", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.newtabpagecontentenabled_false", @@ -24857,6 +31442,58 @@ "displayName": "Block notifications on specific sites", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.onbulkdataentryenterpriseconnector", + "displayName": "Configuration policy for bulk data entry for Microsoft Edge for Business Data Loss Prevention Connectors", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.onfileattachedenterpriseconnector", + "displayName": "Configuration policy for files attached for Microsoft Edge for Business Data Loss Prevention Connectors", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.onprintenterpriseconnector", + "displayName": "Configuration policy for print for Microsoft Edge for Business Data Loss Prevention Connectors", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.onsecurityevententerpriseconnector", + "displayName": "Configuration policy for Microsoft Edge for Business Reporting Connectors", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.organizationalbrandingonworkprofileuienabled_recommended", + "displayName": "Allow the use of your organization's branding assets from Microsoft Entra on the profile-related UI of a work or school profile (users can override)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.organizationalbrandingonworkprofileuienabled_recommended_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.organizationalbrandingonworkprofileuienabled_recommended_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.organizationlogooverlayonappiconenabled_recommended", + "displayName": "Allow your organization's logo from Microsoft Entra to be overlaid on the Microsoft Edge app icon of a work or school profile (users can override)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.organizationlogooverlayonappiconenabled_recommended_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.organizationlogooverlayonappiconenabled_recommended_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.originagentclusterdefaultenabled", "displayName": "Origin-keyed agent clustering enabled by default", @@ -24905,6 +31542,70 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.partitionedbloburlusage", + "displayName": "Manage Blob URL Partitioning During Fetching and Navigation", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.partitionedbloburlusage_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.partitionedbloburlusage_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.passworddeleteonbrowsercloseenabled", + "displayName": "Prevent passwords from being deleted if any Edge settings is enabled to delete browsing data when Microsoft Edge closes", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.passworddeleteonbrowsercloseenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.passworddeleteonbrowsercloseenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.passworddeleteonbrowsercloseenabled_recommended", + "displayName": "Prevent passwords from being deleted if any Edge settings is enabled to delete browsing data when Microsoft Edge closes (users can override)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.passworddeleteonbrowsercloseenabled_recommended_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.passworddeleteonbrowsercloseenabled_recommended_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.passwordexportenabled", + "displayName": "Enable exporting saved passwords from Password Manager", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.passwordexportenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.passwordexportenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.passwordgeneratorenabled", "displayName": "Allow users to get a strong password suggestion whenever they are creating an account online", @@ -25032,6 +31733,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.passwordrevealenabled", + "displayName": "Enable Password reveal button", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.passwordrevealenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.passwordrevealenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.passwordrevealenabled_recommended", "displayName": "Enable Password reveal button (users can override)", @@ -25080,6 +31797,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.pdfvieweroutofprocessiframeenabled", + "displayName": "Use out-of-process iframe PDF Viewer", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.pdfvieweroutofprocessiframeenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.pdfvieweroutofprocessiframeenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.pdfxfaenabled", "displayName": "XFA support in native PDF reader enabled", @@ -25144,6 +31877,70 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.personalizetopsitesincustomizesidebarenabled", + "displayName": "Personalize my top sites in Customize Sidebar enabled by default", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.personalizetopsitesincustomizesidebarenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.personalizetopsitesincustomizesidebarenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.pictureinpictureoverlayenabled", + "displayName": "Enable Picture in Picture overlay feature on supported webpages in Microsoft Edge", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.pictureinpictureoverlayenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.pictureinpictureoverlayenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.pinbrowseressentialstoolbarbutton", + "displayName": "Pin browser essentials toolbar button", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.pinbrowseressentialstoolbarbutton_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.pinbrowseressentialstoolbarbutton_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.pinbrowseressentialstoolbarbutton_recommended", + "displayName": "Pin browser essentials toolbar button (users can override)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.pinbrowseressentialstoolbarbutton_recommended_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.pinbrowseressentialstoolbarbutton_recommended_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.pluginsallowedforurls", "displayName": "Allow the Adobe Flash plug-in on specific sites (Obsolete)", @@ -25164,6 +31961,27 @@ "displayName": "Block pop-up windows on specific sites", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.precisegeolocationallowedforurls", + "displayName": "Allow precise geolocation on these sites", + "options": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.prefetchwithserviceworkerenabled", + "displayName": "Allow SpeculationRules prefetch for ServiceWorker-controlled URLs", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.prefetchwithserviceworkerenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.prefetchwithserviceworkerenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.preventsmartscreenpromptoverride", "displayName": "Prevent bypassing Microsoft Defender SmartScreen prompts for sites", @@ -25196,6 +32014,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.preventtyposquattingpromptoverride", + "displayName": "Prevent bypassing Edge Website Typo Protection prompts for sites", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.preventtyposquattingpromptoverride_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.preventtyposquattingpromptoverride_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.primarypasswordsetting", "displayName": "Configures a setting that asks users to enter their device password while using password autofill", @@ -25343,6 +32177,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.printpdfasimagedefault", + "displayName": "Print PDF as Image Default", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.printpdfasimagedefault_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.printpdfasimagedefault_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.printpostscriptmode", "displayName": "Print PostScript Mode", @@ -25464,6 +32314,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.proactiveauthworkflowenabled", + "displayName": "Enable proactive authentication", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.proactiveauthworkflowenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.proactiveauthworkflowenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.promptfordownloadlocation", "displayName": "Ask where to save downloaded files", @@ -25611,6 +32477,11 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.registeredprotocolhandlers", + "displayName": "Register protocol handlers", + "options": null + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.registeredprotocolhandlers_recommended", "displayName": "Register protocol handlers (users can override)", @@ -25618,7 +32489,7 @@ }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.relatedmatchescloudserviceenabled", - "displayName": "Configure Related Matches in Find on Page", + "displayName": "Configure Related Matches in Find on Page (Obsolete)", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.relatedmatchescloudserviceenabled_false", @@ -25632,6 +32503,27 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.relatedwebsitesetsenabled", + "displayName": "Enable Related Website Sets (Deprecated)", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.relatedwebsitesetsenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.relatedwebsitesetsenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.relatedwebsitesetsoverrides", + "displayName": "Override Related Website Sets. (Deprecated)", + "options": null + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.resolvenavigationerrorsusewebservice", "displayName": "Enable resolution of navigation errors using a web service", @@ -25666,7 +32558,7 @@ }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.restoreonstartup", - "displayName": "Action to take on startup", + "displayName": "Action to take on Microsoft Edge startup", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.restoreonstartup_restoreonstartupisnewtabpage", @@ -25682,12 +32574,17 @@ "id": "com.microsoft.edge.mamedgeappconfigsettings.restoreonstartup_restoreonstartupisurls", "displayName": "Open a list of URLs", "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.restoreonstartup_restoreonstartupislastsessionandurls", + "displayName": "Open a list of URLs and restore the last session", + "description": null } ] }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.restoreonstartup_recommended", - "displayName": "Action to take on startup (users can override)", + "displayName": "Action to take on Microsoft Edge startup (users can override)", "options": [ { "id": "com.microsoft.edge.mamedgeappconfigsettings.restoreonstartup_recommended_restoreonstartupisnewtabpage", @@ -25703,6 +32600,11 @@ "id": "com.microsoft.edge.mamedgeappconfigsettings.restoreonstartup_recommended_restoreonstartupisurls", "displayName": "Open a list of URLs", "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.restoreonstartup_recommended_restoreonstartupislastsessionandurls", + "displayName": "Open a list of URLs and restore the last session", + "description": null } ] }, @@ -25806,6 +32708,11 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.scarewareblockerallowlistdomains", + "displayName": "Configure the list of domains where Microsoft Edge Scareware blockers don't run", + "options": null + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.screencaptureallowed", "displayName": "Allow or deny screen capture", @@ -25827,6 +32734,11 @@ "displayName": "Allow Desktop, Window, and Tab capture by these origins", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.screencapturewithoutgestureallowedfororigins", + "displayName": "Allow screen capture without prior user gesture", + "options": null + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.scrolltotextfragmentenabled", "displayName": "Enable scrolling to text specified in URL fragments", @@ -25875,6 +32787,22 @@ } ] }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.searchforimageenabled", + "displayName": "Search for image enabled", + "options": [ + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.searchforimageenabled_false", + "displayName": "Disabled", + "description": null + }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.searchforimageenabled_true", + "displayName": "Enabled", + "description": null + } + ] + }, { "id": "com.microsoft.edge.mamedgeappconfigsettings.searchinsidebarenabled", "displayName": "Search in Sidebar enabled", @@ -25933,6 +32861,22 @@ "displayName": "Websites or domains that don't need permission to use direct Security Key attestation", "options": null }, + { + "id": "com.microsoft.edge.mamedgeappconfigsettings.selectparserrelaxationenabled", + "displayName": "Controls whether the new HTML parser behavior for the element is enabled", "options": [ { - "id": "device_vendor_msft_policy_config_eventlogservice_specifymaximumfilesizesystemlog_0", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_selectparserrelaxationenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_eventlogservice_specifymaximumfilesizesystemlog_1", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_selectparserrelaxationenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_eventlogservice_specifymaximumfilesizesystemlog_channel_logmaxsize", - "displayName": "Maximum Log Size (KB)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_experience_allowclipboardhistory", - "displayName": "Allow Clipboard History", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_sendmouseeventsdisabledformcontrolsenabled", + "displayName": "Control the new behavior for event dispatching on disabled form controls", "options": [ { - "id": "device_vendor_msft_policy_config_experience_allowclipboardhistory_0", - "displayName": "Block", - "description": "Not allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_sendmouseeventsdisabledformcontrolsenabled_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_allowclipboardhistory_1", - "displayName": "Allow", - "description": "Allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_sendmouseeventsdisabledformcontrolsenabled_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_experience_allowcortana", - "displayName": "Allow Cortana", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_settimeoutwithout1msclampenabled", + "displayName": "Control Javascript setTimeout() function minimum timeout.", "options": [ { - "id": "device_vendor_msft_policy_config_experience_allowcortana_0", - "displayName": "Block", - "description": "Not allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_settimeoutwithout1msclampenabled_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_allowcortana_1", - "displayName": "Allow", - "description": "Allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_settimeoutwithout1msclampenabled_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_experience_allowdevicediscovery", - "displayName": "Allow Device Discovery", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_taborganizersettings", + "displayName": "Settings for Tab Organizer", "options": [ { - "id": "device_vendor_msft_policy_config_experience_allowdevicediscovery_0", - "displayName": "Block", - "description": "Disabled." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_taborganizersettings_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_allowdevicediscovery_1", - "displayName": "Allow", - "description": "Enabled." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_taborganizersettings_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_experience_allowfindmydevice", - "displayName": "Allow Find My Device", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_taborganizersettings_taborganizersettings", + "displayName": "Settings for Tab Organizer (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_experience_allowfindmydevice_0", - "displayName": "Block", - "description": "Not allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_taborganizersettings_taborganizersettings_0", + "displayName": "Allow Tab Organizer and improve AI models.", + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_allowfindmydevice_1", - "displayName": "Allow", - "description": "Allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_taborganizersettings_taborganizersettings_1", + "displayName": "Allow Tab Organizer without improving AI models.", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_taborganizersettings_taborganizersettings_2", + "displayName": "Do not allow Tab Organizer.", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_experience_allowmanualmdmunenrollment", - "displayName": "Allow Manual MDM Unenrollment", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_throttlenonvisiblecrossoriginiframesallowed", + "displayName": "Allows enabling throttling of non-visible, cross-origin iframes", "options": [ { - "id": "device_vendor_msft_policy_config_experience_allowmanualmdmunenrollment_0", - "displayName": "Block", - "description": "Not allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_throttlenonvisiblecrossoriginiframesallowed_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_allowmanualmdmunenrollment_1", - "displayName": "Allow", - "description": "Allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_throttlenonvisiblecrossoriginiframesallowed_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_experience_allowsaveasofofficefiles", - "displayName": "Allow Save As Of Office Files", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_toolbaravatarlabelsettings", + "displayName": "Managed toolbar avatar label setting", "options": [ { - "id": "device_vendor_msft_policy_config_experience_allowsaveasofofficefiles_0", - "displayName": "Block", - "description": "Not allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_toolbaravatarlabelsettings_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_allowsaveasofofficefiles_1", - "displayName": "Allow", - "description": "Allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_toolbaravatarlabelsettings_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_experience_allowscreencapture", - "displayName": "Allow Screen Capture", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_toolbaravatarlabelsettings_toolbaravatarlabelsettings", + "displayName": "Managed toolbar avatar label setting (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_experience_allowscreencapture_0", - "displayName": "Not allowed.", - "description": "Not allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_toolbaravatarlabelsettings_toolbaravatarlabelsettings_0", + "displayName": "Always display management label", + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_allowscreencapture_1", - "displayName": "Allowed.", - "description": "Allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_toolbaravatarlabelsettings_toolbaravatarlabelsettings_1", + "displayName": "Display management labels for 30s", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_experience_allowsimerrordialogpromptwhennosim", - "displayName": "Allow SIM Error Dialog Prompt When No SIM", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_unthrottlednestedtimeoutenabled", + "displayName": "Control the nesting threshold before which Javascript setTimeout() function start being clamped", "options": [ { - "id": "device_vendor_msft_policy_config_experience_allowsimerrordialogpromptwhennosim_0", - "displayName": "Not allowed.", - "description": "Not allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_unthrottlednestedtimeoutenabled_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_allowsimerrordialogpromptwhennosim_1", - "displayName": "Allowed.", - "description": "Allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_unthrottlednestedtimeoutenabled_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_experience_allowsyncmysettings", - "displayName": "Allow Sync My Settings", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_urlparamfilterenabled", + "displayName": "Control the URL parameter filter feature", "options": [ { - "id": "device_vendor_msft_policy_config_experience_allowsyncmysettings_0", - "displayName": "Block", - "description": "Sync settings are not allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_urlparamfilterenabled_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_allowsyncmysettings_1", - "displayName": "Allow", - "description": "Sync settings allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_urlparamfilterenabled_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_experience_allowwindowsconsumerfeatures", - "displayName": "Allow Windows Consumer Features", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_usemojovideodecoderforpepperallowed", + "displayName": "Allow Pepper to use a new decoder for hardware accelerated video decoding.", "options": [ { - "id": "device_vendor_msft_policy_config_experience_allowwindowsconsumerfeatures_0", - "displayName": "Block", - "description": "Not allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_usemojovideodecoderforpepperallowed_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_allowwindowsconsumerfeatures_1", - "displayName": "Allow", - "description": "Allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_usemojovideodecoderforpepperallowed_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_experience_allowwindowstips", - "displayName": "Allow Windows Tips", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_useragentclienthintsgreaseupdateenabled", + "displayName": "Control the User-Agent Client Hints GREASE Update feature.", "options": [ { - "id": "device_vendor_msft_policy_config_experience_allowwindowstips_0", - "displayName": "Block", - "description": "Disabled." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_useragentclienthintsgreaseupdateenabled_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_allowwindowstips_1", - "displayName": "Allow", - "description": "Enabled." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_useragentclienthintsgreaseupdateenabled_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_experience_configurechaticon", - "displayName": "Configure Chat Icon", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_websqlaccess", + "displayName": "Force WebSQL to be enabled.", "options": [ { - "id": "device_vendor_msft_policy_config_experience_configurechaticon_0", - "displayName": "Windows default", - "description": "Not configured" + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_websqlaccess_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_configurechaticon_1", - "displayName": "Show", - "description": "Show" - }, + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_websqlaccess_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_websqlnonsecurecontextenabled", + "displayName": "Force WebSQL in non-secure contexts to be enabled.", + "options": [ { - "id": "device_vendor_msft_policy_config_experience_configurechaticon_2", - "displayName": "Hide", - "description": "Hide" + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_websqlnonsecurecontextenabled_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_configurechaticon_3", - "displayName": "Disabled", - "description": "Disabled" + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_websqlnonsecurecontextenabled_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_experience_disablecloudoptimizedcontent", - "displayName": "Disable Cloud Optimized Content", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_zstdcontentencodingenabled", + "displayName": "Enable zstd content-encoding support", "options": [ { - "id": "device_vendor_msft_policy_config_experience_disablecloudoptimizedcontent_0", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_zstdcontentencodingenabled_0", "displayName": "Disabled", - "description": "Disabled." + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_disablecloudoptimizedcontent_1", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_zstdcontentencodingenabled_1", "displayName": "Enabled", - "description": "Enabled." + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_experience_disableconsumeraccountstatecontent", - "displayName": "Disable Consumer Account State Content", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingdeepscanningenabled", + "displayName": "Allow download deep scanning for Safe Browsing-enabled users", "options": [ { - "id": "device_vendor_msft_policy_config_experience_disableconsumeraccountstatecontent_0", - "displayName": "Disabled.", - "description": "Disabled." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingdeepscanningenabled_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_disableconsumeraccountstatecontent_1", - "displayName": "Enabled.", - "description": "Enabled." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingdeepscanningenabled_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_experience_donotshowfeedbacknotifications", - "displayName": "Do Not Show Feedback Notifications", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingproxiedrealtimechecksallowed", + "displayName": "Allow Safe Browsing Proxied Real Time Checks", "options": [ { - "id": "device_vendor_msft_policy_config_experience_donotshowfeedbacknotifications_0", - "displayName": "Feedback notifications are not disabled. The actual state of feedback notifications on the device will then depend on what GP has configured or what the user has configured locally.", - "description": "Feedback notifications are not disabled. The actual state of feedback notifications on the device will then depend on what GP has configured or what the user has configured locally." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingproxiedrealtimechecksallowed_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_donotshowfeedbacknotifications_1", - "displayName": "Feedback notifications are disabled.", - "description": "Feedback notifications are disabled." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingproxiedrealtimechecksallowed_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_experience_donotsyncbrowsersettings", - "displayName": "Do Not Sync Browser Settings", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingsurveysenabled", + "displayName": "Allow Safe Browsing Surveys", "options": [ { - "id": "device_vendor_msft_policy_config_experience_donotsyncbrowsersettings_2", - "displayName": "Disable Syncing", - "description": "Disable Syncing" + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingsurveysenabled_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_donotsyncbrowsersettings_0", - "displayName": "Allow syncing", - "description": "Allow syncing" + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingsurveysenabled_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_experience_preventusersfromturningonbrowsersyncing", - "displayName": "Prevent Users From Turning On Browser Syncing", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~signin_boundsessioncredentialsenabled", + "displayName": "Bind Google credentials to a device", "options": [ { - "id": "device_vendor_msft_policy_config_experience_preventusersfromturningonbrowsersyncing_0", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~signin_boundsessioncredentialsenabled_0", "displayName": "Disabled", - "description": "Allowed/turned on. Users can sync the browser settings." + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_preventusersfromturningonbrowsersyncing_1", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~signin_boundsessioncredentialsenabled_1", "displayName": "Enabled", - "description": "Prevented/turned off." + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_experience_showlockonusertile", - "displayName": "Show Lock On User Tile", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~signin_profileseparationdomainexceptionlist", + "displayName": "Enterprise profile separation secondary domain allowlist", "options": [ { - "id": "device_vendor_msft_policy_config_experience_showlockonusertile_0", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~signin_profileseparationdomainexceptionlist_0", "displayName": "Disabled", - "description": "The lock option is not displayed in the User Tile menu." + "description": null }, { - "id": "device_vendor_msft_policy_config_experience_showlockonusertile_1", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~signin_profileseparationdomainexceptionlist_1", "displayName": "Enabled", - "description": "The lock option is displayed in the User Tile menu." + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_exploitguard_exploitprotectionsettings", - "displayName": "Exploit Protection Settings", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~signin_profileseparationdomainexceptionlist_profileseparationdomainexceptionlistdesc", + "displayName": "Enterprise profile separation secondary domain allowlist (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_federatedauthentication_enablewebsigninforprimaryuser", - "displayName": "Enable Web Sign In For Primary User", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~webrtc_webrtciphandlingurl", + "displayName": "WebRTC per URL IP Handling", "options": [ { - "id": "device_vendor_msft_policy_config_federatedauthentication_enablewebsigninforprimaryuser_0", - "displayName": "Feature defaults as appropriate for edition and device capabilities. As of now, all editions/devices exhibit Disabled behavior by default. However, this may change for future editions/devices.", - "description": "Feature defaults as appropriate for edition and device capabilities. As of now, all editions/devices exhibit Disabled behavior by default. However, this may change for future editions/devices." - }, - { - "id": "device_vendor_msft_policy_config_federatedauthentication_enablewebsigninforprimaryuser_1", - "displayName": "Enabled. Web Sign-in Credential Provider will be enabled for device sign-in.", - "description": "Enabled. Web Sign-in Credential Provider will be enabled for device sign-in." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~webrtc_webrtciphandlingurl_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_federatedauthentication_enablewebsigninforprimaryuser_2", - "displayName": "Disabled. Web Sign-in Credential Provider will be not be enabled for device sign-in.", - "description": "Disabled. Web Sign-in Credential Provider will be not be enabled for device sign-in." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~webrtc_webrtciphandlingurl_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_feeds_feedsenabled", - "displayName": "Enable News and interests", + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~webrtc_webrtciphandlingurl_webrtciphandlingurl", + "displayName": "WebRTC per URL IP Handling (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~webrtc_webrtcpostquantumkeyagreement", + "displayName": "Enable post-quantum key agreement for WebRTC", "options": [ { - "id": "device_vendor_msft_policy_config_feeds_feedsenabled_0", - "displayName": "Not allowed.", - "description": "Not allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~webrtc_webrtcpostquantumkeyagreement_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_feeds_feedsenabled_1", - "displayName": "Allowed.", - "description": "Allowed." + "id": "device_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~webrtc_webrtcpostquantumkeyagreement_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fileexplorer_allowoptiontoshownetwork", - "displayName": "Allow Option To Show Network", + "id": "device_vendor_msft_policy_config_clouddesktop_boottocloudmode", + "displayName": "Boot To Cloud Mode", "options": [ { - "id": "device_vendor_msft_policy_config_fileexplorer_allowoptiontoshownetwork_0", - "displayName": "Not Allowed.", - "description": "Not Allowed." + "id": "device_vendor_msft_policy_config_clouddesktop_boottocloudmode_0", + "displayName": "Not Configured", + "description": "Not Configured" }, { - "id": "device_vendor_msft_policy_config_fileexplorer_allowoptiontoshownetwork_1", - "displayName": "Allowed.", - "description": "Allowed." + "id": "device_vendor_msft_policy_config_clouddesktop_boottocloudmode_1", + "displayName": "Enable Boot to Cloud Desktop", + "description": "Enable Boot to Cloud Desktop" } ] }, { - "id": "device_vendor_msft_policy_config_fileexplorer_allowoptiontoshowthispc", - "displayName": "Allow Option To Show This PC", + "id": "device_vendor_msft_policy_config_clouddesktop_setmaxconnectiontimeout", + "displayName": "Set Max Connection Timeout", "options": [ { - "id": "device_vendor_msft_policy_config_fileexplorer_allowoptiontoshowthispc_0", - "displayName": "Not Allowed.", - "description": "Not Allowed." + "id": "device_vendor_msft_policy_config_clouddesktop_setmaxconnectiontimeout_5", + "displayName": "5 min", + "description": "5 min" }, { - "id": "device_vendor_msft_policy_config_fileexplorer_allowoptiontoshowthispc_1", - "displayName": "Allowed.", - "description": "Allowed." - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fileexplorer_disablegraphrecentitems", - "displayName": "Disable Graph Recent Items", - "options": [ - { - "id": "device_vendor_msft_policy_config_fileexplorer_disablegraphrecentitems_0", - "displayName": "File Explorer will request cloud file metadata and display it in the Quick access view.", - "description": "File Explorer will request cloud file metadata and display it in the Quick access view." + "id": "device_vendor_msft_policy_config_clouddesktop_setmaxconnectiontimeout_6", + "displayName": "6 min", + "description": "6 min" }, { - "id": "device_vendor_msft_policy_config_fileexplorer_disablegraphrecentitems_1", - "displayName": "File Explorer will not request cloud file metadata or display it in the Quick access view.", - "description": "File Explorer will not request cloud file metadata or display it in the Quick access view." - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations", - "displayName": "Set Allowed Folder Locations", - "options": [ - { - "id": "device_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_0", - "displayName": "Access to all folder locations.", - "description": "Access to all folder locations." + "id": "device_vendor_msft_policy_config_clouddesktop_setmaxconnectiontimeout_7", + "displayName": "7 min", + "description": "7 min" }, { - "id": "device_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_13", - "displayName": "Documents, Pictures, Downloads", - "description": "Documents, Pictures, Downloads" + "id": "device_vendor_msft_policy_config_clouddesktop_setmaxconnectiontimeout_8", + "displayName": "8 min", + "description": "8 min" }, { - "id": "device_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_15", - "displayName": "Desktop, Documents, Pictures, Downloads", - "description": "Desktop, Documents, Pictures, Downloads" + "id": "device_vendor_msft_policy_config_clouddesktop_setmaxconnectiontimeout_9", + "displayName": "9 min", + "description": "9 min" }, { - "id": "device_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_31", - "displayName": "Desktop, Documents, Pictures, Downloads, Network", - "description": "Desktop, Documents, Pictures, Downloads, Network" + "id": "device_vendor_msft_policy_config_clouddesktop_setmaxconnectiontimeout_10", + "displayName": "10 min", + "description": "10 min" }, { - "id": "device_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_47", - "displayName": "This PC, Desktop, Documents, Pictures, Downloads", - "description": "This PC, Desktop, Documents, Pictures, Downloads" + "id": "device_vendor_msft_policy_config_clouddesktop_setmaxconnectiontimeout_11", + "displayName": "11 min", + "description": "11 min" }, { - "id": "device_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_63", - "displayName": "This PC, Desktop, Documents, Pictures, Downloads, Network", - "description": "This PC, Desktop, Documents, Pictures, Downloads, Network" - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations", - "displayName": "Set Allowed Storage Locations", - "options": [ + "id": "device_vendor_msft_policy_config_clouddesktop_setmaxconnectiontimeout_12", + "displayName": "12 min", + "description": "12 min" + }, { - "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_0", - "displayName": "Access to all storage locations.", - "description": "Access to all storage locations." + "id": "device_vendor_msft_policy_config_clouddesktop_setmaxconnectiontimeout_13", + "displayName": "13 min", + "description": "13 min" }, { - "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_1", - "displayName": "Removable Drives", - "description": "Removable Drives" + "id": "device_vendor_msft_policy_config_clouddesktop_setmaxconnectiontimeout_14", + "displayName": "14 min", + "description": "14 min" }, { - "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_2", - "displayName": "Sync roots", - "description": "Sync roots" + "id": "device_vendor_msft_policy_config_clouddesktop_setmaxconnectiontimeout_15", + "displayName": "15 min", + "description": "15 min" }, { - "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_3", - "displayName": "Removable Drives, Sync roots", - "description": "Removable Drives, Sync roots" + "id": "device_vendor_msft_policy_config_clouddesktop_setmaxconnectiontimeout_16", + "displayName": "16 min", + "description": "16 min" }, { - "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_4", - "displayName": "Local Drives", - "description": "Local Drives" + "id": "device_vendor_msft_policy_config_clouddesktop_setmaxconnectiontimeout_17", + "displayName": "17 min", + "description": "17 min" }, { - "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_5", - "displayName": "Removable Drives, Local Drives", - "description": "Removable Drives, Local Drives" + "id": "device_vendor_msft_policy_config_clouddesktop_setmaxconnectiontimeout_18", + "displayName": "18 min", + "description": "18 min" }, { - "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_6", - "displayName": "Sync Roots, Local Drives", - "description": "Sync Roots, Local Drives" + "id": "device_vendor_msft_policy_config_clouddesktop_setmaxconnectiontimeout_19", + "displayName": "19 min", + "description": "19 min" }, { - "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_7", - "displayName": "Removable Drives, Sync Roots, Local Drives", - "description": "Removable Drives, Sync Roots, Local Drives" + "id": "device_vendor_msft_policy_config_clouddesktop_setmaxconnectiontimeout_20", + "displayName": "20 min", + "description": "20 min" } ] }, { - "id": "device_vendor_msft_policy_config_fileexplorer_turnoffdataexecutionpreventionforexplorer", - "displayName": "Turn off Data Execution Prevention for Explorer", + "id": "device_vendor_msft_policy_config_connectivity_allowbluetooth", + "displayName": "Allow Bluetooth", "options": [ { - "id": "device_vendor_msft_policy_config_fileexplorer_turnoffdataexecutionpreventionforexplorer_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_allowbluetooth_0", + "displayName": "Disallow Bluetooth. The radio in the Bluetooth control panel will be grayed out and the user will not be able to turn Bluetooth on.", + "description": "Disallow Bluetooth. If this is set to 0, the radio in the Bluetooth control panel will be grayed out and the user will not be able to turn Bluetooth on." }, { - "id": "device_vendor_msft_policy_config_fileexplorer_turnoffdataexecutionpreventionforexplorer_1", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fileexplorer_turnoffheapterminationoncorruption", - "displayName": "Turn off heap termination on corruption", - "options": [ - { - "id": "device_vendor_msft_policy_config_fileexplorer_turnoffheapterminationoncorruption_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_allowbluetooth_1", + "displayName": "Reserved. The radio in the Bluetooth control panel will be functional and the user will be able to turn Bluetooth on.", + "description": "Reserved. If this is set to 1, the radio in the Bluetooth control panel will be functional and the user will be able to turn Bluetooth on." }, { - "id": "device_vendor_msft_policy_config_fileexplorer_turnoffheapterminationoncorruption_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_allowbluetooth_2", + "displayName": "Allow Bluetooth. The radio in the Bluetooth control panel will be functional and the user will be able to turn Bluetooth on.", + "description": "Allow Bluetooth. If this is set to 2, the radio in the Bluetooth control panel will be functional and the user will be able to turn Bluetooth on." } ] }, { - "id": "device_vendor_msft_policy_config_filesystem_devdriveattachpolicy", - "displayName": "Dev drive filter attach policy", + "id": "device_vendor_msft_policy_config_connectivity_allowcellulardata", + "displayName": "Allow Cellular Data", "options": [ { - "id": "device_vendor_msft_policy_config_filesystem_devdriveattachpolicy_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_allowcellulardata_0", + "displayName": "Do not allow the cellular data channel. The user cannot turn it on. This value is not supported in Windowsย 10, version 1511.", + "description": "Do not allow the cellular data channel. The user cannot turn it on. This value is not supported in Windowsย 10, version 1511." }, { - "id": "device_vendor_msft_policy_config_filesystem_devdriveattachpolicy_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_allowcellulardata_1", + "displayName": "Allow the cellular data channel. The user can turn it off.", + "description": "Allow the cellular data channel. The user can turn it off." + }, + { + "id": "device_vendor_msft_policy_config_connectivity_allowcellulardata_2", + "displayName": "Allow the cellular data channel. The user cannot turn it off.", + "description": "Allow the cellular data channel. The user cannot turn it off." } ] }, { - "id": "device_vendor_msft_policy_config_filesystem_devdriveattachpolicy_devdriveattachpolicy", - "displayName": "Filter list (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_filesystem_enabledevdrive", - "displayName": "Enable dev drive", + "id": "device_vendor_msft_policy_config_connectivity_allowcellulardataroaming", + "displayName": "Allow Cellular Data Roaming", "options": [ { - "id": "device_vendor_msft_policy_config_filesystem_enabledevdrive_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_allowcellulardataroaming_0", + "displayName": "Do not allow cellular data roaming. The user cannot turn it on. This value is not supported in Windowsย 10, version 1511.", + "description": "Do not allow cellular data roaming. The user cannot turn it on. This value is not supported in Windowsย 10, version 1511." }, { - "id": "device_vendor_msft_policy_config_filesystem_enabledevdrive_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_allowcellulardataroaming_1", + "displayName": "Allow cellular data roaming.", + "description": "Allow cellular data roaming." + }, + { + "id": "device_vendor_msft_policy_config_connectivity_allowcellulardataroaming_2", + "displayName": "Allow cellular data roaming on. The user cannot turn it off.", + "description": "Allow cellular data roaming on. The user cannot turn it off." } ] }, { - "id": "device_vendor_msft_policy_config_filesystem_enabledevdrive_devdriveallowantivirusfilter", - "displayName": "Let antivirus filter protect dev drives (Device)", + "id": "device_vendor_msft_policy_config_connectivity_allowconnecteddevices", + "displayName": "Allow Connected Devices", "options": [ { - "id": "device_vendor_msft_policy_config_filesystem_enabledevdrive_devdriveallowantivirusfilter_0", - "displayName": "False", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_allowconnecteddevices_0", + "displayName": "Block", + "description": "Disable (CDP service not available)." }, { - "id": "device_vendor_msft_policy_config_filesystem_enabledevdrive_devdriveallowantivirusfilter_1", - "displayName": "True", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_allowconnecteddevices_1", + "displayName": "Allow", + "description": "Allow (CDP service available)." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_cleanupinvalidsessions", - "displayName": "Clean-up Invalid Sessions", + "id": "device_vendor_msft_policy_config_connectivity_allowphonepclinking", + "displayName": "Allow Phone PC Linking", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_cleanupinvalidsessions_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_allowphonepclinking_0", + "displayName": "Block", + "description": "Do not link." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_cleanupinvalidsessions_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_allowphonepclinking_1", + "displayName": "Allow", + "description": "Allow phone-PC linking." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_roamrecyclebin", - "displayName": "Roam Recycle Bin", + "id": "device_vendor_msft_policy_config_connectivity_allowusbconnection", + "displayName": "Allow USB Connection", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_roamrecyclebin_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_allowusbconnection_0", + "displayName": "Not allowed.", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_roamrecyclebin_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_allowusbconnection_1", + "displayName": "Allowed.", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_vhdcompactdisk", - "displayName": "VHD Compact Disk", + "id": "device_vendor_msft_policy_config_connectivity_allowvpnovercellular", + "displayName": "Allow VPN Over Cellular", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_vhdcompactdisk_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_allowvpnovercellular_0", + "displayName": "Block", + "description": "VPN is not allowed over cellular." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_vhdcompactdisk_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_allowvpnovercellular_1", + "displayName": "Allow", + "description": "VPN can use any connection, including cellular." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdcachedirectory", - "displayName": "Cache Directory", + "id": "device_vendor_msft_policy_config_connectivity_allowvpnroamingovercellular", + "displayName": "Allow VPN Roaming Over Cellular", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdcachedirectory_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_allowvpnroamingovercellular_0", + "displayName": "Block", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdcachedirectory_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_allowvpnroamingovercellular_1", + "displayName": "Allow", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdcachedirectory_ccdcachedirectory", - "displayName": "Cache Directory (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdproxydirectory", - "displayName": "Proxy Directory", + "id": "device_vendor_msft_policy_config_connectivity_diableprintingoverhttp", + "displayName": "Turn off printing over HTTP", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdproxydirectory_0", + "id": "device_vendor_msft_policy_config_connectivity_diableprintingoverhttp_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdproxydirectory_1", + "id": "device_vendor_msft_policy_config_connectivity_diableprintingoverhttp_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdproxydirectory_ccdproxydirectory", - "displayName": "Proxy Directory (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdwritecachedirectory", - "displayName": "Write Cache Directory", + "id": "device_vendor_msft_policy_config_connectivity_disablecellularoperatorsettingspage", + "displayName": "Disable Cellular Operator Settings Page (Windows Insiders only)", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdwritecachedirectory_0", + "id": "device_vendor_msft_policy_config_connectivity_disablecellularoperatorsettingspage_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdwritecachedirectory_1", + "id": "device_vendor_msft_policy_config_connectivity_disablecellularoperatorsettingspage_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdwritecachedirectory_ccdwritecachedirectory", - "displayName": "Write Cache Directory (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingadcomputergroupprocess", - "displayName": "AD Computer Group Process", + "id": "device_vendor_msft_policy_config_connectivity_disablecellularsettingspage", + "displayName": "Disable Cellular Settings Page (Windows Insiders only)", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingadcomputergroupprocess_0", + "id": "device_vendor_msft_policy_config_connectivity_disablecellularsettingspage_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingadcomputergroupprocess_1", + "id": "device_vendor_msft_policy_config_connectivity_disablecellularsettingspage_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingdriverinterface", - "displayName": "Driver Interface", + "id": "device_vendor_msft_policy_config_connectivity_disabledownloadingofprintdriversoverhttp", + "displayName": "Turn off downloading of print drivers over HTTP", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingdriverinterface_0", + "id": "device_vendor_msft_policy_config_connectivity_disabledownloadingofprintdriversoverhttp_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingdriverinterface_1", + "id": "device_vendor_msft_policy_config_connectivity_disabledownloadingofprintdriversoverhttp_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingenabled", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_connectivity_disableinternetdownloadforwebpublishingandonlineorderingwizards", + "displayName": "Turn off Internet download for Web publishing and online ordering wizards", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingenabled_0", + "id": "device_vendor_msft_policy_config_connectivity_disableinternetdownloadforwebpublishingandonlineorderingwizards_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingenabled_1", + "id": "device_vendor_msft_policy_config_connectivity_disableinternetdownloadforwebpublishingandonlineorderingwizards_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingenabled_loggingenabled", - "displayName": "", + "id": "device_vendor_msft_policy_config_connectivity_disallownetworkconnectivityactivetests", + "displayName": "Disallow Network Connectivity Active Tests", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingenabled_loggingenabled_0", - "displayName": "Logging Disabled", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingenabled_loggingenabled_1", - "displayName": "Specific Logs Only", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_disallownetworkconnectivityactivetests_1", + "displayName": "Allow", + "description": "Allow" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingenabled_loggingenabled_2", - "displayName": "Enable All Logs", - "description": null + "id": "device_vendor_msft_policy_config_connectivity_disallownetworkconnectivityactivetests_0", + "displayName": "Block", + "description": "Block" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingfontvisibility", - "displayName": "Font Visibility", + "id": "device_vendor_msft_policy_config_connectivity_hardeneduncpaths", + "displayName": "Hardened UNC Paths", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingfontvisibility_0", + "id": "device_vendor_msft_policy_config_connectivity_hardeneduncpaths_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingfontvisibility_1", + "id": "device_vendor_msft_policy_config_connectivity_hardeneduncpaths_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingfrxlauncher", - "displayName": "FrxLauncher", + "id": "device_vendor_msft_policy_config_connectivity_hardeneduncpaths_pol_hardenedpaths", + "displayName": "Hardened UNC Paths: (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_connectivity_hardeneduncpaths_pol_hardenedpaths_key", + "displayName": "Name", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_connectivity_hardeneduncpaths_pol_hardenedpaths_value", + "displayName": "Value", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_connectivity_prohibitinstallationandconfigurationofnetworkbridge", + "displayName": "Prohibit installation and configuration of Network Bridge on your DNS domain network", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingfrxlauncher_0", + "id": "device_vendor_msft_policy_config_connectivity_prohibitinstallationandconfigurationofnetworkbridge_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingfrxlauncher_1", + "id": "device_vendor_msft_policy_config_connectivity_prohibitinstallationandconfigurationofnetworkbridge_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingieplugin", - "displayName": "IE plugin", + "id": "device_vendor_msft_policy_config_connectivity_usecellularwhenwifipoor", + "displayName": "Use Cellular When Wi Fi Poor (Windows Insiders only)", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingieplugin_0", + "id": "device_vendor_msft_policy_config_connectivity_usecellularwhenwifipoor_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingieplugin_1", + "id": "device_vendor_msft_policy_config_connectivity_usecellularwhenwifipoor_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingjavaruleeditor", - "displayName": "Java rule editor", + "id": "device_vendor_msft_policy_config_controlpolicyconflict_mdmwinsovergp", + "displayName": "MDM Wins Over GP", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingjavaruleeditor_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_controlpolicyconflict_mdmwinsovergp_0", + "displayName": "", + "description": "" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingjavaruleeditor_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_controlpolicyconflict_mdmwinsovergp_1", + "displayName": "The MDM policy is used and the GP policy is blocked.", + "description": "The MDM policy is used and the GP policy is blocked." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_logginglogdirectory", - "displayName": "Log Directory", + "id": "device_vendor_msft_policy_config_credentialproviders_allowpinlogon", + "displayName": "Turn on convenience PIN sign-in", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_logginglogdirectory_0", + "id": "device_vendor_msft_policy_config_credentialproviders_allowpinlogon_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_logginglogdirectory_1", + "id": "device_vendor_msft_policy_config_credentialproviders_allowpinlogon_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_logginglogdirectory_logginglogdirectory", - "displayName": "Log Directory (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_logginglogkeepingperiod", - "displayName": "Log Keeping Period", + "id": "device_vendor_msft_policy_config_credentialproviders_blockpicturepassword", + "displayName": "Turn off picture password sign-in", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_logginglogkeepingperiod_0", + "id": "device_vendor_msft_policy_config_credentialproviders_blockpicturepassword_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_logginglogkeepingperiod_1", + "id": "device_vendor_msft_policy_config_credentialproviders_blockpicturepassword_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_logginglogkeepingperiod_logginglogkeepingperiod", - "displayName": "Log Keeping Period (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingnetwork", - "displayName": "Network", + "id": "device_vendor_msft_policy_config_credentialproviders_disableautomaticredeploymentcredentials", + "displayName": "Disable Automatic Re Deployment Credentials", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingnetwork_0", + "id": "device_vendor_msft_policy_config_credentialproviders_disableautomaticredeploymentcredentials_0", "displayName": "Disabled", - "description": null + "description": "Enable the visibility of the credentials for Autopilot Reset." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingnetwork_1", + "id": "device_vendor_msft_policy_config_credentialproviders_disableautomaticredeploymentcredentials_1", "displayName": "Enabled", - "description": null + "description": "Disable visibility of the credentials for Autopilot Reset." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingodfccontainer", - "displayName": "ODFC Container", + "id": "device_vendor_msft_policy_config_credentialsdelegation_remotehostallowsdelegationofnonexportablecredentials", + "displayName": "Remote host allows delegation of non-exportable credentials", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingodfccontainer_0", + "id": "device_vendor_msft_policy_config_credentialsdelegation_remotehostallowsdelegationofnonexportablecredentials_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingodfccontainer_1", + "id": "device_vendor_msft_policy_config_credentialsdelegation_remotehostallowsdelegationofnonexportablecredentials_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprintervisibility", - "displayName": "Printer Visibility", + "id": "device_vendor_msft_policy_config_credentialsui_disablepasswordreveal", + "displayName": "Do not display the password reveal button", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprintervisibility_0", + "id": "device_vendor_msft_policy_config_credentialsui_disablepasswordreveal_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprintervisibility_1", + "id": "device_vendor_msft_policy_config_credentialsui_disablepasswordreveal_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprocessstart", - "displayName": "Process Start", + "id": "device_vendor_msft_policy_config_credentialsui_enumerateadministrators", + "displayName": "Enumerate administrator accounts on elevation", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprocessstart_0", + "id": "device_vendor_msft_policy_config_credentialsui_enumerateadministrators_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprocessstart_1", + "id": "device_vendor_msft_policy_config_credentialsui_enumerateadministrators_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprofileconfigurationtool", - "displayName": "Profile Configuration Tool", + "id": "device_vendor_msft_policy_config_cryptography_allowfipsalgorithmpolicy", + "displayName": "Allow Fips Algorithm Policy", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprofileconfigurationtool_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_cryptography_allowfipsalgorithmpolicy_1", + "displayName": "Allow", + "description": "Allow" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprofileconfigurationtool_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_cryptography_allowfipsalgorithmpolicy_0", + "displayName": "Block", + "description": "Block" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprofilecontainer", - "displayName": "Profile Container", + "id": "device_vendor_msft_policy_config_cryptography_tlsciphersuites", + "displayName": "TLS Cipher Suites", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_dataprotection_allowdirectmemoryaccess", + "displayName": "Allow Direct Memory Access", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprofilecontainer_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_dataprotection_allowdirectmemoryaccess_0", + "displayName": "Block", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprofilecontainer_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_dataprotection_allowdirectmemoryaccess_1", + "displayName": "Allow", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingrulecompilation", - "displayName": "Rule Compilation", + "id": "device_vendor_msft_policy_config_dataprotection_legacyselectivewipeid", + "displayName": "Legacy Selective Wipe ID", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_datausage_setcost3g", + "displayName": "Set 3G Cost", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingrulecompilation_0", + "id": "device_vendor_msft_policy_config_datausage_setcost3g_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingrulecompilation_1", + "id": "device_vendor_msft_policy_config_datausage_setcost3g_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingruleeditor", - "displayName": "Rule Editor", + "id": "device_vendor_msft_policy_config_datausage_setcost3g_cost3g_dropdownlist", + "displayName": "Please select a 3G connection cost value to set: (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingruleeditor_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_datausage_setcost3g_cost3g_dropdownlist_1", + "displayName": "Unrestricted", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingruleeditor_1", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingsearchplugin", - "displayName": "Search Plugin", - "options": [ - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingsearchplugin_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_datausage_setcost3g_cost3g_dropdownlist_2", + "displayName": "Fixed", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingsearchplugin_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_datausage_setcost3g_cost3g_dropdownlist_3", + "displayName": "Variable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingsearchroaming", - "displayName": "Search Roaming", + "id": "device_vendor_msft_policy_config_datausage_setcost4g", + "displayName": "Set 4G Cost", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingsearchroaming_0", + "id": "device_vendor_msft_policy_config_datausage_setcost4g_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingsearchroaming_1", + "id": "device_vendor_msft_policy_config_datausage_setcost4g_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingservices", - "displayName": "Services", + "id": "device_vendor_msft_policy_config_datausage_setcost4g_cost4g_dropdownlist", + "displayName": "Please select a 4G connection cost value to set: (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingservices_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_datausage_setcost4g_cost4g_dropdownlist_1", + "displayName": "Unrestricted", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingservices_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_datausage_setcost4g_cost4g_dropdownlist_2", + "displayName": "Fixed", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_datausage_setcost4g_cost4g_dropdownlist_3", + "displayName": "Variable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcaccessnetworkascomputer", - "displayName": "Access Network as Computer Object", + "id": "device_vendor_msft_policy_config_defender_allowarchivescanning", + "displayName": "Allow Archive Scanning", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcaccessnetworkascomputer_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowarchivescanning_0", + "displayName": "Not allowed. Turns off scanning on archived files.", + "description": "Not allowed. Turns off scanning on archived files." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcaccessnetworkascomputer_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowarchivescanning_1", + "displayName": "Allowed. Scans the archive files.", + "description": "Allowed. Scans the archive files." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcattachedvhdsddl", - "displayName": "Attached VHD SDDL", + "id": "device_vendor_msft_policy_config_defender_allowbehaviormonitoring", + "displayName": "Allow Behavior Monitoring", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcattachedvhdsddl_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowbehaviormonitoring_0", + "displayName": "Not allowed. Turns off behavior monitoring.", + "description": "Not allowed. Turns off behavior monitoring." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcattachedvhdsddl_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowbehaviormonitoring_1", + "displayName": "Allowed. Turns on real-time behavior monitoring.", + "description": "Allowed. Turns on real-time behavior monitoring." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcattachedvhdsddl_odfcattachedvhdsddl", - "displayName": "Attached VHD SDDL (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeofficeactivation", - "displayName": "Include Office Activation", + "id": "device_vendor_msft_policy_config_defender_allowcloudprotection", + "displayName": "Allow Cloud Protection", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeofficeactivation_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowcloudprotection_0", + "displayName": "Not allowed. Turns off Cloud Protection.", + "description": "Not allowed. Turns off Cloud Protection." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeofficeactivation_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowcloudprotection_1", + "displayName": "Allowed. Turns on Cloud Protection.", + "description": "Allowed. Turns on Cloud Protection." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonedrive", - "displayName": "Include OneDrive", + "id": "device_vendor_msft_policy_config_defender_allowemailscanning", + "displayName": "Allow Email Scanning", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonedrive_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowemailscanning_0", + "displayName": "Not allowed. Turns off email scanning.", + "description": "Not allowed. Turns off email scanning." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonedrive_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowemailscanning_1", + "displayName": "Allowed. Turns on email scanning.", + "description": "Allowed. Turns on email scanning." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonenote", - "displayName": "Include OneNote", + "id": "device_vendor_msft_policy_config_defender_allowfullscanonmappednetworkdrives", + "displayName": "Allow Full Scan On Mapped Network Drives", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonenote_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowfullscanonmappednetworkdrives_0", + "displayName": "Not allowed. Disables scanning on mapped network drives.", + "description": "Not allowed. Disables scanning on mapped network drives." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonenote_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowfullscanonmappednetworkdrives_1", + "displayName": "Allowed. Scans mapped network drives.", + "description": "Allowed. Scans mapped network drives." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonenoteuwp", - "displayName": "Include OneNote UWP", + "id": "device_vendor_msft_policy_config_defender_allowfullscanremovabledrivescanning", + "displayName": "Allow Full Scan Removable Drive Scanning", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonenoteuwp_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowfullscanremovabledrivescanning_0", + "displayName": "Not allowed. Turns off scanning on removable drives.", + "description": "Not allowed. Turns off scanning on removable drives." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonenoteuwp_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowfullscanremovabledrivescanning_1", + "displayName": "Allowed. Scans removable drives.", + "description": "Allowed. Scans removable drives." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeoutlook", - "displayName": "Include Outlook", + "id": "device_vendor_msft_policy_config_defender_allowintrusionpreventionsystem", + "displayName": "[Deprecated] Allow Intrusion Prevention System", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeoutlook_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowintrusionpreventionsystem_0", + "displayName": "Not allowed.", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeoutlook_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowintrusionpreventionsystem_1", + "displayName": "Allowed.", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeoutlookpersonalization", - "displayName": "Include Outlook Personalization", + "id": "device_vendor_msft_policy_config_defender_allowioavprotection", + "displayName": "Allow scanning of all downloaded files and attachments", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeoutlookpersonalization_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowioavprotection_0", + "displayName": "Not allowed.", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeoutlookpersonalization_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowioavprotection_1", + "displayName": "Allowed.", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludesharepoint", - "displayName": "Include SharePoint", + "id": "device_vendor_msft_policy_config_defender_allowonaccessprotection", + "displayName": "Allow On Access Protection", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludesharepoint_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowonaccessprotection_0", + "displayName": "Not allowed.", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludesharepoint_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowonaccessprotection_1", + "displayName": "Allowed.", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeskype", - "displayName": "Include Skype", + "id": "device_vendor_msft_policy_config_defender_allowrealtimemonitoring", + "displayName": "Allow Realtime Monitoring", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeskype_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowrealtimemonitoring_0", + "displayName": "Not allowed. Turns off the real-time monitoring service.", + "description": "Not allowed. Turns off the real-time monitoring service." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeskype_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowrealtimemonitoring_1", + "displayName": "Allowed. Turns on and runs the real-time monitoring service.", + "description": "Allowed. Turns on and runs the real-time monitoring service." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeteams", - "displayName": "Include Teams", + "id": "device_vendor_msft_policy_config_defender_allowscanningnetworkfiles", + "displayName": "Allow Scanning Network Files", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeteams_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowscanningnetworkfiles_0", + "displayName": "Not allowed. Turns off scanning of network files.", + "description": "Not allowed. Turns off scanning of network files." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeteams_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowscanningnetworkfiles_1", + "displayName": "Allowed. Scans network files.", + "description": "Allowed. Scans network files." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcisdynamicvhd", - "displayName": "Is Dynamic (VHD)", + "id": "device_vendor_msft_policy_config_defender_allowscriptscanning", + "displayName": "Allow Script Scanning", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcisdynamicvhd_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowscriptscanning_0", + "displayName": "Not allowed.", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcisdynamicvhd_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowscriptscanning_1", + "displayName": "Allowed.", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfclockedretrycount", - "displayName": "Locked Retry Count", + "id": "device_vendor_msft_policy_config_defender_allowuseruiaccess", + "displayName": "Allow User UI Access", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfclockedretrycount_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowuseruiaccess_0", + "displayName": "Not allowed. Prevents users from accessing UI.", + "description": "Not allowed. Prevents users from accessing UI." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfclockedretrycount_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_allowuseruiaccess_1", + "displayName": "Allowed. Lets users access UI.", + "description": "Allowed. Lets users access UI." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfclockedretrycount_odfclockedretrycount", - "displayName": "Locked Retry Count (Device)", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductiononlyexclusions", + "displayName": "Attack Surface Reduction Only Exclusions", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfclockedretryinterval", - "displayName": "Locked Retry Interval", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules", + "displayName": "Attack Surface Reduction Rules", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockabuseofexploitedvulnerablesigneddrivers", + "displayName": "Block abuse of exploited vulnerable signed drivers (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfclockedretryinterval_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockabuseofexploitedvulnerablesigneddrivers_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfclockedretryinterval_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockabuseofexploitedvulnerablesigneddrivers_block", + "displayName": "Block", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfclockedretryinterval_odfclockedretryinterval", - "displayName": "Locked Retry Interval (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcmirrorlocalosttovhd", - "displayName": "Mirror Local OST To VHD", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcmirrorlocalosttovhd_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockabuseofexploitedvulnerablesigneddrivers_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcmirrorlocalosttovhd_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockabuseofexploitedvulnerablesigneddrivers_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcmirrorlocalosttovhd_odfcmirrorlocalosttovhd", - "displayName": "", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockabuseofexploitedvulnerablesigneddrivers_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockadobereaderfromcreatingchildprocesses", + "displayName": "Block Adobe Reader from creating child processes", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcmirrorlocalosttovhd_odfcmirrorlocalosttovhd_0", - "displayName": "Do not mirror OST to VHD", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockadobereaderfromcreatingchildprocesses_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcmirrorlocalosttovhd_odfcmirrorlocalosttovhd_1", - "displayName": "Copy OST to VHD", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockadobereaderfromcreatingchildprocesses_block", + "displayName": "Block", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcmirrorlocalosttovhd_odfcmirrorlocalosttovhd_2", - "displayName": "Move OST to VHD", - "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcnumbersessionvhdstokeep", - "displayName": "Number Session VHD(s) To Keep", - "options": [ - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcnumbersessionvhdstokeep_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockadobereaderfromcreatingchildprocesses_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcnumbersessionvhdstokeep_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockadobereaderfromcreatingchildprocesses_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcnumbersessionvhdstokeep_odfcnumbersessionvhdstokeep", - "displayName": "Number Session VHD(s) To Keep (Device)", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockadobereaderfromcreatingchildprocesses_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcodfcenabled", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockallofficeapplicationsfromcreatingchildprocesses", + "displayName": "Block all Office applications from creating child processes", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcodfcenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockallofficeapplicationsfromcreatingchildprocesses_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcodfcenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockallofficeapplicationsfromcreatingchildprocesses_block", + "displayName": "Block", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcoutlookcachedmode", - "displayName": "Outlook Cached Mode", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcoutlookcachedmode_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockallofficeapplicationsfromcreatingchildprocesses_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcoutlookcachedmode_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockallofficeapplicationsfromcreatingchildprocesses_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcoutlookfolderpath", - "displayName": "Outlook Folder Path", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockallofficeapplicationsfromcreatingchildprocesses_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockcredentialstealingfromwindowslocalsecurityauthoritysubsystem", + "displayName": "Block credential stealing from the Windows local security authority subsystem", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcoutlookfolderpath_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockcredentialstealingfromwindowslocalsecurityauthoritysubsystem_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcoutlookfolderpath_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockcredentialstealingfromwindowslocalsecurityauthoritysubsystem_block", + "displayName": "Block", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcoutlookfolderpath_odfcoutlookfolderpath", - "displayName": "Outlook Folder Path (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcpreventloginwithfailure", - "displayName": "Prevent Login With Failure", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcpreventloginwithfailure_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockcredentialstealingfromwindowslocalsecurityauthoritysubsystem_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcpreventloginwithfailure_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockcredentialstealingfromwindowslocalsecurityauthoritysubsystem_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcpreventloginwithtempprofile", - "displayName": "Prevent Login With Temp Profile", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockcredentialstealingfromwindowslocalsecurityauthoritysubsystem_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutablecontentfromemailclientandwebmail", + "displayName": "Block executable content from email client and webmail", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcpreventloginwithtempprofile_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutablecontentfromemailclientandwebmail_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcpreventloginwithtempprofile_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutablecontentfromemailclientandwebmail_block", + "displayName": "Block", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcreattachcount", - "displayName": "Reattach Count", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcreattachcount_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutablecontentfromemailclientandwebmail_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcreattachcount_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutablecontentfromemailclientandwebmail_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcreattachcount_odfcreattachcount", - "displayName": "Reattach Count (Device)", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutablecontentfromemailclientandwebmail_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcreattachinterval", - "displayName": "Reattach Interval", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutablefilesrunningunlesstheymeetprevalenceagetrustedlistcriterion", + "displayName": "Block executable files from running unless they meet a prevalence, age, or trusted list criterion", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcreattachinterval_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutablefilesrunningunlesstheymeetprevalenceagetrustedlistcriterion_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcreattachinterval_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutablefilesrunningunlesstheymeetprevalenceagetrustedlistcriterion_block", + "displayName": "Block", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutablefilesrunningunlesstheymeetprevalenceagetrustedlistcriterion_audit", + "displayName": "Audit", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutablefilesrunningunlesstheymeetprevalenceagetrustedlistcriterion_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcreattachinterval_odfcreattachinterval", - "displayName": "Reattach Interval (Device)", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutablefilesrunningunlesstheymeetprevalenceagetrustedlistcriterion_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcredirecttype", - "displayName": "Redirect Type", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutionofpotentiallyobfuscatedscripts", + "displayName": "Block execution of potentially obfuscated scripts", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcredirecttype_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutionofpotentiallyobfuscatedscripts_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcredirecttype_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutionofpotentiallyobfuscatedscripts_block", + "displayName": "Block", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcredirecttype_odfcredirecttype", - "displayName": "", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcredirecttype_odfcredirecttype_1", - "displayName": "Legacy Redirection", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutionofpotentiallyobfuscatedscripts_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcredirecttype_odfcredirecttype_2", - "displayName": "FSLogix Redirection", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutionofpotentiallyobfuscatedscripts_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcrefreshuserpolicy", - "displayName": "Refresh User Policy", - "options": [ - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcrefreshuserpolicy_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcrefreshuserpolicy_1", - "displayName": "Enabled", - "description": null - } - ] + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockexecutionofpotentiallyobfuscatedscripts_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", + "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcremoveorphanedostfilesonlogoff", - "displayName": "Remove Orphaned OST Files On Logoff", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockjavascriptorvbscriptfromlaunchingdownloadedexecutablecontent", + "displayName": "Block JavaScript or VBScript from launching downloaded executable content", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcremoveorphanedostfilesonlogoff_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockjavascriptorvbscriptfromlaunchingdownloadedexecutablecontent_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcremoveorphanedostfilesonlogoff_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockjavascriptorvbscriptfromlaunchingdownloadedexecutablecontent_block", + "displayName": "Block", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcroamsearch", - "displayName": "Roam Search", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcroamsearch_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockjavascriptorvbscriptfromlaunchingdownloadedexecutablecontent_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcroamsearch_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockjavascriptorvbscriptfromlaunchingdownloadedexecutablecontent_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcroamsearch_odfcroamsearch", - "displayName": "", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockjavascriptorvbscriptfromlaunchingdownloadedexecutablecontent_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficeapplicationsfromcreatingexecutablecontent", + "displayName": "Block Office applications from creating executable content", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcroamsearch_odfcroamsearch_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficeapplicationsfromcreatingexecutablecontent_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcroamsearch_odfcroamsearch_1", - "displayName": "Single-user Search", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficeapplicationsfromcreatingexecutablecontent_block", + "displayName": "Block", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcroamsearch_odfcroamsearch_2", - "displayName": "Multi-user Search", - "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcsizeinmbs", - "displayName": "Size In MBs", - "options": [ - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcsizeinmbs_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficeapplicationsfromcreatingexecutablecontent_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcsizeinmbs_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficeapplicationsfromcreatingexecutablecontent_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcsizeinmbs_odfcsizeinmbs", - "displayName": "Size In MBs (Device)", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficeapplicationsfromcreatingexecutablecontent_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdaccessmode", - "displayName": "VHD Access Mode", - "options": [ - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdaccessmode_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdaccessmode_1", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdaccessmode_odfcvhdaccessmode", - "displayName": "", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficeapplicationsfrominjectingcodeintootherprocesses", + "displayName": "Block Office applications from injecting code into other processes", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdaccessmode_odfcvhdaccessmode_0", - "displayName": "Direct Access", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdaccessmode_odfcvhdaccessmode_1", - "displayName": "DiffDisk On Network", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficeapplicationsfrominjectingcodeintootherprocesses_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdaccessmode_odfcvhdaccessmode_2", - "displayName": "Local DiffDisk", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficeapplicationsfrominjectingcodeintootherprocesses_block", + "displayName": "Block", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdaccessmode_odfcvhdaccessmode_3", - "displayName": "Unique Disk per Session", - "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdlocations", - "displayName": "VHD Locations", - "options": [ - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdlocations_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficeapplicationsfrominjectingcodeintootherprocesses_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdlocations_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficeapplicationsfrominjectingcodeintootherprocesses_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdlocations_odfcvhdlocations", - "displayName": "VHD Locations (Device)", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficeapplicationsfrominjectingcodeintootherprocesses_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdxsectorsize", - "displayName": "VHDX Sector Size", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficecommunicationappfromcreatingchildprocesses", + "displayName": "Block Office communication application from creating child processes", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdxsectorsize_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficecommunicationappfromcreatingchildprocesses_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdxsectorsize_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficecommunicationappfromcreatingchildprocesses_block", + "displayName": "Block", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdxsectorsize_odfcvhdxsectorsize", - "displayName": "", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdxsectorsize_odfcvhdxsectorsize_512", - "displayName": "512 bytes", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficecommunicationappfromcreatingchildprocesses_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdxsectorsize_odfcvhdxsectorsize_4096", - "displayName": "4 KB", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficecommunicationappfromcreatingchildprocesses_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumetypevhdorvhdx", - "displayName": "Volume Type (VHD or VHDX)", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockofficecommunicationappfromcreatingchildprocesses_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockpersistencethroughwmieventsubscription", + "displayName": "Block persistence through WMI event subscription", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumetypevhdorvhdx_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockpersistencethroughwmieventsubscription_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumetypevhdorvhdx_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockpersistencethroughwmieventsubscription_block", + "displayName": "Block", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumetypevhdorvhdx_odfcvolumetypevhdorvhdx", - "displayName": "", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumetypevhdorvhdx_odfcvolumetypevhdorvhdx_vhd", - "displayName": "VHD", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockpersistencethroughwmieventsubscription_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumetypevhdorvhdx_odfcvolumetypevhdorvhdx_vhdx", - "displayName": "VHDX", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockpersistencethroughwmieventsubscription_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumewaittimemilliseconds", - "displayName": "Volume Wait Time (milliseconds)", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockprocesscreationsfrompsexecandwmicommands", + "displayName": "Block process creations originating from PSExec and WMI commands", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumewaittimemilliseconds_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockprocesscreationsfrompsexecandwmicommands_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumewaittimemilliseconds_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockprocesscreationsfrompsexecandwmicommands_block", + "displayName": "Block", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumewaittimemilliseconds_odfcvolumewaittimemilliseconds", - "displayName": "Volume Wait Time (milliseconds) (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdlocations", - "displayName": "CCD Locations", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdlocations_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockprocesscreationsfrompsexecandwmicommands_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdlocations_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockprocesscreationsfrompsexecandwmicommands_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdlocations_odfcccdlocations", - "displayName": "CCD Locations (Device)", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockprocesscreationsfrompsexecandwmicommands_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdmaxcachesizeinmbs", - "displayName": "CCD Max Cache Size in MBs", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockrebootingmachineinsafemode", + "displayName": "Block rebooting machine in Safe Mode", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdmaxcachesizeinmbs_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockrebootingmachineinsafemode_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdmaxcachesizeinmbs_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockrebootingmachineinsafemode_block", + "displayName": "Block", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdmaxcachesizeinmbs_odfcccdmaxcachesizeinmbs", - "displayName": "CCD Max Cache Size in MBs (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdunregistertimeout", - "displayName": "CCD Unregister Timeout", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdunregistertimeout_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockrebootingmachineinsafemode_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdunregistertimeout_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockrebootingmachineinsafemode_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdunregistertimeout_odfcccdunregistertimeout", - "displayName": "CCD Unregister Timeout (Device)", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockrebootingmachineinsafemode_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcclearcacheonforcedunregister", - "displayName": "Clear Cache On Forced Unregister", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockuntrustedunsignedprocessesthatrunfromusb", + "displayName": "Block untrusted and unsigned processes that run from USB", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcclearcacheonforcedunregister_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockuntrustedunsignedprocessesthatrunfromusb_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcclearcacheonforcedunregister_1", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcclearcacheonlogoff", - "displayName": "Clear Cache On Logoff", - "options": [ - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcclearcacheonlogoff_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockuntrustedunsignedprocessesthatrunfromusb_block", + "displayName": "Block", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcclearcacheonlogoff_1", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfchealthyprovidersrequiredforregister", - "displayName": "Healthy Providers Required For Register", - "options": [ - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfchealthyprovidersrequiredforregister_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockuntrustedunsignedprocessesthatrunfromusb_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfchealthyprovidersrequiredforregister_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockuntrustedunsignedprocessesthatrunfromusb_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfchealthyprovidersrequiredforregister_odfchealthyprovidersrequiredforregister", - "displayName": "Healthy Providers Required For Register (Device)", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockuntrustedunsignedprocessesthatrunfromusb_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfchealthyprovidersrequiredforunregister", - "displayName": "Healthy Providers Required For Unregister", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockuseofcopiedorimpersonatedsystemtools", + "displayName": "Block use of copied or impersonated system tools", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfchealthyprovidersrequiredforunregister_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockuseofcopiedorimpersonatedsystemtools_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfchealthyprovidersrequiredforunregister_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockuseofcopiedorimpersonatedsystemtools_block", + "displayName": "Block", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfchealthyprovidersrequiredforunregister_odfchealthyprovidersrequiredforunregister", - "displayName": "Healthy Providers Required For Unregister (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcdiffdiskparentfolderpath", - "displayName": "Diff Disk Parent Folder Path", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcdiffdiskparentfolderpath_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockuseofcopiedorimpersonatedsystemtools_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcdiffdiskparentfolderpath_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockuseofcopiedorimpersonatedsystemtools_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcdiffdiskparentfolderpath_odfcdiffdiskparentfolderpath", - "displayName": "Diff Disk Parent Folder Path (Device)", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockuseofcopiedorimpersonatedsystemtools_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcflipflopprofiledirectoryname", - "displayName": "Flip Flop Profile Directory Name", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockwebshellcreationforservers", + "displayName": "Block Webshell creation for Servers", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcflipflopprofiledirectoryname_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockwebshellcreationforservers_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcflipflopprofiledirectoryname_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockwebshellcreationforservers_block", + "displayName": "Block", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcnoprofilecontainingfolder", - "displayName": "No Profile Containing Folder", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcnoprofilecontainingfolder_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockwebshellcreationforservers_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcnoprofilecontainingfolder_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockwebshellcreationforservers_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcsiddirectorynamematch", - "displayName": "SID Directory Name Match", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockwebshellcreationforservers_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockwin32apicallsfromofficemacros", + "displayName": "Block Win32 API calls from Office macros", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcsiddirectorynamematch_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockwin32apicallsfromofficemacros_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcsiddirectorynamematch_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockwin32apicallsfromofficemacros_block", + "displayName": "Block", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcsiddirectorynamematch_odfcsiddirectorynamematch", - "displayName": "SID Directory Name Match (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcsiddirectorynamepattern", - "displayName": "SID Directory Name Pattern", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcsiddirectorynamepattern_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockwin32apicallsfromofficemacros_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcsiddirectorynamepattern_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockwin32apicallsfromofficemacros_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcsiddirectorynamepattern_odfcsiddirectorynamepattern", - "displayName": "SID Directory Name Pattern (Device)", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_blockwin32apicallsfromofficemacros_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcvhdnamematch", - "displayName": "VHD Name Match", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_useadvancedprotectionagainstransomware", + "displayName": "Use advanced protection against ransomware", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcvhdnamematch_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_useadvancedprotectionagainstransomware_off", + "displayName": "Off", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcvhdnamematch_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_useadvancedprotectionagainstransomware_block", + "displayName": "Block", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcvhdnamematch_odfcvhdnamematch", - "displayName": "VHD Name Match (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcvhdnamepattern", - "displayName": "VHD Name Pattern", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcvhdnamepattern_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_useadvancedprotectionagainstransomware_audit", + "displayName": "Audit", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcvhdnamepattern_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_useadvancedprotectionagainstransomware_warn", + "displayName": "Warn", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcvhdnamepattern_odfcvhdnamepattern", - "displayName": "VHD Name Pattern (Device)", + "id": "device_vendor_msft_policy_config_defender_attacksurfacereductionrules_useadvancedprotectionagainstransomware_perruleexclusions", + "displayName": "ASR Only Per Rule Exclusions", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesaccessnetworkascomputer", - "displayName": "Access Network as Computer Object", + "id": "device_vendor_msft_policy_config_defender_avgcpuloadfactor", + "displayName": "Avg CPU Load Factor", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_defender_checkforsignaturesbeforerunningscan", + "displayName": "Check For Signatures Before Running Scan", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesaccessnetworkascomputer_0", + "id": "device_vendor_msft_policy_config_defender_checkforsignaturesbeforerunningscan_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesaccessnetworkascomputer_1", + "id": "device_vendor_msft_policy_config_defender_checkforsignaturesbeforerunningscan_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesattachedvhdsddl", - "displayName": "Attached VHD SDDL", + "id": "device_vendor_msft_policy_config_defender_cloudblocklevel", + "displayName": "Cloud Block Level", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesattachedvhdsddl_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_cloudblocklevel_0", + "displayName": "Default State", + "description": "Default State" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesattachedvhdsddl_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_cloudblocklevel_2", + "displayName": "High", + "description": "High" + }, + { + "id": "device_vendor_msft_policy_config_defender_cloudblocklevel_4", + "displayName": "High Plus", + "description": "HighPlus" + }, + { + "id": "device_vendor_msft_policy_config_defender_cloudblocklevel_6", + "displayName": "Zero Tolerance", + "description": "ZeroTolerance" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesattachedvhdsddl_profilesattachedvhdsddl", - "displayName": "Attached VHD SDDL (Device)", + "id": "device_vendor_msft_policy_config_defender_cloudextendedtimeout", + "displayName": "Cloud Extended Timeout", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilescleanoutnotifications", - "displayName": "Clean Out Notifications", - "options": [ - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilescleanoutnotifications_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilescleanoutnotifications_1", - "displayName": "Enabled", - "description": null - } - ] + "id": "device_vendor_msft_policy_config_defender_controlledfolderaccessallowedapplications", + "displayName": "Controlled Folder Access Allowed Applications", + "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesdeletelocalprofilewhenvhdshouldapply", - "displayName": "Delete Local Profile When VHD Should Apply", + "id": "device_vendor_msft_policy_config_defender_controlledfolderaccessprotectedfolders", + "displayName": "Controlled Folder Access Protected Folders", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_defender_daystoretaincleanedmalware", + "displayName": "Days To Retain Cleaned Malware", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_defender_disablecatchupfullscan", + "displayName": "Disable Catchup Full Scan", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesdeletelocalprofilewhenvhdshouldapply_0", + "id": "device_vendor_msft_policy_config_defender_disablecatchupfullscan_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesdeletelocalprofilewhenvhdshouldapply_1", + "id": "device_vendor_msft_policy_config_defender_disablecatchupfullscan_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesenabled", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_disablecatchupquickscan", + "displayName": "Disable Catchup Quick Scan", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesenabled_0", + "id": "device_vendor_msft_policy_config_defender_disablecatchupquickscan_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesenabled_1", + "id": "device_vendor_msft_policy_config_defender_disablecatchupquickscan_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesinstallappxpackages", - "displayName": "Install Appx Packages", + "id": "device_vendor_msft_policy_config_defender_enablecontrolledfolderaccess", + "displayName": "Enable Controlled Folder Access", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesinstallappxpackages_0", + "id": "device_vendor_msft_policy_config_defender_enablecontrolledfolderaccess_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesinstallappxpackages_1", + "id": "device_vendor_msft_policy_config_defender_enablecontrolledfolderaccess_1", "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesisdynamicvhd", - "displayName": "Is Dynamic (VHD)", - "options": [ + "description": "Enabled" + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesisdynamicvhd_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_enablecontrolledfolderaccess_2", + "displayName": "Audit Mode", + "description": "Audit Mode" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesisdynamicvhd_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_enablecontrolledfolderaccess_3", + "displayName": "Block disk modification only", + "description": "Block disk modification only" + }, + { + "id": "device_vendor_msft_policy_config_defender_enablecontrolledfolderaccess_4", + "displayName": "Audit disk modification only", + "description": "Audit disk modification only" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileskeeplocaldirectoryafterlogoff", - "displayName": "Keep Local Directory (after logoff)", + "id": "device_vendor_msft_policy_config_defender_enablelowcpupriority", + "displayName": "Enable Low CPU Priority", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileskeeplocaldirectoryafterlogoff_0", + "id": "device_vendor_msft_policy_config_defender_enablelowcpupriority_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileskeeplocaldirectoryafterlogoff_1", + "id": "device_vendor_msft_policy_config_defender_enablelowcpupriority_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileslockedretrycount", - "displayName": "Locked Retry Count", + "id": "device_vendor_msft_policy_config_defender_enablenetworkprotection", + "displayName": "Enable Network Protection", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileslockedretrycount_0", + "id": "device_vendor_msft_policy_config_defender_enablenetworkprotection_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileslockedretrycount_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_enablenetworkprotection_1", + "displayName": "Enabled (block mode)", + "description": "Enabled (block mode)" + }, + { + "id": "device_vendor_msft_policy_config_defender_enablenetworkprotection_2", + "displayName": "Enabled (audit mode)", + "description": "Enabled (audit mode)" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileslockedretrycount_profileslockedretrycount", - "displayName": "Locked Retry Count (Device)", + "id": "device_vendor_msft_policy_config_defender_excludedextensions", + "displayName": "Excluded Extensions", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileslockedretryinterval", - "displayName": "Locked Retry Interval", - "options": [ - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileslockedretryinterval_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileslockedretryinterval_1", - "displayName": "Enabled", - "description": null - } - ] + "id": "device_vendor_msft_policy_config_defender_excludedpaths", + "displayName": "Excluded Paths", + "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileslockedretryinterval_profileslockedretryinterval", - "displayName": "Locked Retry Interval (Device)", + "id": "device_vendor_msft_policy_config_defender_excludedprocesses", + "displayName": "Excluded Processes", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesoutlookcachedmode", - "displayName": "Outlook Cached Mode", + "id": "device_vendor_msft_policy_config_defender_puaprotection", + "displayName": "PUA Protection", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesoutlookcachedmode_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_puaprotection_0", + "displayName": "PUA Protection off. Windows Defender will not protect against potentially unwanted applications.", + "description": "PUA Protection off. Windows Defender will not protect against potentially unwanted applications." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesoutlookcachedmode_1", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilespreventloginwithfailure", - "displayName": "Prevent Login With Failure", - "options": [ - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilespreventloginwithfailure_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_puaprotection_1", + "displayName": "PUA Protection on. Detected items are blocked. They will show in history along with other threats.", + "description": "PUA Protection on. Detected items are blocked. They will show in history along with other threats." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilespreventloginwithfailure_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_puaprotection_2", + "displayName": "Audit mode. Windows Defender will detect potentially unwanted applications, but take no action. You can review information about the applications Windows Defender would have taken action against by searching for events created by Windows Defender in the Event Viewer.", + "description": "Audit mode. Windows Defender will detect potentially unwanted applications, but take no action. You can review information about the applications Windows Defender would have taken action against by searching for events created by Windows Defender in the Event Viewer." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilespreventloginwithtempprofile", - "displayName": "Prevent Login With Temp Profile", + "id": "device_vendor_msft_policy_config_defender_realtimescandirection", + "displayName": "Real Time Scan Direction", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilespreventloginwithtempprofile_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_realtimescandirection_0", + "displayName": "Monitor all files (bi-directional).", + "description": "Monitor all files (bi-directional)." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilespreventloginwithtempprofile_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_realtimescandirection_1", + "displayName": "Monitor incoming files.", + "description": "Monitor incoming files." + }, + { + "id": "device_vendor_msft_policy_config_defender_realtimescandirection_2", + "displayName": "Monitor outgoing files.", + "description": "Monitor outgoing files." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiledirectorysddl", - "displayName": "Profile Directory SDDL", + "id": "device_vendor_msft_policy_config_defender_scanparameter", + "displayName": "Scan Parameter", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiledirectorysddl_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_scanparameter_1", + "displayName": "Quick scan", + "description": "Quick scan" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiledirectorysddl_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_scanparameter_2", + "displayName": "Full scan", + "description": "Full scan" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiledirectorysddl_profilesprofiledirectorysddl", - "displayName": "Profile Directory SDDL (Device)", + "id": "device_vendor_msft_policy_config_defender_schedulequickscantime", + "displayName": "Schedule Quick Scan Time", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiletype", - "displayName": "Profile Type", + "id": "device_vendor_msft_policy_config_defender_schedulescanday", + "displayName": "Schedule Scan Day", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiletype_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_schedulescanday_0", + "displayName": "Every day", + "description": "Every day" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiletype_1", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiletype_profilesprofiletype", - "displayName": "", - "options": [ + "id": "device_vendor_msft_policy_config_defender_schedulescanday_1", + "displayName": "Sunday", + "description": "Sunday" + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiletype_profilesprofiletype_0", - "displayName": "Normal Profile", - "description": null + "id": "device_vendor_msft_policy_config_defender_schedulescanday_2", + "displayName": "Monday", + "description": "Monday" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiletype_profilesprofiletype_1", - "displayName": "Read / Write Profile", - "description": null + "id": "device_vendor_msft_policy_config_defender_schedulescanday_3", + "displayName": "Tuesday", + "description": "Tuesday" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiletype_profilesprofiletype_2", - "displayName": "Read Only Profile", - "description": null + "id": "device_vendor_msft_policy_config_defender_schedulescanday_4", + "displayName": "Wednesday", + "description": "Wednesday" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiletype_profilesprofiletype_3", - "displayName": "Read / Write profile - fallback to Read Only", - "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesreattachcount", - "displayName": "Reattach Count", - "options": [ + "id": "device_vendor_msft_policy_config_defender_schedulescanday_5", + "displayName": "Thursday", + "description": "Thursday" + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesreattachcount_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_schedulescanday_6", + "displayName": "Friday", + "description": "Friday" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesreattachcount_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_schedulescanday_7", + "displayName": "Saturday", + "description": "Saturday" + }, + { + "id": "device_vendor_msft_policy_config_defender_schedulescanday_8", + "displayName": "No scheduled scan", + "description": "No scheduled scan" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesreattachcount_profilesreattachcount", - "displayName": "Reattach Count (Device)", + "id": "device_vendor_msft_policy_config_defender_schedulescantime", + "displayName": "Schedule Scan Time", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesreattachinterval", - "displayName": "Reattach Interval", + "id": "device_vendor_msft_policy_config_defender_securityintelligencelocation", + "displayName": "Security Intelligence Location", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_defender_signatureupdatefallbackorder", + "displayName": "Signature Update Fallback Order", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_defender_signatureupdatefilesharessources", + "displayName": "Signature Update File Shares Sources", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_defender_signatureupdateinterval", + "displayName": "Signature Update Interval", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_defender_submitsamplesconsent", + "displayName": "Submit Samples Consent", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesreattachinterval_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_submitsamplesconsent_0", + "displayName": "Always prompt.", + "description": "Always prompt." }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesreattachinterval_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_defender_submitsamplesconsent_1", + "displayName": "Send safe samples automatically.", + "description": "Send safe samples automatically." + }, + { + "id": "device_vendor_msft_policy_config_defender_submitsamplesconsent_2", + "displayName": "Never send.", + "description": "Never send." + }, + { + "id": "device_vendor_msft_policy_config_defender_submitsamplesconsent_3", + "displayName": "Send all samples automatically.", + "description": "Send all samples automatically." } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesreattachinterval_profilesreattachinterval", - "displayName": "Reattach Interval (Device)", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction", + "displayName": "Threat Severity Default Action", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesrebootonuserlogoff", - "displayName": "Reboot On User Logoff", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_highseveritythreats", + "displayName": "Remediation action for High severity threats", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesrebootonuserlogoff_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_highseveritythreats_clean", + "displayName": "Clean. Service tries to recover files and try to disinfect.", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesrebootonuserlogoff_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_highseveritythreats_quarantine", + "displayName": "Quarantine. Moves files to quarantine.", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesrebootonuserlogoff_profilesrebootonuserlogoff", - "displayName": "", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesrebootonuserlogoff_profilesrebootonuserlogoff_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_highseveritythreats_remove", + "displayName": "Remove. Removes files from system.", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesrebootonuserlogoff_profilesrebootonuserlogoff_1", - "displayName": "Reboot on any logoff", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_highseveritythreats_allow", + "displayName": "Allow. Allows file/does none of the above actions.", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesrebootonuserlogoff_profilesrebootonuserlogoff_2", - "displayName": "Reboot only on any FSLogix Profile logoff", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_highseveritythreats_userdefined", + "displayName": "User defined. Requires user to make a decision on which action to take.", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_highseveritythreats_block", + "displayName": "Block. Blocks file execution.", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirectionxmlsourcefolder", - "displayName": "Redirection XML Source Folder", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_lowseveritythreats", + "displayName": "Remediation action for Low severity threats", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirectionxmlsourcefolder_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_lowseveritythreats_clean", + "displayName": "Clean. Service tries to recover files and try to disinfect.", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirectionxmlsourcefolder_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_lowseveritythreats_quarantine", + "displayName": "Quarantine. Moves files to quarantine.", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirectionxmlsourcefolder_profilesredirectionxmlsourcefolder", - "displayName": "Redirection XML Source Folder (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirecttype", - "displayName": "Redirect Type", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirecttype_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_lowseveritythreats_remove", + "displayName": "Remove. Removes files from system.", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirecttype_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_lowseveritythreats_allow", + "displayName": "Allow. Allows file/does none of the above actions.", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirecttype_profilesredirecttype", - "displayName": "", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirecttype_profilesredirecttype_1", - "displayName": "Legacy Redirection", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_lowseveritythreats_userdefined", + "displayName": "User defined. Requires user to make a decision on which action to take.", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirecttype_profilesredirecttype_2", - "displayName": "FSLogix Redirection", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_lowseveritythreats_block", + "displayName": "Block. Blocks file execution.", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesremoveorphanedostfilesonlogoff", - "displayName": "Remove Orphaned OST Files On Logoff", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_moderateseveritythreats", + "displayName": "Remediation action for Moderate severity threats", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesremoveorphanedostfilesonlogoff_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_moderateseveritythreats_clean", + "displayName": "Clean. Service tries to recover files and try to disinfect.", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesremoveorphanedostfilesonlogoff_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_moderateseveritythreats_quarantine", + "displayName": "Quarantine. Moves files to quarantine.", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamidentity", - "displayName": "Roam Identity", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamidentity_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_moderateseveritythreats_remove", + "displayName": "Remove. Removes files from system.", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamidentity_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_moderateseveritythreats_allow", + "displayName": "Allow. Allows file/does none of the above actions.", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamsearch", - "displayName": "Roam Search", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamsearch_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_moderateseveritythreats_userdefined", + "displayName": "User defined. Requires user to make a decision on which action to take.", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamsearch_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_moderateseveritythreats_block", + "displayName": "Block. Blocks file execution.", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamsearch_profilesroamsearch", - "displayName": "", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_severethreats", + "displayName": "Remediation action for Severe threats", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamsearch_profilesroamsearch_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_severethreats_clean", + "displayName": "Clean. Service tries to recover files and try to disinfect.", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamsearch_profilesroamsearch_1", - "displayName": "Single-user Search", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_severethreats_quarantine", + "displayName": "Quarantine. Moves files to quarantine.", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamsearch_profilesroamsearch_2", - "displayName": "Multi-user Search", + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_severethreats_remove", + "displayName": "Remove. Removes files from system.", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_severethreats_allow", + "displayName": "Allow. Allows file/does none of the above actions.", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_severethreats_userdefined", + "displayName": "User defined. Requires user to make a decision on which action to take.", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_defender_threatseveritydefaultaction_severethreats_block", + "displayName": "Block. Blocks file execution.", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessettempfolderstolocalpath", - "displayName": "Set Temp Folders to Local Path", + "id": "device_vendor_msft_policy_config_deliveryoptimization_doabsolutemaxcachesize", + "displayName": "DO Absolute Max Cache Size", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_doallowvpnpeercaching", + "displayName": "DO Allow VPN Peer Caching", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessettempfolderstolocalpath_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_deliveryoptimization_doallowvpnpeercaching_0", + "displayName": "Not allowed", + "description": "Not allowed" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessettempfolderstolocalpath_1", + "id": "device_vendor_msft_policy_config_deliveryoptimization_doallowvpnpeercaching_1", + "displayName": "Allowed", + "description": "Allowed" + } + ] + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_docachehost", + "displayName": "DO Cache Host", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_docachehostsource", + "displayName": "DO Cache Host Source", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dodelaybackgrounddownloadfromhttp", + "displayName": "DO Delay Background Download From Http", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dodelaycacheserverfallbackbackground", + "displayName": "DO Delay Cache Server Fallback Background", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dodelaycacheserverfallbackforeground", + "displayName": "DO Delay Cache Server Fallback Foreground", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dodelayforegrounddownloadfromhttp", + "displayName": "DO Delay Foreground Download From Http", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dodisallowcacheserverdownloadsonvpn", + "displayName": "DO Disallow Cache Server Downloads On VPN", + "options": [ + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dodisallowcacheserverdownloadsonvpn_0", + "displayName": "Not Set", + "description": "Not Set" + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dodisallowcacheserverdownloadsonvpn_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessettempfolderstolocalpath_profilessettempfolderstolocalpath", - "displayName": "", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dodownloadmode", + "displayName": "DO Download Mode", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessettempfolderstolocalpath_profilessettempfolderstolocalpath_0", - "displayName": "Take no action", - "description": null + "id": "device_vendor_msft_policy_config_deliveryoptimization_dodownloadmode_0", + "displayName": "HTTP only, no peering", + "description": "HTTP only, no peering" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessettempfolderstolocalpath_profilessettempfolderstolocalpath_1", - "displayName": "Redirect TEMP and TMP to local drive", - "description": null + "id": "device_vendor_msft_policy_config_deliveryoptimization_dodownloadmode_1", + "displayName": "HTTP blended with peering behind the same NAT", + "description": "HTTP blended with peering behind the same NAT" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessettempfolderstolocalpath_profilessettempfolderstolocalpath_2", - "displayName": "Redirect INetCache to local drive", - "description": null + "id": "device_vendor_msft_policy_config_deliveryoptimization_dodownloadmode_2", + "displayName": "HTTP blended with peering across a private group", + "description": "HTTP blended with peering across a private group" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessettempfolderstolocalpath_profilessettempfolderstolocalpath_3", - "displayName": "Redirect TEMP, TMP and INetCache to local drive", - "description": null + "id": "device_vendor_msft_policy_config_deliveryoptimization_dodownloadmode_3", + "displayName": "HTTP blended with Internet peering", + "description": "HTTP blended with Internet peering" + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dodownloadmode_99", + "displayName": "HTTP only, no peering, no use of DO cloud service", + "description": "HTTP only, no peering, no use of DO cloud service" + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dodownloadmode_100", + "displayName": "Bypass mode, deprecated in Windows 11", + "description": "Bypass mode, deprecated in Windows 11" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesshutdownonuserlogoff", - "displayName": "Shutdown On User Logoff", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dogroupid", + "displayName": "DO Group Id", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dogroupidsource", + "displayName": "DO Group Id Source", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesshutdownonuserlogoff_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_deliveryoptimization_dogroupidsource_0", + "displayName": "Not Set", + "description": "Not Set" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesshutdownonuserlogoff_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_deliveryoptimization_dogroupidsource_1", + "displayName": "AD site", + "description": "AD site" + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dogroupidsource_2", + "displayName": "Authenticated domain SID", + "description": "Authenticated domain SID" + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dogroupidsource_3", + "displayName": "DHCP Option ID", + "description": "DHCP Option ID" + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dogroupidsource_4", + "displayName": "DNS Suffix", + "description": "DNS Suffix" + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dogroupidsource_5", + "displayName": "Entra ID Tenant ID", + "description": "Entra ID Tenant ID" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesshutdownonuserlogoff_profilesshutdownonuserlogoff", - "displayName": "", + "id": "device_vendor_msft_policy_config_deliveryoptimization_domaxbackgrounddownloadbandwidth", + "displayName": "DO Max Background Download Bandwidth", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_domaxcacheage", + "displayName": "DO Max Cache Age", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_domaxcachesize", + "displayName": "DO Max Cache Size", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_domaxdownloadbandwidth", + "displayName": "DO Max Download Bandwidth", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_domaxforegrounddownloadbandwidth", + "displayName": "DO Max Foreground Download Bandwidth", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_domaxuploadbandwidth", + "displayName": "DO Max Upload Bandwidth", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dominbackgroundqos", + "displayName": "DO Min Background Qos", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dominbatterypercentageallowedtoupload", + "displayName": "DO Min Battery Percentage Allowed To Upload", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_domindisksizeallowedtopeer", + "displayName": "DO Min Disk Size Allowed To Peer", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dominfilesizetocache", + "displayName": "DO Min File Size To Cache", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dominramallowedtopeer", + "displayName": "DO Min RAM Allowed To Peer", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_domodifycachedrive", + "displayName": "DO Modify Cache Drive", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_domonthlyuploaddatacap", + "displayName": "DO Monthly Upload Data Cap", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dopercentagemaxbackgroundbandwidth", + "displayName": "DO Percentage Max Background Bandwidth", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dopercentagemaxforegroundbandwidth", + "displayName": "DO Percentage Max Foreground Bandwidth", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dorestrictpeerselectionby", + "displayName": "DO Restrict Peer Selection By", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesshutdownonuserlogoff_profilesshutdownonuserlogoff_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_deliveryoptimization_dorestrictpeerselectionby_0", + "displayName": "None", + "description": "None" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesshutdownonuserlogoff_profilesshutdownonuserlogoff_1", - "displayName": "Shutdown on any logoff", - "description": null + "id": "device_vendor_msft_policy_config_deliveryoptimization_dorestrictpeerselectionby_1", + "displayName": "Subnet mask", + "description": "Subnet mask" }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesshutdownonuserlogoff_profilesshutdownonuserlogoff_2", - "displayName": "Shutdown on any FSLogix Profile logoff", - "description": null + "id": "device_vendor_msft_policy_config_deliveryoptimization_dorestrictpeerselectionby_2", + "displayName": "Local discovery (DNS-SD)", + "description": "Local discovery (DNS-SD)" } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessiddirectorysddl", - "displayName": "SID Directory SDDL", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth", + "displayName": "Set Business Hours to Limit Background Download Bandwidth", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessiddirectorysddl_0", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessiddirectorysddl_1", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessiddirectorysddl_profilessiddirectorysddl", - "displayName": "SID Directory SDDL (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessizeinmbs", - "displayName": "Size In MBs", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom", + "displayName": "From: (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessizeinmbs_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_0", + "displayName": "12 AM", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessizeinmbs_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_1", + "displayName": "1 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_2", + "displayName": "2 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_3", + "displayName": "3 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_4", + "displayName": "4 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_5", + "displayName": "5 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_6", + "displayName": "6 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_7", + "displayName": "7 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_8", + "displayName": "8 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_9", + "displayName": "9 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_10", + "displayName": "10 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_11", + "displayName": "11 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_12", + "displayName": "12 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_13", + "displayName": "1 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_14", + "displayName": "2 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_15", + "displayName": "3 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_16", + "displayName": "4 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_17", + "displayName": "5 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_18", + "displayName": "6 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_19", + "displayName": "7 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_20", + "displayName": "8 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_21", + "displayName": "9 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_22", + "displayName": "10 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthfrom_23", + "displayName": "11 PM", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessizeinmbs_profilessizeinmbs", - "displayName": "Size In MBs (Device)", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthin", + "displayName": "\r\nMaximum Background Download Bandwidth (percentage) during Business Hours:\r\n", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdlocations", - "displayName": "VHD Locations", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthout", + "displayName": "\r\nMaximum Background Download Bandwidth (percentage) outside of Business Hours:\r\n", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto", + "displayName": "To: (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdlocations_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_0", + "displayName": "12 AM", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdlocations_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_1", + "displayName": "1 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_2", + "displayName": "2 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_3", + "displayName": "3 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_4", + "displayName": "4 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_5", + "displayName": "5 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_6", + "displayName": "6 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_7", + "displayName": "7 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_8", + "displayName": "8 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_9", + "displayName": "9 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_10", + "displayName": "10 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_11", + "displayName": "11 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_12", + "displayName": "12 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_13", + "displayName": "1 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_14", + "displayName": "2 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_15", + "displayName": "3 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_16", + "displayName": "4 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_17", + "displayName": "5 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_18", + "displayName": "6 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_19", + "displayName": "7 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_20", + "displayName": "8 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_21", + "displayName": "9 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_22", + "displayName": "10 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitbackgrounddownloadbandwidth_sethourstolimitbackgrounddownloadbandwidthto_23", + "displayName": "11 PM", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdlocations_profilesvhdlocations", - "displayName": "VHD Locations (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdxsectorsize", - "displayName": "VHDX Sector Size", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth", + "displayName": "Set Business Hours to Limit Foreground Download Bandwidth", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdxsectorsize_0", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdxsectorsize_1", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdxsectorsize_profilesvhdxsectorsize", - "displayName": "", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom", + "displayName": "From: (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdxsectorsize_profilesvhdxsectorsize_512", - "displayName": "512 bytes", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_0", + "displayName": "12 AM", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdxsectorsize_profilesvhdxsectorsize_4096", - "displayName": "4 KB", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_1", + "displayName": "1 AM", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvolumewaittimemilliseconds", - "displayName": "Volume Wait Time (milliseconds)", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvolumewaittimemilliseconds_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_2", + "displayName": "2 AM", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvolumewaittimemilliseconds_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_3", + "displayName": "3 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_4", + "displayName": "4 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_5", + "displayName": "5 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_6", + "displayName": "6 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_7", + "displayName": "7 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_8", + "displayName": "8 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_9", + "displayName": "9 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_10", + "displayName": "10 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_11", + "displayName": "11 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_12", + "displayName": "12 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_13", + "displayName": "1 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_14", + "displayName": "2 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_15", + "displayName": "3 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_16", + "displayName": "4 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_17", + "displayName": "5 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_18", + "displayName": "6 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_19", + "displayName": "7 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_20", + "displayName": "8 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_21", + "displayName": "9 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_22", + "displayName": "10 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthfrom_23", + "displayName": "11 PM", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvolumewaittimemilliseconds_profilesvolumewaittimemilliseconds", - "displayName": "Volume Wait Time (milliseconds) (Device)", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthin", + "displayName": "\r\nMaximum Foreground Download Bandwidth (percentage) during Business Hours:\r\n", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdlocations", - "displayName": "CCD Locations", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthout", + "displayName": "\r\nMaximum Foreground Download Bandwidth (percentage) outside of Business Hours:\r\n", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto", + "displayName": "To: (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdlocations_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_0", + "displayName": "12 AM", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdlocations_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_1", + "displayName": "1 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_2", + "displayName": "2 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_3", + "displayName": "3 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_4", + "displayName": "4 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_5", + "displayName": "5 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_6", + "displayName": "6 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_7", + "displayName": "7 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_8", + "displayName": "8 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_9", + "displayName": "9 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_10", + "displayName": "10 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_11", + "displayName": "11 AM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_12", + "displayName": "12 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_13", + "displayName": "1 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_14", + "displayName": "2 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_15", + "displayName": "3 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_16", + "displayName": "4 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_17", + "displayName": "5 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_18", + "displayName": "6 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_19", + "displayName": "7 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_20", + "displayName": "8 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_21", + "displayName": "9 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_22", + "displayName": "10 PM", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_deliveryoptimization_dosethourstolimitforegrounddownloadbandwidth_sethourstolimitforegrounddownloadbandwidthto_23", + "displayName": "11 PM", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdlocations_profilesccdlocations", - "displayName": "CCD Locations (Device)", + "id": "device_vendor_msft_policy_config_deliveryoptimization_dovpnkeywords", + "displayName": "DO Vpn Keywords", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdmaxcachesizeinmbs", - "displayName": "CCD Max Cache Size in MBs", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enableadditionalsources", + "displayName": "Enable App Installer Additional Sources", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdmaxcachesizeinmbs_0", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enableadditionalsources_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdmaxcachesizeinmbs_1", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enableadditionalsources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdmaxcachesizeinmbs_profilesccdmaxcachesizeinmbs", - "displayName": "CCD Max Cache Size in MBs (Device)", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enableadditionalsources_additionalsources", + "displayName": "Additional Sources: (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdunregistertimeout", - "displayName": "CCD Unregister Timeout", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enableallowedsources", + "displayName": "Enable App Installer Allowed Sources", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdunregistertimeout_0", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enableallowedsources_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdunregistertimeout_1", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enableallowedsources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdunregistertimeout_profilesccdunregistertimeout", - "displayName": "CCD Unregister Timeout (Device)", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enableallowedsources_allowedsources", + "displayName": "Allowed Sources: (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesclearcacheonforcedunregister", - "displayName": "Clear Cache on Forced Unregister", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enableappinstaller", + "displayName": "Enable App Installer", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesclearcacheonforcedunregister_0", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enableappinstaller_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesclearcacheonforcedunregister_1", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enableappinstaller_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesclearcacheonlogoff", - "displayName": "Clear Cache on Logoff", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablebypasscertificatepinningformicrosoftstore", + "displayName": "Enable App Installer Microsoft Store Source Certificate Validation Bypass", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesclearcacheonlogoff_0", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablebypasscertificatepinningformicrosoftstore_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesclearcacheonlogoff_1", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablebypasscertificatepinningformicrosoftstore_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profileshealthyprovidersrequiredforregister", - "displayName": "Healthy Providers Required For Register", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enabledefaultsource", + "displayName": "Enable App Installer Default Source", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profileshealthyprovidersrequiredforregister_0", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enabledefaultsource_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profileshealthyprovidersrequiredforregister_1", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enabledefaultsource_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profileshealthyprovidersrequiredforregister_profileshealthyprovidersrequiredforregister", - "displayName": "Healthy Providers Required For Register (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profileshealthyprovidersrequiredforunregister", - "displayName": "Healthy Providers Required For Unregister", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enableexperimentalfeatures", + "displayName": "Enable App Installer Experimental Features", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profileshealthyprovidersrequiredforunregister_0", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enableexperimentalfeatures_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profileshealthyprovidersrequiredforunregister_1", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enableexperimentalfeatures_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profileshealthyprovidersrequiredforunregister_profileshealthyprovidersrequiredforunregister", - "displayName": "Healthy Providers Required For Unregister (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesdiffdiskparentfolderpath", - "displayName": "Diff Disk Parent Folder Path", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablehashoverride", + "displayName": "Enable App Installer Hash Override", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesdiffdiskparentfolderpath_0", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablehashoverride_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesdiffdiskparentfolderpath_1", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablehashoverride_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesdiffdiskparentfolderpath_profilesdiffdiskparentfolderpath", - "displayName": "Diff Disk Parent Folder Path (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesflipflopprofiledirectoryname", - "displayName": "Flip Flop Profile Directory Name", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablelocalarchivemalwarescanoverride", + "displayName": "Enable App Installer Local Archive Malware Scan Override", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesflipflopprofiledirectoryname_0", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablelocalarchivemalwarescanoverride_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesflipflopprofiledirectoryname_1", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablelocalarchivemalwarescanoverride_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesnoprofilecontainingfolder", - "displayName": "No Profile Containing Folder", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablelocalmanifestfiles", + "displayName": "Enable App Installer Local Manifest Files", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesnoprofilecontainingfolder_0", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablelocalmanifestfiles_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesnoprofilecontainingfolder_1", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablelocalmanifestfiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilessiddirectorynamematch", - "displayName": "SID Directory Name Match", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablemicrosoftstoresource", + "displayName": "Enable App Installer Microsoft Store Source", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilessiddirectorynamematch_0", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablemicrosoftstoresource_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilessiddirectorynamematch_1", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablemicrosoftstoresource_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilessiddirectorynamematch_profilessiddirectorynamematch", - "displayName": "SID Directory Name Match (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilessiddirectorynamepattern", - "displayName": "SID Directory Name Pattern", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablemsappinstallerprotocol", + "displayName": "Enable App Installer ms-appinstaller protocol", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilessiddirectorynamepattern_0", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablemsappinstallerprotocol_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilessiddirectorynamepattern_1", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablemsappinstallerprotocol_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilessiddirectorynamepattern_profilessiddirectorynamepattern", - "displayName": "SID Directory Name Pattern (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvhdnamematch", - "displayName": "VHD Name Match", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablesettings", + "displayName": "Enable App Installer Settings", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvhdnamematch_0", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablesettings_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvhdnamematch_1", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablesettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvhdnamematch_profilesvhdnamematch", - "displayName": "VHD Name Match (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvhdnamepattern", - "displayName": "VHD Name Pattern", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablewindowspackagemanagercommandlineinterfaces", + "displayName": "Enable Windows Package Manager command line interfaces", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvhdnamepattern_0", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablewindowspackagemanagercommandlineinterfaces_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvhdnamepattern_1", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablewindowspackagemanagercommandlineinterfaces_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvhdnamepattern_profilesvhdnamepattern", - "displayName": "VHD Name Pattern (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvolumetypevhdorvhdx", - "displayName": "Volume Type (VHD or VHDX)", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablewindowspackagemanagerconfiguration", + "displayName": "Enable Windows Package Manager Configuration", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvolumetypevhdorvhdx_0", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablewindowspackagemanagerconfiguration_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvolumetypevhdorvhdx_1", + "id": "device_vendor_msft_policy_config_desktopappinstaller_enablewindowspackagemanagerconfiguration_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvolumetypevhdorvhdx_profilesvolumetypevhdorvhdx", - "displayName": "", + "id": "device_vendor_msft_policy_config_desktopappinstaller_sourceautoupdateinterval", + "displayName": "Set App Installer Source Auto Update Interval In Minutes", "options": [ { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvolumetypevhdorvhdx_profilesvolumetypevhdorvhdx_vhd", - "displayName": "VHD", + "id": "device_vendor_msft_policy_config_desktopappinstaller_sourceautoupdateinterval_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvolumetypevhdorvhdx_profilesvolumetypevhdorvhdx_vhdx", - "displayName": "VHDX", + "id": "device_vendor_msft_policy_config_desktopappinstaller_sourceautoupdateinterval_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_games_allowadvancedgamingservices", - "displayName": "Allow Advanced Gaming Services", + "id": "device_vendor_msft_policy_config_desktopappinstaller_sourceautoupdateinterval_sourceautoupdateinterval", + "displayName": "Source Auto Update Interval In Minutes (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deviceguard_configuresystemguardlaunch", + "displayName": "Configure System Guard Launch", "options": [ { - "id": "device_vendor_msft_policy_config_games_allowadvancedgamingservices_0", - "displayName": "Block", - "description": "Not allowed." + "id": "device_vendor_msft_policy_config_deviceguard_configuresystemguardlaunch_0", + "displayName": "Unmanaged Configurable by Administrative user", + "description": "Unmanaged Configurable by Administrative user" }, { - "id": "device_vendor_msft_policy_config_games_allowadvancedgamingservices_1", - "displayName": "Allow", - "description": "Allowed." + "id": "device_vendor_msft_policy_config_deviceguard_configuresystemguardlaunch_1", + "displayName": "Unmanaged Enables Secure Launch if supported by hardware", + "description": "Unmanaged Enables Secure Launch if supported by hardware" + }, + { + "id": "device_vendor_msft_policy_config_deviceguard_configuresystemguardlaunch_2", + "displayName": "Unmanaged Disables Secure Launch", + "description": "Unmanaged Disables Secure Launch" } ] }, { - "id": "device_vendor_msft_policy_config_handwriting_paneldefaultmodedocked", - "displayName": "Panel Default Mode Docked", + "id": "device_vendor_msft_policy_config_deviceguard_enablevirtualizationbasedsecurity", + "displayName": "Enable Virtualization Based Security", "options": [ { - "id": "device_vendor_msft_policy_config_handwriting_paneldefaultmodedocked_0", - "displayName": "Disabled", - "description": "Disabled." + "id": "device_vendor_msft_policy_config_deviceguard_enablevirtualizationbasedsecurity_0", + "displayName": "disable virtualization based security.", + "description": "disable virtualization based security." }, { - "id": "device_vendor_msft_policy_config_handwriting_paneldefaultmodedocked_1", - "displayName": "Enabled", - "description": "Enabled." + "id": "device_vendor_msft_policy_config_deviceguard_enablevirtualizationbasedsecurity_1", + "displayName": "enable virtualization based security.", + "description": "enable virtualization based security." } ] }, { - "id": "device_vendor_msft_policy_config_humanpresence_forceinstantlock", - "displayName": "Force Instant Lock", + "id": "device_vendor_msft_policy_config_deviceguard_lsacfgflags", + "displayName": "Credential Guard", "options": [ { - "id": "device_vendor_msft_policy_config_humanpresence_forceinstantlock_2", - "displayName": "Forced Off.", - "description": "ForcedOff." + "id": "device_vendor_msft_policy_config_deviceguard_lsacfgflags_0", + "displayName": "(Disabled) Turns off Credential Guard remotely if configured previously without UEFI Lock.", + "description": "(Disabled) Turns off Credential Guard remotely if configured previously without UEFI Lock." }, { - "id": "device_vendor_msft_policy_config_humanpresence_forceinstantlock_1", - "displayName": "Forced On.", - "description": "ForcedOn." + "id": "device_vendor_msft_policy_config_deviceguard_lsacfgflags_1", + "displayName": "(Enabled with UEFI lock) Turns on Credential Guard with UEFI lock.", + "description": "(Enabled with UEFI lock) Turns on Credential Guard with UEFI lock." }, { - "id": "device_vendor_msft_policy_config_humanpresence_forceinstantlock_0", - "displayName": "Default To User Choice.", - "description": "DefaultToUserChoice." + "id": "device_vendor_msft_policy_config_deviceguard_lsacfgflags_2", + "displayName": "(Enabled without lock) Turns on Credential Guard without UEFI lock.", + "description": "(Enabled without lock) Turns on Credential Guard without UEFI lock." } ] }, { - "id": "device_vendor_msft_policy_config_humanpresence_forceinstantwake", - "displayName": "Force Instant Wake", + "id": "device_vendor_msft_policy_config_deviceguard_machineidentityisolation", + "displayName": "Machine Identity Isolation", "options": [ { - "id": "device_vendor_msft_policy_config_humanpresence_forceinstantwake_2", - "displayName": "Forced Off.", - "description": "ForcedOff." + "id": "device_vendor_msft_policy_config_deviceguard_machineidentityisolation_0", + "displayName": "(Disabled) Machine password is only LSASS-bound and stored in $MACHINE.ACC registry key.", + "description": "(Disabled) Machine password is only LSASS-bound and stored in $MACHINE.ACC registry key." }, { - "id": "device_vendor_msft_policy_config_humanpresence_forceinstantwake_1", - "displayName": "Forced On.", - "description": "ForcedOn." + "id": "device_vendor_msft_policy_config_deviceguard_machineidentityisolation_1", + "displayName": "(Enabled in audit mode) Machine password both LSASS-bound and IUM-bound. It is stored in $MACHINE.ACC and $MACHINE.ACC.IUM registry keys.", + "description": "(Enabled in audit mode) Machine password both LSASS-bound and IUM-bound. It is stored in $MACHINE.ACC and $MACHINE.ACC.IUM registry keys." }, { - "id": "device_vendor_msft_policy_config_humanpresence_forceinstantwake_0", - "displayName": "Default To User Choice.", - "description": "DefaultToUserChoice." + "id": "device_vendor_msft_policy_config_deviceguard_machineidentityisolation_2", + "displayName": "(Enabled in enforcement mode) Machine password is only IUM-bound and stored in $MACHINE.ACC.IUM registry key.", + "description": "(Enabled in enforcement mode) Machine password is only IUM-bound and stored in $MACHINE.ACC.IUM registry key." } ] }, { - "id": "device_vendor_msft_policy_config_humanpresence_forcelocktimeout", - "displayName": "Force Lock Timeout", + "id": "device_vendor_msft_policy_config_deviceguard_requiremicrosoftsignedbootchain", + "displayName": "Require Microsoft Signed Boot Chain", + "options": { + "id": "device_vendor_msft_policy_config_deviceguard_requiremicrosoftsignedbootchain_1", + "displayName": "Require Microsoft Signed Boot Chain.", + "description": "Require Microsoft Signed Boot Chain." + } + }, + { + "id": "device_vendor_msft_policy_config_deviceguard_requireplatformsecurityfeatures", + "displayName": "Require Platform Security Features", "options": [ { - "id": "device_vendor_msft_policy_config_humanpresence_forcelocktimeout_120", - "displayName": "Two Minutes", - "description": "TwoMinutes" - }, - { - "id": "device_vendor_msft_policy_config_humanpresence_forcelocktimeout_30", - "displayName": "Thirty Seconds.", - "description": "ThirtySeconds." + "id": "device_vendor_msft_policy_config_deviceguard_requireplatformsecurityfeatures_1", + "displayName": "Turns on VBS with Secure Boot.", + "description": "Turns on VBS with Secure Boot." }, { - "id": "device_vendor_msft_policy_config_humanpresence_forcelocktimeout_10", - "displayName": "Ten Seconds.", - "description": "TenSeconds." - }, - { - "id": "device_vendor_msft_policy_config_humanpresence_forcelocktimeout_1", - "displayName": "Immediate.", - "description": "Immediate." - }, - { - "id": "device_vendor_msft_policy_config_humanpresence_forcelocktimeout_0", - "displayName": "Default To User Choice.", - "description": "DefaultToUserChoice." + "id": "device_vendor_msft_policy_config_deviceguard_requireplatformsecurityfeatures_3", + "displayName": "Turns on VBS with Secure Boot and direct memory access (DMA). DMA requires hardware support.", + "description": "Turns on VBS with Secure Boot and direct memory access (DMA). DMA requires hardware support." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_addsearchprovider", - "displayName": "Add a specific list of search providers to the user's list of search providers", + "id": "device_vendor_msft_policy_config_devicehealthmonitoring_allowdevicehealthmonitoring", + "displayName": "Allow Device Health Monitoring", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_addsearchprovider_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_devicehealthmonitoring_allowdevicehealthmonitoring_1", + "displayName": "The DeviceHealthMonitoring connection is enabled.", + "description": "The DeviceHealthMonitoring connection is enabled." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_addsearchprovider_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_devicehealthmonitoring_allowdevicehealthmonitoring_0", + "displayName": "The DeviceHealthMonitoring connection is disabled.", + "description": "The DeviceHealthMonitoring connection is disabled." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowactivexfiltering", - "displayName": "Turn on ActiveX Filtering", + "id": "device_vendor_msft_policy_config_devicehealthmonitoring_configdevicehealthmonitoringscope", + "displayName": "[Deprecated] Config Device Health Monitoring Scope", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_devicehealthmonitoring_configdevicehealthmonitoringscope_v2_epm", + "displayName": "Config Device Health Monitoring Scope", + "options": { + "id": "device_vendor_msft_policy_config_devicehealthmonitoring_configdevicehealthmonitoringscope_v2_epm_privilegemanagement", + "displayName": "Privilege Management", + "description": null + } + }, + { + "id": "device_vendor_msft_policy_config_devicehealthmonitoring_configdevicehealthmonitoringserviceinstance", + "displayName": "[Deprecated] Config Device Health Monitoring Service Instance", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_devicehealthmonitoring_configdevicehealthmonitoringuploaddestination", + "displayName": "[Deprecated] Config Device Health Monitoring Upload Destination", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_devicehealthmonitoring_configdevicehealthmonitoringuploaddestination_v2", + "displayName": "Config Device Health Monitoring Upload Destination", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deviceinstallation_allowinstallationofmatchingdeviceids", + "displayName": "Allow installation of devices that match any of these device IDs", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowactivexfiltering_0", + "id": "device_vendor_msft_policy_config_deviceinstallation_allowinstallationofmatchingdeviceids_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowactivexfiltering_1", + "id": "device_vendor_msft_policy_config_deviceinstallation_allowinstallationofmatchingdeviceids_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowaddonlist", - "displayName": "Add-on List", + "id": "device_vendor_msft_policy_config_deviceinstallation_allowinstallationofmatchingdeviceids_deviceinstall_ids_allow_list", + "displayName": "Allowed device IDs", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deviceinstallation_allowinstallationofmatchingdeviceinstanceids", + "displayName": "Allow installation of devices that match any of these device instance IDs", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowaddonlist_0", + "id": "device_vendor_msft_policy_config_deviceinstallation_allowinstallationofmatchingdeviceinstanceids_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowaddonlist_1", + "id": "device_vendor_msft_policy_config_deviceinstallation_allowinstallationofmatchingdeviceinstanceids_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowaddonlist_addonlist", - "displayName": "Add-on List (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowaddonlist_addonlist_key", - "displayName": "Name", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowaddonlist_addonlist_value", - "displayName": "Value", + "id": "device_vendor_msft_policy_config_deviceinstallation_allowinstallationofmatchingdeviceinstanceids_deviceinstall_instance_ids_allow_list", + "displayName": "Allowed Instance IDs", "options": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowcertificateaddressmismatchwarning", - "displayName": "Turn on certificate address mismatch warning", + "id": "device_vendor_msft_policy_config_deviceinstallation_allowinstallationofmatchingdevicesetupclasses", + "displayName": "Allow installation of devices using drivers that match these device setup classes", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowcertificateaddressmismatchwarning_0", + "id": "device_vendor_msft_policy_config_deviceinstallation_allowinstallationofmatchingdevicesetupclasses_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowcertificateaddressmismatchwarning_1", + "id": "device_vendor_msft_policy_config_deviceinstallation_allowinstallationofmatchingdevicesetupclasses_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowdeletingbrowsinghistoryonexit", - "displayName": "Allow deleting browsing history on exit", + "id": "device_vendor_msft_policy_config_deviceinstallation_allowinstallationofmatchingdevicesetupclasses_deviceinstall_classes_allow_list", + "displayName": "Allowed classes", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deviceinstallation_enableinstallationpolicylayering", + "displayName": "Apply layered order of evaluation for Allow and Prevent device installation policies across all device match criteria", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowdeletingbrowsinghistoryonexit_0", + "id": "device_vendor_msft_policy_config_deviceinstallation_enableinstallationpolicylayering_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowdeletingbrowsinghistoryonexit_1", + "id": "device_vendor_msft_policy_config_deviceinstallation_enableinstallationpolicylayering_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowenhancedprotectedmode", - "displayName": "Turn on Enhanced Protected Mode", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventdevicemetadatafromnetwork", + "displayName": "Prevent automatic download of applications associated with device metadata", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowenhancedprotectedmode_0", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventdevicemetadatafromnetwork_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowenhancedprotectedmode_1", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventdevicemetadatafromnetwork_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowenhancedsuggestionsinaddressbar", - "displayName": "Allow Microsoft services to provide enhanced suggestions as the user types in the Address bar", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofdevicesnotdescribedbyotherpolicysettings", + "displayName": "Prevent installation of devices not described by other policy settings", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowenhancedsuggestionsinaddressbar_0", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofdevicesnotdescribedbyotherpolicysettings_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowenhancedsuggestionsinaddressbar_1", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofdevicesnotdescribedbyotherpolicysettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowenterprisemodefromtoolsmenu", - "displayName": "Let users turn on and use Enterprise Mode from the Tools menu", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdeviceids", + "displayName": "Prevent installation of devices that match any of these device IDs", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowenterprisemodefromtoolsmenu_0", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdeviceids_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowenterprisemodefromtoolsmenu_1", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdeviceids_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowenterprisemodefromtoolsmenu_enterreportbackprompt", - "displayName": "Type the location (URL) of where to receive reports about the websites for which users turn on and use Enterprise Mode", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdeviceids_deviceinstall_ids_deny_list", + "displayName": "Prevented device IDs", "options": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowenterprisemodesitelist", - "displayName": "Use the Enterprise Mode IE website list", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdeviceids_deviceinstall_ids_deny_retroactive", + "displayName": "Also apply to matching devices that are already installed.", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowenterprisemodesitelist_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdeviceids_deviceinstall_ids_deny_retroactive_0", + "displayName": "False", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowenterprisemodesitelist_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdeviceids_deviceinstall_ids_deny_retroactive_1", + "displayName": "True", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowenterprisemodesitelist_entersitelistprompt", - "displayName": "Type the location (URL) of your Enterprise Mode IE website list", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowfallbacktossl3", - "displayName": "Allow fallback to SSL 3.0 (Internet Explorer)", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdeviceinstanceids", + "displayName": "Prevent installation of devices that match any of these device instance IDs", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowfallbacktossl3_0", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdeviceinstanceids_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowfallbacktossl3_1", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdeviceinstanceids_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowfallbacktossl3_advanced_enablessl3fallbackoptions", - "displayName": "Allow insecure fallback for:", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdeviceinstanceids_deviceinstall_instance_ids_deny_list", + "displayName": "Prevented Instance IDs", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdeviceinstanceids_deviceinstall_instance_ids_deny_retroactive", + "displayName": "Also apply to matching devices that are already installed. (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowfallbacktossl3_advanced_enablessl3fallbackoptions_0", - "displayName": "No Sites", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowfallbacktossl3_advanced_enablessl3fallbackoptions_1", - "displayName": "Non-Protected Mode Sites", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdeviceinstanceids_deviceinstall_instance_ids_deny_retroactive_0", + "displayName": "False", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowfallbacktossl3_advanced_enablessl3fallbackoptions_3", - "displayName": "All Sites", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdeviceinstanceids_deviceinstall_instance_ids_deny_retroactive_1", + "displayName": "True", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetexplorer7policylist", - "displayName": "Use Policy List of Internet Explorer 7 sites", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdevicesetupclasses", + "displayName": "Prevent installation of devices using drivers that match these device setup classes", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetexplorer7policylist_0", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdevicesetupclasses_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetexplorer7policylist_1", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdevicesetupclasses_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetexplorer7policylist_compatview_sitelist", - "displayName": "List of sites (Device)", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdevicesetupclasses_deviceinstall_classes_deny_list", + "displayName": "Prevented Classes", "options": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetexplorerstandardsmode", - "displayName": "Turn on Internet Explorer Standards Mode for local intranet", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdevicesetupclasses_deviceinstall_classes_deny_retroactive", + "displayName": "Also apply to matching devices that are already installed.", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetexplorerstandardsmode_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdevicesetupclasses_deviceinstall_classes_deny_retroactive_0", + "displayName": "False", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetexplorerstandardsmode_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_deviceinstallation_preventinstallationofmatchingdevicesetupclasses_deviceinstall_classes_deny_retroactive_1", + "displayName": "True", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate", - "displayName": "Internet Zone Template", + "id": "device_vendor_msft_policy_config_devicelock_accountlockoutpolicy", + "displayName": "Account Lockout Policy", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_devicelock_allowsimpledevicepassword", + "displayName": "Allow Simple Device Password", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_devicelock_allowsimpledevicepassword_0", + "displayName": "Not allowed.", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_devicelock_allowsimpledevicepassword_1", + "displayName": "Allowed.", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate", - "displayName": "Internet", + "id": "device_vendor_msft_policy_config_devicelock_alphanumericdevicepasswordrequired", + "displayName": "Alphanumeric Device Password Required", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_1", - "displayName": "Low", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_2", - "displayName": "Medium Low", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_3", - "displayName": "Medium", - "description": null + "id": "device_vendor_msft_policy_config_devicelock_alphanumericdevicepasswordrequired_0", + "displayName": "Password or Alphanumeric PIN required.", + "description": "Password or Alphanumeric PIN required." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_5", - "displayName": "Medium High", - "description": null + "id": "device_vendor_msft_policy_config_devicelock_alphanumericdevicepasswordrequired_1", + "displayName": "Password or Numeric PIN required.", + "description": "Password or Numeric PIN required." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_4", - "displayName": "High", - "description": null + "id": "device_vendor_msft_policy_config_devicelock_alphanumericdevicepasswordrequired_2", + "displayName": "Password, Numeric PIN, or Alphanumeric PIN required.", + "description": "Password, Numeric PIN, or Alphanumeric PIN required." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate", - "displayName": "Intranet Zone Template", + "id": "device_vendor_msft_policy_config_devicelock_devicepasswordenabled", + "displayName": "Device Password Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_devicelock_devicepasswordenabled_0", + "displayName": "Enabled", + "description": "Enabled" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_devicelock_devicepasswordenabled_1", + "displayName": "Disabled", + "description": "Disabled" } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate", - "displayName": "Intranet", + "id": "device_vendor_msft_policy_config_devicelock_devicepasswordexpiration", + "displayName": "Device Password Expiration", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_devicelock_devicepasswordhistory", + "displayName": "Device Password History", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_devicelock_enforcelockscreenandlogonimage", + "displayName": "Enforce Lock Screen And Logon Image", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_devicelock_enforcelockscreenprovider", + "displayName": "Enforce Lock Screen Provider", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_devicelock_maxdevicepasswordfailedattempts", + "displayName": "Max Device Password Failed Attempts", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_devicelock_maxinactivitytimedevicelock", + "displayName": "Max Inactivity Time Device Lock", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_devicelock_maxinactivitytimedevicelockwithexternaldisplay", + "displayName": "[Deprecated] Max Inactivity Time Device Lock With External Display", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_devicelock_mindevicepasswordcomplexcharacters", + "displayName": "Min Device Password Complex Characters", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_1", - "displayName": "Low", - "description": null + "id": "device_vendor_msft_policy_config_devicelock_mindevicepasswordcomplexcharacters_1", + "displayName": "Digits only", + "description": "Digits only" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_2", - "displayName": "Medium Low", - "description": null + "id": "device_vendor_msft_policy_config_devicelock_mindevicepasswordcomplexcharacters_2", + "displayName": "Digits and lowercase letters are required", + "description": "Digits and lowercase letters are required" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_3", - "displayName": "Medium", - "description": null + "id": "device_vendor_msft_policy_config_devicelock_mindevicepasswordcomplexcharacters_3", + "displayName": "Digits lowercase letters and uppercase letters are required. Not supported in desktop Microsoft accounts and domain accounts", + "description": "Digits lowercase letters and uppercase letters are required. Not supported in desktop Microsoft accounts and domain accounts" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_5", - "displayName": "Medium High", + "id": "device_vendor_msft_policy_config_devicelock_mindevicepasswordcomplexcharacters_4", + "displayName": "Digits lowercase letters uppercase letters and special characters are required. Not supported in desktop", + "description": "Digits lowercase letters uppercase letters and special characters are required. Not supported in desktop" + } + ] + }, + { + "id": "device_vendor_msft_policy_config_devicelock_mindevicepasswordlength", + "displayName": "Min Device Password Length", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_devicelock_minimumpasswordage", + "displayName": "Minimum Password Age", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_devicelock_preventenablinglockscreencamera", + "displayName": "Prevent enabling lock screen camera", + "options": [ + { + "id": "device_vendor_msft_policy_config_devicelock_preventenablinglockscreencamera_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_4", - "displayName": "High", + "id": "device_vendor_msft_policy_config_devicelock_preventenablinglockscreencamera_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate", - "displayName": "Local Machine Zone Template", + "id": "device_vendor_msft_policy_config_devicelock_preventlockscreenslideshow", + "displayName": "Prevent enabling lock screen slide show", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_0", + "id": "device_vendor_msft_policy_config_devicelock_preventlockscreenslideshow_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_1", + "id": "device_vendor_msft_policy_config_devicelock_preventlockscreenslideshow_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate", - "displayName": "Local Machine Zone", + "id": "device_vendor_msft_policy_config_display_configuremultipledisplaymode", + "displayName": "Configure Multiple Display Mode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_1", - "displayName": "Low", - "description": null + "id": "device_vendor_msft_policy_config_display_configuremultipledisplaymode_0", + "displayName": "Default.", + "description": "Default." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_2", - "displayName": "Medium Low", - "description": null + "id": "device_vendor_msft_policy_config_display_configuremultipledisplaymode_1", + "displayName": "Internal Only.", + "description": "Internal Only." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_3", - "displayName": "Medium", - "description": null + "id": "device_vendor_msft_policy_config_display_configuremultipledisplaymode_2", + "displayName": "External Only.", + "description": "External Only." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_5", - "displayName": "Medium High", - "description": null + "id": "device_vendor_msft_policy_config_display_configuremultipledisplaymode_3", + "displayName": "Clone.", + "description": "Clone." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_4", - "displayName": "High", - "description": null + "id": "device_vendor_msft_policy_config_display_configuremultipledisplaymode_4", + "displayName": "Extend.", + "description": "Extend." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate", - "displayName": "Locked-Down Internet Zone Template", + "id": "device_vendor_msft_policy_config_display_disableperprocessdpiforapps", + "displayName": "Disable Per Process Dpi For Apps", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_display_enableperprocessdpi", + "displayName": "Enable Per Process Dpi", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_0", + "id": "device_vendor_msft_policy_config_display_enableperprocessdpi_0", "displayName": "Disabled", - "description": null + "description": "Disable." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_1", + "id": "device_vendor_msft_policy_config_display_enableperprocessdpi_1", "displayName": "Enabled", - "description": null + "description": "Enable." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate", - "displayName": "Locked-Down Internet", + "id": "device_vendor_msft_policy_config_display_enableperprocessdpiforapps", + "displayName": "Enable Per Process Dpi For Apps", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_display_turnoffgdidpiscalingforapps", + "displayName": "Turn Off Gdi DPI Scaling For Apps", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_display_turnongdidpiscalingforapps", + "displayName": "Turn On Gdi DPI Scaling For Apps", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_dmaguard_deviceenumerationpolicy", + "displayName": "Device Enumeration Policy", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_1", - "displayName": "Low", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_2", - "displayName": "Medium Low", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_3", - "displayName": "Medium", - "description": null + "id": "device_vendor_msft_policy_config_dmaguard_deviceenumerationpolicy_0", + "displayName": "Block all (Most restrictive)", + "description": "Block all (Most restrictive)" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_5", - "displayName": "Medium High", - "description": null + "id": "device_vendor_msft_policy_config_dmaguard_deviceenumerationpolicy_1", + "displayName": "Only after log in/screen unlock", + "description": "Only after log in/screen unlock" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_4", - "displayName": "High", - "description": null + "id": "device_vendor_msft_policy_config_dmaguard_deviceenumerationpolicy_2", + "displayName": "Allow all (Least restrictive)", + "description": "Allow all (Least restrictive)" } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate", - "displayName": "Locked-Down Intranet Zone Template", + "id": "device_vendor_msft_policy_config_eap_allowtls1_3", + "displayName": "Allow TLS13", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_eap_allowtls1_3_0", + "displayName": "Use of TLS version 1.3 is not allowed for authentication.", + "description": "Use of TLS version 1.3 is not allowed for authentication." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_eap_allowtls1_3_1", + "displayName": "Use of TLS version 1.3 is allowed for authentication.", + "description": "Use of TLS version 1.3 is allowed for authentication." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate", - "displayName": "Locked-Down Intranet", + "id": "device_vendor_msft_policy_config_education_enableeduthemes", + "displayName": "Enable Edu Themes", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_1", - "displayName": "Low", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_2", - "displayName": "Medium Low", - "description": null + "id": "device_vendor_msft_policy_config_education_enableeduthemes_0", + "displayName": "Disabled.", + "description": "Disabled." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_3", - "displayName": "Medium", - "description": null - }, + "id": "device_vendor_msft_policy_config_education_enableeduthemes_1", + "displayName": "Enabled.", + "description": "Enabled." + } + ] + }, + { + "id": "device_vendor_msft_policy_config_education_iseducationenvironment", + "displayName": "Is Education Environment", + "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_5", - "displayName": "Medium High", - "description": null + "id": "device_vendor_msft_policy_config_education_iseducationenvironment_0", + "displayName": "Disabled.", + "description": "Disabled." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_4", - "displayName": "High", - "description": null + "id": "device_vendor_msft_policy_config_education_iseducationenvironment_1", + "displayName": "Enabled.", + "description": "Enabled." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate", - "displayName": "Locked-Down Local Machine Zone Template", + "id": "device_vendor_msft_policy_config_errorreporting_customizeconsentsettings", + "displayName": "Customize consent settings", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_0", + "id": "device_vendor_msft_policy_config_errorreporting_customizeconsentsettings_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_1", + "id": "device_vendor_msft_policy_config_errorreporting_customizeconsentsettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate", - "displayName": "Locked-Down Local Machine Zone", + "id": "device_vendor_msft_policy_config_errorreporting_customizeconsentsettings_werconsentcustomize", + "displayName": "Customize consent settings (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_errorreporting_customizeconsentsettings_werconsentcustomize_key", + "displayName": "Name", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_errorreporting_customizeconsentsettings_werconsentcustomize_value", + "displayName": "Value", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_errorreporting_disablewindowserrorreporting", + "displayName": "Disable Windows Error Reporting", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_1", - "displayName": "Low", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_2", - "displayName": "Medium Low", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_3", - "displayName": "Medium", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_5", - "displayName": "Medium High", + "id": "device_vendor_msft_policy_config_errorreporting_disablewindowserrorreporting_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_4", - "displayName": "High", + "id": "device_vendor_msft_policy_config_errorreporting_disablewindowserrorreporting_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate", - "displayName": "Locked-Down Restricted Sites Zone Template", + "id": "device_vendor_msft_policy_config_errorreporting_displayerrornotification", + "displayName": "Display Error Notification", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_0", + "id": "device_vendor_msft_policy_config_errorreporting_displayerrornotification_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_1", + "id": "device_vendor_msft_policy_config_errorreporting_displayerrornotification_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate", - "displayName": "Locked-Down Restricted Sites", + "id": "device_vendor_msft_policy_config_errorreporting_donotsendadditionaldata", + "displayName": "Do not send additional data", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_1", - "displayName": "Low", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_2", - "displayName": "Medium Low", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_3", - "displayName": "Medium", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_5", - "displayName": "Medium High", + "id": "device_vendor_msft_policy_config_errorreporting_donotsendadditionaldata_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_4", - "displayName": "High", + "id": "device_vendor_msft_policy_config_errorreporting_donotsendadditionaldata_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowonewordentry", - "displayName": "Go to an intranet site for a one-word entry in the Address bar", + "id": "device_vendor_msft_policy_config_errorreporting_preventcriticalerrordisplay", + "displayName": "Prevent display of the user interface for critical errors", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowonewordentry_0", + "id": "device_vendor_msft_policy_config_errorreporting_preventcriticalerrordisplay_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowonewordentry_1", + "id": "device_vendor_msft_policy_config_errorreporting_preventcriticalerrordisplay_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsavetargetasiniemode", - "displayName": "Allow \"Save Target As\" in Internet Explorer mode", + "id": "device_vendor_msft_policy_config_eventlogservice_controleventlogbehavior", + "displayName": "Control Event Log behavior when the log file reaches its maximum size", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsavetargetasiniemode_0", + "id": "device_vendor_msft_policy_config_eventlogservice_controleventlogbehavior_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsavetargetasiniemode_1", + "id": "device_vendor_msft_policy_config_eventlogservice_controleventlogbehavior_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist", - "displayName": "Site to Zone Assignment List", + "id": "device_vendor_msft_policy_config_eventlogservice_specifymaximumfilesizeapplicationlog", + "displayName": "Specify the maximum log file size (KB)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_0", + "id": "device_vendor_msft_policy_config_eventlogservice_specifymaximumfilesizeapplicationlog_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_1", + "id": "device_vendor_msft_policy_config_eventlogservice_specifymaximumfilesizeapplicationlog_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_iz_zonemapprompt", - "displayName": "Enter the zone assignments here. (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_iz_zonemapprompt_key", - "displayName": "Name", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_iz_zonemapprompt_value", - "displayName": "Value", + "id": "device_vendor_msft_policy_config_eventlogservice_specifymaximumfilesizeapplicationlog_channel_logmaxsize", + "displayName": "Maximum Log Size (KB)", "options": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate", - "displayName": "Locked-Down Trusted Sites Zone Template", + "id": "device_vendor_msft_policy_config_eventlogservice_specifymaximumfilesizesecuritylog", + "displayName": "Specify the maximum log file size (KB)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_0", + "id": "device_vendor_msft_policy_config_eventlogservice_specifymaximumfilesizesecuritylog_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_1", + "id": "device_vendor_msft_policy_config_eventlogservice_specifymaximumfilesizesecuritylog_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate", - "displayName": "Locked-Down Trusted Sites", + "id": "device_vendor_msft_policy_config_eventlogservice_specifymaximumfilesizesecuritylog_channel_logmaxsize", + "displayName": "Maximum Log Size (KB)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_eventlogservice_specifymaximumfilesizesystemlog", + "displayName": "Specify the maximum log file size (KB)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_1", - "displayName": "Low", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_2", - "displayName": "Medium Low", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_3", - "displayName": "Medium", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_5", - "displayName": "Medium High", + "id": "device_vendor_msft_policy_config_eventlogservice_specifymaximumfilesizesystemlog_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_4", - "displayName": "High", + "id": "device_vendor_msft_policy_config_eventlogservice_specifymaximumfilesizesystemlog_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsoftwarewhensignatureisinvalid", - "displayName": "Allow software to run or install even if the signature is invalid", + "id": "device_vendor_msft_policy_config_eventlogservice_specifymaximumfilesizesystemlog_channel_logmaxsize", + "displayName": "Maximum Log Size (KB)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_experience_allowclipboardhistory", + "displayName": "Allow Clipboard History", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsoftwarewhensignatureisinvalid_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowclipboardhistory_0", + "displayName": "Block", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsoftwarewhensignatureisinvalid_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowclipboardhistory_1", + "displayName": "Allow", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate", - "displayName": "Restricted Sites Zone Template", + "id": "device_vendor_msft_policy_config_experience_allowcortana", + "displayName": "Allow Cortana", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowcortana_0", + "displayName": "Block", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowcortana_1", + "displayName": "Allow", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate", - "displayName": "Restricted Sites", + "id": "device_vendor_msft_policy_config_experience_allowdevicediscovery", + "displayName": "Allow Device Discovery", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_1", - "displayName": "Low", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_2", - "displayName": "Medium Low", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_3", - "displayName": "Medium", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_5", - "displayName": "Medium High", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowdevicediscovery_0", + "displayName": "Block", + "description": "Disabled." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_4", - "displayName": "High", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowdevicediscovery_1", + "displayName": "Allow", + "description": "Enabled." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsuggestedsites", - "displayName": "Turn on Suggested Sites", + "id": "device_vendor_msft_policy_config_experience_allowfindmydevice", + "displayName": "Allow Find My Device", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsuggestedsites_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowfindmydevice_0", + "displayName": "Block", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowsuggestedsites_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowfindmydevice_1", + "displayName": "Allow", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate", - "displayName": "Trusted Sites Zone Template", + "id": "device_vendor_msft_policy_config_experience_allowmanualmdmunenrollment", + "displayName": "Allow Manual MDM Unenrollment", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowmanualmdmunenrollment_0", + "displayName": "Block", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowmanualmdmunenrollment_1", + "displayName": "Allow", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate", - "displayName": "Trusted Sites", + "id": "device_vendor_msft_policy_config_experience_allowsaveasofofficefiles", + "displayName": "Allow Save As Of Office Files", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_1", - "displayName": "Low", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_2", - "displayName": "Medium Low", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_3", - "displayName": "Medium", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_5", - "displayName": "Medium High", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowsaveasofofficefiles_0", + "displayName": "Block", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_4", - "displayName": "High", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowsaveasofofficefiles_1", + "displayName": "Allow", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_checkservercertificaterevocation", - "displayName": "Check for server certificate revocation", + "id": "device_vendor_msft_policy_config_experience_allowscreencapture", + "displayName": "Allow Screen Capture", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_checkservercertificaterevocation_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowscreencapture_0", + "displayName": "Not allowed.", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_checkservercertificaterevocation_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowscreencapture_1", + "displayName": "Allowed.", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_checksignaturesondownloadedprograms", - "displayName": "Check for signatures on downloaded programs", + "id": "device_vendor_msft_policy_config_experience_allowsimerrordialogpromptwhennosim", + "displayName": "Allow SIM Error Dialog Prompt When No SIM", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_checksignaturesondownloadedprograms_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowsimerrordialogpromptwhennosim_0", + "displayName": "Not allowed.", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_checksignaturesondownloadedprograms_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowsimerrordialogpromptwhennosim_1", + "displayName": "Allowed.", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel", - "displayName": "Configure which channel of Microsoft Edge to use for opening redirected sites", + "id": "device_vendor_msft_policy_config_experience_allowsyncmysettings", + "displayName": "Allow Sync My Settings", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowsyncmysettings_0", + "displayName": "Block", + "description": "Sync settings are not allowed." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowsyncmysettings_1", + "displayName": "Allow", + "description": "Sync settings allowed." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser", - "displayName": "First choice (Device)", + "id": "device_vendor_msft_policy_config_experience_allowwindowsconsumerfeatures", + "displayName": "Allow Windows Consumer Features", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_", - "displayName": "", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_1", - "displayName": "Microsoft Edge Stable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_2", - "displayName": "Microsoft Edge Beta version 77 or later", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_3", - "displayName": "Microsoft Edge Dev version 77 or later", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_4", - "displayName": "Microsoft Edge Canary version 77 or later", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowwindowsconsumerfeatures_0", + "displayName": "Block", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_0", - "displayName": "Microsoft Edge version 45 or earlier", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowwindowsconsumerfeatures_1", + "displayName": "Allow", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2", - "displayName": "Second choice (Device)", + "id": "device_vendor_msft_policy_config_experience_allowwindowstips", + "displayName": "Allow Windows Tips", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_", - "displayName": "", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_1", - "displayName": "Microsoft Edge Stable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_2", - "displayName": "Microsoft Edge Beta version 77 or later", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_3", - "displayName": "Microsoft Edge Dev version 77 or later", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_4", - "displayName": "Microsoft Edge Canary version 77 or later", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowwindowstips_0", + "displayName": "Block", + "description": "Disabled." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_0", - "displayName": "Microsoft Edge version 45 or earlier", - "description": null + "id": "device_vendor_msft_policy_config_experience_allowwindowstips_1", + "displayName": "Allow", + "description": "Enabled." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3", - "displayName": "Third choice (Device)", + "id": "device_vendor_msft_policy_config_experience_configurechaticon", + "displayName": "Configure Chat Icon", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_", - "displayName": "", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_1", - "displayName": "Microsoft Edge Stable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_2", - "displayName": "Microsoft Edge Beta version 77 or later", - "description": null + "id": "device_vendor_msft_policy_config_experience_configurechaticon_0", + "displayName": "Windows default", + "description": "Not configured" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_3", - "displayName": "Microsoft Edge Dev version 77 or later", - "description": null + "id": "device_vendor_msft_policy_config_experience_configurechaticon_1", + "displayName": "Show", + "description": "Show" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_4", - "displayName": "Microsoft Edge Canary version 77 or later", - "description": null + "id": "device_vendor_msft_policy_config_experience_configurechaticon_2", + "displayName": "Hide", + "description": "Hide" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_0", - "displayName": "Microsoft Edge version 45 or earlier", - "description": null + "id": "device_vendor_msft_policy_config_experience_configurechaticon_3", + "displayName": "Disabled", + "description": "Disabled" } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_consistentmimehandlinginternetexplorerprocesses", - "displayName": "Internet Explorer Processes", + "id": "device_vendor_msft_policy_config_experience_disablecloudoptimizedcontent", + "displayName": "Disable Cloud Optimized Content", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_consistentmimehandlinginternetexplorerprocesses_0", + "id": "device_vendor_msft_policy_config_experience_disablecloudoptimizedcontent_0", "displayName": "Disabled", - "description": null + "description": "Disabled." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_consistentmimehandlinginternetexplorerprocesses_1", + "id": "device_vendor_msft_policy_config_experience_disablecloudoptimizedcontent_1", "displayName": "Enabled", - "description": null + "description": "Enabled." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableadobeflash", - "displayName": "Turn off Adobe Flash in Internet Explorer and prevent applications from using Internet Explorer technology to instantiate Flash objects", + "id": "device_vendor_msft_policy_config_experience_disableconsumeraccountstatecontent", + "displayName": "Disable Consumer Account State Content", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableadobeflash_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_disableconsumeraccountstatecontent_0", + "displayName": "Disabled.", + "description": "Disabled." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableadobeflash_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_disableconsumeraccountstatecontent_1", + "displayName": "Enabled.", + "description": "Enabled." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarnings", - "displayName": "Prevent bypassing SmartScreen Filter warnings", + "id": "device_vendor_msft_policy_config_experience_disableshareapppromotions", + "displayName": "Disable Share App Promotions", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarnings_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_disableshareapppromotions_0", + "displayName": "Promotional Apps on ShareSheet are Enabled.", + "description": "Promotional Apps on ShareSheet are Enabled." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarnings_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_disableshareapppromotions_1", + "displayName": "Promotional Apps on ShareSheet are Disabled.", + "description": "Promotional Apps on ShareSheet are Disabled." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarningsaboutuncommonfiles", - "displayName": "Prevent bypassing SmartScreen Filter warnings about files that are not commonly downloaded from the Internet", + "id": "device_vendor_msft_policy_config_experience_donotshowfeedbacknotifications", + "displayName": "Do Not Show Feedback Notifications", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarningsaboutuncommonfiles_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_donotshowfeedbacknotifications_0", + "displayName": "Feedback notifications are not disabled. The actual state of feedback notifications on the device will then depend on what GP has configured or what the user has configured locally.", + "description": "Feedback notifications are not disabled. The actual state of feedback notifications on the device will then depend on what GP has configured or what the user has configured locally." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarningsaboutuncommonfiles_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_donotshowfeedbacknotifications_1", + "displayName": "Feedback notifications are disabled.", + "description": "Feedback notifications are disabled." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablecompatview", - "displayName": "Turn off Compatibility View", + "id": "device_vendor_msft_policy_config_experience_donotsyncbrowsersettings", + "displayName": "Do Not Sync Browser Settings", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disablecompatview_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_donotsyncbrowsersettings_2", + "displayName": "Disable Syncing", + "description": "Disable Syncing" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablecompatview_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_experience_donotsyncbrowsersettings_0", + "displayName": "Allow syncing", + "description": "Allow syncing" } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableconfiguringhistory", - "displayName": "Disable \"Configuring History\"", + "id": "device_vendor_msft_policy_config_experience_preventusersfromturningonbrowsersyncing", + "displayName": "Prevent Users From Turning On Browser Syncing", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableconfiguringhistory_0", + "id": "device_vendor_msft_policy_config_experience_preventusersfromturningonbrowsersyncing_0", "displayName": "Disabled", - "description": null + "description": "Allowed/turned on. Users can sync the browser settings." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableconfiguringhistory_1", + "id": "device_vendor_msft_policy_config_experience_preventusersfromturningonbrowsersyncing_1", "displayName": "Enabled", - "description": null + "description": "Prevented/turned off." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableconfiguringhistory_daystokeep_prompt", - "displayName": "Days to keep pages in History", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_disablecrashdetection", - "displayName": "Turn off Crash Detection", + "id": "device_vendor_msft_policy_config_experience_showlockonusertile", + "displayName": "Show Lock On User Tile", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disablecrashdetection_0", + "id": "device_vendor_msft_policy_config_experience_showlockonusertile_0", "displayName": "Disabled", - "description": null + "description": "The lock option is not displayed in the User Tile menu." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablecrashdetection_1", + "id": "device_vendor_msft_policy_config_experience_showlockonusertile_1", "displayName": "Enabled", - "description": null + "description": "The lock option is displayed in the User Tile menu." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablecustomerexperienceimprovementprogramparticipation", - "displayName": "Prevent participation in the Customer Experience Improvement Program", + "id": "device_vendor_msft_policy_config_exploitguard_exploitprotectionsettings", + "displayName": "Exploit Protection Settings", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_federatedauthentication_enablewebsigninforprimaryuser", + "displayName": "Enable Web Sign In For Primary User", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disablecustomerexperienceimprovementprogramparticipation_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_federatedauthentication_enablewebsigninforprimaryuser_0", + "displayName": "Feature defaults as appropriate for edition and device capabilities. As of now, all editions/devices exhibit Disabled behavior by default. However, this may change for future editions/devices.", + "description": "Feature defaults as appropriate for edition and device capabilities. As of now, all editions/devices exhibit Disabled behavior by default. However, this may change for future editions/devices." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablecustomerexperienceimprovementprogramparticipation_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_federatedauthentication_enablewebsigninforprimaryuser_1", + "displayName": "Enabled. Web Sign-in Credential Provider will be enabled for device sign-in.", + "description": "Enabled. Web Sign-in Credential Provider will be enabled for device sign-in." + }, + { + "id": "device_vendor_msft_policy_config_federatedauthentication_enablewebsigninforprimaryuser_2", + "displayName": "Disabled. Web Sign-in Credential Provider will be not be enabled for device sign-in.", + "description": "Disabled. Web Sign-in Credential Provider will be not be enabled for device sign-in." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disabledeletinguservisitedwebsites", - "displayName": "Prevent deleting websites that the user has visited", + "id": "device_vendor_msft_policy_config_feeds_feedsenabled", + "displayName": "Enable News and interests", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disabledeletinguservisitedwebsites_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_feeds_feedsenabled_0", + "displayName": "Not allowed.", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disabledeletinguservisitedwebsites_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_feeds_feedsenabled_1", + "displayName": "Allowed.", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableenclosuredownloading", - "displayName": "Prevent downloading of enclosures", + "id": "device_vendor_msft_policy_config_fileexplorer_allowoptiontoshownetwork", + "displayName": "Allow Option To Show Network", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableenclosuredownloading_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_fileexplorer_allowoptiontoshownetwork_0", + "displayName": "Not Allowed.", + "description": "Not Allowed." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableenclosuredownloading_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_fileexplorer_allowoptiontoshownetwork_1", + "displayName": "Allowed.", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport", - "displayName": "Turn off encryption support", + "id": "device_vendor_msft_policy_config_fileexplorer_allowoptiontoshowthispc", + "displayName": "Allow Option To Show This PC", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_fileexplorer_allowoptiontoshowthispc_0", + "displayName": "Not Allowed.", + "description": "Not Allowed." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_fileexplorer_allowoptiontoshowthispc_1", + "displayName": "Allowed.", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions", - "displayName": "Secure Protocol combinations", + "id": "device_vendor_msft_policy_config_fileexplorer_disablegraphrecentitems", + "displayName": "Disable Graph Recent Items", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_0", - "displayName": "Use no secure protocols", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_8", - "displayName": "Only use SSL 2.0", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_32", - "displayName": "Only use SSL 3.0", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_40", - "displayName": "Use SSL 2.0 and SSL 3.0", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_128", - "displayName": "Only use TLS 1.0", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_136", - "displayName": "Use SSL 2.0 and TLS 1.0", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_160", - "displayName": "Use SSL 3.0 and TLS 1.0", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_168", - "displayName": "Use SSL 2.0, SSL 3.0, and TLS 1.0", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_512", - "displayName": "Only use TLS 1.1", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_520", - "displayName": "Use SSL 2.0 and TLS 1.1", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_544", - "displayName": "Use SSL 3.0 and TLS 1.1", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_552", - "displayName": "Use SSL 2.0, SSL 3.0, and TLS 1.1", - "description": null + "id": "device_vendor_msft_policy_config_fileexplorer_disablegraphrecentitems_0", + "displayName": "File Explorer will request cloud file metadata and display it in the Quick access view.", + "description": "File Explorer will request cloud file metadata and display it in the Quick access view." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_640", - "displayName": "Use TLS 1.0 and TLS 1.1", - "description": null - }, + "id": "device_vendor_msft_policy_config_fileexplorer_disablegraphrecentitems_1", + "displayName": "File Explorer will not request cloud file metadata or display it in the Quick access view.", + "description": "File Explorer will not request cloud file metadata or display it in the Quick access view." + } + ] + }, + { + "id": "device_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations", + "displayName": "Set Allowed Folder Locations", + "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_648", - "displayName": "Use SSL 2.0, TLS 1.0, and TLS 1.1", - "description": null + "id": "device_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_0", + "displayName": "Access to all folder locations.", + "description": "Access to all folder locations." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_672", - "displayName": "Use SSL 3.0, TLS 1.0, and TLS 1.1", - "description": null + "id": "device_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_13", + "displayName": "Documents, Pictures, Downloads", + "description": "Documents, Pictures, Downloads" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_680", - "displayName": "Use SSL 2.0, SSL 3.0, TLS 1.0, and TLS 1.1", - "description": null + "id": "device_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_15", + "displayName": "Desktop, Documents, Pictures, Downloads", + "description": "Desktop, Documents, Pictures, Downloads" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2048", - "displayName": "Only use TLS 1.2", - "description": null + "id": "device_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_31", + "displayName": "Desktop, Documents, Pictures, Downloads, Network", + "description": "Desktop, Documents, Pictures, Downloads, Network" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2056", - "displayName": "Use SSL 2.0 and TLS 1.2", - "description": null + "id": "device_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_47", + "displayName": "This PC, Desktop, Documents, Pictures, Downloads", + "description": "This PC, Desktop, Documents, Pictures, Downloads" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2080", - "displayName": "Use SSL 3.0 and TLS 1.2", - "description": null - }, + "id": "device_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_63", + "displayName": "This PC, Desktop, Documents, Pictures, Downloads, Network", + "description": "This PC, Desktop, Documents, Pictures, Downloads, Network" + } + ] + }, + { + "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations", + "displayName": "Set Allowed Storage Locations", + "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2088", - "displayName": "Use SSL 2.0, SSL 3.0, and TLS 1.2", - "description": null + "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_0", + "displayName": "Access to all storage locations.", + "description": "Access to all storage locations." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2176", - "displayName": "Use TLS 1.0 and TLS 1.2", - "description": null + "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_1", + "displayName": "Removable Drives", + "description": "Removable Drives" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2184", - "displayName": "Use SSL 2.0, TLS 1.0, and TLS 1.2", - "description": null + "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_2", + "displayName": "Sync roots", + "description": "Sync roots" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2208", - "displayName": "Use SSL 3.0, TLS 1.0, and TLS 1.2", - "description": null + "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_3", + "displayName": "Removable Drives, Sync roots", + "description": "Removable Drives, Sync roots" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2216", - "displayName": "Use SSL 2.0, SSL 3.0, TLS 1.0, and TLS 1.2", - "description": null + "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_4", + "displayName": "Local Drives", + "description": "Local Drives" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2560", - "displayName": "Use TLS 1.1 and TLS 1.2", - "description": null + "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_5", + "displayName": "Removable Drives, Local Drives", + "description": "Removable Drives, Local Drives" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2568", - "displayName": "Use SSL 2.0, TLS 1.1, and TLS 1.2", - "description": null + "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_6", + "displayName": "Sync Roots, Local Drives", + "description": "Sync Roots, Local Drives" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2592", - "displayName": "Use SSL 3.0, TLS 1.1, and TLS 1.2", - "description": null - }, + "id": "device_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_7", + "displayName": "Removable Drives, Sync Roots, Local Drives", + "description": "Removable Drives, Sync Roots, Local Drives" + } + ] + }, + { + "id": "device_vendor_msft_policy_config_fileexplorer_turnoffdataexecutionpreventionforexplorer", + "displayName": "Turn off Data Execution Prevention for Explorer", + "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2600", - "displayName": "Use SSL 2.0, SSL 3.0, TLS 1.1, and TLS 1.2", + "id": "device_vendor_msft_policy_config_fileexplorer_turnoffdataexecutionpreventionforexplorer_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2688", - "displayName": "Use TLS 1.0, TLS 1.1, and TLS 1.2", + "id": "device_vendor_msft_policy_config_fileexplorer_turnoffdataexecutionpreventionforexplorer_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "device_vendor_msft_policy_config_fileexplorer_turnoffheapterminationoncorruption", + "displayName": "Turn off heap termination on corruption", + "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2696", - "displayName": "Use SSL 2.0, TLS 1.0, TLS 1.1, and TLS 1.2", + "id": "device_vendor_msft_policy_config_fileexplorer_turnoffheapterminationoncorruption_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2720", - "displayName": "Use SSL 3.0, TLS 1.0, TLS 1.1, and TLS 1.2", + "id": "device_vendor_msft_policy_config_fileexplorer_turnoffheapterminationoncorruption_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "device_vendor_msft_policy_config_filesystem_devdriveattachpolicy", + "displayName": "Dev drive filter attach policy", + "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2728", - "displayName": "Use SSL 2.0, SSL 3.0, TLS 1.0, TLS 1.1, and TLS 1.2", + "id": "device_vendor_msft_policy_config_filesystem_devdriveattachpolicy_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_8192", - "displayName": "Only use TLS 1.3", + "id": "device_vendor_msft_policy_config_filesystem_devdriveattachpolicy_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "device_vendor_msft_policy_config_filesystem_devdriveattachpolicy_devdriveattachpolicy", + "displayName": "Filter list (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_filesystem_enabledevdrive", + "displayName": "Enable dev drive", + "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_10240", - "displayName": "Use TLS 1.2 and TLS 1.3", + "id": "device_vendor_msft_policy_config_filesystem_enabledevdrive_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_10752", - "displayName": "Use TLS 1.1, TLS 1.2, and TLS 1.3", + "id": "device_vendor_msft_policy_config_filesystem_enabledevdrive_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "device_vendor_msft_policy_config_filesystem_enabledevdrive_devdriveallowantivirusfilter", + "displayName": "Let antivirus filter protect dev drives (Device)", + "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_10880", - "displayName": "Use TLS 1.0, TLS 1.1, TLS 1.2, and TLS 1.3", + "id": "device_vendor_msft_policy_config_filesystem_enabledevdrive_devdriveallowantivirusfilter_0", + "displayName": "False", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_10912", - "displayName": "Use SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2, and TLS 1.3", + "id": "device_vendor_msft_policy_config_filesystem_enabledevdrive_devdriveallowantivirusfilter_1", + "displayName": "True", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablefeedsbackgroundsync", - "displayName": "Turn off background synchronization for feeds and Web Slices", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_cleanupinvalidsessions", + "displayName": "Clean-up Invalid Sessions", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disablefeedsbackgroundsync_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_cleanupinvalidsessions_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablefeedsbackgroundsync_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_cleanupinvalidsessions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard", - "displayName": "Prevent running First Run wizard", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_roamrecyclebin", + "displayName": "Roam Recycle Bin", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_roamrecyclebin_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_roamrecyclebin_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_firstrunoptions", - "displayName": "Select your choice", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_vhdcompactdisk", + "displayName": "VHD Compact Disk", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_firstrunoptions_1", - "displayName": "Go directly to home page", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_vhdcompactdisk_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_firstrunoptions_2", - "displayName": "Go directly to \"Welcome To IE\" page", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix_vhdcompactdisk_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableflipaheadfeature", - "displayName": "Turn off the flip ahead with page prediction feature", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdcachedirectory", + "displayName": "Cache Directory", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableflipaheadfeature_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdcachedirectory_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableflipaheadfeature_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdcachedirectory_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablegeolocation", - "displayName": "Turn off browser geolocation", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdcachedirectory_ccdcachedirectory", + "displayName": "Cache Directory (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdproxydirectory", + "displayName": "Proxy Directory", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disablegeolocation_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdproxydirectory_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablegeolocation_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdproxydirectory_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablehtmlapplication", - "displayName": "Disable HTML Application", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdproxydirectory_ccdproxydirectory", + "displayName": "Proxy Directory (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdwritecachedirectory", + "displayName": "Write Cache Directory", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disablehtmlapplication_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdwritecachedirectory_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablehtmlapplication_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdwritecachedirectory_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableignoringcertificateerrors", - "displayName": "Prevent ignoring certificate errors", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~ccd_ccdwritecachedirectory_ccdwritecachedirectory", + "displayName": "Write Cache Directory (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingadcomputergroupprocess", + "displayName": "AD Computer Group Process", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableignoringcertificateerrors_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingadcomputergroupprocess_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableignoringcertificateerrors_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingadcomputergroupprocess_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableinprivatebrowsing", - "displayName": "Turn off InPrivate Browsing", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingdriverinterface", + "displayName": "Driver Interface", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableinprivatebrowsing_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingdriverinterface_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableinprivatebrowsing_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingdriverinterface_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp", - "displayName": "[Deprecated] Disable Internet Explorer 11 as a standalone browser", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingenabled", + "displayName": "Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2", - "displayName": "Disable Internet Explorer 11 as a standalone browser", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingenabled_loggingenabled", + "displayName": "", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingenabled_loggingenabled_0", + "displayName": "Logging Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingenabled_loggingenabled_1", + "displayName": "Specific Logs Only", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingenabled_loggingenabled_2", + "displayName": "Enable All Logs", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_notifydisableieoptions", - "displayName": "Notify that Internet Explorer 11 browser is disabled (Device)", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingfontvisibility", + "displayName": "Font Visibility", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_notifydisableieoptions_0", - "displayName": "Never", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_notifydisableieoptions_1", - "displayName": "Always", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingfontvisibility_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_notifydisableieoptions_2", - "displayName": "Once per user", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingfontvisibility_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableprocessesinenhancedprotectedmode", - "displayName": "Turn on 64-bit tab processes when running in Enhanced Protected Mode on 64-bit versions of Windows", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingfrxlauncher", + "displayName": "FrxLauncher", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableprocessesinenhancedprotectedmode_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingfrxlauncher_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableprocessesinenhancedprotectedmode_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingfrxlauncher_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableproxychange", - "displayName": "Prevent changing proxy settings", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingieplugin", + "displayName": "IE plugin", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableproxychange_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingieplugin_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableproxychange_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingieplugin_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablesearchproviderchange", - "displayName": "Prevent changing the default search provider", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingjavaruleeditor", + "displayName": "Java rule editor", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disablesearchproviderchange_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingjavaruleeditor_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablesearchproviderchange_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingjavaruleeditor_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablesecondaryhomepagechange", - "displayName": "Disable changing secondary home page settings", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_logginglogdirectory", + "displayName": "Log Directory", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disablesecondaryhomepagechange_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_logginglogdirectory_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablesecondaryhomepagechange_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_logginglogdirectory_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablesecondaryhomepagechange_secondaryhomepageslist", - "displayName": "Secondary home pages (Device)", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_logginglogdirectory_logginglogdirectory", + "displayName": "Log Directory (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablesecuritysettingscheck", - "displayName": "Turn off the Security Settings Check feature", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_logginglogkeepingperiod", + "displayName": "Log Keeping Period", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disablesecuritysettingscheck_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_logginglogkeepingperiod_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablesecuritysettingscheck_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_logginglogkeepingperiod_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableupdatecheck", - "displayName": "Disable Periodic Check for Internet Explorer software updates", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_logginglogkeepingperiod_logginglogkeepingperiod", + "displayName": "Log Keeping Period (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingnetwork", + "displayName": "Network", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disableupdatecheck_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingnetwork_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disableupdatecheck_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingnetwork_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablewebaddressautocomplete", - "displayName": "Turn off the auto-complete feature for web addresses", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingodfccontainer", + "displayName": "ODFC Container", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_disablewebaddressautocomplete_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingodfccontainer_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_disablewebaddressautocomplete_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingodfccontainer_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_donotallowactivexcontrolsinprotectedmode", - "displayName": "Do not allow ActiveX controls to run in Protected Mode when Enhanced Protected Mode is enabled", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprintervisibility", + "displayName": "Printer Visibility", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_donotallowactivexcontrolsinprotectedmode_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprintervisibility_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_donotallowactivexcontrolsinprotectedmode_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprintervisibility_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_donotallowuserstoaddsites", - "displayName": "Security Zones: Do not allow users to add/delete sites", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprocessstart", + "displayName": "Process Start", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_donotallowuserstoaddsites_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprocessstart_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_donotallowuserstoaddsites_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprocessstart_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_donotallowuserstochangepolicies", - "displayName": "Security Zones: Do not allow users to change policies", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprofileconfigurationtool", + "displayName": "Profile Configuration Tool", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_donotallowuserstochangepolicies_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprofileconfigurationtool_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_donotallowuserstochangepolicies_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprofileconfigurationtool_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrols", - "displayName": "Turn off blocking of outdated ActiveX controls for Internet Explorer", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprofilecontainer", + "displayName": "Profile Container", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrols_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprofilecontainer_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrols_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingprofilecontainer_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrolsonspecificdomains", - "displayName": "Turn off blocking of outdated ActiveX controls for Internet Explorer on specific domains", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingrulecompilation", + "displayName": "Rule Compilation", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrolsonspecificdomains_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingrulecompilation_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrolsonspecificdomains_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingrulecompilation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrolsonspecificdomains_domainlist", - "displayName": "Domain allow list (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_enableextendediemodehotkeys", - "displayName": "Enable extended hot keys in Internet Explorer mode", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingruleeditor", + "displayName": "Rule Editor", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_enableextendediemodehotkeys_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingruleeditor_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_enableextendediemodehotkeys_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingruleeditor_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_enableglobalwindowlistiniemode", - "displayName": "Enable global window list in Internet Explorer mode", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingsearchplugin", + "displayName": "Search Plugin", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_enableglobalwindowlistiniemode_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingsearchplugin_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_enableglobalwindowlistiniemode_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingsearchplugin_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_includealllocalsites", - "displayName": "Intranet Sites: Include all local (intranet) sites not listed in other zones", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingsearchroaming", + "displayName": "Search Roaming", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_includealllocalsites_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingsearchroaming_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_includealllocalsites_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingsearchroaming_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_includeallnetworkpaths", - "displayName": "Intranet Sites: Include all network paths (UNCs)", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingservices", + "displayName": "Services", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_includeallnetworkpaths_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingservices_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_includeallnetworkpaths_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~logging_loggingservices_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcaccessnetworkascomputer", + "displayName": "Access Network as Computer Object", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcaccessnetworkascomputer_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcaccessnetworkascomputer_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_iz_partname1406", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcattachedvhdsddl", + "displayName": "Attached VHD SDDL", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_iz_partname1406_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_iz_partname1406_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcattachedvhdsddl_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_iz_partname1406_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcattachedvhdsddl_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols", - "displayName": "Automatic prompting for ActiveX controls", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcattachedvhdsddl_odfcattachedvhdsddl", + "displayName": "Attached VHD SDDL (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeofficeactivation", + "displayName": "Include Office Activation", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeofficeactivation_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeofficeactivation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201", - "displayName": "Automatic prompting for ActiveX controls", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonedrive", + "displayName": "Include OneDrive", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonedrive_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonedrive_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads", - "displayName": "Automatic prompting for file downloads", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonenote", + "displayName": "Include OneNote", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonenote_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonenote_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_iz_partname2200", - "displayName": "Automatic prompting for file downloads", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonenoteuwp", + "displayName": "Include OneNote UWP", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonenoteuwp_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeonenoteuwp_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript", - "displayName": "Allow cut, copy or paste operations from the clipboard via script", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeoutlook", + "displayName": "Include Outlook", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeoutlook_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeoutlook_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_iz_partname1407", - "displayName": "Allow paste operations via script", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeoutlookpersonalization", + "displayName": "Include Outlook Personalization", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_iz_partname1407_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_iz_partname1407_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeoutlookpersonalization_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_iz_partname1407_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeoutlookpersonalization_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles", - "displayName": "Allow drag and drop or copy and paste files", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludesharepoint", + "displayName": "Include Sharepoint", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludesharepoint_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludesharepoint_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_iz_partname1802", - "displayName": "Allow drag and drop or copy and paste files", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeskype", + "displayName": "Include Skype", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_iz_partname1802_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_iz_partname1802_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeskype_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_iz_partname1802_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeskype_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeteams", + "displayName": "Include Teams", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeteams_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcincludeteams_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_iz_partname1604", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcisdynamicvhd", + "displayName": "Is Dynamic (VHD)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_iz_partname1604_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_iz_partname1604_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcisdynamicvhd_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_iz_partname1604_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcisdynamicvhd_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfclockedretrycount", + "displayName": "Locked Retry Count", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfclockedretrycount_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfclockedretrycount_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_iz_partname2101", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfclockedretrycount_odfclockedretrycount", + "displayName": "Locked Retry Count (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfclockedretryinterval", + "displayName": "Locked Retry Interval", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_iz_partname2101_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_iz_partname2101_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfclockedretryinterval_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_iz_partname2101_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfclockedretryinterval_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles", - "displayName": "Allow loading of XAML files", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfclockedretryinterval_odfclockedretryinterval", + "displayName": "Locked Retry Interval (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcmirrorlocalosttovhd", + "displayName": "Mirror Local OST To VHD", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcmirrorlocalosttovhd_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcmirrorlocalosttovhd_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_iz_partname2402", - "displayName": "XAML Files", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcmirrorlocalosttovhd_odfcmirrorlocalosttovhd", + "displayName": "", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_iz_partname2402_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcmirrorlocalosttovhd_odfcmirrorlocalosttovhd_0", + "displayName": "Do not mirror OST to VHD", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_iz_partname2402_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcmirrorlocalosttovhd_odfcmirrorlocalosttovhd_1", + "displayName": "Copy OST to VHD", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_iz_partname2402_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcmirrorlocalosttovhd_odfcmirrorlocalosttovhd_2", + "displayName": "Move OST to VHD", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcnumbersessionvhdstokeep", + "displayName": "Number Session VHD(s) To Keep", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcnumbersessionvhdstokeep_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcnumbersessionvhdstokeep_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_iz_partname2004", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcnumbersessionvhdstokeep_odfcnumbersessionvhdstokeep", + "displayName": "Number Session VHD(s) To Keep (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcodfcenabled", + "displayName": "Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_iz_partname2004_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_iz_partname2004_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcodfcenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_iz_partname2004_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcodfcenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols", - "displayName": "Allow only approved domains to use ActiveX controls without prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcoutlookcachedmode", + "displayName": "Outlook Cached Mode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcoutlookcachedmode_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcoutlookcachedmode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b", - "displayName": "Only allow approved domains to use ActiveX controls without prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcoutlookfolderpath", + "displayName": "Outlook Folder Path", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b_3", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcoutlookfolderpath_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b_0", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcoutlookfolderpath_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol", - "displayName": "Allow only approved domains to use the TDC ActiveX control", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcoutlookfolderpath_odfcoutlookfolderpath", + "displayName": "Outlook Folder Path (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcpreventloginwithfailure", + "displayName": "Prevent Login With Failure", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcpreventloginwithfailure_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcpreventloginwithfailure_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c", - "displayName": "Only allow approved domains to use the TDC ActiveX control", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcpreventloginwithtempprofile", + "displayName": "Prevent Login With Temp Profile", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c_3", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcpreventloginwithtempprofile_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c_0", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcpreventloginwithtempprofile_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols", - "displayName": "Allow scripting of Internet Explorer WebBrowser controls", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcreattachcount", + "displayName": "Reattach Count", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcreattachcount_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcreattachcount_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206", - "displayName": "Internet Explorer web browser control", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcreattachcount_odfcreattachcount", + "displayName": "Reattach Count (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcreattachinterval", + "displayName": "Reattach Interval", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcreattachinterval_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcreattachinterval_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows", - "displayName": "Allow script-initiated windows without size or position constraints", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcreattachinterval_odfcreattachinterval", + "displayName": "Reattach Interval (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcredirecttype", + "displayName": "Redirect Type", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcredirecttype_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcredirecttype_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_iz_partname2102", - "displayName": "Allow script-initiated windows without size or position constraints", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcredirecttype_odfcredirecttype", + "displayName": "", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_iz_partname2102_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcredirecttype_odfcredirecttype_1", + "displayName": "Legacy Redirection", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_iz_partname2102_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcredirecttype_odfcredirecttype_2", + "displayName": "FSLogix Redirection", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets", - "displayName": "Allow scriptlets", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcrefreshuserpolicy", + "displayName": "Refresh User Policy", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcrefreshuserpolicy_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcrefreshuserpolicy_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_iz_partname1209", - "displayName": "Scriptlets", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcremoveorphanedostfilesonlogoff", + "displayName": "Remove Orphaned OST Files On Logoff", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_iz_partname1209_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcremoveorphanedostfilesonlogoff_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_iz_partname1209_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcremoveorphanedostfilesonlogoff_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie", - "displayName": "Turn on SmartScreen Filter scan", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcroamsearch", + "displayName": "Roam Search", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcroamsearch_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcroamsearch_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_iz_partname2301", - "displayName": "Use SmartScreen Filter", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcroamsearch_odfcroamsearch", + "displayName": "", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_iz_partname2301_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcroamsearch_odfcroamsearch_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_iz_partname2301_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcroamsearch_odfcroamsearch_1", + "displayName": "Single-user Search", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcroamsearch_odfcroamsearch_2", + "displayName": "Multi-user Search", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript", - "displayName": "Allow updates to status bar via script", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcsizeinmbs", + "displayName": "Size In MBs", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcsizeinmbs_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcsizeinmbs_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_iz_partname2103", - "displayName": "Status bar updates via script", - "options": [ - { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_iz_partname2103_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_iz_partname2103_3", - "displayName": "Disable", - "description": null - } - ] + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcsizeinmbs_odfcsizeinmbs", + "displayName": "Size In MBs (Device)", + "options": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence", - "displayName": "Userdata persistence", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdaccessmode", + "displayName": "VHD Access Mode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdaccessmode_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdaccessmode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_iz_partname1606", - "displayName": "Userdata persistence", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdaccessmode_odfcvhdaccessmode", + "displayName": "", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_iz_partname1606_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdaccessmode_odfcvhdaccessmode_0", + "displayName": "Direct Access", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_iz_partname1606_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdaccessmode_odfcvhdaccessmode_1", + "displayName": "DiffDisk On Network", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdaccessmode_odfcvhdaccessmode_2", + "displayName": "Local DiffDisk", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdaccessmode_odfcvhdaccessmode_3", + "displayName": "Unique Disk per Session", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer", - "displayName": "Allow VBScript to run in Internet Explorer", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdlocations", + "displayName": "VHD Locations", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdlocations_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdlocations_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_iz_partname140c", - "displayName": "Allow VBScript to run in Internet Explorer", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdlocations_odfcvhdlocations", + "displayName": "VHD Locations (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdxsectorsize", + "displayName": "VHDX Sector Size", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_iz_partname140c_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdxsectorsize_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_iz_partname140c_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdxsectorsize_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdxsectorsize_odfcvhdxsectorsize", + "displayName": "", + "options": [ + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdxsectorsize_odfcvhdxsectorsize_512", + "displayName": "512 bytes", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_iz_partname140c_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvhdxsectorsize_odfcvhdxsectorsize_4096", + "displayName": "4 KB", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols", - "displayName": "Don't run antimalware programs against ActiveX controls", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumetypevhdorvhdx", + "displayName": "Volume Type (VHD or VHDX)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumetypevhdorvhdx_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumetypevhdorvhdx_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", - "displayName": "Don't run antimalware programs against ActiveX controls", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumetypevhdorvhdx_odfcvolumetypevhdorvhdx", + "displayName": "", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumetypevhdorvhdx_odfcvolumetypevhdorvhdx_vhd", + "displayName": "VHD", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumetypevhdorvhdx_odfcvolumetypevhdorvhdx_vhdx", + "displayName": "VHDX", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols", - "displayName": "Download signed ActiveX controls", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumewaittimemilliseconds", + "displayName": "Volume Wait Time (milliseconds)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumewaittimemilliseconds_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumewaittimemilliseconds_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_iz_partname1001", - "displayName": "Download signed ActiveX controls", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc_odfcvolumewaittimemilliseconds_odfcvolumewaittimemilliseconds", + "displayName": "Volume Wait Time (milliseconds) (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdlocations", + "displayName": "CCD Locations", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_iz_partname1001_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_iz_partname1001_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdlocations_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_iz_partname1001_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdlocations_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols", - "displayName": "Download unsigned ActiveX controls", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdlocations_odfcccdlocations", + "displayName": "CCD Locations (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdmaxcachesizeinmbs", + "displayName": "CCD Max Cache Size in MBs", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdmaxcachesizeinmbs_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdmaxcachesizeinmbs_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_iz_partname1004", - "displayName": "Download unsigned ActiveX controls", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdmaxcachesizeinmbs_odfcccdmaxcachesizeinmbs", + "displayName": "CCD Max Cache Size in MBs (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdunregistertimeout", + "displayName": "CCD Unregister Timeout", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_iz_partname1004_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_iz_partname1004_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdunregistertimeout_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_iz_partname1004_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdunregistertimeout_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter", - "displayName": "Turn on Cross-Site Scripting Filter", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcccdunregistertimeout_odfcccdunregistertimeout", + "displayName": "CCD Unregister Timeout (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcclearcacheonforcedunregister", + "displayName": "Clear Cache On Forced Unregister", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcclearcacheonforcedunregister_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcclearcacheonforcedunregister_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_iz_partname1409", - "displayName": "Turn on Cross-Site Scripting (XSS) Filter", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcclearcacheonlogoff", + "displayName": "Clear Cache On Logoff", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_iz_partname1409_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcclearcacheonlogoff_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_iz_partname1409_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfcclearcacheonlogoff_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows", - "displayName": "Enable dragging of content from different domains across windows", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfchealthyprovidersrequiredforregister", + "displayName": "Healthy Providers Required For Register", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfchealthyprovidersrequiredforregister_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfchealthyprovidersrequiredforregister_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709", - "displayName": "Enable dragging of content from different domains across windows", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfchealthyprovidersrequiredforregister_odfchealthyprovidersrequiredforregister", + "displayName": "Healthy Providers Required For Register (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfchealthyprovidersrequiredforunregister", + "displayName": "Healthy Providers Required For Unregister", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfchealthyprovidersrequiredforunregister_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfchealthyprovidersrequiredforunregister_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows", - "displayName": "Enable dragging of content from different domains within a window", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_ccd_odfchealthyprovidersrequiredforunregister_odfchealthyprovidersrequiredforunregister", + "displayName": "Healthy Providers Required For Unregister (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcdiffdiskparentfolderpath", + "displayName": "Diff Disk Parent Folder Path", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcdiffdiskparentfolderpath_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcdiffdiskparentfolderpath_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708", - "displayName": "Enable dragging of content from different domains within a window", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcdiffdiskparentfolderpath_odfcdiffdiskparentfolderpath", + "displayName": "Diff Disk Parent Folder Path (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcflipflopprofiledirectoryname", + "displayName": "Flip Flop Profile Directory Name", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcflipflopprofiledirectoryname_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcflipflopprofiledirectoryname_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing", - "displayName": "Enable MIME Sniffing", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcnoprofilecontainingfolder", + "displayName": "No Profile Containing Folder", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcnoprofilecontainingfolder_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcnoprofilecontainingfolder_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_iz_partname2100", - "displayName": "Enable MIME Sniffing", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcsiddirectorynamematch", + "displayName": "SID Directory Name Match", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_iz_partname2100_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcsiddirectorynamematch_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_iz_partname2100_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcsiddirectorynamematch_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode", - "displayName": "Turn on Protected Mode", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcsiddirectorynamematch_odfcsiddirectorynamematch", + "displayName": "SID Directory Name Match (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcsiddirectorynamepattern", + "displayName": "SID Directory Name Pattern", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcsiddirectorynamepattern_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcsiddirectorynamepattern_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_iz_partname2500", - "displayName": "Protected Mode", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcsiddirectorynamepattern_odfcsiddirectorynamepattern", + "displayName": "SID Directory Name Pattern (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcvhdnamematch", + "displayName": "VHD Name Match", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_iz_partname2500_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcvhdnamematch_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_iz_partname2500_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcvhdnamematch_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver", - "displayName": "Include local path when user is uploading files to a server", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcvhdnamematch_odfcvhdnamematch", + "displayName": "VHD Name Match (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcvhdnamepattern", + "displayName": "VHD Name Pattern", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcvhdnamepattern_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcvhdnamepattern_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a", - "displayName": "Include local directory path when uploading files to a server", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~odfc~odfc_containeranddirectorynaming_odfcvhdnamepattern_odfcvhdnamepattern", + "displayName": "VHD Name Pattern (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesaccessnetworkascomputer", + "displayName": "Access Network as Computer Object", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesaccessnetworkascomputer_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesaccessnetworkascomputer_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols", - "displayName": "Initialize and script ActiveX controls not marked as safe", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesattachedvhdsddl", + "displayName": "Attached VHD SDDL", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesattachedvhdsddl_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesattachedvhdsddl_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_iz_partname1201", - "displayName": "Initialize and script ActiveX controls not marked as safe", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesattachedvhdsddl_profilesattachedvhdsddl", + "displayName": "Attached VHD SDDL (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilescleanoutnotifications", + "displayName": "Clean Out Notifications", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_iz_partname1201_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_iz_partname1201_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilescleanoutnotifications_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_iz_partname1201_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilescleanoutnotifications_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesdeletelocalprofilewhenvhdshouldapply", + "displayName": "Delete Local Profile When VHD Should Apply", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesdeletelocalprofilewhenvhdshouldapply_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesdeletelocalprofilewhenvhdshouldapply_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesenabled", + "displayName": "Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_65536", - "displayName": "High safety", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_131072", - "displayName": "Medium safety", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_196608", - "displayName": "Low safety", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_8388608", - "displayName": "Custom", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_0", - "displayName": "Disable Java", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe", - "displayName": "Launching applications and files in an IFRAME", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesinstallappxpackages", + "displayName": "Install Appx Packages", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesinstallappxpackages_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesinstallappxpackages_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_iz_partname1804", - "displayName": "Launching applications and files in an IFRAME", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesisdynamicvhd", + "displayName": "Is Dynamic (VHD)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_iz_partname1804_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_iz_partname1804_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesisdynamicvhd_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_iz_partname1804_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesisdynamicvhd_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions", - "displayName": "Logon options", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileskeeplocaldirectoryafterlogoff", + "displayName": "Keep Local Directory (after logoff)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileskeeplocaldirectoryafterlogoff_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileskeeplocaldirectoryafterlogoff_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00", - "displayName": "Logon options", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileslockedretrycount", + "displayName": "Locked Retry Count", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00_196608", - "displayName": "Anonymous logon", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileslockedretrycount_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00_131072", - "displayName": "Automatic logon only in Intranet zone", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileslockedretrycount_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileslockedretrycount_profileslockedretrycount", + "displayName": "Locked Retry Count (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileslockedretryinterval", + "displayName": "Locked Retry Interval", + "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00_0", - "displayName": "Automatic logon with current username and password", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileslockedretryinterval_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00_65536", - "displayName": "Prompt for user name and password", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileslockedretryinterval_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profileslockedretryinterval_profileslockedretryinterval", + "displayName": "Locked Retry Interval (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesoutlookcachedmode", + "displayName": "Outlook Cached Mode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesoutlookcachedmode_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesoutlookcachedmode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilespreventloginwithfailure", + "displayName": "Prevent Login With Failure", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_iz_partname1607_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_iz_partname1607_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilespreventloginwithfailure_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_iz_partname1607_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilespreventloginwithfailure_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode", - "displayName": "Run .NET Framework-reliant components signed with Authenticode", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilespreventloginwithtempprofile", + "displayName": "Prevent Login With Temp Profile", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilespreventloginwithtempprofile_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilespreventloginwithtempprofile_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001", - "displayName": "Run .NET Framework-reliant components signed with Authenticode", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiledirectorysddl", + "displayName": "Profile Directory SDDL", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiledirectorysddl_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiledirectorysddl_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles", - "displayName": "Show security warning for potentially unsafe files", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiledirectorysddl_profilesprofiledirectorysddl", + "displayName": "Profile Directory SDDL (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiletype", + "displayName": "Profile Type", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiletype_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiletype_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806", - "displayName": "Launching programs and unsafe files", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiletype_profilesprofiletype", + "displayName": "", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiletype_profilesprofiletype_0", + "displayName": "Normal Profile", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiletype_profilesprofiletype_1", + "displayName": "Read / Write Profile", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiletype_profilesprofiletype_2", + "displayName": "Read Only Profile", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesprofiletype_profilesprofiletype_3", + "displayName": "Read / Write profile - fallback to Read Only", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker", - "displayName": "Use Pop-up Blocker", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesreattachcount", + "displayName": "Reattach Count", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesreattachcount_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesreattachcount_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_iz_partname1809", - "displayName": "Use Pop-up Blocker", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesreattachcount_profilesreattachcount", + "displayName": "Reattach Count (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesreattachinterval", + "displayName": "Reattach Interval", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_iz_partname1809_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesreattachinterval_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_iz_partname1809_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesreattachinterval_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesreattachinterval_profilesreattachinterval", + "displayName": "Reattach Interval (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesrebootonuserlogoff", + "displayName": "Reboot On User Logoff", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesrebootonuserlogoff_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesrebootonuserlogoff_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_iz_partname1406", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesrebootonuserlogoff_profilesrebootonuserlogoff", + "displayName": "", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_iz_partname1406_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesrebootonuserlogoff_profilesrebootonuserlogoff_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_iz_partname1406_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesrebootonuserlogoff_profilesrebootonuserlogoff_1", + "displayName": "Reboot on any logoff", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_iz_partname1406_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesrebootonuserlogoff_profilesrebootonuserlogoff_2", + "displayName": "Reboot only on any FSLogix Profile logoff", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols", - "displayName": "Automatic prompting for ActiveX controls", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirectionxmlsourcefolder", + "displayName": "Redirection XML Source Folder", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirectionxmlsourcefolder_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirectionxmlsourcefolder_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201", - "displayName": "Automatic prompting for ActiveX controls", - "options": [ - { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", - "displayName": "Disable", - "description": null - } - ] + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirectionxmlsourcefolder_profilesredirectionxmlsourcefolder", + "displayName": "Redirection XML Source Folder (Device)", + "options": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads", - "displayName": "Automatic prompting for file downloads", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirecttype", + "displayName": "Redirect Type", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirecttype_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirecttype_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200", - "displayName": "Automatic prompting for file downloads", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirecttype_profilesredirecttype", + "displayName": "", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirecttype_profilesredirecttype_1", + "displayName": "Legacy Redirection", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesredirecttype_profilesredirecttype_2", + "displayName": "FSLogix Redirection", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesremoveorphanedostfilesonlogoff", + "displayName": "Remove Orphaned OST Files On Logoff", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesremoveorphanedostfilesonlogoff_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesremoveorphanedostfilesonlogoff_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_iz_partname1604", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamidentity", + "displayName": "Roam Identity", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_iz_partname1604_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_iz_partname1604_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamidentity_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_iz_partname1604_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamidentity_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamsearch", + "displayName": "Roam Search", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamsearch_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamsearch_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_iz_partname2101", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamsearch_profilesroamsearch", + "displayName": "", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_iz_partname2101_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamsearch_profilesroamsearch_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_iz_partname2101_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamsearch_profilesroamsearch_1", + "displayName": "Single-user Search", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_iz_partname2101_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesroamsearch_profilesroamsearch_2", + "displayName": "Multi-user Search", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessettempfolderstolocalpath", + "displayName": "Set Temp Folders to Local Path", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessettempfolderstolocalpath_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessettempfolderstolocalpath_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_iz_partname2004", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessettempfolderstolocalpath_profilessettempfolderstolocalpath", + "displayName": "", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_iz_partname2004_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessettempfolderstolocalpath_profilessettempfolderstolocalpath_0", + "displayName": "Take no action", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_iz_partname2004_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessettempfolderstolocalpath_profilessettempfolderstolocalpath_1", + "displayName": "Redirect TEMP and TMP to local drive", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_iz_partname2004_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessettempfolderstolocalpath_profilessettempfolderstolocalpath_2", + "displayName": "Redirect INetCache to local drive", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessettempfolderstolocalpath_profilessettempfolderstolocalpath_3", + "displayName": "Redirect TEMP, TMP and INetCache to local drive", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets", - "displayName": "Allow scriptlets", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesshutdownonuserlogoff", + "displayName": "Shutdown On User Logoff", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesshutdownonuserlogoff_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesshutdownonuserlogoff_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_iz_partname1209", - "displayName": "Scriptlets", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesshutdownonuserlogoff_profilesshutdownonuserlogoff", + "displayName": "", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_iz_partname1209_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesshutdownonuserlogoff_profilesshutdownonuserlogoff_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_iz_partname1209_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesshutdownonuserlogoff_profilesshutdownonuserlogoff_1", + "displayName": "Shutdown on any logoff", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesshutdownonuserlogoff_profilesshutdownonuserlogoff_2", + "displayName": "Shutdown on any FSLogix Profile logoff", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie", - "displayName": "Turn on SmartScreen Filter scan", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessiddirectorysddl", + "displayName": "SID Directory SDDL", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessiddirectorysddl_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessiddirectorysddl_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_iz_partname2301", - "displayName": "Use SmartScreen Filter", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessiddirectorysddl_profilessiddirectorysddl", + "displayName": "SID Directory SDDL (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessizeinmbs", + "displayName": "Size In MBs", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_iz_partname2301_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessizeinmbs_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_iz_partname2301_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessizeinmbs_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence", - "displayName": "Userdata persistence", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilessizeinmbs_profilessizeinmbs", + "displayName": "Size In MBs (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdlocations", + "displayName": "VHD Locations", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdlocations_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdlocations_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_iz_partname1606", - "displayName": "Userdata persistence", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdlocations_profilesvhdlocations", + "displayName": "VHD Locations (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdxsectorsize", + "displayName": "VHDX Sector Size", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_iz_partname1606_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdxsectorsize_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_iz_partname1606_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdxsectorsize_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols", - "displayName": "Don't run antimalware programs against ActiveX controls", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdxsectorsize_profilesvhdxsectorsize", + "displayName": "", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdxsectorsize_profilesvhdxsectorsize_512", + "displayName": "512 bytes", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvhdxsectorsize_profilesvhdxsectorsize_4096", + "displayName": "4 KB", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", - "displayName": "Don't run antimalware programs against ActiveX controls", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvolumewaittimemilliseconds", + "displayName": "Volume Wait Time (milliseconds)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvolumewaittimemilliseconds_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvolumewaittimemilliseconds_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols", - "displayName": "Initialize and script ActiveX controls not marked as safe", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles_profilesvolumewaittimemilliseconds_profilesvolumewaittimemilliseconds", + "displayName": "Volume Wait Time (milliseconds) (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdlocations", + "displayName": "CCD Locations", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdlocations_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdlocations_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_iz_partname1201", - "displayName": "Initialize and script ActiveX controls not marked as safe", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdlocations_profilesccdlocations", + "displayName": "CCD Locations (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdmaxcachesizeinmbs", + "displayName": "CCD Max Cache Size in MBs", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_iz_partname1201_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_iz_partname1201_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdmaxcachesizeinmbs_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_iz_partname1201_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdmaxcachesizeinmbs_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdmaxcachesizeinmbs_profilesccdmaxcachesizeinmbs", + "displayName": "CCD Max Cache Size in MBs (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdunregistertimeout", + "displayName": "CCD Unregister Timeout", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdunregistertimeout_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdunregistertimeout_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesccdunregistertimeout_profilesccdunregistertimeout", + "displayName": "CCD Unregister Timeout (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesclearcacheonforcedunregister", + "displayName": "Clear Cache on Forced Unregister", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_65536", - "displayName": "High safety", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_131072", - "displayName": "Medium safety", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_196608", - "displayName": "Low safety", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_8388608", - "displayName": "Custom", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesclearcacheonforcedunregister_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_0", - "displayName": "Disable Java", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesclearcacheonforcedunregister_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesclearcacheonlogoff", + "displayName": "Clear Cache on Logoff", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesclearcacheonlogoff_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profilesclearcacheonlogoff_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profileshealthyprovidersrequiredforregister", + "displayName": "Healthy Providers Required For Register", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_iz_partname1607_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_iz_partname1607_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profileshealthyprovidersrequiredforregister_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_iz_partname1607_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profileshealthyprovidersrequiredforregister_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_jscriptreplacement", - "displayName": "Replace JScript by loading JScript9Legacy in place of JScript via MSHTML/WebOC.", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profileshealthyprovidersrequiredforregister_profileshealthyprovidersrequiredforregister", + "displayName": "Healthy Providers Required For Register (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profileshealthyprovidersrequiredforunregister", + "displayName": "Healthy Providers Required For Unregister", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_jscriptreplacement_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profileshealthyprovidersrequiredforunregister_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_jscriptreplacement_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profileshealthyprovidersrequiredforunregister_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_keepintranetsitesininternetexplorer", - "displayName": "Keep all intranet sites in Internet Explorer", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_ccd_profileshealthyprovidersrequiredforunregister_profileshealthyprovidersrequiredforunregister", + "displayName": "Healthy Providers Required For Unregister (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesdiffdiskparentfolderpath", + "displayName": "Diff Disk Parent Folder Path", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_keepintranetsitesininternetexplorer_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesdiffdiskparentfolderpath_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_keepintranetsitesininternetexplorer_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesdiffdiskparentfolderpath_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesdiffdiskparentfolderpath_profilesdiffdiskparentfolderpath", + "displayName": "Diff Disk Parent Folder Path (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesflipflopprofiledirectoryname", + "displayName": "Flip Flop Profile Directory Name", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesflipflopprofiledirectoryname_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesflipflopprofiledirectoryname_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_iz_partname1406", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesnoprofilecontainingfolder", + "displayName": "No Profile Containing Folder", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_iz_partname1406_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_iz_partname1406_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesnoprofilecontainingfolder_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_iz_partname1406_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesnoprofilecontainingfolder_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols", - "displayName": "Automatic prompting for ActiveX controls", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilessiddirectorynamematch", + "displayName": "SID Directory Name Match", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilessiddirectorynamematch_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilessiddirectorynamematch_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201", - "displayName": "Automatic prompting for ActiveX controls", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilessiddirectorynamematch_profilessiddirectorynamematch", + "displayName": "SID Directory Name Match (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilessiddirectorynamepattern", + "displayName": "SID Directory Name Pattern", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilessiddirectorynamepattern_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilessiddirectorynamepattern_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads", - "displayName": "Automatic prompting for file downloads", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilessiddirectorynamepattern_profilessiddirectorynamepattern", + "displayName": "SID Directory Name Pattern (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvhdnamematch", + "displayName": "VHD Name Match", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvhdnamematch_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvhdnamematch_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200", - "displayName": "Automatic prompting for file downloads", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvhdnamematch_profilesvhdnamematch", + "displayName": "VHD Name Match (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvhdnamepattern", + "displayName": "VHD Name Pattern", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvhdnamepattern_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvhdnamepattern_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvhdnamepattern_profilesvhdnamepattern", + "displayName": "VHD Name Pattern (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvolumetypevhdorvhdx", + "displayName": "Volume Type (VHD or VHDX)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_0", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvolumetypevhdorvhdx_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_1", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvolumetypevhdorvhdx_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_iz_partname1604", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvolumetypevhdorvhdx_profilesvolumetypevhdorvhdx", + "displayName": "", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_iz_partname1604_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvolumetypevhdorvhdx_profilesvolumetypevhdorvhdx_vhd", + "displayName": "VHD", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_iz_partname1604_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_fslogixv1~policy~fslogix~profiles~profiles_containeranddirectorynaming_profilesvolumetypevhdorvhdx_profilesvolumetypevhdorvhdx_vhdx", + "displayName": "VHDX", "description": null + } + ] + }, + { + "id": "device_vendor_msft_policy_config_games_allowadvancedgamingservices", + "displayName": "Allow Advanced Gaming Services", + "options": [ + { + "id": "device_vendor_msft_policy_config_games_allowadvancedgamingservices_0", + "displayName": "Block", + "description": "Not allowed." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_iz_partname1604_1", - "displayName": "Prompt", - "description": null + "id": "device_vendor_msft_policy_config_games_allowadvancedgamingservices_1", + "displayName": "Allow", + "description": "Allowed." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "id": "device_vendor_msft_policy_config_handwriting_paneldefaultmodedocked", + "displayName": "Panel Default Mode Docked", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_0", + "id": "device_vendor_msft_policy_config_handwriting_paneldefaultmodedocked_0", "displayName": "Disabled", - "description": null + "description": "Disabled." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_1", + "id": "device_vendor_msft_policy_config_handwriting_paneldefaultmodedocked_1", "displayName": "Enabled", - "description": null + "description": "Enabled." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_iz_partname2101", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "id": "device_vendor_msft_policy_config_humanpresence_forceinstantlock", + "displayName": "Force Instant Lock", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_iz_partname2101_0", - "displayName": "Enable", - "description": null + "id": "device_vendor_msft_policy_config_humanpresence_forceinstantlock_2", + "displayName": "Forced Off.", + "description": "ForcedOff." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_iz_partname2101_3", - "displayName": "Disable", - "description": null + "id": "device_vendor_msft_policy_config_humanpresence_forceinstantlock_1", + "displayName": "Forced On.", + "description": "ForcedOn." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_iz_partname2101_1", - "displayName": "Prompt", - "description": null + "id": "device_vendor_msft_policy_config_humanpresence_forceinstantlock_0", + "displayName": "Default To User Choice.", + "description": "DefaultToUserChoice." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode", + "id": "device_vendor_msft_policy_config_humanpresence_forceinstantwake", + "displayName": "Force Instant Wake", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_humanpresence_forceinstantwake_2", + "displayName": "Forced Off.", + "description": "ForcedOff." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_humanpresence_forceinstantwake_1", + "displayName": "Forced On.", + "description": "ForcedOn." + }, + { + "id": "device_vendor_msft_policy_config_humanpresence_forceinstantwake_0", + "displayName": "Default To User Choice.", + "description": "DefaultToUserChoice." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_iz_partname2004", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode", + "id": "device_vendor_msft_policy_config_humanpresence_forcelocktimeout", + "displayName": "Force Lock Timeout", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_iz_partname2004_0", - "displayName": "Enable", - "description": null + "id": "device_vendor_msft_policy_config_humanpresence_forcelocktimeout_120", + "displayName": "Two Minutes", + "description": "TwoMinutes" }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_iz_partname2004_3", - "displayName": "Disable", - "description": null + "id": "device_vendor_msft_policy_config_humanpresence_forcelocktimeout_30", + "displayName": "Thirty Seconds.", + "description": "ThirtySeconds." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_iz_partname2004_1", - "displayName": "Prompt", - "description": null + "id": "device_vendor_msft_policy_config_humanpresence_forcelocktimeout_10", + "displayName": "Ten Seconds.", + "description": "TenSeconds." + }, + { + "id": "device_vendor_msft_policy_config_humanpresence_forcelocktimeout_1", + "displayName": "Immediate.", + "description": "Immediate." + }, + { + "id": "device_vendor_msft_policy_config_humanpresence_forcelocktimeout_0", + "displayName": "Default To User Choice.", + "description": "DefaultToUserChoice." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets", - "displayName": "Allow scriptlets", + "id": "device_vendor_msft_policy_config_humanpresence_forceonlookerdetection", + "displayName": "Force Onlooker Detection", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_humanpresence_forceonlookerdetection_2", + "displayName": "Forced Off.", + "description": "ForcedOff." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_humanpresence_forceonlookerdetection_1", + "displayName": "Forced On.", + "description": "ForcedOn." + }, + { + "id": "device_vendor_msft_policy_config_humanpresence_forceonlookerdetection_0", + "displayName": "Default To User Choice.", + "description": "DefaultToUserChoice." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_iz_partname1209", - "displayName": "Scriptlets", + "id": "device_vendor_msft_policy_config_humanpresence_forceonlookerdetectionaction", + "displayName": "Force Onlooker Detection Action", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_iz_partname1209_0", - "displayName": "Enable", - "description": null + "id": "device_vendor_msft_policy_config_humanpresence_forceonlookerdetectionaction_3", + "displayName": "Forced Dim And Notify.", + "description": "ForcedDimAndNotify." }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_iz_partname1209_3", - "displayName": "Disable", - "description": null + "id": "device_vendor_msft_policy_config_humanpresence_forceonlookerdetectionaction_2", + "displayName": "Forced Notify.", + "description": "ForcedNotify." + }, + { + "id": "device_vendor_msft_policy_config_humanpresence_forceonlookerdetectionaction_0", + "displayName": "Default To User Choice.", + "description": "DefaultToUserChoice." } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie", - "displayName": "Turn on SmartScreen Filter scan", + "id": "device_vendor_msft_policy_config_internetexplorer_addsearchprovider", + "displayName": "Add a specific list of search providers to the user's list of search providers", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_0", + "id": "device_vendor_msft_policy_config_internetexplorer_addsearchprovider_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_1", + "id": "device_vendor_msft_policy_config_internetexplorer_addsearchprovider_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_iz_partname2301", - "displayName": "Use SmartScreen Filter", + "id": "device_vendor_msft_policy_config_internetexplorer_allowactivexfiltering", + "displayName": "Turn on ActiveX Filtering", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_iz_partname2301_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowactivexfiltering_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_iz_partname2301_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowactivexfiltering_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence", - "displayName": "Userdata persistence", + "id": "device_vendor_msft_policy_config_internetexplorer_allowaddonlist", + "displayName": "Add-on List", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_0", + "id": "device_vendor_msft_policy_config_internetexplorer_allowaddonlist_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_1", + "id": "device_vendor_msft_policy_config_internetexplorer_allowaddonlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_iz_partname1606", - "displayName": "Userdata persistence", + "id": "device_vendor_msft_policy_config_internetexplorer_allowaddonlist_addonlist", + "displayName": "Add-on List (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowaddonlist_addonlist_key", + "displayName": "Name", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowaddonlist_addonlist_value", + "displayName": "Value", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowcertificateaddressmismatchwarning", + "displayName": "Turn on certificate address mismatch warning", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_iz_partname1606_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowcertificateaddressmismatchwarning_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_iz_partname1606_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowcertificateaddressmismatchwarning_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols", - "displayName": "Don't run antimalware programs against ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_allowdeletingbrowsinghistoryonexit", + "displayName": "Allow deleting browsing history on exit", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_allowdeletingbrowsinghistoryonexit_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_allowdeletingbrowsinghistoryonexit_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", - "displayName": "Don't run antimalware programs against ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_allowenhancedprotectedmode", + "displayName": "Turn on Enhanced Protected Mode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowenhancedprotectedmode_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowenhancedprotectedmode_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols", - "displayName": "Initialize and script ActiveX controls not marked as safe", + "id": "device_vendor_msft_policy_config_internetexplorer_allowenhancedsuggestionsinaddressbar", + "displayName": "Allow Microsoft services to provide enhanced suggestions as the user types in the Address bar", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_allowenhancedsuggestionsinaddressbar_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_allowenhancedsuggestionsinaddressbar_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_iz_partname1201", - "displayName": "Initialize and script ActiveX controls not marked as safe", + "id": "device_vendor_msft_policy_config_internetexplorer_allowenterprisemodefromtoolsmenu", + "displayName": "Let users turn on and use Enterprise Mode from the Tools menu", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowenterprisemodefromtoolsmenu_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_allowenterprisemodefromtoolsmenu_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_internetexplorer_allowenterprisemodefromtoolsmenu_enterreportbackprompt", + "displayName": "Type the location (URL) of where to receive reports about the websites for which users turn on and use Enterprise Mode", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowenterprisemodesitelist", + "displayName": "Use the Enterprise Mode IE website list", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_0", + "id": "device_vendor_msft_policy_config_internetexplorer_allowenterprisemodesitelist_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_1", + "id": "device_vendor_msft_policy_config_internetexplorer_allowenterprisemodesitelist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_internetexplorer_allowenterprisemodesitelist_entersitelistprompt", + "displayName": "Type the location (URL) of your Enterprise Mode IE website list", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowfallbacktossl3", + "displayName": "Allow fallback to SSL 3.0 (Internet Explorer)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_65536", - "displayName": "High safety", + "id": "device_vendor_msft_policy_config_internetexplorer_allowfallbacktossl3_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_131072", - "displayName": "Medium safety", + "id": "device_vendor_msft_policy_config_internetexplorer_allowfallbacktossl3_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowfallbacktossl3_advanced_enablessl3fallbackoptions", + "displayName": "Allow insecure fallback for:", + "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_196608", - "displayName": "Low safety", + "id": "device_vendor_msft_policy_config_internetexplorer_allowfallbacktossl3_advanced_enablessl3fallbackoptions_0", + "displayName": "No Sites", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_8388608", - "displayName": "Custom", + "id": "device_vendor_msft_policy_config_internetexplorer_allowfallbacktossl3_advanced_enablessl3fallbackoptions_1", + "displayName": "Non-Protected Mode Sites", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_0", - "displayName": "Disable Java", + "id": "device_vendor_msft_policy_config_internetexplorer_allowfallbacktossl3_advanced_enablessl3fallbackoptions_3", + "displayName": "All Sites", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetexplorer7policylist", + "displayName": "Use Policy List of Internet Explorer 7 sites", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_0", + "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetexplorer7policylist_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_1", + "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetexplorer7policylist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetexplorer7policylist_compatview_sitelist", + "displayName": "List of sites (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetexplorerstandardsmode", + "displayName": "Turn on Internet Explorer Standards Mode for local intranet", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_iz_partname1607_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_iz_partname1607_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetexplorerstandardsmode_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_iz_partname1607_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetexplorerstandardsmode_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate", + "displayName": "Internet Zone Template", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_0", + "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_1", + "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_iz_partname1406", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate", + "displayName": "Internet", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_iz_partname1406_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_1", + "displayName": "Low", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_iz_partname1406_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_2", + "displayName": "Medium Low", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_iz_partname1406_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_3", + "displayName": "Medium", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols", - "displayName": "Automatic prompting for ActiveX controls", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_5", + "displayName": "Medium High", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201", - "displayName": "Automatic prompting for ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate", + "displayName": "Intranet Zone Template", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads", - "displayName": "Automatic prompting for file downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate", + "displayName": "Intranet", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_1", + "displayName": "Low", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_2", + "displayName": "Medium Low", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_iz_partname2200", - "displayName": "Automatic prompting for file downloads", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_3", + "displayName": "Medium", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_5", + "displayName": "Medium High", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate", + "displayName": "Local Machine Zone Template", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_0", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_1", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_iz_partname1604", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate", + "displayName": "Local Machine Zone", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_iz_partname1604_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_1", + "displayName": "Low", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_iz_partname1604_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_2", + "displayName": "Medium Low", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_iz_partname1604_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_3", + "displayName": "Medium", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_5", + "displayName": "Medium High", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate", + "displayName": "Locked-Down Internet Zone Template", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_0", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_1", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_iz_partname2101", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate", + "displayName": "Locked-Down Internet", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_iz_partname2101_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_1", + "displayName": "Low", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_iz_partname2101_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_2", + "displayName": "Medium Low", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_iz_partname2101_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_3", + "displayName": "Medium", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_5", + "displayName": "Medium High", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate", + "displayName": "Locked-Down Intranet Zone Template", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_0", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_1", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_iz_partname2004", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate", + "displayName": "Locked-Down Intranet", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_iz_partname2004_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_1", + "displayName": "Low", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_iz_partname2004_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_2", + "displayName": "Medium Low", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_iz_partname2004_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_3", + "displayName": "Medium", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_5", + "displayName": "Medium High", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets", - "displayName": "Allow scriptlets", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate", + "displayName": "Locked-Down Local Machine Zone Template", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_0", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_1", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_iz_partname1209", - "displayName": "Scriptlets", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate", + "displayName": "Locked-Down Local Machine Zone", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_iz_partname1209_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_1", + "displayName": "Low", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_iz_partname1209_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_2", + "displayName": "Medium Low", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_3", + "displayName": "Medium", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_5", + "displayName": "Medium High", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie", - "displayName": "Turn on SmartScreen Filter scan", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate", + "displayName": "Locked-Down Restricted Sites Zone Template", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_0", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_1", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_iz_partname2301", - "displayName": "Use SmartScreen Filter", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate", + "displayName": "Locked-Down Restricted Sites", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_iz_partname2301_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_1", + "displayName": "Low", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_iz_partname2301_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_2", + "displayName": "Medium Low", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence", - "displayName": "Userdata persistence", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_3", + "displayName": "Medium", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_5", + "displayName": "Medium High", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_iz_partname1606", - "displayName": "Userdata persistence", + "id": "device_vendor_msft_policy_config_internetexplorer_allowonewordentry", + "displayName": "Go to an intranet site for a one-word entry in the Address bar", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_iz_partname1606_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowonewordentry_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_iz_partname1606_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowonewordentry_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols", - "displayName": "Initialize and script ActiveX controls not marked as safe", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsavetargetasiniemode", + "displayName": "Allow \"Save Target As\" in Internet Explorer mode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsavetargetasiniemode_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsavetargetasiniemode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_iz_partname1201", - "displayName": "Initialize and script ActiveX controls not marked as safe", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist", + "displayName": "Site to Zone Assignment List", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_iz_partname1201_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_iz_partname1201_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_iz_partname1201_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_iz_zonemapprompt", + "displayName": "Enter the zone assignments here. (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_iz_zonemapprompt_key", + "displayName": "Name", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_iz_zonemapprompt_value", + "displayName": "Value", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate", + "displayName": "Locked-Down Trusted Sites Zone Template", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_0", + "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_1", + "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate", + "displayName": "Locked-Down Trusted Sites", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_65536", - "displayName": "High safety", + "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_1", + "displayName": "Low", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_131072", - "displayName": "Medium safety", + "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_2", + "displayName": "Medium Low", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_196608", - "displayName": "Low safety", + "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_3", + "displayName": "Medium", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_8388608", - "displayName": "Custom", + "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_5", + "displayName": "Medium High", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_0", - "displayName": "Disable Java", + "id": "device_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsoftwarewhensignatureisinvalid", + "displayName": "Allow software to run or install even if the signature is invalid", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_0", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsoftwarewhensignatureisinvalid_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_1", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsoftwarewhensignatureisinvalid_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains", - "options": [ - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_iz_partname1607_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_iz_partname1607_3", - "displayName": "Disable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_iz_partname1607_1", - "displayName": "Prompt", - "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate", + "displayName": "Restricted Sites Zone Template", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_0", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_1", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate", + "displayName": "Restricted Sites", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_65536", - "displayName": "High safety", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_1", + "displayName": "Low", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_131072", - "displayName": "Medium safety", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_2", + "displayName": "Medium Low", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_196608", - "displayName": "Low safety", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_3", + "displayName": "Medium", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_8388608", - "displayName": "Custom", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_5", + "displayName": "Medium High", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_0", - "displayName": "Disable Java", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsuggestedsites", + "displayName": "Turn on Suggested Sites", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_0", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsuggestedsites_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_1", + "id": "device_vendor_msft_policy_config_internetexplorer_allowsuggestedsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_iz_partname1406", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate", + "displayName": "Trusted Sites Zone Template", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_iz_partname1406_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_iz_partname1406_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_iz_partname1406_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols", - "displayName": "Automatic prompting for ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate", + "displayName": "Trusted Sites", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_1", + "displayName": "Low", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_2", + "displayName": "Medium Low", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_3", + "displayName": "Medium", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_5", + "displayName": "Medium High", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201", - "displayName": "Automatic prompting for ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_autodetectintranet", + "displayName": "Turn on automatic detection of intranet", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_autodetectintranet_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_autodetectintranet_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads", - "displayName": "Automatic prompting for file downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_checkservercertificaterevocation", + "displayName": "Check for server certificate revocation", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_0", + "id": "device_vendor_msft_policy_config_internetexplorer_checkservercertificaterevocation_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_1", + "id": "device_vendor_msft_policy_config_internetexplorer_checkservercertificaterevocation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200", - "displayName": "Automatic prompting for file downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_checksignaturesondownloadedprograms", + "displayName": "Check for signatures on downloaded programs", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_checksignaturesondownloadedprograms_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_checksignaturesondownloadedprograms_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel", + "displayName": "Configure which channel of Microsoft Edge to use for opening redirected sites", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_0", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_1", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_iz_partname1604", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser", + "displayName": "First choice (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_iz_partname1604_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_", + "displayName": "", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_iz_partname1604_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_1", + "displayName": "Microsoft Edge Stable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_iz_partname1604_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_2", + "displayName": "Microsoft Edge Beta version 77 or later", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_3", + "displayName": "Microsoft Edge Dev version 77 or later", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_4", + "displayName": "Microsoft Edge Canary version 77 or later", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_0", + "displayName": "Microsoft Edge version 45 or earlier", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_iz_partname2101", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2", + "displayName": "Second choice (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_iz_partname2101_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_", + "displayName": "", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_iz_partname2101_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_1", + "displayName": "Microsoft Edge Stable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_iz_partname2101_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_2", + "displayName": "Microsoft Edge Beta version 77 or later", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_3", + "displayName": "Microsoft Edge Dev version 77 or later", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_4", + "displayName": "Microsoft Edge Canary version 77 or later", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_0", + "displayName": "Microsoft Edge version 45 or earlier", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_iz_partname2004", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3", + "displayName": "Third choice (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_iz_partname2004_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_", + "displayName": "", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_iz_partname2004_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_1", + "displayName": "Microsoft Edge Stable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_iz_partname2004_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_2", + "displayName": "Microsoft Edge Beta version 77 or later", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets", - "displayName": "Allow scriptlets", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_3", + "displayName": "Microsoft Edge Dev version 77 or later", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_4", + "displayName": "Microsoft Edge Canary version 77 or later", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_0", + "displayName": "Microsoft Edge version 45 or earlier", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_iz_partname1209", - "displayName": "Scriptlets", + "id": "device_vendor_msft_policy_config_internetexplorer_consistentmimehandlinginternetexplorerprocesses", + "displayName": "Internet Explorer Processes", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_iz_partname1209_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_consistentmimehandlinginternetexplorerprocesses_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_iz_partname1209_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_consistentmimehandlinginternetexplorerprocesses_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie", - "displayName": "Turn on SmartScreen Filter scan", + "id": "device_vendor_msft_policy_config_internetexplorer_disableadobeflash", + "displayName": "Turn off Adobe Flash in Internet Explorer and prevent applications from using Internet Explorer technology to instantiate Flash objects", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_0", + "id": "device_vendor_msft_policy_config_internetexplorer_disableadobeflash_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_1", + "id": "device_vendor_msft_policy_config_internetexplorer_disableadobeflash_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_iz_partname2301", - "displayName": "Use SmartScreen Filter", + "id": "device_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarnings", + "displayName": "Prevent bypassing SmartScreen Filter warnings", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_iz_partname2301_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarnings_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_iz_partname2301_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarnings_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence", - "displayName": "Userdata persistence", + "id": "device_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarningsaboutuncommonfiles", + "displayName": "Prevent bypassing SmartScreen Filter warnings about files that are not commonly downloaded from the Internet", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_0", + "id": "device_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarningsaboutuncommonfiles_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_1", + "id": "device_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarningsaboutuncommonfiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_iz_partname1606", - "displayName": "Userdata persistence", + "id": "device_vendor_msft_policy_config_internetexplorer_disablecompatview", + "displayName": "Turn off Compatibility View", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_iz_partname1606_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_disablecompatview_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_iz_partname1606_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_disablecompatview_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols", - "displayName": "Initialize and script ActiveX controls not marked as safe", + "id": "device_vendor_msft_policy_config_internetexplorer_disableconfiguringhistory", + "displayName": "Disable \"Configuring History\"", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_disableconfiguringhistory_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_disableconfiguringhistory_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_iz_partname1201", - "displayName": "Initialize and script ActiveX controls not marked as safe", - "options": [ - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_iz_partname1201_0", - "displayName": "Enable", - "description": null - }, + "id": "device_vendor_msft_policy_config_internetexplorer_disableconfiguringhistory_daystokeep_prompt", + "displayName": "Days to keep pages in History", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disablecrashdetection", + "displayName": "Turn off Crash Detection", + "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_iz_partname1201_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_disablecrashdetection_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_iz_partname1201_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_disablecrashdetection_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_internetexplorer_disablecustomerexperienceimprovementprogramparticipation", + "displayName": "Prevent participation in the Customer Experience Improvement Program", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_0", + "id": "device_vendor_msft_policy_config_internetexplorer_disablecustomerexperienceimprovementprogramparticipation_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_1", + "id": "device_vendor_msft_policy_config_internetexplorer_disablecustomerexperienceimprovementprogramparticipation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_internetexplorer_disabledeletinguservisitedwebsites", + "displayName": "Prevent deleting websites that the user has visited", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_iz_partname1607_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_disabledeletinguservisitedwebsites_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_iz_partname1607_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_disabledeletinguservisitedwebsites_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableenclosuredownloading", + "displayName": "Prevent downloading of enclosures", + "options": [ + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableenclosuredownloading_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_iz_partname1607_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_disableenclosuredownloading_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport", + "displayName": "Turn off encryption support", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_0", + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_1", + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_iz_partname1406", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions", + "displayName": "Secure Protocol combinations", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_iz_partname1406_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_0", + "displayName": "Use no secure protocols", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_iz_partname1406_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_8", + "displayName": "Only use SSL 2.0", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_iz_partname1406_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_32", + "displayName": "Only use SSL 3.0", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols", - "displayName": "Automatic prompting for ActiveX controls", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_40", + "displayName": "Use SSL 2.0 and SSL 3.0", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_128", + "displayName": "Only use TLS 1.0", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_136", + "displayName": "Use SSL 2.0 and TLS 1.0", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_160", + "displayName": "Use SSL 3.0 and TLS 1.0", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_168", + "displayName": "Use SSL 2.0, SSL 3.0, and TLS 1.0", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_512", + "displayName": "Only use TLS 1.1", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_520", + "displayName": "Use SSL 2.0 and TLS 1.1", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_544", + "displayName": "Use SSL 3.0 and TLS 1.1", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_552", + "displayName": "Use SSL 2.0, SSL 3.0, and TLS 1.1", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_640", + "displayName": "Use TLS 1.0 and TLS 1.1", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_648", + "displayName": "Use SSL 2.0, TLS 1.0, and TLS 1.1", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_672", + "displayName": "Use SSL 3.0, TLS 1.0, and TLS 1.1", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_680", + "displayName": "Use SSL 2.0, SSL 3.0, TLS 1.0, and TLS 1.1", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2048", + "displayName": "Only use TLS 1.2", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2056", + "displayName": "Use SSL 2.0 and TLS 1.2", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2080", + "displayName": "Use SSL 3.0 and TLS 1.2", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2088", + "displayName": "Use SSL 2.0, SSL 3.0, and TLS 1.2", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2176", + "displayName": "Use TLS 1.0 and TLS 1.2", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2184", + "displayName": "Use SSL 2.0, TLS 1.0, and TLS 1.2", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2208", + "displayName": "Use SSL 3.0, TLS 1.0, and TLS 1.2", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2216", + "displayName": "Use SSL 2.0, SSL 3.0, TLS 1.0, and TLS 1.2", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2560", + "displayName": "Use TLS 1.1 and TLS 1.2", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2568", + "displayName": "Use SSL 2.0, TLS 1.1, and TLS 1.2", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2592", + "displayName": "Use SSL 3.0, TLS 1.1, and TLS 1.2", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2600", + "displayName": "Use SSL 2.0, SSL 3.0, TLS 1.1, and TLS 1.2", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2688", + "displayName": "Use TLS 1.0, TLS 1.1, and TLS 1.2", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2696", + "displayName": "Use SSL 2.0, TLS 1.0, TLS 1.1, and TLS 1.2", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2720", + "displayName": "Use SSL 3.0, TLS 1.0, TLS 1.1, and TLS 1.2", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2728", + "displayName": "Use SSL 2.0, SSL 3.0, TLS 1.0, TLS 1.1, and TLS 1.2", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_8192", + "displayName": "Only use TLS 1.3", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_10240", + "displayName": "Use TLS 1.2 and TLS 1.3", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_10752", + "displayName": "Use TLS 1.1, TLS 1.2, and TLS 1.3", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_10880", + "displayName": "Use TLS 1.0, TLS 1.1, TLS 1.2, and TLS 1.3", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_10912", + "displayName": "Use SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2, and TLS 1.3", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201", - "displayName": "Automatic prompting for ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_disablefeedsbackgroundsync", + "displayName": "Turn off background synchronization for feeds and Web Slices", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_disablefeedsbackgroundsync_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_disablefeedsbackgroundsync_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads", - "displayName": "Automatic prompting for file downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard", + "displayName": "Prevent running First Run wizard", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_0", + "id": "device_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_1", + "id": "device_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200", - "displayName": "Automatic prompting for file downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_firstrunoptions", + "displayName": "Select your choice", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_firstrunoptions_1", + "displayName": "Go directly to home page", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_firstrunoptions_2", + "displayName": "Go directly to \"Welcome To IE\" page", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_disableflipaheadfeature", + "displayName": "Turn off the flip ahead with page prediction feature", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_0", + "id": "device_vendor_msft_policy_config_internetexplorer_disableflipaheadfeature_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_1", + "id": "device_vendor_msft_policy_config_internetexplorer_disableflipaheadfeature_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_iz_partname1604", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_disablegeolocation", + "displayName": "Turn off browser geolocation", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_iz_partname1604_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_iz_partname1604_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_disablegeolocation_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_iz_partname1604_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_disablegeolocation_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "id": "device_vendor_msft_policy_config_internetexplorer_disablehtmlapplication", + "displayName": "Disable HTML Application", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_0", + "id": "device_vendor_msft_policy_config_internetexplorer_disablehtmlapplication_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_1", + "id": "device_vendor_msft_policy_config_internetexplorer_disablehtmlapplication_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_iz_partname2101", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "id": "device_vendor_msft_policy_config_internetexplorer_disableignoringcertificateerrors", + "displayName": "Prevent ignoring certificate errors", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_iz_partname2101_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_iz_partname2101_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_disableignoringcertificateerrors_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_iz_partname2101_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_disableignoringcertificateerrors_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode", + "id": "device_vendor_msft_policy_config_internetexplorer_disableinprivatebrowsing", + "displayName": "Turn off InPrivate Browsing", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_0", + "id": "device_vendor_msft_policy_config_internetexplorer_disableinprivatebrowsing_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_1", + "id": "device_vendor_msft_policy_config_internetexplorer_disableinprivatebrowsing_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_iz_partname2004", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode", + "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp", + "displayName": "[Deprecated] Disable Internet Explorer 11 as a standalone browser", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_iz_partname2004_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_iz_partname2004_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_iz_partname2004_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets", - "displayName": "Allow scriptlets", + "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2", + "displayName": "Disable Internet Explorer 11 as a standalone browser", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_0", + "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_1", + "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_iz_partname1209", - "displayName": "Scriptlets", + "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_notifydisableieoptions", + "displayName": "Notify that Internet Explorer 11 browser is disabled (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_iz_partname1209_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_notifydisableieoptions_0", + "displayName": "Never", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_iz_partname1209_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_notifydisableieoptions_1", + "displayName": "Always", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_notifydisableieoptions_2", + "displayName": "Once per user", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie", - "displayName": "Turn on SmartScreen Filter scan", + "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerlaunchviacom", + "displayName": "Disable Internet Explorer 11 Launch Via COM Automation", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_0", + "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerlaunchviacom_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_1", + "id": "device_vendor_msft_policy_config_internetexplorer_disableinternetexplorerlaunchviacom_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_iz_partname2301", - "displayName": "Use SmartScreen Filter", + "id": "device_vendor_msft_policy_config_internetexplorer_disableprocessesinenhancedprotectedmode", + "displayName": "Turn on 64-bit tab processes when running in Enhanced Protected Mode on 64-bit versions of Windows", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_iz_partname2301_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_disableprocessesinenhancedprotectedmode_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_iz_partname2301_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_disableprocessesinenhancedprotectedmode_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence", - "displayName": "Userdata persistence", + "id": "device_vendor_msft_policy_config_internetexplorer_disableproxychange", + "displayName": "Prevent changing proxy settings", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_0", + "id": "device_vendor_msft_policy_config_internetexplorer_disableproxychange_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_1", + "id": "device_vendor_msft_policy_config_internetexplorer_disableproxychange_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_iz_partname1606", - "displayName": "Userdata persistence", + "id": "device_vendor_msft_policy_config_internetexplorer_disablesearchproviderchange", + "displayName": "Prevent changing the default search provider", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_iz_partname1606_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_disablesearchproviderchange_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_iz_partname1606_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_disablesearchproviderchange_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols", - "displayName": "Initialize and script ActiveX controls not marked as safe", + "id": "device_vendor_msft_policy_config_internetexplorer_disablesecondaryhomepagechange", + "displayName": "Disable changing secondary home page settings", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_disablesecondaryhomepagechange_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_disablesecondaryhomepagechange_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_iz_partname1201", - "displayName": "Initialize and script ActiveX controls not marked as safe", + "id": "device_vendor_msft_policy_config_internetexplorer_disablesecondaryhomepagechange_secondaryhomepageslist", + "displayName": "Secondary home pages (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_disablesecuritysettingscheck", + "displayName": "Turn off the Security Settings Check feature", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_disablesecuritysettingscheck_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_disablesecuritysettingscheck_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_internetexplorer_disableupdatecheck", + "displayName": "Disable Periodic Check for Internet Explorer software updates", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_0", + "id": "device_vendor_msft_policy_config_internetexplorer_disableupdatecheck_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_1", + "id": "device_vendor_msft_policy_config_internetexplorer_disableupdatecheck_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_internetexplorer_disablewebaddressautocomplete", + "displayName": "Turn off the auto-complete feature for web addresses", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_65536", - "displayName": "High safety", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_131072", - "displayName": "Medium safety", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_196608", - "displayName": "Low safety", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_8388608", - "displayName": "Custom", + "id": "device_vendor_msft_policy_config_internetexplorer_disablewebaddressautocomplete_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_0", - "displayName": "Disable Java", + "id": "device_vendor_msft_policy_config_internetexplorer_disablewebaddressautocomplete_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_internetexplorer_donotallowactivexcontrolsinprotectedmode", + "displayName": "Do not allow ActiveX controls to run in Protected Mode when Enhanced Protected Mode is enabled", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_0", + "id": "device_vendor_msft_policy_config_internetexplorer_donotallowactivexcontrolsinprotectedmode_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_1", + "id": "device_vendor_msft_policy_config_internetexplorer_donotallowactivexcontrolsinprotectedmode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_internetexplorer_donotallowuserstoaddsites", + "displayName": "Security Zones: Do not allow users to add/delete sites", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_iz_partname1607_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_iz_partname1607_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_donotallowuserstoaddsites_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_iz_partname1607_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_donotallowuserstoaddsites_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_internetexplorer_donotallowuserstochangepolicies", + "displayName": "Security Zones: Do not allow users to change policies", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_0", + "id": "device_vendor_msft_policy_config_internetexplorer_donotallowuserstochangepolicies_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_1", + "id": "device_vendor_msft_policy_config_internetexplorer_donotallowuserstochangepolicies_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_iz_partname1406", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrols", + "displayName": "Turn off blocking of outdated ActiveX controls for Internet Explorer", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_iz_partname1406_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_iz_partname1406_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrols_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_iz_partname1406_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrols_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols", - "displayName": "Automatic prompting for ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrolsonspecificdomains", + "displayName": "Turn off blocking of outdated ActiveX controls for Internet Explorer on specific domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrolsonspecificdomains_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrolsonspecificdomains_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201", - "displayName": "Automatic prompting for ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrolsonspecificdomains_domainlist", + "displayName": "Domain allow list (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_enableextendediemodehotkeys", + "displayName": "Enable extended hot keys in Internet Explorer mode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_enableextendediemodehotkeys_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_enableextendediemodehotkeys_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads", - "displayName": "Automatic prompting for file downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_enableglobalwindowlistiniemode", + "displayName": "Enable global window list in Internet Explorer mode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_0", + "id": "device_vendor_msft_policy_config_internetexplorer_enableglobalwindowlistiniemode_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_1", + "id": "device_vendor_msft_policy_config_internetexplorer_enableglobalwindowlistiniemode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200", - "displayName": "Automatic prompting for file downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_includealllocalsites", + "displayName": "Intranet Sites: Include all local (intranet) sites not listed in other zones", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_includealllocalsites_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_includealllocalsites_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_includeallnetworkpaths", + "displayName": "Intranet Sites: Include all network paths (UNCs)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_0", + "id": "device_vendor_msft_policy_config_internetexplorer_includeallnetworkpaths_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_1", + "id": "device_vendor_msft_policy_config_internetexplorer_includeallnetworkpaths_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_iz_partname1604", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_includeallproxybypasssites", + "displayName": "Intranet Sites: Include all sites that bypass the proxy server", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_iz_partname1604_0", - "displayName": "Enable", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_iz_partname1604_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_includeallproxybypasssites_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_iz_partname1604_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_includeallproxybypasssites_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources", + "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_iz_partname2101", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_iz_partname1406", + "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_iz_partname2101_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_iz_partname1406_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_iz_partname2101_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_iz_partname1406_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_iz_partname2101_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_iz_partname1406_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", "displayName": "Disable", "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets", - "displayName": "Allow scriptlets", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads", + "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_iz_partname1209", - "displayName": "Scriptlets", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_iz_partname1209_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_iz_partname1209_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie", - "displayName": "Turn on SmartScreen Filter scan", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript", + "displayName": "Allow cut, copy or paste operations from the clipboard via script", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_iz_partname2301", - "displayName": "Use SmartScreen Filter", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_iz_partname1407", + "displayName": "Allow paste operations via script", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_iz_partname2301_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_iz_partname1407_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_iz_partname2301_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_iz_partname1407_3", "displayName": "Disable", "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_iz_partname1407_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence", - "displayName": "Userdata persistence", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles", + "displayName": "Allow drag and drop or copy and paste files", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_iz_partname1606", - "displayName": "Userdata persistence", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_iz_partname1802", + "displayName": "Allow drag and drop or copy and paste files", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_iz_partname1606_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_iz_partname1802_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_iz_partname1606_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_iz_partname1802_3", "displayName": "Disable", "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_iz_partname1802_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols", - "displayName": "Initialize and script ActiveX controls not marked as safe", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads", + "displayName": "Allow font downloads", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201", - "displayName": "Initialize and script ActiveX controls not marked as safe", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_iz_partname1604", + "displayName": "Allow font downloads", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_iz_partname1604_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_iz_partname1604_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_iz_partname1604_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_iz_partname2101", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_65536", - "displayName": "High safety", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_131072", - "displayName": "Medium safety", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_196608", - "displayName": "Low safety", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_iz_partname2101_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_8388608", - "displayName": "Custom", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_iz_partname2101_3", + "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_0", - "displayName": "Disable Java", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_iz_partname2101_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles", + "displayName": "Allow loading of XAML files", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_iz_partname2402", + "displayName": "XAML Files", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_iz_partname1607_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_iz_partname2402_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_iz_partname1607_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_iz_partname2402_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_iz_partname1607_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_iz_partname2402_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_iz_partname1406", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_iz_partname2004", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_iz_partname1406_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_iz_partname2004_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_iz_partname1406_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_iz_partname2004_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_iz_partname1406_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_iz_partname2004_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols", - "displayName": "Automatic prompting for ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols", + "displayName": "Allow only approved domains to use ActiveX controls without prompt", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201", - "displayName": "Automatic prompting for ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b", + "displayName": "Only allow approved domains to use ActiveX controls without prompt", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b_3", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b_0", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads", - "displayName": "Automatic prompting for file downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol", + "displayName": "Allow only approved domains to use the TDC ActiveX control", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200", - "displayName": "Automatic prompting for file downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c", + "displayName": "Only allow approved domains to use the TDC ActiveX control", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c_3", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c_0", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols", + "displayName": "Allow scripting of Internet Explorer WebBrowser controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_iz_partname1604", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206", + "displayName": "Internet Explorer web browser control", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_iz_partname1604_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_iz_partname1604_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206_3", "displayName": "Disable", "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_iz_partname1604_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows", + "displayName": "Allow script-initiated windows without size or position constraints", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_iz_partname2101", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_iz_partname2102", + "displayName": "Allow script-initiated windows without size or position constraints", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_iz_partname2101_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_iz_partname2102_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_iz_partname2101_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_iz_partname2102_3", "displayName": "Disable", "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_iz_partname2101_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets", + "displayName": "Allow scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_iz_partname1209", + "displayName": "Scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_iz_partname1209_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_iz_partname1209_3", "displayName": "Disable", "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets", - "displayName": "Allow scriptlets", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie", + "displayName": "Turn on SmartScreen Filter scan", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_iz_partname1209", - "displayName": "Scriptlets", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_iz_partname2301", + "displayName": "Use SmartScreen Filter", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_iz_partname1209_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_iz_partname2301_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_iz_partname1209_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_iz_partname2301_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie", - "displayName": "Turn on SmartScreen Filter scan", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript", + "displayName": "Allow updates to status bar via script", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_iz_partname2301", - "displayName": "Use SmartScreen Filter", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_iz_partname2103", + "displayName": "Status bar updates via script", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_iz_partname2301_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_iz_partname2103_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_iz_partname2301_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_iz_partname2103_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence", "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_iz_partname1606", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_iz_partname1606", "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_iz_partname1606_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_iz_partname1606_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_iz_partname1606_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_iz_partname1606_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols", - "displayName": "Initialize and script ActiveX controls not marked as safe", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer", + "displayName": "Allow VBScript to run in Internet Explorer", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201", - "displayName": "Initialize and script ActiveX controls not marked as safe", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_iz_partname140c", + "displayName": "Allow VBScript to run in Internet Explorer", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_iz_partname140c_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_iz_partname140c_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_iz_partname140c_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols", + "displayName": "Don't run antimalware programs against ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", + "displayName": "Don't run antimalware programs against ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_65536", - "displayName": "High safety", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_131072", - "displayName": "Medium safety", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_196608", - "displayName": "Low safety", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_8388608", - "displayName": "Custom", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_0", - "displayName": "Disable Java", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols", + "displayName": "Download signed ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_iz_partname1001", + "displayName": "Download signed ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_iz_partname1607_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_iz_partname1001_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_iz_partname1607_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_iz_partname1001_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_iz_partname1607_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_iz_partname1001_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_mimesniffingsafetyfeatureinternetexplorerprocesses", - "displayName": "Internet Explorer Processes", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols", + "displayName": "Download unsigned ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_mimesniffingsafetyfeatureinternetexplorerprocesses_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_mimesniffingsafetyfeatureinternetexplorerprocesses_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_mkprotocolsecurityrestrictioninternetexplorerprocesses", - "displayName": "Internet Explorer Processes", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_iz_partname1004", + "displayName": "Download unsigned ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_mkprotocolsecurityrestrictioninternetexplorerprocesses_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_iz_partname1004_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_mkprotocolsecurityrestrictioninternetexplorerprocesses_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_iz_partname1004_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_iz_partname1004_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_newtabdefaultpage", - "displayName": "Specify default behavior for a new tab", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter", + "displayName": "Turn on Cross-Site Scripting Filter", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions", - "displayName": "New tab behavior", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_iz_partname1409", + "displayName": "Turn on Cross-Site Scripting (XSS) Filter", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions_3", - "displayName": "New tab page with my news feed", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_iz_partname1409_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions_0", - "displayName": "about:blank", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_iz_partname1409_3", + "displayName": "Disable", "description": null - }, + } + ] + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows", + "displayName": "Enable dragging of content from different domains across windows", + "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions_2", - "displayName": "New tab page", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions_1", - "displayName": "Home page", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_notificationbarinternetexplorerprocesses", - "displayName": "Internet Explorer Processes", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709", + "displayName": "Enable dragging of content from different domains across windows", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_notificationbarinternetexplorerprocesses_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_notificationbarinternetexplorerprocesses_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter", - "displayName": "Prevent managing SmartScreen Filter", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows", + "displayName": "Enable dragging of content from different domains within a window", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_ie9safetyfilteroptions", - "displayName": "Select SmartScreen Filter mode", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708", + "displayName": "Enable dragging of content from different domains within a window", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_ie9safetyfilteroptions_0", - "displayName": "Off", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_ie9safetyfilteroptions_1", - "displayName": "On", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_preventperuserinstallationofactivexcontrols", - "displayName": "Prevent per-user installation of ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing", + "displayName": "Enable MIME Sniffing", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_preventperuserinstallationofactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_preventperuserinstallationofactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_protectionfromzoneelevationinternetexplorerprocesses", - "displayName": "Internet Explorer Processes", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_iz_partname2100", + "displayName": "Enable MIME Sniffing", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_protectionfromzoneelevationinternetexplorerprocesses_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_iz_partname2100_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_protectionfromzoneelevationinternetexplorerprocesses_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_iz_partname2100_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_removerunthistimebuttonforoutdatedactivexcontrols", - "displayName": "Remove \"Run this time\" button for outdated ActiveX controls in Internet Explorer", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode", + "displayName": "Turn on Protected Mode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_removerunthistimebuttonforoutdatedactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_removerunthistimebuttonforoutdatedactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_resetzoomfordialoginiemode", - "displayName": "Reset zoom to default for HTML dialogs in Internet Explorer mode", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_iz_partname2500", + "displayName": "Protected Mode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_resetzoomfordialoginiemode_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_iz_partname2500_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_resetzoomfordialoginiemode_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_iz_partname2500_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictactivexinstallinternetexplorerprocesses", - "displayName": "Internet Explorer Processes", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver", + "displayName": "Include local path when user is uploading files to a server", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictactivexinstallinternetexplorerprocesses_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictactivexinstallinternetexplorerprocesses_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a", + "displayName": "Include local directory path when uploading files to a server", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a_0", + "displayName": "Enable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a_3", + "displayName": "Disable", + "description": null + } + ] + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols", + "displayName": "Initialize and script ActiveX controls not marked as safe", + "options": [ + { + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_iz_partname1406", - "displayName": "Access data sources across domains", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_iz_partname1201", + "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_iz_partname1406_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_iz_partname1201_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_iz_partname1406_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_iz_partname1201_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_iz_partname1406_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_iz_partname1201_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting", - "displayName": "Allow active scripting", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions", + "displayName": "Java permissions", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_iz_partname1400", - "displayName": "Allow active scripting", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00", + "displayName": "Java permissions", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_iz_partname1400_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_65536", + "displayName": "High safety", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_iz_partname1400_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_131072", + "displayName": "Medium safety", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_iz_partname1400_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_196608", + "displayName": "Low safety", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_8388608", + "displayName": "Custom", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_0", + "displayName": "Disable Java", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols", - "displayName": "Automatic prompting for ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe", + "displayName": "Launching applications and files in an IFRAME", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201", - "displayName": "Automatic prompting for ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_iz_partname1804", + "displayName": "Launching applications and files in an IFRAME", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_iz_partname1804_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_iz_partname1804_3", "displayName": "Disable", "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_iz_partname1804_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads", - "displayName": "Automatic prompting for file downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions", + "displayName": "Logon options", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200", - "displayName": "Automatic prompting for file downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00", + "displayName": "Logon options", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00_196608", + "displayName": "Anonymous logon", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00_131072", + "displayName": "Automatic logon only in Intranet zone", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00_0", + "displayName": "Automatic logon with current username and password", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00_65536", + "displayName": "Prompt for user name and password", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors", - "displayName": "Allow binary and script behaviors", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_iz_partname2000", - "displayName": "Allow Binary and Script Behaviors", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_iz_partname2000_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_iz_partname1607_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_iz_partname2000_65536", - "displayName": "Administrator approved", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_iz_partname1607_3", + "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_iz_partname2000_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_iz_partname1607_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript", - "displayName": "Allow cut, copy or paste operations from the clipboard via script", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode", + "displayName": "Run .NET Framework-reliant components signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_iz_partname1407", - "displayName": "Allow paste operations via script", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001", + "displayName": "Run .NET Framework-reliant components signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_iz_partname1407_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_iz_partname1407_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_iz_partname1407_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles", - "displayName": "Allow drag and drop or copy and paste files", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles", + "displayName": "Show security warning for potentially unsafe files", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_iz_partname1802", - "displayName": "Allow drag and drop or copy and paste files", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806", + "displayName": "Launching programs and unsafe files", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_iz_partname1802_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_iz_partname1802_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_iz_partname1802_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads", - "displayName": "Allow file downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker", + "displayName": "Use Pop-up Blocker", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_1", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_iz_partname1803", - "displayName": "Allow file downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_iz_partname1809", + "displayName": "Use Pop-up Blocker", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_iz_partname1803_0", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_iz_partname1809_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_iz_partname1803_3", + "id": "device_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_iz_partname1809_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources", + "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_1", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_iz_partname1604", - "displayName": "Allow font downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_iz_partname1406", + "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_iz_partname1604_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_iz_partname1406_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_iz_partname1604_3", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_iz_partname1406_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_iz_partname1604_1", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_iz_partname1406_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_1", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_iz_partname2101", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_iz_partname2101_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_iz_partname2101_3", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", "displayName": "Disable", "description": null + } + ] + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads", + "displayName": "Automatic prompting for file downloads", + "options": [ + { + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_iz_partname2101_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles", - "displayName": "Allow loading of XAML files", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", + "displayName": "Enable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "displayName": "Disable", + "description": null + } + ] + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads", + "displayName": "Allow font downloads", + "options": [ + { + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_1", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_iz_partname2402", - "displayName": "XAML Files", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_iz_partname1604", + "displayName": "Allow font downloads", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_iz_partname2402_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_iz_partname1604_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_iz_partname2402_3", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_iz_partname1604_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_iz_partname2402_1", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_iz_partname1604_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh", - "displayName": "Allow META REFRESH", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_1", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_iz_partname1608", - "displayName": "Allow META REFRESH", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_iz_partname2101", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_iz_partname1608_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_iz_partname2101_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_iz_partname1608_3", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_iz_partname2101_3", "displayName": "Disable", "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_iz_partname2101_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents", "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_1", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_iz_partname2004", "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_iz_partname2004_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_3", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_iz_partname2004_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_1", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_iz_partname2004_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols", - "displayName": "Allow only approved domains to use ActiveX controls without prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets", + "displayName": "Allow scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b", - "displayName": "Only allow approved domains to use ActiveX controls without prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_iz_partname1209", + "displayName": "Scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b_3", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_iz_partname1209_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_iz_partname1209_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol", - "displayName": "Allow only approved domains to use the TDC ActiveX control", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie", + "displayName": "Turn on SmartScreen Filter scan", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_1", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c", - "displayName": "Only allow approved domains to use the TDC ActiveX control", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_iz_partname2301", + "displayName": "Use SmartScreen Filter", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c_3", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_iz_partname2301_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_iz_partname2301_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols", - "displayName": "Allow scripting of Internet Explorer WebBrowser controls", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence", + "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206", - "displayName": "Internet Explorer web browser control", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_iz_partname1606", + "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_iz_partname1606_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206_3", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_iz_partname1606_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows", - "displayName": "Allow script-initiated windows without size or position constraints", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols", + "displayName": "Don't run antimalware programs against ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_1", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_iz_partname2102", - "displayName": "Allow script-initiated windows without size or position constraints", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", + "displayName": "Don't run antimalware programs against ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_iz_partname2102_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_iz_partname2102_3", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets", - "displayName": "Allow scriptlets", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols", + "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_1", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_iz_partname1209", - "displayName": "Scriptlets", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_iz_partname1201", + "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_iz_partname1209_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_iz_partname1201_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_iz_partname1209_3", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_iz_partname1201_3", "displayName": "Disable", "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie", - "displayName": "Turn on SmartScreen Filter scan", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions", + "displayName": "Java permissions", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_1", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_iz_partname2301", - "displayName": "Use SmartScreen Filter", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00", + "displayName": "Java permissions", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_iz_partname2301_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_65536", + "displayName": "High safety", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_iz_partname2301_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_131072", + "displayName": "Medium safety", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_196608", + "displayName": "Low safety", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_8388608", + "displayName": "Custom", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_0", + "displayName": "Disable Java", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript", - "displayName": "Allow updates to status bar via script", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonelogonoptions", + "displayName": "Logon options", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonelogonoptions_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_1", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonelogonoptions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_iz_partname2103", - "displayName": "Status bar updates via script", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonelogonoptions_iz_partname1a00", + "displayName": "Logon options (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_iz_partname2103_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonelogonoptions_iz_partname1a00_196608", + "displayName": "Anonymous logon", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_iz_partname2103_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonelogonoptions_iz_partname1a00_131072", + "displayName": "Automatic logon only in Intranet zone", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonelogonoptions_iz_partname1a00_0", + "displayName": "Automatic logon with current username and password", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonelogonoptions_iz_partname1a00_65536", + "displayName": "Prompt for user name and password", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence", - "displayName": "Userdata persistence", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_1", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_iz_partname1606", - "displayName": "Userdata persistence", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_iz_partname1606_0", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_iz_partname1607_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_iz_partname1606_3", + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_iz_partname1607_3", "displayName": "Disable", "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_iz_partname1607_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer", - "displayName": "Allow VBScript to run in Internet Explorer", + "id": "device_vendor_msft_policy_config_internetexplorer_jscriptreplacement", + "displayName": "Replace JScript by loading JScript9Legacy in place of JScript.", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_0", + "id": "device_vendor_msft_policy_config_internetexplorer_jscriptreplacement_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_1", + "id": "device_vendor_msft_policy_config_internetexplorer_jscriptreplacement_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_iz_partname140c", - "displayName": "Allow VBScript to run in Internet Explorer", + "id": "device_vendor_msft_policy_config_internetexplorer_keepintranetsitesininternetexplorer", + "displayName": "Keep all intranet sites in Internet Explorer", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_iz_partname140c_0", + "id": "device_vendor_msft_policy_config_internetexplorer_keepintranetsitesininternetexplorer_0", + "displayName": "Disabled", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_keepintranetsitesininternetexplorer_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources", + "displayName": "Access data sources across domains", + "options": [ + { + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_0", + "displayName": "Disabled", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_iz_partname1406", + "displayName": "Access data sources across domains", + "options": [ + { + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_iz_partname1406_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_iz_partname140c_3", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_iz_partname1406_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_iz_partname140c_1", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_iz_partname1406_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols", - "displayName": "Don't run antimalware programs against ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", - "displayName": "Don't run antimalware programs against ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols", - "displayName": "Download signed ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads", + "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_iz_partname1001", - "displayName": "Download signed ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_iz_partname1001_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_iz_partname1001_3", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "displayName": "Disable", + "description": null + } + ] + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads", + "displayName": "Allow font downloads", + "options": [ + { + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_0", + "displayName": "Disabled", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_iz_partname1604", + "displayName": "Allow font downloads", + "options": [ + { + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_iz_partname1604_0", + "displayName": "Enable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_iz_partname1604_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_iz_partname1001_1", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_iz_partname1604_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols", - "displayName": "Download unsigned ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_iz_partname1004", - "displayName": "Download unsigned ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_iz_partname2101", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_iz_partname1004_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_iz_partname2101_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_iz_partname1004_3", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_iz_partname2101_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_iz_partname1004_1", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_iz_partname2101_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter", - "displayName": "Turn on Cross-Site Scripting Filter", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_1", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_iz_partname1409", - "displayName": "Turn on Cross-Site Scripting (XSS) Filter", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_iz_partname2004", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_iz_partname1409_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_iz_partname2004_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_iz_partname1409_3", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_iz_partname2004_3", "displayName": "Disable", "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_iz_partname2004_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows", - "displayName": "Enable dragging of content from different domains across windows", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets", + "displayName": "Allow scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_1", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709", - "displayName": "Enable dragging of content from different domains across windows", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_iz_partname1209", + "displayName": "Scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_iz_partname1209_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709_3", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_iz_partname1209_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows", - "displayName": "Enable dragging of content from different domains within a window", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie", + "displayName": "Turn on SmartScreen Filter scan", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_1", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708", - "displayName": "Enable dragging of content from different domains within a window", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_iz_partname2301", + "displayName": "Use SmartScreen Filter", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_iz_partname2301_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708_3", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_iz_partname2301_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing", - "displayName": "Enable MIME Sniffing", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence", + "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_1", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_iz_partname2100", - "displayName": "Enable MIME Sniffing", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_iz_partname1606", + "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_iz_partname2100_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_iz_partname1606_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_iz_partname2100_3", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_iz_partname1606_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver", - "displayName": "Include local path when user is uploading files to a server", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols", + "displayName": "Don't run antimalware programs against ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_1", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a", - "displayName": "Include local directory path when uploading files to a server", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", + "displayName": "Don't run antimalware programs against ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a_3", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols", "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_iz_partname1201", "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions", "displayName": "Java permissions", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_1", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00", "displayName": "Java permissions", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_65536", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_65536", "displayName": "High safety", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_131072", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_131072", "displayName": "Medium safety", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_196608", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_196608", "displayName": "Low safety", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_8388608", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_8388608", "displayName": "Custom", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_0", "displayName": "Disable Java", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe", - "displayName": "Launching applications and files in an IFRAME", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonelogonoptions", + "displayName": "Logon options", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonelogonoptions_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_1", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonelogonoptions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_iz_partname1804", - "displayName": "Launching applications and files in an IFRAME", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonelogonoptions_iz_partname1a00", + "displayName": "Logon options (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_iz_partname1804_0", - "displayName": "Enable", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonelogonoptions_iz_partname1a00_196608", + "displayName": "Anonymous logon", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_iz_partname1804_3", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonelogonoptions_iz_partname1a00_131072", + "displayName": "Automatic logon only in Intranet zone", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_iz_partname1804_1", - "displayName": "Prompt", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonelogonoptions_iz_partname1a00_0", + "displayName": "Automatic logon with current username and password", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonelogonoptions_iz_partname1a00_65536", + "displayName": "Prompt for user name and password", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions", - "displayName": "Logon options", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_0", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_1", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00", - "displayName": "Logon options", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00_196608", - "displayName": "Anonymous logon", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00_131072", - "displayName": "Automatic logon only in Intranet zone", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_iz_partname1607_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00_0", - "displayName": "Automatic logon with current username and password", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_iz_partname1607_3", + "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00_65536", - "displayName": "Prompt for user name and password", + "id": "device_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_iz_partname1607_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources", + "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_iz_partname1406", + "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_iz_partname1607_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_iz_partname1406_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_iz_partname1607_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_iz_partname1406_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_iz_partname1607_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_iz_partname1406_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins", - "displayName": "Run ActiveX controls and plugins", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200", - "displayName": "Run ActiveX controls and plugins", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200_65536", - "displayName": "Administrator approved", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", "displayName": "Disable", "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode", - "displayName": "Run .NET Framework-reliant components signed with Authenticode", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads", + "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001", - "displayName": "Run .NET Framework-reliant components signed with Authenticode", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", "displayName": "Disable", "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting", - "displayName": "Script ActiveX controls marked safe for scripting", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads", + "displayName": "Allow font downloads", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_iz_partname1405", - "displayName": "Script ActiveX controls marked safe for scripting", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_iz_partname1604", + "displayName": "Allow font downloads", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_iz_partname1405_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_iz_partname1604_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_iz_partname1405_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_iz_partname1604_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_iz_partname1405_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_iz_partname1604_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets", - "displayName": "Scripting of Java applets", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_iz_partname1402", - "displayName": "Scripting of Java applets", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_iz_partname2101", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_iz_partname1402_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_iz_partname2101_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_iz_partname1402_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_iz_partname2101_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_iz_partname1402_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_iz_partname2101_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles", - "displayName": "Show security warning for potentially unsafe files", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806", - "displayName": "Launching programs and unsafe files", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_iz_partname2004", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_iz_partname2004_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_iz_partname2004_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_iz_partname2004_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode", - "displayName": "Turn on Protected Mode", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets", + "displayName": "Allow scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_iz_partname2500", - "displayName": "Protected Mode", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_iz_partname1209", + "displayName": "Scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_iz_partname2500_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_iz_partname1209_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_iz_partname2500_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_iz_partname1209_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker", - "displayName": "Use Pop-up Blocker", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie", + "displayName": "Turn on SmartScreen Filter scan", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_iz_partname1809", - "displayName": "Use Pop-up Blocker", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_iz_partname2301", + "displayName": "Use SmartScreen Filter", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_iz_partname1809_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_iz_partname2301_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_iz_partname1809_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_iz_partname2301_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictfiledownloadinternetexplorerprocesses", - "displayName": "Internet Explorer Processes", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence", + "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictfiledownloadinternetexplorerprocesses_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_restrictfiledownloadinternetexplorerprocesses_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_scriptedwindowsecurityrestrictionsinternetexplorerprocesses", - "displayName": "Internet Explorer Processes", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_iz_partname1606", + "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_scriptedwindowsecurityrestrictionsinternetexplorerprocesses_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_iz_partname1606_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_scriptedwindowsecurityrestrictionsinternetexplorerprocesses_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_iz_partname1606_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_searchproviderlist", - "displayName": "Restrict search providers to a specific list", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols", + "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_searchproviderlist_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_searchproviderlist_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_securityzonesuseonlymachinesettings", - "displayName": "Security Zones: Use only machine settings", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_iz_partname1201", + "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_securityzonesuseonlymachinesettings_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "displayName": "Enable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "displayName": "Prompt", + "description": null + } + ] + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions", + "displayName": "Java permissions", + "options": [ + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_securityzonesuseonlymachinesettings_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_sendsitesnotinenterprisesitelisttoedge", - "displayName": "Send all sites not included in the Enterprise Mode Site List to Microsoft Edge.", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00", + "displayName": "Java permissions", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_sendsitesnotinenterprisesitelisttoedge_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_65536", + "displayName": "High safety", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_131072", + "displayName": "Medium safety", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_196608", + "displayName": "Low safety", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_8388608", + "displayName": "Custom", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_0", + "displayName": "Disable Java", + "description": null + } + ] + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains", + "options": [ + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_sendsitesnotinenterprisesitelisttoedge_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_specifyuseofactivexinstallerservice", - "displayName": "Specify use of ActiveX Installer Service for installation of ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_specifyuseofactivexinstallerservice_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_iz_partname1607_0", + "displayName": "Enable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_iz_partname1607_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_iz_partname1607_1", + "displayName": "Prompt", + "description": null + } + ] + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions", + "displayName": "Java permissions", + "options": [ + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_specifyuseofactivexinstallerservice_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00", + "displayName": "Java permissions", + "options": [ + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_65536", + "displayName": "High safety", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_131072", + "displayName": "Medium safety", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_196608", + "displayName": "Low safety", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_8388608", + "displayName": "Custom", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_0", + "displayName": "Disable Java", + "description": null + } + ] + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources", "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_iz_partname1406", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_iz_partname1406", "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_iz_partname1406_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_iz_partname1406_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_iz_partname1406_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_iz_partname1406_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_iz_partname1406_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_iz_partname1406_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols", "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201", "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads", "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200", "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads", "displayName": "Allow font downloads", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_iz_partname1604", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_iz_partname1604", "displayName": "Allow font downloads", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_iz_partname1604_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_iz_partname1604_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_iz_partname1604_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_iz_partname1604_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_iz_partname1604_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_iz_partname1604_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites", "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_iz_partname2101", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_iz_partname2101", "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_iz_partname2101_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_iz_partname2101_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_iz_partname2101_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_iz_partname2101_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_iz_partname2101_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_iz_partname2101_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents", "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_iz_partname2004", "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_iz_partname2004_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_iz_partname2004_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_iz_partname2004_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets", "displayName": "Allow scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_iz_partname1209", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_iz_partname1209", "displayName": "Scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_iz_partname1209_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_iz_partname1209_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_iz_partname1209_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_iz_partname1209_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie", "displayName": "Turn on SmartScreen Filter scan", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_iz_partname2301", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_iz_partname2301", "displayName": "Use SmartScreen Filter", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_iz_partname2301_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_iz_partname2301_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_iz_partname2301_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_iz_partname2301_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence", "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_iz_partname1606", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_iz_partname1606", "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_iz_partname1606_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_iz_partname1606_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_iz_partname1606_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_iz_partname1606_3", "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols", - "displayName": "Don't run antimalware programs against ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols", + "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", - "displayName": "Don't run antimalware programs against ActiveX controls", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_iz_partname1201", + "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_iz_partname1201_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_iz_partname1201_3", "displayName": "Disable", "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols", - "displayName": "Initialize and script ActiveX controls not marked as safe", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201", - "displayName": "Initialize and script ActiveX controls not marked as safe", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_iz_partname1607_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_iz_partname1607_3", "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_iz_partname1607_1", "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources", + "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00", - "displayName": "Java permissions", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_iz_partname1406", + "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_65536", - "displayName": "High safety", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_131072", - "displayName": "Medium safety", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_196608", - "displayName": "Low safety", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_iz_partname1406_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_8388608", - "displayName": "Custom", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_iz_partname1406_3", + "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_0", - "displayName": "Disable Java", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_iz_partname1406_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_iz_partname1607_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_iz_partname1607_3", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", "displayName": "Disable", "description": null - }, - { - "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_iz_partname1607_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "device_vendor_msft_policy_config_kerberos_allowforestsearchorder", - "displayName": "Use forest search order", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads", + "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_kerberos_allowforestsearchorder_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_kerberos_allowforestsearchorder_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_kerberos_allowforestsearchorder_forestsearchlist", - "displayName": "Forests to Search (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_kerberos_kerberosclientsupportsclaimscompoundarmor", - "displayName": "Kerberos client support for claims, compound authentication and Kerberos armoring", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_kerberos_kerberosclientsupportsclaimscompoundarmor_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_kerberos_kerberosclientsupportsclaimscompoundarmor_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_kerberos_requirekerberosarmoring", - "displayName": "Fail authentication requests when Kerberos armoring is not available", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads", + "displayName": "Allow font downloads", "options": [ { - "id": "device_vendor_msft_policy_config_kerberos_requirekerberosarmoring_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_kerberos_requirekerberosarmoring_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_kerberos_requirestrictkdcvalidation", - "displayName": "Require strict KDC validation", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_iz_partname1604", + "displayName": "Allow font downloads", "options": [ { - "id": "device_vendor_msft_policy_config_kerberos_requirestrictkdcvalidation_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_iz_partname1604_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_kerberos_requirestrictkdcvalidation_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_iz_partname1604_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_iz_partname1604_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_kerberos_setmaximumcontexttokensize", - "displayName": "Set maximum Kerberos SSPI context token buffer size", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_kerberos_setmaximumcontexttokensize_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_kerberos_setmaximumcontexttokensize_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_kerberos_setmaximumcontexttokensize_maxtokensize", - "displayName": "Maximum size (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_kerberos_upnnamehints", - "displayName": "UPN Name Hints", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_kioskbrowser_blockedurlexceptions", - "displayName": "Blocked Url Exceptions", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_kioskbrowser_blockedurls", - "displayName": "Blocked Urls", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_kioskbrowser_defaulturl", - "displayName": "Default URL", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_kioskbrowser_enableendsessionbutton", - "displayName": "Enable End Session Button", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_iz_partname2101", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_kioskbrowser_enableendsessionbutton_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_iz_partname2101_0", "displayName": "Enable", - "description": "Enable" + "description": null }, { - "id": "device_vendor_msft_policy_config_kioskbrowser_enableendsessionbutton_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_iz_partname2101_3", "displayName": "Disable", - "description": "Disable" + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_iz_partname2101_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_kioskbrowser_enablehomebutton", - "displayName": "Enable Home Button", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_kioskbrowser_enablehomebutton_1", - "displayName": "Enable", - "description": "Enable" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_kioskbrowser_enablehomebutton_0", - "displayName": "Disable", - "description": "Disable" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_kioskbrowser_enablenavigationbuttons", - "displayName": "Enable Navigation Buttons", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_iz_partname2004", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_kioskbrowser_enablenavigationbuttons_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_iz_partname2004_0", "displayName": "Enable", - "description": "Enable" + "description": null }, { - "id": "device_vendor_msft_policy_config_kioskbrowser_enablenavigationbuttons_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_iz_partname2004_3", "displayName": "Disable", - "description": "Disable" + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_iz_partname2004_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_kioskbrowser_restartonidletime", - "displayName": "Restart On Idle Time", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_lanmanworkstation_enableinsecureguestlogons", - "displayName": "Enable Insecure Guest Logons", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets", + "displayName": "Allow scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_lanmanworkstation_enableinsecureguestlogons_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_0", "displayName": "Disabled", - "description": "Disabled" + "description": null }, { - "id": "device_vendor_msft_policy_config_lanmanworkstation_enableinsecureguestlogons_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_1", "displayName": "Enabled", - "description": "Enabled" + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_licensing_allowwindowsentitlementreactivation", - "displayName": "Allow Windows Entitlement Reactivation", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_iz_partname1209", + "displayName": "Scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_licensing_allowwindowsentitlementreactivation_0", - "displayName": "Block", - "description": "Disable Windows license reactivation on managed devices." + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_iz_partname1209_0", + "displayName": "Enable", + "description": null }, { - "id": "device_vendor_msft_policy_config_licensing_allowwindowsentitlementreactivation_1", - "displayName": "Allow", - "description": "Enable Windows license reactivation on managed devices." + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_iz_partname1209_3", + "displayName": "Disable", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_licensing_disallowkmsclientonlineavsvalidation", - "displayName": "Disallow KMS Client Online AVS Validation", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie", + "displayName": "Turn on SmartScreen Filter scan", "options": [ { - "id": "device_vendor_msft_policy_config_licensing_disallowkmsclientonlineavsvalidation_0", - "displayName": "Block", - "description": "Disabled." + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_licensing_disallowkmsclientonlineavsvalidation_1", - "displayName": "Allow", - "description": "Enabled." + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_blockmicrosoftaccounts", - "displayName": "Accounts Block Microsoft Accounts", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_iz_partname2301", + "displayName": "Use SmartScreen Filter", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_blockmicrosoftaccounts_0", - "displayName": "Disabled (users will be able to use Microsoft accounts with Windows).", - "description": "Disabled (users will be able to use Microsoft accounts with Windows)." - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_blockmicrosoftaccounts_1", - "displayName": "Enabled (users can't add Microsoft accounts).", - "description": "Enabled (users can't add Microsoft accounts)." + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_iz_partname2301_0", + "displayName": "Enable", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_blockmicrosoftaccounts_3", - "displayName": "Users can't add or log on with Microsoft accounts", - "description": "Users can't add or log on with Microsoft accounts" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_iz_partname2301_3", + "displayName": "Disable", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_enableadministratoraccountstatus", - "displayName": "Accounts Enable Administrator Account Status", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence", + "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_enableadministratoraccountstatus_1", - "displayName": "Enable", - "description": "Enable" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_enableadministratoraccountstatus_0", - "displayName": "Disable", - "description": "Disable" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_enableguestaccountstatus", - "displayName": "Accounts Enable Guest Account Status", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_iz_partname1606", + "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_enableguestaccountstatus_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_iz_partname1606_0", "displayName": "Enable", - "description": "Enable" + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_enableguestaccountstatus_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_iz_partname1606_3", "displayName": "Disable", - "description": "Disable" + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_limitlocalaccountuseofblankpasswordstoconsolelogononly", - "displayName": "Accounts Limit Local Account Use Of Blank Passwords To Console Logon Only", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols", + "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_limitlocalaccountuseofblankpasswordstoconsolelogononly_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", - "description": "Disabled" + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_limitlocalaccountuseofblankpasswordstoconsolelogononly_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", - "description": "Enabled" + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_renameadministratoraccount", - "displayName": "Accounts Rename Administrator Account", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_renameguestaccount", - "displayName": "Accounts Rename Guest Account", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_devices_allowedtoformatandejectremovablemedia", - "displayName": "Devices Allowed To Format And Eject Removable Media", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_devices_allowundockwithouthavingtologon", - "displayName": "Devices Allow Undock Without Having To Logon", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_iz_partname1201", + "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_devices_allowundockwithouthavingtologon_1", - "displayName": "Allow", - "description": "Allow" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "displayName": "Enable", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_devices_allowundockwithouthavingtologon_0", - "displayName": "Block", - "description": "Block" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_devices_preventusersfrominstallingprinterdriverswhenconnectingtosharedprinters", - "displayName": "Devices Prevent Users From Installing Printer Drivers When Connecting To Shared Printers", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions", + "displayName": "Java permissions", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_devices_preventusersfrominstallingprinterdriverswhenconnectingtosharedprinters_1", - "displayName": "Enable", - "description": "Enable" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_devices_preventusersfrominstallingprinterdriverswhenconnectingtosharedprinters_0", - "displayName": "Disable", - "description": "Disable" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_devices_restrictcdromaccesstolocallyloggedonuseronly", - "displayName": "Devices Restrict CDROM Access To Locally Logged On User Only", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_displayuserinformationwhenthesessionislocked", - "displayName": "Interactive Logon Display User Information When The Session Is Locked", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00", + "displayName": "Java permissions", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_displayuserinformationwhenthesessionislocked_1", - "displayName": "User display name, domain and user names", - "description": "User display name, domain and user names" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_65536", + "displayName": "High safety", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_displayuserinformationwhenthesessionislocked_2", - "displayName": "User display name only", - "description": "User display name only" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_131072", + "displayName": "Medium safety", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_displayuserinformationwhenthesessionislocked_3", - "displayName": "Do not display user information", - "description": "Do not display user information" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_196608", + "displayName": "Low safety", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_displayuserinformationwhenthesessionislocked_4", - "displayName": "Domain and user names only", - "description": "Domain and user names only" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_8388608", + "displayName": "Custom", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_0", + "displayName": "Disable Java", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotdisplaylastsignedin", - "displayName": "Interactive Logon Do Not Display Last Signed In", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotdisplaylastsignedin_0", - "displayName": "Disabled (username will be shown)", - "description": "Disabled (username will be shown)" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotdisplaylastsignedin_1", - "displayName": "Enabled (username will not be shown)", - "description": "Enabled (username will not be shown)" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotdisplayusernameatsignin", - "displayName": "Interactive Logon Do Not Display Username At Sign In", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotdisplayusernameatsignin_0", - "displayName": "Disabled (username will be shown)", - "description": "Disabled (username will be shown)" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_iz_partname1607_0", + "displayName": "Enable", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotdisplayusernameatsignin_1", - "displayName": "Enabled (username will not be shown)", - "description": "Enabled (username will not be shown)" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_iz_partname1607_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_iz_partname1607_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotrequirectrlaltdel", - "displayName": "Interactive Logon Do Not Require CTRLALTDEL", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources", + "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotrequirectrlaltdel_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_0", "displayName": "Disabled", - "description": "Disabled" + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotrequirectrlaltdel_1", - "displayName": "Enabled (a user is not required to press CTRL+ALT+DEL to log on)", - "description": "Enabled (a user is not required to press CTRL+ALT+DEL to log on)" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_machineinactivitylimit", - "displayName": "[Deprecated] Interactive Logon Machine Inactivity Limit (Deprecated)", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_iz_partname1406", + "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_machineinactivitylimit_0", - "displayName": "Disabled", - "description": "Disabled" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_iz_partname1406_0", + "displayName": "Enable", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_machineinactivitylimit_1", - "displayName": "Enabled (session will lock after amount of inactive time exceeds the inactivity limit)", - "description": "Enabled (session will lock after amount of inactive time exceeds the inactivity limit)" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_iz_partname1406_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_iz_partname1406_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_machineinactivitylimit_v2", - "displayName": "Interactive Logon Machine Inactivity Limit", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_messagetextforusersattemptingtologon", - "displayName": "Interactive Logon Message Text For Users Attempting To Log On", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_messagetitleforusersattemptingtologon", - "displayName": "Interactive Logon Message Title For Users Attempting To Log On", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_smartcardremovalbehavior", - "displayName": "Interactive Logon Smart Card Removal Behavior", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_smartcardremovalbehavior_0", - "displayName": "No Action", - "description": "No Action" - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_smartcardremovalbehavior_1", - "displayName": "Lock Workstation", - "description": "Lock Workstation" - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_smartcardremovalbehavior_2", - "displayName": "Force Logoff", - "description": "Force Logoff" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_smartcardremovalbehavior_3", - "displayName": "Disconnect Remote Desktop Session", - "description": "Disconnect Remote Desktop Session" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_digitallysigncommunicationsalways", - "displayName": "Microsoft Network Client Digitally Sign Communications Always", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_digitallysigncommunicationsalways_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", "displayName": "Enable", - "description": "Enable" + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_digitallysigncommunicationsalways_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", "displayName": "Disable", - "description": "Disable" + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_digitallysigncommunicationsifserveragrees", - "displayName": "Microsoft Network Client Digitally Sign Communications If Server Agrees", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads", + "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_digitallysigncommunicationsifserveragrees_1", - "displayName": "Enable", - "description": "Enable" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_digitallysigncommunicationsifserveragrees_0", - "displayName": "Disable", - "description": "Disable" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_sendunencryptedpasswordtothirdpartysmbservers", - "displayName": "Microsoft Network Client Send Unencrypted Password To Third Party SMB Servers", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_sendunencryptedpasswordtothirdpartysmbservers_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", "displayName": "Enable", - "description": "Enable" + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_sendunencryptedpasswordtothirdpartysmbservers_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", "displayName": "Disable", - "description": "Disable" + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkserver_digitallysigncommunicationsalways", - "displayName": "Microsoft Network Server Digitally Sign Communications Always", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads", + "displayName": "Allow font downloads", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkserver_digitallysigncommunicationsalways_1", - "displayName": "Enable", - "description": "Enable" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkserver_digitallysigncommunicationsalways_0", - "displayName": "Disable", - "description": "Disable" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkserver_digitallysigncommunicationsifclientagrees", - "displayName": "Microsoft Network Server Digitally Sign Communications If Client Agrees", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_iz_partname1604", + "displayName": "Allow font downloads", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkserver_digitallysigncommunicationsifclientagrees_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_iz_partname1604_0", "displayName": "Enable", - "description": "Enable" + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkserver_digitallysigncommunicationsifclientagrees_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_iz_partname1604_3", "displayName": "Disable", - "description": "Disable" + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_iz_partname1604_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_donotallowanonymousenumerationofsamaccounts", - "displayName": "Network Access Do Not Allow Anonymous Enumeration Of SAM Accounts", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_donotallowanonymousenumerationofsamaccounts_1", - "displayName": "Enabled", - "description": "Enabled" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_donotallowanonymousenumerationofsamaccounts_0", - "displayName": "Disabled", - "description": "Disabled" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_donotallowanonymousenumerationofsamaccountsandshares", - "displayName": "Network Access Do Not Allow Anonymous Enumeration Of Sam Accounts And Shares", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_iz_partname2101", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_donotallowanonymousenumerationofsamaccountsandshares_1", - "displayName": "Enabled", - "description": "Enabled" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_iz_partname2101_0", + "displayName": "Enable", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_donotallowanonymousenumerationofsamaccountsandshares_0", - "displayName": "Disabled", - "description": "Disabled" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_iz_partname2101_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_iz_partname2101_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_restrictanonymousaccesstonamedpipesandshares", - "displayName": "Network Access Restrict Anonymous Access To Named Pipes And Shares", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_restrictanonymousaccesstonamedpipesandshares_1", - "displayName": "Enable", - "description": "Enable" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_restrictanonymousaccesstonamedpipesandshares_0", - "displayName": "Disable", - "description": "Disable" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_restrictclientsallowedtomakeremotecallstosam", - "displayName": "Network Access Restrict Clients Allowed To Make Remote Calls To SAM", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_allowlocalsystemtousecomputeridentityforntlm", - "displayName": "Network Security Allow Local System To Use Computer Identity For NTLM", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_allowlocalsystemtousecomputeridentityforntlm_1", - "displayName": "Allow", - "description": "Allow" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_0", + "displayName": "Enable", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_allowlocalsystemtousecomputeridentityforntlm_0", - "displayName": "Block", - "description": "Block" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_allowpku2uauthenticationrequests", - "displayName": "Network Security Allow PKU2U Authentication Requests", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets", + "displayName": "Allow scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_allowpku2uauthenticationrequests_0", - "displayName": "Block", - "description": "Block" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_allowpku2uauthenticationrequests_1", - "displayName": "Allow", - "description": "Allow" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_donotstorelanmanagerhashvalueonnextpasswordchange", - "displayName": "Network Security Do Not Store LAN Manager Hash Value On Next Password Change", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_iz_partname1209", + "displayName": "Scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_donotstorelanmanagerhashvalueonnextpasswordchange_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_iz_partname1209_0", "displayName": "Enable", - "description": "Enable" + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_donotstorelanmanagerhashvalueonnextpasswordchange_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_iz_partname1209_3", "displayName": "Disable", - "description": "Disable" + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_lanmanagerauthenticationlevel", - "displayName": "Network Security LAN Manager Authentication Level", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie", + "displayName": "Turn on SmartScreen Filter scan", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_lanmanagerauthenticationlevel_0", - "displayName": "Send LM and NTLM responses", - "description": "Send LM and NTLM responses" - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_lanmanagerauthenticationlevel_1", - "displayName": "Send LM and NTLM-use NTLMv2 session security if negotiated", - "description": "Send LM and NTLM-use NTLMv2 session security if negotiated" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_lanmanagerauthenticationlevel_2", - "displayName": "Send LM and NTLM responses only", - "description": "Send LM and NTLM responses only" - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_lanmanagerauthenticationlevel_3", - "displayName": "Send LM and NTLMv2 responses only", - "description": "Send LM and NTLMv2 responses only" - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_lanmanagerauthenticationlevel_4", - "displayName": "Send LM and NTLMv2 responses only. Refuse LM", - "description": "Send LM and NTLMv2 responses only. Refuse LM" - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_lanmanagerauthenticationlevel_5", - "displayName": "Send LM and NTLMv2 responses only. Refuse LM and NTLM", - "description": "Send LM and NTLMv2 responses only. Refuse LM and NTLM" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedclients", - "displayName": "Network Security Minimum Session Security For NTLMSSP Based Clients", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_iz_partname2301", + "displayName": "Use SmartScreen Filter", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedclients_0", - "displayName": "None", - "description": "None" - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedclients_524288", - "displayName": "Require NTLMv2 session security", - "description": "Require NTLMv2 session security" - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedclients_536870912", - "displayName": "Require 128-bit encryption", - "description": "Require 128-bit encryption" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_iz_partname2301_0", + "displayName": "Enable", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedclients_537395200", - "displayName": "Require NTLM and 128-bit encryption", - "description": "Require NTLM and 128-bit encryption" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_iz_partname2301_3", + "displayName": "Disable", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedservers", - "displayName": "Network Security Minimum Session Security For NTLMSSP Based Servers", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence", + "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedservers_0", - "displayName": "None", - "description": "None" - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedservers_524288", - "displayName": "Require NTLMv2 session security", - "description": "Require NTLMv2 session security" - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedservers_536870912", - "displayName": "Require 128-bit encryption", - "description": "Require 128-bit encryption" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedservers_537395200", - "displayName": "Require NTLM and 128-bit encryption", - "description": "Require NTLM and 128-bit encryption" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_addremoteserverexceptionsforntlmauthentication", - "displayName": "Network Security Restrict NTLM Add Remote Server Exceptions For NTLM Authentication", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_auditincomingntlmtraffic", - "displayName": "Network Security Restrict NTLM Audit Incoming NTLM Traffic", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_iz_partname1606", + "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_auditincomingntlmtraffic_0", - "displayName": "Disable", - "description": "Disable" - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_auditincomingntlmtraffic_1", - "displayName": "Enable auditing for domain accounts", - "description": "Enable auditing for domain accounts" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_iz_partname1606_0", + "displayName": "Enable", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_auditincomingntlmtraffic_2", - "displayName": "Enable auditing for all accounts", - "description": "Enable auditing for all accounts" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_iz_partname1606_3", + "displayName": "Disable", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_incomingntlmtraffic", - "displayName": "Network Security Restrict NTLM Incoming NTLM Traffic", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols", + "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_incomingntlmtraffic_0", - "displayName": "Allow all", - "description": "Allow all" - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_incomingntlmtraffic_1", - "displayName": "Deny all domain accounts", - "description": "Deny all domain accounts" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_incomingntlmtraffic_2", - "displayName": "Deny all accounts", - "description": "Deny all accounts" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_outgoingntlmtraffictoremoteservers", - "displayName": "Network Security Restrict NTLM Outgoing NTLM Traffic To Remote Servers", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201", + "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_outgoingntlmtraffictoremoteservers_0", - "displayName": "Allow all", - "description": "Allow all" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "displayName": "Enable", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_outgoingntlmtraffictoremoteservers_1", - "displayName": "Deny all domain accounts", - "description": "Deny all domain accounts" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "displayName": "Disable", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_outgoingntlmtraffictoremoteservers_2", - "displayName": "Deny all accounts", - "description": "Deny all accounts" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_shutdown_allowsystemtobeshutdownwithouthavingtologon", - "displayName": "Shutdown Allow System To Be Shut Down Without Having To Log On", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions", + "displayName": "Java permissions", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_shutdown_allowsystemtobeshutdownwithouthavingtologon_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_0", "displayName": "Disabled", - "description": "Disabled" + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_shutdown_allowsystemtobeshutdownwithouthavingtologon_1", - "displayName": "Enabled (Allow system to be shut down without having to log on)", - "description": "Enabled (Allow system to be shut down without having to log on)" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_shutdown_clearvirtualmemorypagefile", - "displayName": "Shutdown Clear Virtual Memory Page File", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00", + "displayName": "Java permissions", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_shutdown_clearvirtualmemorypagefile_1", - "displayName": "Enable", - "description": "Enable" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_65536", + "displayName": "High safety", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_shutdown_clearvirtualmemorypagefile_0", - "displayName": "Disable", - "description": "Disable" - } - ] - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_allowuiaccessapplicationstopromptforelevation", - "displayName": "User Account Control Allow UI Access Applications To Prompt For Elevation", - "options": [ + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_131072", + "displayName": "Medium safety", + "description": null + }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_allowuiaccessapplicationstopromptforelevation_0", - "displayName": "disabled", - "description": "disabled" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_196608", + "displayName": "Low safety", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_allowuiaccessapplicationstopromptforelevation_1", - "displayName": "enabled (allow UIAccess applications to prompt for elevation without using the secure desktop)", - "description": "enabled (allow UIAccess applications to prompt for elevation without using the secure desktop)" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_8388608", + "displayName": "Custom", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_0", + "displayName": "Disable Java", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministratorprotection", - "displayName": "User Account Control Behavior Of The Elevation Prompt For Administrator Protection (Windows Insiders only)", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministratorprotection_1", - "displayName": "Prompt for credentials on the secure desktop", - "description": "Prompt for credentials on the secure desktop" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministratorprotection_2", - "displayName": "Prompt for consent on the secure desktop", - "description": "Prompt for consent on the secure desktop" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministrators", - "displayName": "User Account Control Behavior Of The Elevation Prompt For Administrators", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministrators_0", - "displayName": "Elevate without prompting", - "description": "Elevate without prompting" - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministrators_1", - "displayName": "Prompt for credentials on the secure desktop", - "description": "Prompt for credentials on the secure desktop" - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministrators_2", - "displayName": "Prompt for consent on the secure desktop", - "description": "Prompt for consent on the secure desktop" - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministrators_3", - "displayName": "Prompt for credentials", - "description": "Prompt for credentials" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_iz_partname1607_0", + "displayName": "Enable", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministrators_4", - "displayName": "Prompt for consent", - "description": "Prompt for consent" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_iz_partname1607_3", + "displayName": "Disable", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministrators_5", - "displayName": "Prompt for consent for non-Windows binaries", - "description": "Prompt for consent for non-Windows binaries" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_iz_partname1607_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforstandardusers", - "displayName": "User Account Control Behavior Of The Elevation Prompt For Standard Users", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources", + "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforstandardusers_0", - "displayName": "Automatically deny elevation requests", - "description": "Automatically deny elevation requests" - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforstandardusers_1", - "displayName": "Prompt for credentials on the secure desktop", - "description": "Prompt for credentials on the secure desktop" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforstandardusers_3", - "displayName": "Prompt for credentials", - "description": "Prompt for credentials" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_detectapplicationinstallationsandpromptforelevation", - "displayName": "User Account Control Detect Application Installations And Prompt For Elevation", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_iz_partname1406", + "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_detectapplicationinstallationsandpromptforelevation_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_iz_partname1406_0", "displayName": "Enable", - "description": "Enable" + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_detectapplicationinstallationsandpromptforelevation_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_iz_partname1406_3", "displayName": "Disable", - "description": "Disable" + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_iz_partname1406_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_onlyelevateexecutablefilesthataresignedandvalidated", - "displayName": "User Account Control Only Elevate Executable Files That Are Signed And Validated", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_onlyelevateexecutablefilesthataresignedandvalidated_0", - "displayName": "Disabled: Does not enforce validation.", - "description": "Disabled: Does not enforce validation." + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_onlyelevateexecutablefilesthataresignedandvalidated_1", - "displayName": "Enabled: Enforces validation.", - "description": "Enabled: Enforces validation." + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_onlyelevateuiaccessapplicationsthatareinstalledinsecurelocations", - "displayName": "User Account Control Only Elevate UI Access Applications That Are Installed In Secure Locations", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_onlyelevateuiaccessapplicationsthatareinstalledinsecurelocations_0", - "displayName": "Disabled: Application runs with UIAccess integrity even if it does not reside in a secure location.", - "description": "Disabled: Application runs with UIAccess integrity even if it does not reside in a secure location." + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", + "displayName": "Enable", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_onlyelevateuiaccessapplicationsthatareinstalledinsecurelocations_1", - "displayName": "Enabled: Application runs with UIAccess integrity only if it resides in secure location.", - "description": "Enabled: Application runs with UIAccess integrity only if it resides in secure location." + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", + "displayName": "Disable", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_runalladministratorsinadminapprovalmode", - "displayName": "User Account Control Run All Administrators In Admin Approval Mode", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads", + "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_runalladministratorsinadminapprovalmode_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", - "description": "Disabled" + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_runalladministratorsinadminapprovalmode_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", - "description": "Enabled" + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_switchtothesecuredesktopwhenpromptingforelevation", - "displayName": "User Account Control Switch To The Secure Desktop When Prompting For Elevation", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_switchtothesecuredesktopwhenpromptingforelevation_0", - "displayName": "Disabled", - "description": "Disabled" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", + "displayName": "Enable", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_switchtothesecuredesktopwhenpromptingforelevation_1", - "displayName": "Enabled", - "description": "Enabled" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "displayName": "Disable", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_typeofadminapprovalmode", - "displayName": "User Account Control Type Of Admin Approval Mode (Windows Insiders only)", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads", + "displayName": "Allow font downloads", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_typeofadminapprovalmode_1", - "displayName": "Legacy Admin Approval Mode", - "description": "Legacy Admin Approval Mode" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_typeofadminapprovalmode_2", - "displayName": "Admin Approval Mode with Administrator protection", - "description": "Admin Approval Mode with Administrator protection" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_useadminapprovalmode", - "displayName": "User Account Control Use Admin Approval Mode", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_iz_partname1604", + "displayName": "Allow font downloads", "options": [ { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_useadminapprovalmode_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_iz_partname1604_0", "displayName": "Enable", - "description": "Enable" + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_useadminapprovalmode_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_iz_partname1604_3", "displayName": "Disable", - "description": "Disable" - } - ] - }, - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_virtualizefileandregistrywritefailurestoperuserlocations", - "displayName": "User Account Control Virtualize File And Registry Write Failures To Per User Locations", - "options": [ - { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_virtualizefileandregistrywritefailurestoperuserlocations_0", - "displayName": "Disabled", - "description": "Disabled" + "description": null }, { - "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_virtualizefileandregistrywritefailurestoperuserlocations_1", - "displayName": "Enabled", - "description": "Enabled" + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_iz_partname1604_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localsecurityauthority_allowcustomsspsaps", - "displayName": "Allow Custom SSPs and APs to be loaded into LSASS", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_localsecurityauthority_allowcustomsspsaps_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_localsecurityauthority_allowcustomsspsaps_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localsecurityauthority_configurelsaprotectedprocess", - "displayName": "Configure Lsa Protected Process", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_iz_partname2101", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_localsecurityauthority_configurelsaprotectedprocess_0", - "displayName": "Disabled. Default value. LSA will not run as protected process.", - "description": "Disabled. Default value. LSA will not run as protected process." + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_iz_partname2101_0", + "displayName": "Enable", + "description": null }, { - "id": "device_vendor_msft_policy_config_localsecurityauthority_configurelsaprotectedprocess_1", - "displayName": "Enabled with UEFI lock. LSA will run as protected process and this configuration is UEFI locked.", - "description": "Enabled with UEFI lock. LSA will run as protected process and this configuration is UEFI locked." + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_iz_partname2101_3", + "displayName": "Disable", + "description": null }, { - "id": "device_vendor_msft_policy_config_localsecurityauthority_configurelsaprotectedprocess_2", - "displayName": "Enabled without UEFI lock. LSA will run as protected process and this configuration is not UEFI locked.", - "description": "Enabled without UEFI lock. LSA will run as protected process and this configuration is not UEFI locked." + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_iz_partname2101_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localusersandgroups_configure", - "displayName": "Group Configuration", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup", - "displayName": "access group", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_action", - "displayName": "Group and user action", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_action_add_update", - "displayName": "Add (Update)", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_action_remove_update", - "displayName": "Remove (Update)", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_action_add_restrict", - "displayName": "Add (Replace)", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_desc", - "displayName": "Local group", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_desc_administrators", - "displayName": "Administrators", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_desc_users", - "displayName": "Users", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_desc_guests", - "displayName": "Guests", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_3", + "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_desc_powerusers", - "displayName": "Power Users", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_1", + "displayName": "Prompt", "description": null - }, + } + ] + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets", + "displayName": "Allow scriptlets", + "options": [ { - "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_desc_remotedesktopusers", - "displayName": "Remote Desktop Users", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_desc_remotemanagementusers", - "displayName": "Remote Management Users", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_users", - "displayName": "Selected user(s)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_userselectiontype", - "displayName": "User selection type", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_iz_partname1209", + "displayName": "Scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_userselectiontype_users", - "displayName": "Users/Groups", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_iz_partname1209_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_userselectiontype_manual", - "displayName": "Manual", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_iz_partname1209_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_lockdown_allowedgeswipe", - "displayName": "Allow Edge Swipe", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie", + "displayName": "Turn on SmartScreen Filter scan", "options": [ { - "id": "device_vendor_msft_policy_config_lockdown_allowedgeswipe_0", - "displayName": "Block", - "description": "Disallow edge swipe." + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_lockdown_allowedgeswipe_1", - "displayName": "Allow", - "description": "Allow edge swipe." + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode", - "displayName": "Specify server", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_iz_partname2301", + "displayName": "Use SmartScreen Filter", "options": [ { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_iz_partname2301_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_iz_partname2301_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_l_serveraddressexternal_value", - "displayName": "DNS name of the external server (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_l_serveraddressinternal_value", - "displayName": "DNS name of the internal server (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfiguredservercheckvalues", - "displayName": "Additional server versions supported", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence", + "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfiguredservercheckvalues_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfiguredservercheckvalues_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfiguredservercheckvalues_l_configuredservercheckvalues_value", - "displayName": "Server version names (semicolon separated list): (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableautomaticsendtracing", - "displayName": "Disable automatic upload of sign-in failure logs", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_iz_partname1606", + "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableautomaticsendtracing_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_iz_partname1606_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableautomaticsendtracing_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_iz_partname1606_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablehttpconnect", - "displayName": "Disable HTTP fallback for SIP connection", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols", + "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablehttpconnect_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablehttpconnect_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablentcredentials", - "displayName": "Require logon credentials", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201", + "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablentcredentials_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablentcredentials_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableservercheck", - "displayName": "Disable server version check", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions", + "displayName": "Java permissions", "options": [ { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableservercheck_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableservercheck_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablebitsforgaldownload", - "displayName": "Enable using BITS to download Address Book Service files", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00", + "displayName": "Java permissions", "options": [ { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablebitsforgaldownload_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_65536", + "displayName": "High safety", "description": null }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablebitsforgaldownload_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_131072", + "displayName": "Medium safety", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_196608", + "displayName": "Low safety", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_8388608", + "displayName": "Custom", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_0", + "displayName": "Disable Java", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablesiphighsecuritymode", - "displayName": "Configure SIP security mode", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablesiphighsecuritymode_0", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablesiphighsecuritymode_1", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policygaldownloadinitialdelay", - "displayName": "Global Address Book Download Initial Delay", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policygaldownloadinitialdelay_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_iz_partname1607_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policygaldownloadinitialdelay_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_iz_partname1607_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_iz_partname1607_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policygaldownloadinitialdelay_l_galdownloadinitialdelay_value", - "displayName": "Maximum possible number of minutes to delay download: (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policypreventrun", - "displayName": "Prevent users from running Microsoft Lync", + "id": "device_vendor_msft_policy_config_internetexplorer_mimesniffingsafetyfeatureinternetexplorerprocesses", + "displayName": "Internet Explorer Processes", "options": [ { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policypreventrun_0", + "id": "device_vendor_msft_policy_config_internetexplorer_mimesniffingsafetyfeatureinternetexplorerprocesses_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policypreventrun_1", + "id": "device_vendor_msft_policy_config_internetexplorer_mimesniffingsafetyfeatureinternetexplorerprocesses_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysavepassword", - "displayName": "Allow storage of user passwords", + "id": "device_vendor_msft_policy_config_internetexplorer_mkprotocolsecurityrestrictioninternetexplorerprocesses", + "displayName": "Internet Explorer Processes", "options": [ { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysavepassword_0", + "id": "device_vendor_msft_policy_config_internetexplorer_mkprotocolsecurityrestrictioninternetexplorerprocesses_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysavepassword_1", + "id": "device_vendor_msft_policy_config_internetexplorer_mkprotocolsecurityrestrictioninternetexplorerprocesses_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression", - "displayName": "Configure SIP compression mode", + "id": "device_vendor_msft_policy_config_internetexplorer_newtabdefaultpage", + "displayName": "Specify default behavior for a new tab", "options": [ { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_0", + "id": "device_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1", + "id": "device_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_l_policysipcompression", - "displayName": "Configure SIP compression mode (Device)", + "id": "device_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions", + "displayName": "New tab behavior", "options": [ { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_l_policysipcompression_0", - "displayName": "Always disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions_3", + "displayName": "New tab page with my news feed", "description": null }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_l_policysipcompression_1", - "displayName": "Always enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions_0", + "displayName": "about:blank", "description": null }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_l_policysipcompression_2", - "displayName": "Based on adaptor speed (default)", + "id": "device_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions_2", + "displayName": "New tab page", "description": null }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_l_policysipcompression_3", - "displayName": "Based on ping round-trip time", + "id": "device_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions_1", + "displayName": "Home page", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policytrustmodeldata", - "displayName": "Trusted Domain List", + "id": "device_vendor_msft_policy_config_internetexplorer_notificationbarinternetexplorerprocesses", + "displayName": "Internet Explorer Processes", "options": [ { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policytrustmodeldata_0", + "id": "device_vendor_msft_policy_config_internetexplorer_notificationbarinternetexplorerprocesses_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policytrustmodeldata_1", + "id": "device_vendor_msft_policy_config_internetexplorer_notificationbarinternetexplorerprocesses_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policytrustmodeldata_l_trustmodeldata_value", - "displayName": "Trusted Domains (comma separated list): (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_maps_allowofflinemapsdownloadovermeteredconnection", - "displayName": "Allow Offline Maps Download Over Metered Connection", + "id": "device_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter", + "displayName": "Prevent managing SmartScreen Filter", "options": [ { - "id": "device_vendor_msft_policy_config_maps_allowofflinemapsdownloadovermeteredconnection_0", - "displayName": "Disabled. Force disable auto-update over metered connection.", - "description": "Disabled. Force disable auto-update over metered connection." - }, - { - "id": "device_vendor_msft_policy_config_maps_allowofflinemapsdownloadovermeteredconnection_1", - "displayName": "Enabled. Force enable auto-update over metered connection.", - "description": "Enabled. Force enable auto-update over metered connection." + "id": "device_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_maps_allowofflinemapsdownloadovermeteredconnection_65535", - "displayName": "Not configured. User's choice.", - "description": "Not configured. User's choice." + "id": "device_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_maps_enableofflinemapsautoupdate", - "displayName": "Enable Offline Maps Auto Update", + "id": "device_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_ie9safetyfilteroptions", + "displayName": "Select SmartScreen Filter mode", "options": [ { - "id": "device_vendor_msft_policy_config_maps_enableofflinemapsautoupdate_0", - "displayName": "Disabled. Force off auto-update.", - "description": "Disabled. Force off auto-update." - }, - { - "id": "device_vendor_msft_policy_config_maps_enableofflinemapsautoupdate_1", - "displayName": "Enabled. Force on auto-update.", - "description": "Enabled. Force on auto-update." + "id": "device_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_ie9safetyfilteroptions_0", + "displayName": "Off", + "description": null }, { - "id": "device_vendor_msft_policy_config_maps_enableofflinemapsautoupdate_65535", - "displayName": "Not configured. User's choice.", - "description": "Not configured. User's choice." + "id": "device_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_ie9safetyfilteroptions_1", + "displayName": "On", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_memorydump_allowcrashdump", - "displayName": "Allow Crash Dump", + "id": "device_vendor_msft_policy_config_internetexplorer_preventperuserinstallationofactivexcontrols", + "displayName": "Prevent per-user installation of ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_memorydump_allowcrashdump_0", - "displayName": "Block", - "description": "Disable crash dump collection." + "id": "device_vendor_msft_policy_config_internetexplorer_preventperuserinstallationofactivexcontrols_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_memorydump_allowcrashdump_1", - "displayName": "Allow", - "description": "Allow crash dump collection." + "id": "device_vendor_msft_policy_config_internetexplorer_preventperuserinstallationofactivexcontrols_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_memorydump_allowlivedump", - "displayName": "Allow Live Dump", + "id": "device_vendor_msft_policy_config_internetexplorer_protectionfromzoneelevationinternetexplorerprocesses", + "displayName": "Internet Explorer Processes", "options": [ { - "id": "device_vendor_msft_policy_config_memorydump_allowlivedump_0", - "displayName": "Block", - "description": "Disable live dump collection." + "id": "device_vendor_msft_policy_config_internetexplorer_protectionfromzoneelevationinternetexplorerprocesses_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_memorydump_allowlivedump_1", - "displayName": "Allow", - "description": "Allow live dump collection." + "id": "device_vendor_msft_policy_config_internetexplorer_protectionfromzoneelevationinternetexplorerprocesses_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_messaging_allowmessagesync", - "displayName": "Allow Message Sync", + "id": "device_vendor_msft_policy_config_internetexplorer_removerunthistimebuttonforoutdatedactivexcontrols", + "displayName": "Remove \"Run this time\" button for outdated ActiveX controls in Internet Explorer", "options": [ { - "id": "device_vendor_msft_policy_config_messaging_allowmessagesync_0", - "displayName": "message sync is not allowed and cannot be changed by the user.", - "description": "message sync is not allowed and cannot be changed by the user." + "id": "device_vendor_msft_policy_config_internetexplorer_removerunthistimebuttonforoutdatedactivexcontrols_0", + "displayName": "Disabled", + "description": null }, { - "id": "device_vendor_msft_policy_config_messaging_allowmessagesync_1", - "displayName": "message sync is allowed. The user can change this setting.", - "description": "message sync is allowed. The user can change this setting." + "id": "device_vendor_msft_policy_config_internetexplorer_removerunthistimebuttonforoutdatedactivexcontrols_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder", - "displayName": "Configure the location of the browser executable folder", + "id": "device_vendor_msft_policy_config_internetexplorer_resetzoomfordialoginiemode", + "displayName": "Reset zoom to default for HTML dialogs in Internet Explorer mode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_0", + "id": "device_vendor_msft_policy_config_internetexplorer_resetzoomfordialoginiemode_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_1", + "id": "device_vendor_msft_policy_config_internetexplorer_resetzoomfordialoginiemode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_browserexecutablefolderdesc", - "displayName": "Set value name to the Application User Model ID or the executable file name. You can use the \"*\" wildcard as value name to apply to all applications. (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_browserexecutablefolderdesc_key", - "displayName": "Name", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_browserexecutablefolderdesc_value", - "displayName": "Value", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference", - "displayName": "Set the release channel search order preference", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictactivexinstallinternetexplorerprocesses", + "displayName": "Internet Explorer Processes", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictactivexinstallinternetexplorerprocesses_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictactivexinstallinternetexplorerprocesses_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_releasechannelpreferencedesc", - "displayName": "Set value name to the Application User Model ID or the executable file name. You can use the \"*\" wildcard as value name to apply to all applications. (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_releasechannelpreferencedesc_key", - "displayName": "Name", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_releasechannelpreferencedesc_value", - "displayName": "Value", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol", - "displayName": "Control communication with the Experimentation and Configuration Service", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources", + "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol", - "displayName": "Control communication with the Experimentation and Configuration Service (Device)", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_iz_partname1406", + "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_2", - "displayName": "Retrieve configurations and experiments", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_iz_partname1406_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_1", - "displayName": "Retrieve configurations only", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_iz_partname1406_3", + "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_0", - "displayName": "Disable communication with the Experimentation and Configuration Service", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_iz_partname1406_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_forcepermissionpolicyunloaddefaultenabled", - "displayName": "Controls whether unload event handlers can be disabled.", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting", + "displayName": "Allow active scripting", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_forcepermissionpolicyunloaddefaultenabled_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_forcepermissionpolicyunloaddefaultenabled_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist", - "displayName": "HTTP Allowlist", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_iz_partname1400", + "displayName": "Allow active scripting", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_iz_partname1400_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_iz_partname1400_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_iz_partname1400_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_httpallowlistdesc", - "displayName": "HTTP Allowlist (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_httpallowlistdesc_key", - "displayName": "Name", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_httpallowlistdesc_value", - "displayName": "Value", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newbaseurlinheritancebehaviorallowed", - "displayName": "Allows enabling the feature NewBaseUrlInheritanceBehavior", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newbaseurlinheritancebehaviorallowed_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newbaseurlinheritancebehaviorallowed_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list", - "displayName": "Enable built-in PDF reader powered by Adobe Acrobat for WebView2", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_newpdfreaderwebview2listdesc", - "displayName": "Set value name to the Application User Model ID or the executable file name. You can use the \"*\" wildcard as value name to apply to all applications. (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_newpdfreaderwebview2listdesc_key", - "displayName": "Name", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_newpdfreaderwebview2listdesc_value", - "displayName": "Value", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_rsakeyusageforlocalanchorsenabled", - "displayName": "Check RSA key usage for server certificates issued by local trust anchors", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads", + "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_rsakeyusageforlocalanchorsenabled_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_rsakeyusageforlocalanchorsenabled_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowdeletingbrowserhistory", - "displayName": "Enable deleting browser and download history", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowdeletingbrowserhistory_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowdeletingbrowserhistory_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowfileselectiondialogs", - "displayName": "Allow file selection dialogs", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors", + "displayName": "Allow binary and script behaviors", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowfileselectiondialogs_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowfileselectiondialogs_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_alwaysopenpdfexternally", - "displayName": "Always open PDF files externally", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_iz_partname2000", + "displayName": "Allow Binary and Script Behaviors", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_alwaysopenpdfexternally_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_iz_partname2000_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_alwaysopenpdfexternally_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_iz_partname2000_65536", + "displayName": "Administrator approved", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_iz_partname2000_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_applicationlocalevalue", - "displayName": "Set application locale", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript", + "displayName": "Allow cut, copy or paste operations from the clipboard via script", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_applicationlocalevalue_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_applicationlocalevalue_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_applicationlocalevalue_applicationlocalevalue", - "displayName": "Application locale (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowed", - "displayName": "Allow or block audio capture", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_iz_partname1407", + "displayName": "Allow paste operations via script", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowed_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_iz_partname1407_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowed_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_iz_partname1407_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_iz_partname1407_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowedurls", - "displayName": "Sites that can access audio capture devices without requesting permission", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles", + "displayName": "Allow drag and drop or copy and paste files", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowedurls_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowedurls_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowedurls_audiocaptureallowedurlsdesc", - "displayName": "Sites that can access audio capture devices without requesting permission (Device)", - "options": null + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_iz_partname1802", + "displayName": "Allow drag and drop or copy and paste files", + "options": [ + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_iz_partname1802_0", + "displayName": "Enable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_iz_partname1802_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_iz_partname1802_1", + "displayName": "Prompt", + "description": null + } + ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofilladdressenabled", - "displayName": "Enable AutoFill for addresses", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads", + "displayName": "Allow file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofilladdressenabled_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofilladdressenabled_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofillcreditcardenabled", - "displayName": "Enable AutoFill for payment instruments", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_iz_partname1803", + "displayName": "Allow file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofillcreditcardenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_iz_partname1803_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofillcreditcardenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_iz_partname1803_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun", - "displayName": "Automatically import another browser's data and settings at first run", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads", + "displayName": "Allow font downloads", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun", - "displayName": "Automatically import another browser's data and settings at first run (Device)", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_iz_partname1604", + "displayName": "Allow font downloads", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_0", - "displayName": "Automatically imports all supported datatypes and settings from the default browser", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_iz_partname1604_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_1", - "displayName": "Automatically imports all supported datatypes and settings from Internet Explorer", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_iz_partname1604_3", + "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_2", - "displayName": "Automatically imports all supported datatypes and settings from Google Chrome", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_iz_partname1604_1", + "displayName": "Prompt", "description": null - }, + } + ] + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", + "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_3", - "displayName": "Automatically imports all supported datatypes and settings from Safari", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_4", - "displayName": "Disables automatic import, and the import section of the first-run experience is skipped", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_backgroundmodeenabled", - "displayName": "Continue running background apps after Microsoft Edge closes", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_iz_partname2101", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_backgroundmodeenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_iz_partname2101_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_backgroundmodeenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_iz_partname2101_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_iz_partname2101_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_blockthirdpartycookies", - "displayName": "Block third party cookies", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles", + "displayName": "Allow loading of XAML files", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_blockthirdpartycookies_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_blockthirdpartycookies_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browseraddprofileenabled", - "displayName": "Enable profile creation from the Identity flyout menu or the Settings page", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_iz_partname2402", + "displayName": "XAML Files", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browseraddprofileenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_iz_partname2402_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browseraddprofileenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_iz_partname2402_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_iz_partname2402_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browserguestmodeenabled", - "displayName": "Enable guest mode", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh", + "displayName": "Allow META REFRESH", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browserguestmodeenabled_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browserguestmodeenabled_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsernetworktimequeriesenabled", - "displayName": "Allow queries to a Browser Network Time service", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_iz_partname1608", + "displayName": "Allow META REFRESH", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsernetworktimequeriesenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_iz_partname1608_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsernetworktimequeriesenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_iz_partname1608_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin", - "displayName": "Browser sign-in settings", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_browsersignin", - "displayName": "Browser sign-in settings (Device)", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_browsersignin_0", - "displayName": "Disable browser sign-in", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_browsersignin_1", - "displayName": "Enable browser sign-in", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_3", + "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_browsersignin_2", - "displayName": "Force users to sign-in to use the browser", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_builtindnsclientenabled", - "displayName": "Use built-in DNS client", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols", + "displayName": "Allow only approved domains to use ActiveX controls without prompt", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_builtindnsclientenabled_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_builtindnsclientenabled_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforcas", - "displayName": "Disable Certificate Transparency enforcement for a list of subjectPublicKeyInfo hashes", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b", + "displayName": "Only allow approved domains to use ActiveX controls without prompt", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforcas_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b_3", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforcas_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b_0", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforcas_certificatetransparencyenforcementdisabledforcasdesc", - "displayName": "Disable Certificate Transparency enforcement for a list of subjectPublicKeyInfo hashes (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforlegacycas", - "displayName": "Disable Certificate Transparency enforcement for a list of legacy certificate authorities", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol", + "displayName": "Allow only approved domains to use the TDC ActiveX control", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforlegacycas_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforlegacycas_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforlegacycas_certificatetransparencyenforcementdisabledforlegacycasdesc", - "displayName": "Disable Certificate Transparency enforcement for a list of legacy certificate authorities (Device)", - "options": null + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c", + "displayName": "Only allow approved domains to use the TDC ActiveX control", + "options": [ + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c_3", + "displayName": "Enable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c_0", + "displayName": "Disable", + "description": null + } + ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforurls", - "displayName": "Disable Certificate Transparency enforcement for specific URLs", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols", + "displayName": "Allow scripting of Internet Explorer WebBrowser controls", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforurls_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforurls_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforurls_certificatetransparencyenforcementdisabledforurlsdesc", - "displayName": "Disable Certificate Transparency enforcement for specific URLs (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_componentupdatesenabled", - "displayName": "Enable component updates in Microsoft Edge", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206", + "displayName": "Internet Explorer web browser control", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_componentupdatesenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_componentupdatesenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configuredonottrack", - "displayName": "Configure Do Not Track", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows", + "displayName": "Allow script-initiated windows without size or position constraints", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configuredonottrack_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configuredonottrack_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configureonlinetexttospeech", - "displayName": "Configure Online Text To Speech", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_iz_partname2102", + "displayName": "Allow script-initiated windows without size or position constraints", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configureonlinetexttospeech_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_iz_partname2102_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configureonlinetexttospeech_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_iz_partname2102_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability", - "displayName": "Control where developer tools can be used", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets", + "displayName": "Allow scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_developertoolsavailability", - "displayName": "Control where developer tools can be used (Device)", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_iz_partname1209", + "displayName": "Scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_developertoolsavailability_0", - "displayName": "Block the developer tools on extensions installed by enterprise policy, allow in other contexts", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_developertoolsavailability_1", - "displayName": "Allow using the developer tools", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_iz_partname1209_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_developertoolsavailability_2", - "displayName": "Don't allow using the developer tools", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_iz_partname1209_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disable3dapis", - "displayName": "Disable support for 3D graphics APIs", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie", + "displayName": "Turn on SmartScreen Filter scan", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disable3dapis_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disable3dapis_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disablescreenshots", - "displayName": "Disable taking screenshots", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_iz_partname2301", + "displayName": "Use SmartScreen Filter", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disablescreenshots_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_iz_partname2301_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disablescreenshots_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_iz_partname2301_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachedir", - "displayName": "Set disk cache directory", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript", + "displayName": "Allow updates to status bar via script", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachedir_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachedir_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachedir_diskcachedir", - "displayName": "Set disk cache directory (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachesize", - "displayName": "Set disk cache size, in bytes", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_iz_partname2103", + "displayName": "Status bar updates via script", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachesize_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_iz_partname2103_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachesize_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_iz_partname2103_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachesize_diskcachesize", - "displayName": "Set disk cache size: (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloaddirectory", - "displayName": "Set download directory", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence", + "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloaddirectory_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloaddirectory_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloaddirectory_downloaddirectory", - "displayName": "Set download directory (Device)", - "options": null + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_iz_partname1606", + "displayName": "Userdata persistence", + "options": [ + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_iz_partname1606_0", + "displayName": "Enable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_iz_partname1606_3", + "displayName": "Disable", + "description": null + } + ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions", - "displayName": "Allow download restrictions", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer", + "displayName": "Allow VBScript to run in Internet Explorer", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions", - "displayName": "Download restrictions (Device)", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_iz_partname140c", + "displayName": "Allow VBScript to run in Internet Explorer", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_0", - "displayName": "No special restrictions", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_1", - "displayName": "Block dangerous downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_iz_partname140c_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_2", - "displayName": "Block potentially dangerous downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_iz_partname140c_3", + "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_3", - "displayName": "Block all downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_iz_partname140c_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_editfavoritesenabled", - "displayName": "Allows users to edit favorites", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols", + "displayName": "Don't run antimalware programs against ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_editfavoritesenabled_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_editfavoritesenabled_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledeprecatedwebplatformfeatures", - "displayName": "Re-enable deprecated web platform features for a limited time", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", + "displayName": "Don't run antimalware programs against ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledeprecatedwebplatformfeatures_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledeprecatedwebplatformfeatures_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledeprecatedwebplatformfeatures_enabledeprecatedwebplatformfeaturesdesc", - "displayName": "Re-enable deprecated web platform features for a limited time (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledomainactionsdownload", - "displayName": "Enable Domain Actions Download from Microsoft (deprecated)", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols", + "displayName": "Download signed ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledomainactionsdownload_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledomainactionsdownload_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enableonlinerevocationchecks", - "displayName": "Enable online OCSP/CRL checks", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_iz_partname1001", + "displayName": "Download signed ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enableonlinerevocationchecks_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_iz_partname1001_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enableonlinerevocationchecks_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_iz_partname1001_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_iz_partname1001_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol", - "displayName": "Control communication with the Experimentation and Configuration Service", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols", + "displayName": "Download unsigned ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol", - "displayName": "Control communication with the Experimentation and Configuration Service (Device)", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_iz_partname1004", + "displayName": "Download unsigned ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_2", - "displayName": "Retrieve configurations and experiments", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_iz_partname1004_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_1", - "displayName": "Retrieve configurations only", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_iz_partname1004_3", + "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_0", - "displayName": "Disable communication with the Experimentation and Configuration Service", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_iz_partname1004_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_favoritesbarenabled", - "displayName": "Enable favorites bar", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter", + "displayName": "Turn on Cross-Site Scripting Filter", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_favoritesbarenabled_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_favoritesbarenabled_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch", - "displayName": "Enforce Bing SafeSearch", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_iz_partname1409", + "displayName": "Turn on Cross-Site Scripting (XSS) Filter", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_iz_partname1409_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_iz_partname1409_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_forcebingsafesearch", - "displayName": "Enforce Bing SafeSearch (Device)", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows", + "displayName": "Enable dragging of content from different domains across windows", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_forcebingsafesearch_0", - "displayName": "Don't configure search restrictions in Bing", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_forcebingsafesearch_1", - "displayName": "Configure moderate search restrictions in Bing", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_forcebingsafesearch_2", - "displayName": "Configure strict search restrictions in Bing", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceephemeralprofiles", - "displayName": "Enable use of ephemeral profiles", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709", + "displayName": "Enable dragging of content from different domains across windows", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceephemeralprofiles_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceephemeralprofiles_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcegooglesafesearch", - "displayName": "Enforce Google SafeSearch", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows", + "displayName": "Enable dragging of content from different domains within a window", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcegooglesafesearch_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcegooglesafesearch_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict", - "displayName": "Force minimum YouTube Restricted Mode", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708", + "displayName": "Enable dragging of content from different domains within a window", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_forceyoutuberestrict", - "displayName": "Force minimum YouTube Restricted Mode (Device)", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing", + "displayName": "Enable MIME Sniffing", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_forceyoutuberestrict_0", - "displayName": "Do not enforce Restricted Mode on YouTube", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_forceyoutuberestrict_1", - "displayName": "Enforce at least Moderate Restricted Mode on YouTube", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_forceyoutuberestrict_2", - "displayName": "Enforce Strict Restricted Mode for YouTube", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_fullscreenallowed", - "displayName": "Allow full screen mode", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_iz_partname2100", + "displayName": "Enable MIME Sniffing", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_fullscreenallowed_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_iz_partname2100_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_fullscreenallowed_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_iz_partname2100_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_hardwareaccelerationmodeenabled", - "displayName": "Use hardware acceleration when available", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver", + "displayName": "Include local path when user is uploading files to a server", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_hardwareaccelerationmodeenabled_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_hardwareaccelerationmodeenabled_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importautofillformdata", - "displayName": "Allow importing of autofill form data", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a", + "displayName": "Include local directory path when uploading files to a server", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importautofillformdata_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importautofillformdata_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importfavorites", - "displayName": "Allow importing of favorites", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols", + "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importfavorites_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importfavorites_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhistory", - "displayName": "Allow importing of browsing history", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201", + "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhistory_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhistory_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhomepage", - "displayName": "Allow importing of home page settings", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions", + "displayName": "Java permissions", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhomepage_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhomepage_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importpaymentinfo", - "displayName": "Allow importing of payment info", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00", + "displayName": "Java permissions", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importpaymentinfo_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_65536", + "displayName": "High safety", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importpaymentinfo_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_131072", + "displayName": "Medium safety", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_196608", + "displayName": "Low safety", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_8388608", + "displayName": "Custom", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_0", + "displayName": "Disable Java", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsavedpasswords", - "displayName": "Allow importing of saved passwords", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe", + "displayName": "Launching applications and files in an IFRAME", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsavedpasswords_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsavedpasswords_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsearchengine", - "displayName": "Allow importing of search engine settings", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_iz_partname1804", + "displayName": "Launching applications and files in an IFRAME", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsearchengine_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_iz_partname1804_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsearchengine_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_iz_partname1804_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_iz_partname1804_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability", - "displayName": "Configure InPrivate mode availability", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions", + "displayName": "Logon options", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_inprivatemodeavailability", - "displayName": "Configure InPrivate mode availability (Device)", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00", + "displayName": "Logon options", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_inprivatemodeavailability_0", - "displayName": "InPrivate mode available", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00_196608", + "displayName": "Anonymous logon", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_inprivatemodeavailability_1", - "displayName": "InPrivate mode disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00_131072", + "displayName": "Automatic logon only in Intranet zone", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_inprivatemodeavailability_2", - "displayName": "InPrivate mode forced", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00_0", + "displayName": "Automatic logon with current username and password", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00_65536", + "displayName": "Prompt for user name and password", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel", - "displayName": "Configure Internet Explorer integration", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_internetexplorerintegrationlevel", - "displayName": "Configure Internet Explorer integration (Device)", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_internetexplorerintegrationlevel_1", - "displayName": "Internet Explorer mode", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_iz_partname1607_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_internetexplorerintegrationlevel_2", - "displayName": "Internet Explorer 11", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_iz_partname1607_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_iz_partname1607_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_isolateorigins", - "displayName": "Enable site isolation for specific origins", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins", + "displayName": "Run ActiveX controls and plugins", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_isolateorigins_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_isolateorigins_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_isolateorigins_isolateorigins", - "displayName": "Enable site isolation for specific origins (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedfavorites", - "displayName": "Configure favorites", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200", + "displayName": "Run ActiveX controls and plugins", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedfavorites_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200_65536", + "displayName": "Administrator approved", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedfavorites_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200_0", + "displayName": "Enable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedfavorites_managedfavorites", - "displayName": "Configure favorites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedsearchengines", - "displayName": "Manage Search Engines", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode", + "displayName": "Run .NET Framework-reliant components signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedsearchengines_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedsearchengines_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedsearchengines_managedsearchengines", - "displayName": "Manage Search Engines (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_maxconnectionsperproxy", - "displayName": "Maximum number of concurrent connections to the proxy server", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001", + "displayName": "Run .NET Framework-reliant components signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_maxconnectionsperproxy_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_maxconnectionsperproxy_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_maxconnectionsperproxy_maxconnectionsperproxy", - "displayName": "Maximum number of concurrent connections to the proxy server: (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_mediaroutercastallowallips", - "displayName": "Allow Google Cast to connect to Cast devices on all IP addresses", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting", + "displayName": "Script ActiveX controls marked safe for scripting", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_mediaroutercastallowallips_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_mediaroutercastallowallips_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_metricsreportingenabled", - "displayName": "Enable usage and crash-related data reporting", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_iz_partname1405", + "displayName": "Script ActiveX controls marked safe for scripting", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_metricsreportingenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_iz_partname1405_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_metricsreportingenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_iz_partname1405_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_iz_partname1405_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions", - "displayName": "Enable network prediction", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets", + "displayName": "Scripting of Java applets", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_networkpredictionoptions", - "displayName": "Enable network prediction (Device)", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_iz_partname1402", + "displayName": "Scripting of Java applets", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_networkpredictionoptions_0", - "displayName": "Predict network actions on any network connection", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_iz_partname1402_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_networkpredictionoptions_1", - "displayName": "Predict network actions on any network that is not cellular.\r\n(Deprecated in 50, removed in 52. After 52, if value 1 is set, it will be treated as 0 - predict network actions on any network connection.)", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_iz_partname1402_3", + "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_networkpredictionoptions_2", - "displayName": "Don't predict network actions on any network connection", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_iz_partname1402_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_overridesecurityrestrictionsoninsecureorigin", - "displayName": "Control where security restrictions on insecure origins apply", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles", + "displayName": "Show security warning for potentially unsafe files", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_overridesecurityrestrictionsoninsecureorigin_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_overridesecurityrestrictionsoninsecureorigin_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_overridesecurityrestrictionsoninsecureorigin_overridesecurityrestrictionsoninsecureorigindesc", - "displayName": "Control where security restrictions on insecure origins apply (Device)", - "options": null + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806", + "displayName": "Launching programs and unsafe files", + "options": [ + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_0", + "displayName": "Enable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_1", + "displayName": "Prompt", + "description": null + } + ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_proactiveauthenabled", - "displayName": "Enable Proactive Authentication", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode", + "displayName": "Turn on Protected Mode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_proactiveauthenabled_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_proactiveauthenabled_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promotionaltabsenabled", - "displayName": "Enable full-tab promotional content", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_iz_partname2500", + "displayName": "Protected Mode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promotionaltabsenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_iz_partname2500_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promotionaltabsenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_iz_partname2500_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promptfordownloadlocation", - "displayName": "Ask where to save downloaded files", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker", + "displayName": "Use Pop-up Blocker", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promptfordownloadlocation_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promptfordownloadlocation_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_quicallowed", - "displayName": "Allow QUIC protocol", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_iz_partname1809", + "displayName": "Use Pop-up Blocker", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_quicallowed_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_iz_partname1809_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_quicallowed_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_iz_partname1809_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_applicationlocalevalue_recommended", - "displayName": "Set application locale", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictfiledownloadinternetexplorerprocesses", + "displayName": "Internet Explorer Processes", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_applicationlocalevalue_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictfiledownloadinternetexplorerprocesses_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_applicationlocalevalue_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_restrictfiledownloadinternetexplorerprocesses_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_applicationlocalevalue_recommended_applicationlocalevalue", - "displayName": "Application locale (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofilladdressenabled_recommended", - "displayName": "Enable AutoFill for addresses", + "id": "device_vendor_msft_policy_config_internetexplorer_scriptedwindowsecurityrestrictionsinternetexplorerprocesses", + "displayName": "Internet Explorer Processes", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofilladdressenabled_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_scriptedwindowsecurityrestrictionsinternetexplorerprocesses_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofilladdressenabled_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_scriptedwindowsecurityrestrictionsinternetexplorerprocesses_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofillcreditcardenabled_recommended", - "displayName": "Enable AutoFill for credit cards", + "id": "device_vendor_msft_policy_config_internetexplorer_searchproviderlist", + "displayName": "Restrict search providers to a specific list", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofillcreditcardenabled_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_searchproviderlist_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofillcreditcardenabled_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_searchproviderlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_backgroundmodeenabled_recommended", - "displayName": "Continue running background apps after Microsoft Edge closes", + "id": "device_vendor_msft_policy_config_internetexplorer_securityzonesuseonlymachinesettings", + "displayName": "Security Zones: Use only machine settings", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_backgroundmodeenabled_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_securityzonesuseonlymachinesettings_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_backgroundmodeenabled_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_securityzonesuseonlymachinesettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_blockthirdpartycookies_recommended", - "displayName": "Block third party cookies", + "id": "device_vendor_msft_policy_config_internetexplorer_sendsitesnotinenterprisesitelisttoedge", + "displayName": "Send all sites not included in the Enterprise Mode Site List to Microsoft Edge.", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_blockthirdpartycookies_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_sendsitesnotinenterprisesitelisttoedge_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_blockthirdpartycookies_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_sendsitesnotinenterprisesitelisttoedge_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloaddirectory_recommended", - "displayName": "Set download directory", + "id": "device_vendor_msft_policy_config_internetexplorer_specifyuseofactivexinstallerservice", + "displayName": "Specify use of ActiveX Installer Service for installation of ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloaddirectory_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_specifyuseofactivexinstallerservice_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloaddirectory_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_specifyuseofactivexinstallerservice_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloaddirectory_recommended_downloaddirectory", - "displayName": "Set download directory (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended", - "displayName": "Allow download restrictions", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources", + "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions", - "displayName": "Download restrictions (Device)", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_iz_partname1406", + "displayName": "Access data sources across domains", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_0", - "displayName": "No special restrictions", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_1", - "displayName": "Block dangerous downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_iz_partname1406_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_2", - "displayName": "Block potentially dangerous downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_iz_partname1406_3", + "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_3", - "displayName": "Block all downloads", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_iz_partname1406_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_favoritesbarenabled_recommended", - "displayName": "Enable favorites bar", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_favoritesbarenabled_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_favoritesbarenabled_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importautofillformdata_recommended", - "displayName": "Allow importing of autofill form data", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "displayName": "Automatic prompting for ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importautofillformdata_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importautofillformdata_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importfavorites_recommended", - "displayName": "Allow importing of favorites", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads", + "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importfavorites_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importfavorites_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importhistory_recommended", - "displayName": "Allow importing of browsing history", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "displayName": "Automatic prompting for file downloads", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importhistory_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importhistory_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importpaymentinfo_recommended", - "displayName": "Allow importing of payment info", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads", + "displayName": "Allow font downloads", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importpaymentinfo_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importpaymentinfo_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsavedpasswords_recommended", - "displayName": "Allow importing of saved passwords", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_iz_partname1604", + "displayName": "Allow font downloads", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsavedpasswords_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_iz_partname1604_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsavedpasswords_recommended_1", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsearchengine_recommended", - "displayName": "Allow importing of search engine settings", - "options": [ - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsearchengine_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_iz_partname1604_3", + "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsearchengine_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_iz_partname1604_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended", - "displayName": "Enable network prediction", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_networkpredictionoptions", - "displayName": "Enable network prediction (Device)", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_iz_partname2101", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_networkpredictionoptions_0", - "displayName": "Predict network actions on any network connection", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_iz_partname2101_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_networkpredictionoptions_1", - "displayName": "Predict network actions on any network that is not cellular.\r\n(Deprecated in 50, removed in 52. After 52, if value 1 is set, it will be treated as 0 - predict network actions on any network connection.)", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_iz_partname2101_3", + "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_networkpredictionoptions_2", - "displayName": "Don't predict network actions on any network connection", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_iz_partname2101_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_resolvenavigationerrorsusewebservice_recommended", - "displayName": "Enable resolution of navigation errors using a web service", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_resolvenavigationerrorsusewebservice_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_resolvenavigationerrorsusewebservice_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_searchsuggestenabled_recommended", - "displayName": "Enable search suggestions", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_searchsuggestenabled_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_searchsuggestenabled_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_syncdisabled_recommended", - "displayName": "Disable synchronization of data using Microsoft sync services", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets", + "displayName": "Allow scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_syncdisabled_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_syncdisabled_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_translateenabled_recommended", - "displayName": "Enable Translate", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_iz_partname1209", + "displayName": "Scriptlets", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_translateenabled_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_iz_partname1209_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_translateenabled_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_iz_partname1209_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~contentsettings_recommended_registeredprotocolhandlers_recommended", - "displayName": "Register protocol handlers", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie", + "displayName": "Turn on SmartScreen Filter scan", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~contentsettings_recommended_registeredprotocolhandlers_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~contentsettings_recommended_registeredprotocolhandlers_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~contentsettings_recommended_registeredprotocolhandlers_recommended_registeredprotocolhandlers", - "displayName": "Register protocol handlers (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordmanagerenabled_recommended", - "displayName": "Enable saving passwords to the password manager", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_iz_partname2301", + "displayName": "Use SmartScreen Filter", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordmanagerenabled_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_iz_partname2301_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordmanagerenabled_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_iz_partname2301_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printheaderfooter_recommended", - "displayName": "Print headers and footers", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence", + "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printheaderfooter_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printheaderfooter_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printpreviewusesystemdefaultprinter_recommended", - "displayName": "Set the system default printer as the default printer", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_iz_partname1606", + "displayName": "Userdata persistence", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printpreviewusesystemdefaultprinter_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_iz_partname1606_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printpreviewusesystemdefaultprinter_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_iz_partname1606_3", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenenabled_recommended", - "displayName": "Configure Microsoft Defender SmartScreen", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols", + "displayName": "Don't run antimalware programs against ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenenabled_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenenabled_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepageisnewtabpage_recommended", - "displayName": "Set the new tab page as the home page", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", + "displayName": "Don't run antimalware programs against ActiveX controls", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepageisnewtabpage_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepageisnewtabpage_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", + "displayName": "Disable", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepagelocation_recommended", - "displayName": "Configure the home page URL", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols", + "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepagelocation_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepagelocation_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepagelocation_recommended_homepagelocation", - "displayName": "Home page URL (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_newtabpagelocation_recommended", - "displayName": "Configure the new tab page URL", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201", + "displayName": "Initialize and script ActiveX controls not marked as safe", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_newtabpagelocation_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_newtabpagelocation_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "displayName": "Disable", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_newtabpagelocation_recommended_newtabpagelocation", - "displayName": "New tab page URL (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended", - "displayName": "Action to take on startup", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions", + "displayName": "Java permissions", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup", - "displayName": "Action to take on startup (Device)", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00", + "displayName": "Java permissions", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup_5", - "displayName": "Open a new tab", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_65536", + "displayName": "High safety", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup_1", - "displayName": "Restore the last session", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_131072", + "displayName": "Medium safety", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup_4", - "displayName": "Open a list of URLs", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_196608", + "displayName": "Low safety", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartupurls_recommended", - "displayName": "Sites to open when the browser starts", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartupurls_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_8388608", + "displayName": "Custom", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartupurls_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_0", + "displayName": "Disable Java", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartupurls_recommended_restoreonstartupurlsdesc", - "displayName": "Sites to open when the browser starts (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_showhomebutton_recommended", - "displayName": "Show Home button on toolbar", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonelogonoptions", + "displayName": "Logon options", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_showhomebutton_recommended_0", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonelogonoptions_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_showhomebutton_recommended_1", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonelogonoptions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification", - "displayName": "Notify a user that a browser restart is recommended or required for pending updates", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonelogonoptions_iz_partname1a00", + "displayName": "Logon options (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonelogonoptions_iz_partname1a00_196608", + "displayName": "Anonymous logon", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonelogonoptions_iz_partname1a00_131072", + "displayName": "Automatic logon only in Intranet zone", "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_relaunchnotification", - "displayName": "Notify a user that a browser restart is recommended or required for pending updates (Device)", - "options": [ + }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_relaunchnotification_1", - "displayName": "Recommended - Show a recurring prompt to the user indicating that a restart is recommended", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonelogonoptions_iz_partname1a00_0", + "displayName": "Automatic logon with current username and password", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_relaunchnotification_2", - "displayName": "Required - Show a recurring prompt to the user indicating that a restart is required", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonelogonoptions_iz_partname1a00_65536", + "displayName": "Prompt for user name and password", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotificationperiod", - "displayName": "Set the time period for update notifications", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotificationperiod_0", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotificationperiod_1", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotificationperiod_relaunchnotificationperiod", - "displayName": "Set the time period for update notifications: (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_requireonlinerevocationchecksforlocalanchors", - "displayName": "Specify if online OCSP/CRL checks are required for local trust anchors", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_requireonlinerevocationchecksforlocalanchors_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_iz_partname1607_0", + "displayName": "Enable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_requireonlinerevocationchecksforlocalanchors_1", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_resolvenavigationerrorsusewebservice", - "displayName": "Enable resolution of navigation errors using a web service", - "options": [ - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_resolvenavigationerrorsusewebservice_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_iz_partname1607_3", + "displayName": "Disable", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_resolvenavigationerrorsusewebservice_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_iz_partname1607_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_restrictsignintopattern", - "displayName": "Restrict which accounts can be used to sign in to Microsoft Edge", + "id": "device_vendor_msft_policy_config_kerberos_allowforestsearchorder", + "displayName": "Use forest search order", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_restrictsignintopattern_0", + "id": "device_vendor_msft_policy_config_kerberos_allowforestsearchorder_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_restrictsignintopattern_1", + "id": "device_vendor_msft_policy_config_kerberos_allowforestsearchorder_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_restrictsignintopattern_restrictsignintopattern", - "displayName": "Restrict which accounts can be used as Microsoft Edge primary accounts (Device)", + "id": "device_vendor_msft_policy_config_kerberos_allowforestsearchorder_forestsearchlist", + "displayName": "Forests to Search (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_runallflashinallowmode", - "displayName": "Extend Adobe Flash content setting to all content", + "id": "device_vendor_msft_policy_config_kerberos_cloudkerberosticketretrievalenabled", + "displayName": "Cloud Kerberos Ticket Retrieval Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_runallflashinallowmode_0", + "id": "device_vendor_msft_policy_config_kerberos_cloudkerberosticketretrievalenabled_0", "displayName": "Disabled", - "description": null + "description": "Disabled." }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_runallflashinallowmode_1", + "id": "device_vendor_msft_policy_config_kerberos_cloudkerberosticketretrievalenabled_1", "displayName": "Enabled", - "description": null + "description": "Enabled." } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_savingbrowserhistorydisabled", - "displayName": "Disable saving browser history", + "id": "device_vendor_msft_policy_config_kerberos_kerberosclientsupportsclaimscompoundarmor", + "displayName": "Kerberos client support for claims, compound authentication and Kerberos armoring", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_savingbrowserhistorydisabled_0", + "id": "device_vendor_msft_policy_config_kerberos_kerberosclientsupportsclaimscompoundarmor_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_savingbrowserhistorydisabled_1", + "id": "device_vendor_msft_policy_config_kerberos_kerberosclientsupportsclaimscompoundarmor_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_searchsuggestenabled", - "displayName": "Enable search suggestions", + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmconfiguration", + "displayName": "PK Init Hash Algorithm Configuration", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_searchsuggestenabled_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmconfiguration_0", + "displayName": "Disabled / Not Configured", + "description": "Disabled / Not Configured" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_searchsuggestenabled_1", + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmconfiguration_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_securitykeypermitattestation", - "displayName": "Websites or domains that don't need permission to use direct Security Key attestation", + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha1", + "displayName": "PK Init Hash Algorithm SHA1", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_securitykeypermitattestation_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha1_0", + "displayName": "Not Supported", + "description": "Not Supported" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_securitykeypermitattestation_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha1_1", + "displayName": "Default", + "description": "Default" + }, + { + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha1_2", + "displayName": "Audited", + "description": "Audited" + }, + { + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha1_3", + "displayName": "Supported", + "description": "Supported" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_securitykeypermitattestation_securitykeypermitattestationdesc", - "displayName": "Websites or domains that don't need permission to use direct Security Key attestation (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendintranettointernetexplorer", - "displayName": "Send all intranet sites to Internet Explorer", + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha256", + "displayName": "PK Init Hash Algorithm SHA256", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendintranettointernetexplorer_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha256_0", + "displayName": "Not Supported", + "description": "Not Supported" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendintranettointernetexplorer_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha256_1", + "displayName": "Default", + "description": "Default" + }, + { + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha256_2", + "displayName": "Audited", + "description": "Audited" + }, + { + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha256_3", + "displayName": "Supported", + "description": "Supported" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendsiteinfotoimproveservices", - "displayName": "Send site information to improve Microsoft services", + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha384", + "displayName": "PK Init Hash Algorithm SHA384", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendsiteinfotoimproveservices_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha384_0", + "displayName": "Not Supported", + "description": "Not Supported" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendsiteinfotoimproveservices_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha384_1", + "displayName": "Default", + "description": "Default" + }, + { + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha384_2", + "displayName": "Audited", + "description": "Audited" + }, + { + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha384_3", + "displayName": "Supported", + "description": "Supported" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_showofficeshortcutinfavoritesbar", - "displayName": "Show Microsoft Office shortcut in favorites bar", + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha512", + "displayName": "PK Init Hash Algorithm SHA512", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_showofficeshortcutinfavoritesbar_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha512_0", + "displayName": "Not Supported", + "description": "Not Supported" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_showofficeshortcutinfavoritesbar_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha512_1", + "displayName": "Default", + "description": "Default" + }, + { + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha512_2", + "displayName": "Audited", + "description": "Audited" + }, + { + "id": "device_vendor_msft_policy_config_kerberos_pkinithashalgorithmsha512_3", + "displayName": "Supported", + "description": "Supported" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_siteperprocess", - "displayName": "Enable site isolation for every site", + "id": "device_vendor_msft_policy_config_kerberos_requirekerberosarmoring", + "displayName": "Fail authentication requests when Kerberos armoring is not available", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_siteperprocess_0", + "id": "device_vendor_msft_policy_config_kerberos_requirekerberosarmoring_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_siteperprocess_1", + "id": "device_vendor_msft_policy_config_kerberos_requirekerberosarmoring_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellcheckenabled", - "displayName": "Enable spellcheck", + "id": "device_vendor_msft_policy_config_kerberos_requirestrictkdcvalidation", + "displayName": "Require strict KDC validation", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellcheckenabled_0", + "id": "device_vendor_msft_policy_config_kerberos_requirestrictkdcvalidation_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellcheckenabled_1", + "id": "device_vendor_msft_policy_config_kerberos_requirestrictkdcvalidation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellchecklanguage", - "displayName": "Enable specific spellcheck languages", + "id": "device_vendor_msft_policy_config_kerberos_setmaximumcontexttokensize", + "displayName": "Set maximum Kerberos SSPI context token buffer size", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellchecklanguage_0", + "id": "device_vendor_msft_policy_config_kerberos_setmaximumcontexttokensize_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellchecklanguage_1", + "id": "device_vendor_msft_policy_config_kerberos_setmaximumcontexttokensize_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellchecklanguage_spellchecklanguagedesc", - "displayName": "Enable specific spellcheck languages (Device)", + "id": "device_vendor_msft_policy_config_kerberos_setmaximumcontexttokensize_maxtokensize", + "displayName": "Maximum size (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslerroroverrideallowed", - "displayName": "Allow users to proceed from the HTTPS warning page", + "id": "device_vendor_msft_policy_config_kerberos_upnnamehints", + "displayName": "UPN Name Hints", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_kioskbrowser_blockedurlexceptions", + "displayName": "Blocked Url Exceptions", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_kioskbrowser_blockedurls", + "displayName": "Blocked Urls", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_kioskbrowser_defaulturl", + "displayName": "Default URL", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_kioskbrowser_enableendsessionbutton", + "displayName": "Enable End Session Button", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslerroroverrideallowed_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_kioskbrowser_enableendsessionbutton_1", + "displayName": "Enable", + "description": "Enable" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslerroroverrideallowed_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_kioskbrowser_enableendsessionbutton_0", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin", - "displayName": "Minimum TLS version enabled", + "id": "device_vendor_msft_policy_config_kioskbrowser_enablehomebutton", + "displayName": "Enable Home Button", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_kioskbrowser_enablehomebutton_1", + "displayName": "Enable", + "description": "Enable" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_kioskbrowser_enablehomebutton_0", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_sslversionmin", - "displayName": "Minimum SSL version enabled (Device)", + "id": "device_vendor_msft_policy_config_kioskbrowser_enablenavigationbuttons", + "displayName": "Enable Navigation Buttons", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_sslversionmin_tls1", - "displayName": "TLS 1.0", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_sslversionmin_tls1.1", - "displayName": "TLS 1.1", - "description": null + "id": "device_vendor_msft_policy_config_kioskbrowser_enablenavigationbuttons_1", + "displayName": "Enable", + "description": "Enable" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_sslversionmin_tls1.2", - "displayName": "TLS 1.2", - "description": null + "id": "device_vendor_msft_policy_config_kioskbrowser_enablenavigationbuttons_0", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_suppressunsupportedoswarning", - "displayName": "Suppress the unsupported OS warning", + "id": "device_vendor_msft_policy_config_kioskbrowser_restartonidletime", + "displayName": "Restart On Idle Time", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_lanmanserver_auditclientdoesnotsupportencryption", + "displayName": "Audit Client Does Not Support Encryption", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_suppressunsupportedoswarning_0", + "id": "device_vendor_msft_policy_config_lanmanserver_auditclientdoesnotsupportencryption_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_suppressunsupportedoswarning_1", + "id": "device_vendor_msft_policy_config_lanmanserver_auditclientdoesnotsupportencryption_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_syncdisabled", - "displayName": "Disable synchronization of data using Microsoft sync services", + "id": "device_vendor_msft_policy_config_lanmanserver_auditclientdoesnotsupportsigning", + "displayName": "Audit Client Does Not Support Signing", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_syncdisabled_0", + "id": "device_vendor_msft_policy_config_lanmanserver_auditclientdoesnotsupportsigning_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_syncdisabled_1", + "id": "device_vendor_msft_policy_config_lanmanserver_auditclientdoesnotsupportsigning_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_tablifecyclesenabled", - "displayName": "Configure tab lifecycles", + "id": "device_vendor_msft_policy_config_lanmanserver_auditinsecureguestlogon", + "displayName": "Audit Insecure Guest Logon", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_tablifecyclesenabled_0", + "id": "device_vendor_msft_policy_config_lanmanserver_auditinsecureguestlogon_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_tablifecyclesenabled_1", + "id": "device_vendor_msft_policy_config_lanmanserver_auditinsecureguestlogon_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_taskmanagerendprocessenabled", - "displayName": "Enable ending processes in the Browser task manager", + "id": "device_vendor_msft_policy_config_lanmanserver_authratelimiterdelayinms", + "displayName": "Auth Rate Limiter Delay In Ms", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_lanmanserver_enableauthratelimiter", + "displayName": "Enable Auth Rate Limiter", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_taskmanagerendprocessenabled_0", + "id": "device_vendor_msft_policy_config_lanmanserver_enableauthratelimiter_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_taskmanagerendprocessenabled_1", + "id": "device_vendor_msft_policy_config_lanmanserver_enableauthratelimiter_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_translateenabled", - "displayName": "Enable Translate", + "id": "device_vendor_msft_policy_config_lanmanserver_enablemailslots", + "displayName": "Enable Mailslots", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_translateenabled_0", + "id": "device_vendor_msft_policy_config_lanmanserver_enablemailslots_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_translateenabled_1", + "id": "device_vendor_msft_policy_config_lanmanserver_enablemailslots_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlallowlist", - "displayName": "Define a list of allowed URLs", + "id": "device_vendor_msft_policy_config_lanmanserver_maxsmb2dialect", + "displayName": "Max Smb2 Dialect", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlallowlist_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_lanmanserver_maxsmb2dialect_514", + "displayName": "SMB 2.0.2", + "description": "SMB 2.0.2" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlallowlist_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_lanmanserver_maxsmb2dialect_528", + "displayName": "SMB 2.1.0", + "description": "SMB 2.1.0" + }, + { + "id": "device_vendor_msft_policy_config_lanmanserver_maxsmb2dialect_768", + "displayName": "SMB 3.0.0", + "description": "SMB 3.0.0" + }, + { + "id": "device_vendor_msft_policy_config_lanmanserver_maxsmb2dialect_770", + "displayName": "SMB 3.0.2", + "description": "SMB 3.0.2" + }, + { + "id": "device_vendor_msft_policy_config_lanmanserver_maxsmb2dialect_785", + "displayName": "SMB 3.1.1", + "description": "SMB 3.1.1" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlallowlist_urlallowlistdesc", - "displayName": "Define a list of allowed URLs (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlblocklist", - "displayName": "Block access to a list of URLs", + "id": "device_vendor_msft_policy_config_lanmanserver_minsmb2dialect", + "displayName": "Min Smb2 Dialect", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlblocklist_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_lanmanserver_minsmb2dialect_514", + "displayName": "SMB 2.0.2", + "description": "SMB 2.0.2" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlblocklist_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_lanmanserver_minsmb2dialect_528", + "displayName": "SMB 2.1.0", + "description": "SMB 2.1.0" + }, + { + "id": "device_vendor_msft_policy_config_lanmanserver_minsmb2dialect_768", + "displayName": "SMB 3.0.0", + "description": "SMB 3.0.0" + }, + { + "id": "device_vendor_msft_policy_config_lanmanserver_minsmb2dialect_770", + "displayName": "SMB 3.0.2", + "description": "SMB 3.0.2" + }, + { + "id": "device_vendor_msft_policy_config_lanmanserver_minsmb2dialect_785", + "displayName": "SMB 3.1.1", + "description": "SMB 3.1.1" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlblocklist_urlblocklistdesc", - "displayName": "Block access to a list of URLs (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userdatadir", - "displayName": "Set the user data directory", + "id": "device_vendor_msft_policy_config_lanmanworkstation_auditinsecureguestlogon", + "displayName": "Audit Insecure Guest Logon", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userdatadir_0", + "id": "device_vendor_msft_policy_config_lanmanworkstation_auditinsecureguestlogon_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userdatadir_1", + "id": "device_vendor_msft_policy_config_lanmanworkstation_auditinsecureguestlogon_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userdatadir_userdatadir", - "displayName": "Set the user data directory (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userfeedbackallowed", - "displayName": "Allow user feedback", + "id": "device_vendor_msft_policy_config_lanmanworkstation_auditserverdoesnotsupportencryption", + "displayName": "Audit Server Does Not Support Encryption", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userfeedbackallowed_0", + "id": "device_vendor_msft_policy_config_lanmanworkstation_auditserverdoesnotsupportencryption_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userfeedbackallowed_1", + "id": "device_vendor_msft_policy_config_lanmanworkstation_auditserverdoesnotsupportencryption_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowed", - "displayName": "Allow or block video capture", + "id": "device_vendor_msft_policy_config_lanmanworkstation_auditserverdoesnotsupportsigning", + "displayName": "Audit Server Does Not Support Signing", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowed_0", + "id": "device_vendor_msft_policy_config_lanmanworkstation_auditserverdoesnotsupportsigning_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowed_1", + "id": "device_vendor_msft_policy_config_lanmanworkstation_auditserverdoesnotsupportsigning_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowedurls", - "displayName": "Sites that can access video capture devices without requesting permission", + "id": "device_vendor_msft_policy_config_lanmanworkstation_enableinsecureguestlogons", + "displayName": "Enable Insecure Guest Logons", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowedurls_0", + "id": "device_vendor_msft_policy_config_lanmanworkstation_enableinsecureguestlogons_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowedurls_1", + "id": "device_vendor_msft_policy_config_lanmanworkstation_enableinsecureguestlogons_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowedurls_videocaptureallowedurlsdesc", - "displayName": "Sites that can access video capture devices without requesting permission (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webdriveroverridesincompatiblepolicies", - "displayName": "Allow WebDriver to Override Incompatible Policies (deprecated)", + "id": "device_vendor_msft_policy_config_lanmanworkstation_enablemailslots", + "displayName": "Enable Mailslots", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webdriveroverridesincompatiblepolicies_0", + "id": "device_vendor_msft_policy_config_lanmanworkstation_enablemailslots_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webdriveroverridesincompatiblepolicies_1", + "id": "device_vendor_msft_policy_config_lanmanworkstation_enablemailslots_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling", - "displayName": "Restrict exposure of local IP address by WebRTC", + "id": "device_vendor_msft_policy_config_lanmanworkstation_maxsmb2dialect", + "displayName": "Max Smb2 Dialect", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_lanmanworkstation_maxsmb2dialect_514", + "displayName": "SMB 2.0.2", + "description": "SMB 2.0.2" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_lanmanworkstation_maxsmb2dialect_528", + "displayName": "SMB 2.1.0", + "description": "SMB 2.1.0" + }, + { + "id": "device_vendor_msft_policy_config_lanmanworkstation_maxsmb2dialect_768", + "displayName": "SMB 3.0.0", + "description": "SMB 3.0.0" + }, + { + "id": "device_vendor_msft_policy_config_lanmanworkstation_maxsmb2dialect_770", + "displayName": "SMB 3.0.2", + "description": "SMB 3.0.2" + }, + { + "id": "device_vendor_msft_policy_config_lanmanworkstation_maxsmb2dialect_785", + "displayName": "SMB 3.1.1", + "description": "SMB 3.1.1" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling", - "displayName": "Restrict exposure of localhost IP address by WebRTC (Device)", + "id": "device_vendor_msft_policy_config_lanmanworkstation_minsmb2dialect", + "displayName": "Min Smb2 Dialect", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling_default", - "displayName": "Allow all interfaces. This exposes the local IP address", - "description": null + "id": "device_vendor_msft_policy_config_lanmanworkstation_minsmb2dialect_514", + "displayName": "SMB 2.0.2", + "description": "SMB 2.0.2" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling_default_public_and_private_interfaces", - "displayName": "Allow public and private interfaces over http default route. This exposes the local IP address", - "description": null + "id": "device_vendor_msft_policy_config_lanmanworkstation_minsmb2dialect_528", + "displayName": "SMB 2.1.0", + "description": "SMB 2.1.0" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling_default_public_interface_only", - "displayName": "Allow public interface over http default route. This doesn't expose the local IP address", - "description": null + "id": "device_vendor_msft_policy_config_lanmanworkstation_minsmb2dialect_768", + "displayName": "SMB 3.0.0", + "description": "SMB 3.0.0" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling_disable_non_proxied_udp", - "displayName": "Use TCP unless proxy server supports UDP. This doesn't expose the local IP address", - "description": null + "id": "device_vendor_msft_policy_config_lanmanworkstation_minsmb2dialect_770", + "displayName": "SMB 3.0.2", + "description": "SMB 3.0.2" + }, + { + "id": "device_vendor_msft_policy_config_lanmanworkstation_minsmb2dialect_785", + "displayName": "SMB 3.1.1", + "description": "SMB 3.1.1" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtcudpportrange", - "displayName": "Restrict the range of local UDP ports used by WebRTC", + "id": "device_vendor_msft_policy_config_lanmanworkstation_requireencryption", + "displayName": "Require Encryption", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtcudpportrange_0", + "id": "device_vendor_msft_policy_config_lanmanworkstation_requireencryption_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtcudpportrange_1", + "id": "device_vendor_msft_policy_config_lanmanworkstation_requireencryption_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtcudpportrange_webrtcudpportrange", - "displayName": "Restrict the range of local UDP ports used by WebRTC (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_wpadquickcheckenabled", - "displayName": "Set WPAD optimization", + "id": "device_vendor_msft_policy_config_licensing_allowwindowsentitlementreactivation", + "displayName": "Allow Windows Entitlement Reactivation", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_wpadquickcheckenabled_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_licensing_allowwindowsentitlementreactivation_0", + "displayName": "Block", + "description": "Disable Windows license reactivation on managed devices." }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_wpadquickcheckenabled_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_licensing_allowwindowsentitlementreactivation_1", + "displayName": "Allow", + "description": "Enable Windows license reactivation on managed devices." } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_autoselectcertificateforurls", - "displayName": "Automatically select client certificates for these sites", + "id": "device_vendor_msft_policy_config_licensing_disallowkmsclientonlineavsvalidation", + "displayName": "Disallow KMS Client Online AVS Validation", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_autoselectcertificateforurls_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_licensing_disallowkmsclientonlineavsvalidation_0", + "displayName": "Block", + "description": "Disabled." }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_autoselectcertificateforurls_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_licensing_disallowkmsclientonlineavsvalidation_1", + "displayName": "Allow", + "description": "Enabled." } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_autoselectcertificateforurls_autoselectcertificateforurlsdesc", - "displayName": "Automatically select client certificates for these sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesallowedforurls", - "displayName": "Allow cookies on specific sites", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_blockmicrosoftaccounts", + "displayName": "Accounts Block Microsoft Accounts", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesallowedforurls_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_blockmicrosoftaccounts_0", + "displayName": "Disabled (users will be able to use Microsoft accounts with Windows).", + "description": "Disabled (users will be able to use Microsoft accounts with Windows)." }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesallowedforurls_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_blockmicrosoftaccounts_1", + "displayName": "Enabled (users can't add Microsoft accounts).", + "description": "Enabled (users can't add Microsoft accounts)." + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_blockmicrosoftaccounts_3", + "displayName": "Users can't add or log on with Microsoft accounts", + "description": "Users can't add or log on with Microsoft accounts" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesallowedforurls_cookiesallowedforurlsdesc", - "displayName": "Allow cookies on specific sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesblockedforurls", - "displayName": "Block cookies on specific sites", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_enableadministratoraccountstatus", + "displayName": "Accounts Enable Administrator Account Status", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesblockedforurls_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_enableadministratoraccountstatus_1", + "displayName": "Enable", + "description": "Enable" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesblockedforurls_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_enableadministratoraccountstatus_0", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesblockedforurls_cookiesblockedforurlsdesc", - "displayName": "Block cookies on specific sites (Device)", - "options": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_enableguestaccountstatus", + "displayName": "Accounts Enable Guest Account Status", + "options": [ + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_enableguestaccountstatus_1", + "displayName": "Enable", + "description": "Enable" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_enableguestaccountstatus_0", + "displayName": "Disable", + "description": "Disable" + } + ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiessessiononlyforurls", - "displayName": "Limit cookies from specific websites to the current session", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_limitlocalaccountuseofblankpasswordstoconsolelogononly", + "displayName": "Accounts Limit Local Account Use Of Blank Passwords To Console Logon Only", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiessessiononlyforurls_0", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_limitlocalaccountuseofblankpasswordstoconsolelogononly_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiessessiononlyforurls_1", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_limitlocalaccountuseofblankpasswordstoconsolelogononly_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiessessiononlyforurls_cookiessessiononlyforurlsdesc", - "displayName": "Limit cookies from specific websites to the current session (Device)", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_renameadministratoraccount", + "displayName": "Accounts Rename Administrator Account", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting", - "displayName": "Configure cookies", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_accounts_renameguestaccount", + "displayName": "Accounts Rename Guest Account", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_audit_audittheuseofbackupandrestoreprivilege", + "displayName": "Audit The Use Of Backup And Restoreprivilege", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_audit_audittheuseofbackupandrestoreprivilege_aq==", + "displayName": "Enable", + "description": "Enable" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_audit_audittheuseofbackupandrestoreprivilege_aa==", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_defaultcookiessetting", - "displayName": "Configure cookies (Device)", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_audit_forceauditpolicysubcategorysettingstooverrideauditpolicycategorysettings", + "displayName": "Audit Force Audit Policy Subcategory Settings To Override Audit Policy Category Settings", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_audit_shutdownsystemimmediatelyifunabletologsecurityaudits", + "displayName": "Audit Shutdown System Immediately If Unable To Log Security Audits", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_devices_allowedtoformatandejectremovablemedia", + "displayName": "Devices Allowed To Format And Eject Removable Media", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_devices_allowundockwithouthavingtologon", + "displayName": "Devices Allow Undock Without Having To Logon", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_defaultcookiessetting_1", - "displayName": "Let all sites create cookies", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_defaultcookiessetting_2", - "displayName": "Don't let any site create cookies", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_devices_allowundockwithouthavingtologon_1", + "displayName": "Allow", + "description": "Allow" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_defaultcookiessetting_4", - "displayName": "Keep cookies for the duration of the session", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_devices_allowundockwithouthavingtologon_0", + "displayName": "Block", + "description": "Block" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting", - "displayName": "Default geolocation setting", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_devices_preventusersfrominstallingprinterdriverswhenconnectingtosharedprinters", + "displayName": "Devices Prevent Users From Installing Printer Drivers When Connecting To Shared Printers", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_devices_preventusersfrominstallingprinterdriverswhenconnectingtosharedprinters_1", + "displayName": "Enable", + "description": "Enable" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_devices_preventusersfrominstallingprinterdriverswhenconnectingtosharedprinters_0", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_defaultgeolocationsetting", - "displayName": "Default geolocation setting (Device)", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_devices_restrictcdromaccesstolocallyloggedonuseronly", + "displayName": "Devices Restrict CDROM Access To Locally Logged On User Only", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_devices_restrictfloppyaccesstolocallyloggedonuseronly", + "displayName": "Devices Restrict Floppy Access To Locally Logged On User Only", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_domainmember_digitallyencryptorsignsecurechanneldataalways", + "displayName": "Domain Member Digitally Encrypt Or Sign Secure Channel Data Always", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_domainmember_digitallyencryptsecurechanneldatawhenpossible", + "displayName": "Domain Member Digitally Encrypt Secure Channel Data When Possible", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_domainmember_digitallysignsecurechanneldatawhenpossible", + "displayName": "Domain Member Digitally Sign Secure Channel Data When Possible", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_domainmember_disablemachineaccountpasswordchanges", + "displayName": "Domain Member Disable Machine Account Password Changes", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_domainmember_maximummachineaccountpasswordage", + "displayName": "Domain Member Maximum Machine Account Password Age", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_domainmember_requirestrongsessionkey", + "displayName": "Domain Member Require Strong Session Key", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_displayuserinformationwhenthesessionislocked", + "displayName": "Interactive Logon Display User Information When The Session Is Locked", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_defaultgeolocationsetting_1", - "displayName": "Allow sites to track users' physical location", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_displayuserinformationwhenthesessionislocked_1", + "displayName": "User display name, domain and user names", + "description": "User display name, domain and user names" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_defaultgeolocationsetting_2", - "displayName": "Don't allow any site to track users' physical location", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_displayuserinformationwhenthesessionislocked_2", + "displayName": "User display name only", + "description": "User display name only" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_defaultgeolocationsetting_3", - "displayName": "Ask whenever a site wants to track users' physical location", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_displayuserinformationwhenthesessionislocked_3", + "displayName": "Do not display user information", + "description": "Do not display user information" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_displayuserinformationwhenthesessionislocked_4", + "displayName": "Domain and user names only", + "description": "Domain and user names only" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting", - "displayName": "Default images setting", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotdisplaylastsignedin", + "displayName": "Interactive Logon Do Not Display Last Signed In", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotdisplaylastsignedin_0", + "displayName": "Disabled (username will be shown)", + "description": "Disabled (username will be shown)" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotdisplaylastsignedin_1", + "displayName": "Enabled (username will not be shown)", + "description": "Enabled (username will not be shown)" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_defaultimagessetting", - "displayName": "Default images setting (Device)", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotdisplayusernameatsignin", + "displayName": "Interactive Logon Do Not Display Username At Sign In", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_defaultimagessetting_1", - "displayName": "Allow all sites to show all images", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotdisplayusernameatsignin_0", + "displayName": "Disabled (username will be shown)", + "description": "Disabled (username will be shown)" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_defaultimagessetting_2", - "displayName": "Don't allow any site to show images", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotdisplayusernameatsignin_1", + "displayName": "Enabled (username will not be shown)", + "description": "Enabled (username will not be shown)" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting", - "displayName": "Default JavaScript setting", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotrequirectrlaltdel", + "displayName": "Interactive Logon Do Not Require CTRLALTDEL", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_0", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotrequirectrlaltdel_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_donotrequirectrlaltdel_1", + "displayName": "Enabled (a user is not required to press CTRL+ALT+DEL to log on)", + "description": "Enabled (a user is not required to press CTRL+ALT+DEL to log on)" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_defaultjavascriptsetting", - "displayName": "Default JavaScript setting (Device)", - "options": [ - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_defaultjavascriptsetting_1", - "displayName": "Allow all sites to run JavaScript", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_defaultjavascriptsetting_2", - "displayName": "Don't allow any site to run JavaScript", - "description": null - } - ] + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_machineaccountlockoutthreshold", + "displayName": "Interactive Logon Machine Account Lockout Threshold", + "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting", - "displayName": "Default notification setting", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_machineinactivitylimit", + "displayName": "[Deprecated] Interactive Logon Machine Inactivity Limit (Deprecated)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_0", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_machineinactivitylimit_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_machineinactivitylimit_1", + "displayName": "Enabled (session will lock after amount of inactive time exceeds the inactivity limit)", + "description": "Enabled (session will lock after amount of inactive time exceeds the inactivity limit)" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_defaultnotificationssetting", - "displayName": "Default notification setting (Device)", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_machineinactivitylimit_v2", + "displayName": "Interactive Logon Machine Inactivity Limit", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_messagetextforusersattemptingtologon", + "displayName": "Interactive Logon Message Text For Users Attempting To Log On", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_messagetitleforusersattemptingtologon", + "displayName": "Interactive Logon Message Title For Users Attempting To Log On", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_numberofpreviouslogonstocache", + "displayName": "Interactive Logon Number Of Previous Logons To Cache", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_promptusertochangepasswordbeforeexpiration", + "displayName": "Interactive Logon Prompt User To Change Password Before Expiration", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_smartcardremovalbehavior", + "displayName": "Interactive Logon Smart Card Removal Behavior", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_defaultnotificationssetting_1", - "displayName": "Allow sites to show desktop notifications", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_smartcardremovalbehavior_0", + "displayName": "No Action", + "description": "No Action" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_defaultnotificationssetting_2", - "displayName": "Don't allow any site to show desktop notifications", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_smartcardremovalbehavior_1", + "displayName": "Lock Workstation", + "description": "Lock Workstation" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_defaultnotificationssetting_3", - "displayName": "Ask every time a site wants to show desktop notifications", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_smartcardremovalbehavior_2", + "displayName": "Force Logoff", + "description": "Force Logoff" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_interactivelogon_smartcardremovalbehavior_3", + "displayName": "Disconnect Remote Desktop Session", + "description": "Disconnect Remote Desktop Session" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting", - "displayName": "Default Adobe Flash setting", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_digitallysigncommunicationsalways", + "displayName": "Microsoft Network Client Digitally Sign Communications Always", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_digitallysigncommunicationsalways_1", + "displayName": "Enable", + "description": "Enable" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_digitallysigncommunicationsalways_0", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_defaultpluginssetting", - "displayName": "Default Adobe Flash setting (Device)", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_digitallysigncommunicationsifserveragrees", + "displayName": "Microsoft Network Client Digitally Sign Communications If Server Agrees", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_defaultpluginssetting_2", - "displayName": "Block the Adobe Flash plugin", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_digitallysigncommunicationsifserveragrees_1", + "displayName": "Enable", + "description": "Enable" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_defaultpluginssetting_3", - "displayName": "Click to play", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_digitallysigncommunicationsifserveragrees_0", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting", - "displayName": "Default pop-up window setting", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_sendunencryptedpasswordtothirdpartysmbservers", + "displayName": "Microsoft Network Client Send Unencrypted Password To Third Party SMB Servers", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_sendunencryptedpasswordtothirdpartysmbservers_1", + "displayName": "Enable", + "description": "Enable" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkclient_sendunencryptedpasswordtothirdpartysmbservers_0", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_defaultpopupssetting", - "displayName": "Default pop-up window setting (Device)", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkserver_amountofidletimerequiredbeforesuspendingsession", + "displayName": "Microsoft Network Server Amount Of Idle Time Required Before Suspending Session", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkserver_digitallysigncommunicationsalways", + "displayName": "Microsoft Network Server Digitally Sign Communications Always", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_defaultpopupssetting_1", - "displayName": "Allow all sites to show pop-ups", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkserver_digitallysigncommunicationsalways_1", + "displayName": "Enable", + "description": "Enable" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_defaultpopupssetting_2", - "displayName": "Do not allow any site to show popups", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkserver_digitallysigncommunicationsalways_0", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting", - "displayName": "Control use of the Web Bluetooth API", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkserver_digitallysigncommunicationsifclientagrees", + "displayName": "Microsoft Network Server Digitally Sign Communications If Client Agrees", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkserver_digitallysigncommunicationsifclientagrees_1", + "displayName": "Enable", + "description": "Enable" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkserver_digitallysigncommunicationsifclientagrees_0", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_defaultwebbluetoothguardsetting", - "displayName": "Control use of the Web Bluetooth API (Device)", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkserver_disconnectclientswhenlogonhoursexpire", + "displayName": "Microsoft Network Server Disconnect Clients When Logon Hours Expire", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_microsoftnetworkserver_serverspntargetnamevalidationlevel", + "displayName": "Microsoft Network Server Server SPN Target Name Validation Level", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_allowanonymoussidornametranslation", + "displayName": "Network Access Allow Anonymous SID Or Name Translation", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_defaultwebbluetoothguardsetting_2", - "displayName": "Do not allow any site to request access to Bluetooth devices via the Web Bluetooth API", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_allowanonymoussidornametranslation_1", + "displayName": "Enable", + "description": "Enable" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_defaultwebbluetoothguardsetting_3", - "displayName": "Allow sites to ask the user to grant access to a nearby Bluetooth device", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_allowanonymoussidornametranslation_0", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting", - "displayName": "Control use of the WebUSB API", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_donotallowanonymousenumerationofsamaccounts", + "displayName": "Network Access Do Not Allow Anonymous Enumeration Of SAM Accounts", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_donotallowanonymousenumerationofsamaccounts_1", + "displayName": "Enabled", + "description": "Enabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_donotallowanonymousenumerationofsamaccounts_0", + "displayName": "Disabled", + "description": "Disabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_defaultwebusbguardsetting", - "displayName": "Control use of the WebUSB API (Device)", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_donotallowanonymousenumerationofsamaccountsandshares", + "displayName": "Network Access Do Not Allow Anonymous Enumeration Of Sam Accounts And Shares", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_defaultwebusbguardsetting_2", - "displayName": "Do not allow any site to request access to USB devices via the WebUSB API", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_donotallowanonymousenumerationofsamaccountsandshares_1", + "displayName": "Enabled", + "description": "Enabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_defaultwebusbguardsetting_3", - "displayName": "Allow sites to ask the user to grant access to a connected USB device", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_donotallowanonymousenumerationofsamaccountsandshares_0", + "displayName": "Disabled", + "description": "Disabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesallowedforurls", - "displayName": "Allow images on these sites", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_donotallowstorageofpasswordsandcredentialsfornetworkauthentication", + "displayName": "Network Access Do Not Allow Storage Of Passwords And Credentials For Network Authentication", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_leteveryonepermissionsapplytoanonymoususers", + "displayName": "Network Access Let Everyone Permissions Apply To Anonymous Users", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_namedpipesthatcanbeaccessedanonymously", + "displayName": "Network Access Named Pipes That Can Be Accessed Anonymously", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_remotelyaccessibleregistrypaths", + "displayName": "Network Access Remotely Accessible Registry Paths", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_remotelyaccessibleregistrypathsandsubpaths", + "displayName": "Network Access Remotely Accessible Registry Paths And Subpaths", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_restrictanonymousaccesstonamedpipesandshares", + "displayName": "Network Access Restrict Anonymous Access To Named Pipes And Shares", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesallowedforurls_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_restrictanonymousaccesstonamedpipesandshares_1", + "displayName": "Enable", + "description": "Enable" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesallowedforurls_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_restrictanonymousaccesstonamedpipesandshares_0", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesallowedforurls_imagesallowedforurlsdesc", - "displayName": "Allow images on these sites (Device)", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_restrictclientsallowedtomakeremotecallstosam", + "displayName": "Network Access Restrict Clients Allowed To Make Remote Calls To SAM", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesblockedforurls", - "displayName": "Block images on specific sites", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_sharesthatcanbeaccessedanonymously", + "displayName": "Network Access Shares That Can Be Accessed Anonymously", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networkaccess_sharingandsecuritymodelforlocalaccounts", + "displayName": "Network Access Sharing And Security Model For Local Accounts", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_allowlocalsystemnullsessionfallback", + "displayName": "Network Security Allow Local System NULL Session Fallback", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_allowlocalsystemtousecomputeridentityforntlm", + "displayName": "Network Security Allow Local System To Use Computer Identity For NTLM", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesblockedforurls_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_allowlocalsystemtousecomputeridentityforntlm_1", + "displayName": "Allow", + "description": "Allow" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesblockedforurls_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_allowlocalsystemtousecomputeridentityforntlm_0", + "displayName": "Block", + "description": "Block" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesblockedforurls_imagesblockedforurlsdesc", - "displayName": "Block images on specific sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptallowedforurls", - "displayName": "Allow JavaScript on specific sites", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_allowpku2uauthenticationrequests", + "displayName": "Network Security Allow PKU2U Authentication Requests", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptallowedforurls_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_allowpku2uauthenticationrequests_0", + "displayName": "Block", + "description": "Block" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptallowedforurls_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_allowpku2uauthenticationrequests_1", + "displayName": "Allow", + "description": "Allow" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptallowedforurls_javascriptallowedforurlsdesc", - "displayName": "Allow JavaScript on specific sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptblockedforurls", - "displayName": "Block JavaScript on specific sites", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_donotstorelanmanagerhashvalueonnextpasswordchange", + "displayName": "Network Security Do Not Store LAN Manager Hash Value On Next Password Change", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptblockedforurls_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_donotstorelanmanagerhashvalueonnextpasswordchange_1", + "displayName": "Enable", + "description": "Enable" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptblockedforurls_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_donotstorelanmanagerhashvalueonnextpasswordchange_0", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptblockedforurls_javascriptblockedforurlsdesc", - "displayName": "Block JavaScript on specific sites (Device)", - "options": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_forcelogoffwhenlogonhoursexpire", + "displayName": "Network Security Force Logoff When Logon Hours Expire", + "options": [ + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_forcelogoffwhenlogonhoursexpire_1", + "displayName": "Enable", + "description": "Enable" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_forcelogoffwhenlogonhoursexpire_0", + "displayName": "Disable", + "description": "Disable" + } + ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsallowedforurls", - "displayName": "Allow notifications on specific sites", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_lanmanagerauthenticationlevel", + "displayName": "Network Security LAN Manager Authentication Level", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsallowedforurls_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_lanmanagerauthenticationlevel_0", + "displayName": "Send LM and NTLM responses", + "description": "Send LM and NTLM responses" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsallowedforurls_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_lanmanagerauthenticationlevel_1", + "displayName": "Send LM and NTLM-use NTLMv2 session security if negotiated", + "description": "Send LM and NTLM-use NTLMv2 session security if negotiated" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_lanmanagerauthenticationlevel_2", + "displayName": "Send LM and NTLM responses only", + "description": "Send LM and NTLM responses only" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_lanmanagerauthenticationlevel_3", + "displayName": "Send NTLMv2 responses only", + "description": "Send NTLMv2 responses only" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_lanmanagerauthenticationlevel_4", + "displayName": "Send NTLMv2 responses only. Refuse LM", + "description": "Send NTLMv2 responses only. Refuse LM" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_lanmanagerauthenticationlevel_5", + "displayName": "Send NTLMv2 responses only. Refuse LM and NTLM", + "description": "Send NTLMv2 responses only. Refuse LM and NTLM" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsallowedforurls_notificationsallowedforurlsdesc", - "displayName": "Allow notifications on specific sites (Device)", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_ldapclientsigningrequirements", + "displayName": "Network Security LDAP Client Signing Requirements", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsblockedforurls", - "displayName": "Block notifications on specific sites", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedclients", + "displayName": "Network Security Minimum Session Security For NTLMSSP Based Clients", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsblockedforurls_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedclients_0", + "displayName": "None", + "description": "None" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsblockedforurls_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedclients_524288", + "displayName": "Require NTLMv2 session security", + "description": "Require NTLMv2 session security" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedclients_536870912", + "displayName": "Require 128-bit encryption", + "description": "Require 128-bit encryption" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedclients_537395200", + "displayName": "Require NTLM and 128-bit encryption", + "description": "Require NTLM and 128-bit encryption" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsblockedforurls_notificationsblockedforurlsdesc", - "displayName": "Block notifications on specific sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsallowedforurls", - "displayName": "Allow the Adobe Flash plug-in on specific sites", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedservers", + "displayName": "Network Security Minimum Session Security For NTLMSSP Based Servers", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsallowedforurls_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedservers_0", + "displayName": "None", + "description": "None" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsallowedforurls_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedservers_524288", + "displayName": "Require NTLMv2 session security", + "description": "Require NTLMv2 session security" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedservers_536870912", + "displayName": "Require 128-bit encryption", + "description": "Require 128-bit encryption" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_minimumsessionsecurityforntlmsspbasedservers_537395200", + "displayName": "Require NTLM and 128-bit encryption", + "description": "Require NTLM and 128-bit encryption" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsallowedforurls_pluginsallowedforurlsdesc", - "displayName": "Allow the Adobe Flash plug-in on specific sites (Device)", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_addremoteserverexceptionsforntlmauthentication", + "displayName": "Network Security Restrict NTLM Add Remote Server Exceptions For NTLM Authentication", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsblockedforurls", - "displayName": "Block the Adobe Flash plug-in on specific sites", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_auditincomingntlmtraffic", + "displayName": "Network Security Restrict NTLM Audit Incoming NTLM Traffic", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsblockedforurls_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_auditincomingntlmtraffic_0", + "displayName": "Disable", + "description": "Disable" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsblockedforurls_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_auditincomingntlmtraffic_1", + "displayName": "Enable auditing for domain accounts", + "description": "Enable auditing for domain accounts" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_auditincomingntlmtraffic_2", + "displayName": "Enable auditing for all accounts", + "description": "Enable auditing for all accounts" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsblockedforurls_pluginsblockedforurlsdesc", - "displayName": "Block the Adobe Flash plug-in on specific sites (Device)", - "options": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_incomingntlmtraffic", + "displayName": "Network Security Restrict NTLM Incoming NTLM Traffic", + "options": [ + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_incomingntlmtraffic_0", + "displayName": "Allow all", + "description": "Allow all" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_incomingntlmtraffic_1", + "displayName": "Deny all domain accounts", + "description": "Deny all domain accounts" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_incomingntlmtraffic_2", + "displayName": "Deny all accounts", + "description": "Deny all accounts" + } + ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsallowedforurls", - "displayName": "Allow pop-up windows on specific sites", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_outgoingntlmtraffictoremoteservers", + "displayName": "Network Security Restrict NTLM Outgoing NTLM Traffic To Remote Servers", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsallowedforurls_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_outgoingntlmtraffictoremoteservers_0", + "displayName": "Allow all", + "description": "Allow all" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsallowedforurls_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_outgoingntlmtraffictoremoteservers_1", + "displayName": "Deny all domain accounts", + "description": "Deny all domain accounts" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_networksecurity_restrictntlm_outgoingntlmtraffictoremoteservers_2", + "displayName": "Deny all accounts", + "description": "Deny all accounts" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsallowedforurls_popupsallowedforurlsdesc", - "displayName": "Allow pop-up windows on specific sites (Device)", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_recoveryconsole_allowautomaticadministrativelogon", + "displayName": "Recovery Console Allow Automatic Administrative Logon", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsblockedforurls", - "displayName": "Block pop-up windows on specific sites", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_recoveryconsole_allowfloppycopyandaccesstoalldrivesandallfolders", + "displayName": "Recovery Console Allow Floppy Copy And Access To All Drives And All Folders", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_shutdown_allowsystemtobeshutdownwithouthavingtologon", + "displayName": "Shutdown Allow System To Be Shut Down Without Having To Log On", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsblockedforurls_0", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_shutdown_allowsystemtobeshutdownwithouthavingtologon_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsblockedforurls_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_shutdown_allowsystemtobeshutdownwithouthavingtologon_1", + "displayName": "Enabled (Allow system to be shut down without having to log on)", + "description": "Enabled (Allow system to be shut down without having to log on)" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsblockedforurls_popupsblockedforurlsdesc", - "displayName": "Block pop-up windows on specific sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusballowdevicesforurls", - "displayName": "Grant access to specific sites to connect to specific USB devices", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_shutdown_clearvirtualmemorypagefile", + "displayName": "Shutdown Clear Virtual Memory Page File", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusballowdevicesforurls_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_shutdown_clearvirtualmemorypagefile_1", + "displayName": "Enable", + "description": "Enable" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusballowdevicesforurls_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_shutdown_clearvirtualmemorypagefile_0", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusballowdevicesforurls_webusballowdevicesforurls", - "displayName": "Grant access to specific sites to connect to specific USB devices (Device)", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_systemcryptography_forcestrongkeyprotection", + "displayName": "System Cryptography Force Strong Key Protection", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbaskforurls", - "displayName": "Allow WebUSB on specific sites", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_systemobjects_requirecaseinsensitivityfornonwindowssubsystems", + "displayName": "System Objects Require Case Insensitivity For Non Windows Subsystems", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_systemobjects_strengthendefaultpermissionsofinternalsystemobjects", + "displayName": "System Objects Strengthen Default Permissions Of Internal System Objects", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_allowuiaccessapplicationstopromptforelevation", + "displayName": "User Account Control Allow UI Access Applications To Prompt For Elevation", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbaskforurls_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_allowuiaccessapplicationstopromptforelevation_0", + "displayName": "disabled", + "description": "disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbaskforurls_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_allowuiaccessapplicationstopromptforelevation_1", + "displayName": "enabled (allow UIAccess applications to prompt for elevation without using the secure desktop)", + "description": "enabled (allow UIAccess applications to prompt for elevation without using the secure desktop)" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbaskforurls_webusbaskforurlsdesc", - "displayName": "Allow WebUSB on specific sites (Device)", - "options": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministratorprotection", + "displayName": "User Account Control Behavior Of The Elevation Prompt For Administrator Protection (Windows Insiders only)", + "options": [ + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministratorprotection_1", + "displayName": "Prompt for credentials on the secure desktop", + "description": "Prompt for credentials on the secure desktop" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministratorprotection_2", + "displayName": "Prompt for consent on the secure desktop", + "description": "Prompt for consent on the secure desktop" + } + ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbblockedforurls", - "displayName": "Block WebUSB on specific sites", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministrators", + "displayName": "User Account Control Behavior Of The Elevation Prompt For Administrators", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbblockedforurls_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministrators_0", + "displayName": "Elevate without prompting", + "description": "Elevate without prompting" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbblockedforurls_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministrators_1", + "displayName": "Prompt for credentials on the secure desktop", + "description": "Prompt for credentials on the secure desktop" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministrators_2", + "displayName": "Prompt for consent on the secure desktop", + "description": "Prompt for consent on the secure desktop" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministrators_3", + "displayName": "Prompt for credentials", + "description": "Prompt for credentials" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministrators_4", + "displayName": "Prompt for consent", + "description": "Prompt for consent" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforadministrators_5", + "displayName": "Prompt for consent for non-Windows binaries", + "description": "Prompt for consent for non-Windows binaries" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbblockedforurls_webusbblockedforurlsdesc", - "displayName": "Block WebUSB on specific sites (Device)", - "options": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforstandardusers", + "displayName": "User Account Control Behavior Of The Elevation Prompt For Standard Users", + "options": [ + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforstandardusers_0", + "displayName": "Automatically deny elevation requests", + "description": "Automatically deny elevation requests" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforstandardusers_1", + "displayName": "Prompt for credentials on the secure desktop", + "description": "Prompt for credentials on the secure desktop" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_behavioroftheelevationpromptforstandardusers_3", + "displayName": "Prompt for credentials", + "description": "Prompt for credentials" + } + ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderenabled", - "displayName": "Enable the default search provider", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_detectapplicationinstallationsandpromptforelevation", + "displayName": "User Account Control Detect Application Installations And Prompt For Elevation", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderenabled_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_detectapplicationinstallationsandpromptforelevation_1", + "displayName": "Enable", + "description": "Enable" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderenabled_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_detectapplicationinstallationsandpromptforelevation_0", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderencodings", - "displayName": "Default search provider encodings", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_onlyelevateexecutablefilesthataresignedandvalidated", + "displayName": "User Account Control Only Elevate Executable Files That Are Signed And Validated", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderencodings_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_onlyelevateexecutablefilesthataresignedandvalidated_0", + "displayName": "Disabled: Does not enforce validation.", + "description": "Disabled: Does not enforce validation." }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderencodings_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_onlyelevateexecutablefilesthataresignedandvalidated_1", + "displayName": "Enabled: Enforces validation.", + "description": "Enabled: Enforces validation." } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderencodings_defaultsearchproviderencodingsdesc", - "displayName": "Default search provider encodings (Device)", - "options": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_onlyelevateuiaccessapplicationsthatareinstalledinsecurelocations", + "displayName": "User Account Control Only Elevate UI Access Applications That Are Installed In Secure Locations", + "options": [ + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_onlyelevateuiaccessapplicationsthatareinstalledinsecurelocations_0", + "displayName": "Disabled: Application runs with UIAccess integrity even if it does not reside in a secure location.", + "description": "Disabled: Application runs with UIAccess integrity even if it does not reside in a secure location." + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_onlyelevateuiaccessapplicationsthatareinstalledinsecurelocations_1", + "displayName": "Enabled: Application runs with UIAccess integrity only if it resides in secure location.", + "description": "Enabled: Application runs with UIAccess integrity only if it resides in secure location." + } + ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurl", - "displayName": "Specifies the search-by-image feature for the default search provider", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_runalladministratorsinadminapprovalmode", + "displayName": "User Account Control Run All Administrators In Admin Approval Mode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurl_0", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_runalladministratorsinadminapprovalmode_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurl_1", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_runalladministratorsinadminapprovalmode_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurl_defaultsearchproviderimageurl", - "displayName": "Specifies the search-by-image feature for the default search provider (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurlpostparams", - "displayName": "Parameters for an image URL that uses POST", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_switchtothesecuredesktopwhenpromptingforelevation", + "displayName": "User Account Control Switch To The Secure Desktop When Prompting For Elevation", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurlpostparams_0", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_switchtothesecuredesktopwhenpromptingforelevation_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurlpostparams_1", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_switchtothesecuredesktopwhenpromptingforelevation_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurlpostparams_defaultsearchproviderimageurlpostparams", - "displayName": "Parameters for an image URL that uses POST (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderkeyword", - "displayName": "Default search provider keyword", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_typeofadminapprovalmode", + "displayName": "User Account Control Type Of Admin Approval Mode (Windows Insiders only)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderkeyword_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_typeofadminapprovalmode_1", + "displayName": "Legacy Admin Approval Mode", + "description": "Legacy Admin Approval Mode" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderkeyword_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_typeofadminapprovalmode_2", + "displayName": "Admin Approval Mode with Administrator protection", + "description": "Admin Approval Mode with Administrator protection" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderkeyword_defaultsearchproviderkeyword", - "displayName": "Default search provider keyword (Device)", - "options": null + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_useadminapprovalmode", + "displayName": "User Account Control Use Admin Approval Mode", + "options": [ + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_useadminapprovalmode_1", + "displayName": "Enable", + "description": "Enable" + }, + { + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_useadminapprovalmode_0", + "displayName": "Disable", + "description": "Disable" + } + ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidername", - "displayName": "Default search provider name", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_virtualizefileandregistrywritefailurestoperuserlocations", + "displayName": "User Account Control Virtualize File And Registry Write Failures To Per User Locations", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidername_0", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_virtualizefileandregistrywritefailurestoperuserlocations_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidername_1", + "id": "device_vendor_msft_policy_config_localpoliciessecurityoptions_useraccountcontrol_virtualizefileandregistrywritefailurestoperuserlocations_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidername_defaultsearchprovidername", - "displayName": "Default search provider name (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersearchurl", - "displayName": "Default search provider search URL", + "id": "device_vendor_msft_policy_config_localsecurityauthority_allowcustomsspsaps", + "displayName": "Allow Custom SSPs and APs to be loaded into LSASS", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersearchurl_0", + "id": "device_vendor_msft_policy_config_localsecurityauthority_allowcustomsspsaps_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersearchurl_1", + "id": "device_vendor_msft_policy_config_localsecurityauthority_allowcustomsspsaps_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersearchurl_defaultsearchprovidersearchurl", - "displayName": "Default search provider search URL (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersuggesturl", - "displayName": "Default search provider URL for suggestions", + "id": "device_vendor_msft_policy_config_localsecurityauthority_configurelsaprotectedprocess", + "displayName": "Configure Lsa Protected Process", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersuggesturl_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_localsecurityauthority_configurelsaprotectedprocess_0", + "displayName": "Disabled. Default value. LSA will not run as protected process.", + "description": "Disabled. Default value. LSA will not run as protected process." }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersuggesturl_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_localsecurityauthority_configurelsaprotectedprocess_1", + "displayName": "Enabled with UEFI lock. LSA will run as protected process and this configuration is UEFI locked.", + "description": "Enabled with UEFI lock. LSA will run as protected process and this configuration is UEFI locked." + }, + { + "id": "device_vendor_msft_policy_config_localsecurityauthority_configurelsaprotectedprocess_2", + "displayName": "Enabled without UEFI lock. LSA will run as protected process and this configuration is not UEFI locked.", + "description": "Enabled without UEFI lock. LSA will run as protected process and this configuration is not UEFI locked." } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersuggesturl_defaultsearchprovidersuggesturl", - "displayName": "Default search provider URL for suggestions (Device)", + "id": "device_vendor_msft_policy_config_localusersandgroups_configure", + "displayName": "Group Configuration", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionallowedtypes", - "displayName": "Configure allowed extension types", + "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup", + "displayName": "access group", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_action", + "displayName": "Group and user action", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionallowedtypes_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_action_add_update", + "displayName": "Add (Update)", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionallowedtypes_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_action_remove_update", + "displayName": "Remove (Update)", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_action_add_restrict", + "displayName": "Add (Replace)", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionallowedtypes_extensionallowedtypesdesc", - "displayName": "Types of extensions/apps that are allowed to be installed (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallallowlist", - "displayName": "Allow specific extensions to be installed", + "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_desc", + "displayName": "Local group", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallallowlist_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_desc_administrators", + "displayName": "Administrators", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallallowlist_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_desc_users", + "displayName": "Users", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_desc_guests", + "displayName": "Guests", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_desc_powerusers", + "displayName": "Power Users", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_desc_remotedesktopusers", + "displayName": "Remote Desktop Users", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_desc_remotemanagementusers", + "displayName": "Remote Management Users", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallallowlist_extensioninstallallowlistdesc", - "displayName": "Extension IDs to exempt from the block list (Device)", + "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_users", + "displayName": "Selected user(s)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallblocklist", - "displayName": "Control which extensions cannot be installed", + "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_userselectiontype", + "displayName": "User selection type", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallblocklist_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_userselectiontype_users", + "displayName": "Users/Groups", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallblocklist_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_localusersandgroups_configure_groupconfiguration_accessgroup_userselectiontype_manual", + "displayName": "Manual", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallblocklist_extensioninstallblocklistdesc", - "displayName": "Extension IDs the user should be prevented from installing (or * for all) (Device)", - "options": null + "id": "device_vendor_msft_policy_config_lockdown_allowedgeswipe", + "displayName": "Allow Edge Swipe", + "options": [ + { + "id": "device_vendor_msft_policy_config_lockdown_allowedgeswipe_0", + "displayName": "Block", + "description": "Disallow edge swipe." + }, + { + "id": "device_vendor_msft_policy_config_lockdown_allowedgeswipe_1", + "displayName": "Allow", + "description": "Allow edge swipe." + } + ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallforcelist", - "displayName": "Control which extensions are installed silently", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode", + "displayName": "Specify server", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallforcelist_0", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallforcelist_1", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallforcelist_extensioninstallforcelistdesc", - "displayName": "Extension/App IDs and update URLs to be silently installed (Device)", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_l_serveraddressexternal_value", + "displayName": "DNS name of the external server (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallsources", - "displayName": "Configure extension and user script install sources", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_l_serveraddressinternal_value", + "displayName": "DNS name of the internal server (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfiguredservercheckvalues", + "displayName": "Additional server versions supported", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallsources_0", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfiguredservercheckvalues_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallsources_1", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfiguredservercheckvalues_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallsources_extensioninstallsourcesdesc", - "displayName": "URL patterns to allow extension, app, and user script installs from (Device)", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfiguredservercheckvalues_l_configuredservercheckvalues_value", + "displayName": "Server version names (semicolon separated list): (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionsettings", - "displayName": "Configure extension management settings", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableautomaticsendtracing", + "displayName": "Disable automatic upload of sign-in failure logs", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionsettings_0", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableautomaticsendtracing_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionsettings_1", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableautomaticsendtracing_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionsettings_extensionsettings", - "displayName": "Configure extension management settings (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_enablemediarouter", - "displayName": "Enable Google Cast", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablehttpconnect", + "displayName": "Disable HTTP fallback for SIP connection", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_enablemediarouter_0", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablehttpconnect_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_enablemediarouter_1", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablehttpconnect_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_showcasticonintoolbar", - "displayName": "Show the cast icon in the toolbar", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablentcredentials", + "displayName": "Require logon credentials", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_showcasticonintoolbar_0", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablentcredentials_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_showcasticonintoolbar_1", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablentcredentials_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_allowcrossoriginauthprompt", - "displayName": "Allow cross-origin HTTP Basic Auth prompts", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableservercheck", + "displayName": "Disable server version check", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_allowcrossoriginauthprompt_0", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableservercheck_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_allowcrossoriginauthprompt_1", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableservercheck_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authnegotiatedelegateallowlist", - "displayName": "Specifies a list of servers that Microsoft Edge can delegate user credentials to", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablebitsforgaldownload", + "displayName": "Enable using BITS to download Address Book Service files", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authnegotiatedelegateallowlist_0", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablebitsforgaldownload_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authnegotiatedelegateallowlist_1", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablebitsforgaldownload_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authnegotiatedelegateallowlist_authnegotiatedelegateallowlist", - "displayName": "Specifies a list of servers that Microsoft Edge can delegate user credentials to (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authschemes", - "displayName": "Supported authentication schemes", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablesiphighsecuritymode", + "displayName": "Configure SIP security mode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authschemes_0", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablesiphighsecuritymode_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authschemes_1", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablesiphighsecuritymode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authschemes_authschemes", - "displayName": "Supported authentication schemes (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authserverallowlist", - "displayName": "Configure list of allowed authentication servers", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policygaldownloadinitialdelay", + "displayName": "Global Address Book Download Initial Delay", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authserverallowlist_0", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policygaldownloadinitialdelay_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authserverallowlist_1", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policygaldownloadinitialdelay_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authserverallowlist_authserverallowlist", - "displayName": "Configure list of allowed authentication servers (Device)", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policygaldownloadinitialdelay_l_galdownloadinitialdelay_value", + "displayName": "Maximum possible number of minutes to delay download: (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_disableauthnegotiatecnamelookup", - "displayName": "Disable CNAME lookup when negotiating Kerberos authentication", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policypreventrun", + "displayName": "Prevent users from running Microsoft Lync", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_disableauthnegotiatecnamelookup_0", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policypreventrun_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_disableauthnegotiatecnamelookup_1", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policypreventrun_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_enableauthnegotiateport", - "displayName": "Include non-standard port in Kerberos SPN", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysavepassword", + "displayName": "Allow storage of user passwords", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_enableauthnegotiateport_0", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysavepassword_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_enableauthnegotiateport_1", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysavepassword_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingallowlist", - "displayName": "Control which native messaging hosts users can use", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression", + "displayName": "Configure SIP compression mode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingallowlist_0", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingallowlist_1", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingallowlist_nativemessagingallowlistdesc", - "displayName": "Names of the native messaging hosts to exempt from the block list (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingblocklist", - "displayName": "Configure native messaging block list", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_l_policysipcompression", + "displayName": "Configure SIP compression mode (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingblocklist_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_l_policysipcompression_0", + "displayName": "Always disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingblocklist_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_l_policysipcompression_1", + "displayName": "Always enabled", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_l_policysipcompression_2", + "displayName": "Based on adaptor speed (default)", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_l_policysipcompression_3", + "displayName": "Based on ping round-trip time", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingblocklist_nativemessagingblocklistdesc", - "displayName": "Names of the forbidden native messaging hosts (or * for all) (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessaginguserlevelhosts", - "displayName": "Allow user-level native messaging hosts (installed without admin permissions)", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policytrustmodeldata", + "displayName": "Trusted Domain List", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessaginguserlevelhosts_0", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policytrustmodeldata_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessaginguserlevelhosts_1", + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policytrustmodeldata_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordmanagerenabled", - "displayName": "Enable saving passwords to the password manager", - "options": [ + "id": "device_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policytrustmodeldata_l_trustmodeldata_value", + "displayName": "Trusted Domains (comma separated list): (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_maps_allowofflinemapsdownloadovermeteredconnection", + "displayName": "Allow Offline Maps Download Over Metered Connection", + "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordmanagerenabled_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_maps_allowofflinemapsdownloadovermeteredconnection_0", + "displayName": "Disabled. Force disable auto-update over metered connection.", + "description": "Disabled. Force disable auto-update over metered connection." }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordmanagerenabled_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_maps_allowofflinemapsdownloadovermeteredconnection_1", + "displayName": "Enabled. Force enable auto-update over metered connection.", + "description": "Enabled. Force enable auto-update over metered connection." + }, + { + "id": "device_vendor_msft_policy_config_maps_allowofflinemapsdownloadovermeteredconnection_65535", + "displayName": "Not configured. User's choice.", + "description": "Not configured. User's choice." } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionchangepasswordurl", - "displayName": "Configure the change password URL", + "id": "device_vendor_msft_policy_config_maps_enableofflinemapsautoupdate", + "displayName": "Enable Offline Maps Auto Update", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionchangepasswordurl_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_maps_enableofflinemapsautoupdate_0", + "displayName": "Disabled. Force off auto-update.", + "description": "Disabled. Force off auto-update." }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionchangepasswordurl_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_maps_enableofflinemapsautoupdate_1", + "displayName": "Enabled. Force on auto-update.", + "description": "Enabled. Force on auto-update." + }, + { + "id": "device_vendor_msft_policy_config_maps_enableofflinemapsautoupdate_65535", + "displayName": "Not configured. User's choice.", + "description": "Not configured. User's choice." } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionchangepasswordurl_passwordprotectionchangepasswordurl", - "displayName": "Configure the change password URL (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionloginurls", - "displayName": "Configure the list of enterprise login URLs where password protection service should capture fingerprint of password", + "id": "device_vendor_msft_policy_config_memorydump_allowcrashdump", + "displayName": "Allow Crash Dump", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionloginurls_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_memorydump_allowcrashdump_0", + "displayName": "Block", + "description": "Disable crash dump collection." }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionloginurls_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_memorydump_allowcrashdump_1", + "displayName": "Allow", + "description": "Allow crash dump collection." } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionloginurls_passwordprotectionloginurlsdesc", - "displayName": "Configure the list of enterprise login URLs where password protection service should capture fingerprint of password (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger", - "displayName": "Configure password protection warning trigger", + "id": "device_vendor_msft_policy_config_memorydump_allowlivedump", + "displayName": "Allow Live Dump", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_0", - "displayName": "Disabled", - "description": null + "id": "device_vendor_msft_policy_config_memorydump_allowlivedump_0", + "displayName": "Block", + "description": "Disable live dump collection." }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_1", - "displayName": "Enabled", - "description": null + "id": "device_vendor_msft_policy_config_memorydump_allowlivedump_1", + "displayName": "Allow", + "description": "Allow live dump collection." } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_passwordprotectionwarningtrigger", - "displayName": "Configure password protection warning trigger (Device)", + "id": "device_vendor_msft_policy_config_messaging_allowmessagesync", + "displayName": "Allow Message Sync", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_passwordprotectionwarningtrigger_0", - "displayName": "Password protection warning is off", - "description": null + "id": "device_vendor_msft_policy_config_messaging_allowmessagesync_0", + "displayName": "message sync is not allowed and cannot be changed by the user.", + "description": "message sync is not allowed and cannot be changed by the user." }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_passwordprotectionwarningtrigger_1", - "displayName": "Password protection warning is triggered by password reuse", - "description": null + "id": "device_vendor_msft_policy_config_messaging_allowmessagesync_1", + "displayName": "message sync is allowed. The user can change this setting.", + "description": "message sync is allowed. The user can change this setting." } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_defaultprinterselection", - "displayName": "Default printer selection rules", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder", + "displayName": "Configure the location of the browser executable folder", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_defaultprinterselection_0", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_defaultprinterselection_1", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_defaultprinterselection_defaultprinterselection", - "displayName": "Default printer selection rules (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_browserexecutablefolderdesc", + "displayName": "Set value name to the Application User Model ID or the executable file name. You can use the \"*\" wildcard as value name to apply to all applications. (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printheaderfooter", - "displayName": "Print headers and footers", - "options": [ - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printheaderfooter_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printheaderfooter_1", - "displayName": "Enabled", - "description": null - } - ] + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_browserexecutablefolderdesc_key", + "displayName": "Name", + "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printingenabled", - "displayName": "Enable printing", - "options": [ - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printingenabled_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printingenabled_1", - "displayName": "Enabled", - "description": null - } - ] + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_browserexecutablefolderdesc_value", + "displayName": "Value", + "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printpreviewusesystemdefaultprinter", - "displayName": "Set the system default printer as the default printer", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference", + "displayName": "Set the release channel search order preference", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printpreviewusesystemdefaultprinter_0", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printpreviewusesystemdefaultprinter_1", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_usesystemprintdialog", - "displayName": "Print using system print dialog", - "options": [ - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_usesystemprintdialog_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_usesystemprintdialog_1", - "displayName": "Enabled", - "description": null - } - ] + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_releasechannelpreferencedesc", + "displayName": "Set value name to the Application User Model ID or the executable file name. You can use the \"*\" wildcard as value name to apply to all applications. (Device)", + "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxybypasslist", - "displayName": "Configure proxy bypass rules", - "options": [ - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxybypasslist_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxybypasslist_1", - "displayName": "Enabled", - "description": null - } - ] + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_releasechannelpreferencedesc_key", + "displayName": "Name", + "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxybypasslist_proxybypasslist", - "displayName": "Comma-separated list of proxy bypass rules (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_releasechannelpreferencedesc_value", + "displayName": "Value", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode", - "displayName": "Configure proxy server settings", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol", + "displayName": "Control communication with the Experimentation and Configuration Service", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_0", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_1", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode", - "displayName": "Configure proxy server settings (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol", + "displayName": "Control communication with the Experimentation and Configuration Service (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_direct", - "displayName": "Never use a proxy", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_auto_detect", - "displayName": "Auto detect proxy settings", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_pac_script", - "displayName": "Use a .pac proxy script", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_2", + "displayName": "Retrieve configurations and experiments", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_fixed_servers", - "displayName": "Use fixed proxy servers", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_1", + "displayName": "Retrieve configurations only", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_system", - "displayName": "Use system proxy settings", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_0", + "displayName": "Disable communication with the Experimentation and Configuration Service", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxypacurl", - "displayName": "Set the proxy .pac file URL", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_forcepermissionpolicyunloaddefaultenabled", + "displayName": "Controls whether unload event handlers can be disabled.", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxypacurl_0", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_forcepermissionpolicyunloaddefaultenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxypacurl_1", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_forcepermissionpolicyunloaddefaultenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxypacurl_proxypacurl", - "displayName": "Set the proxy .pac file URL (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxyserver", - "displayName": "Configure address or URL of proxy server", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist", + "displayName": "HTTP Allowlist", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxyserver_0", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxyserver_1", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxyserver_proxyserver", - "displayName": "Configure address or URL of proxy server (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_httpallowlistdesc", + "displayName": "HTTP Allowlist (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxysettings", - "displayName": "Proxy settings", - "options": [ - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxysettings_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxysettings_1", - "displayName": "Enabled", - "description": null - } - ] + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_httpallowlistdesc_key", + "displayName": "Name", + "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxysettings_proxysettings", - "displayName": "Proxy settings (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_httpallowlistdesc_value", + "displayName": "Value", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverride", - "displayName": "Prevent bypassing Microsoft Defender SmartScreen prompts for sites", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newbaseurlinheritancebehaviorallowed", + "displayName": "Allows enabling the feature NewBaseUrlInheritanceBehavior", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverride_0", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newbaseurlinheritancebehaviorallowed_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverride_1", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newbaseurlinheritancebehaviorallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverrideforfiles", - "displayName": "Prevent bypassing of Microsoft Defender SmartScreen warnings about downloads", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list", + "displayName": "Enable built-in PDF reader powered by Adobe Acrobat for WebView2", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverrideforfiles_0", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverrideforfiles_1", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenallowlistdomains", - "displayName": "Configure the list of domains for which Microsoft Defender SmartScreen won't trigger warnings", - "options": [ - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenallowlistdomains_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenallowlistdomains_1", - "displayName": "Enabled", - "description": null - } - ] + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_newpdfreaderwebview2listdesc", + "displayName": "Set value name to the Application User Model ID or the executable file name. You can use the \"*\" wildcard as value name to apply to all applications. (Device)", + "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenallowlistdomains_smartscreenallowlistdomainsdesc", - "displayName": "Configure the list of domains for which SmartScreen won't trigger warnings (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_newpdfreaderwebview2listdesc_key", + "displayName": "Name", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenenabled", - "displayName": "Configure Microsoft Defender SmartScreen", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_newpdfreaderwebview2listdesc_value", + "displayName": "Value", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_rsakeyusageforlocalanchorsenabled", + "displayName": "Check RSA key usage for server certificates issued by local trust anchors", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_rsakeyusageforlocalanchorsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_rsakeyusageforlocalanchorsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepageisnewtabpage", - "displayName": "Set the new tab page as the home page", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowdeletingbrowserhistory", + "displayName": "Enable deleting browser and download history", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepageisnewtabpage_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowdeletingbrowserhistory_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepageisnewtabpage_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowdeletingbrowserhistory_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepagelocation", - "displayName": "Configure the home page URL", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowfileselectiondialogs", + "displayName": "Allow file selection dialogs", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepagelocation_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowfileselectiondialogs_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepagelocation_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowfileselectiondialogs_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepagelocation_homepagelocation", - "displayName": "Home page URL (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagehidedefaulttopsites", - "displayName": "Hide the default top sites from the new tab page", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_alwaysopenpdfexternally", + "displayName": "Always open PDF files externally", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagehidedefaulttopsites_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_alwaysopenpdfexternally_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagehidedefaulttopsites_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_alwaysopenpdfexternally_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagelocation", - "displayName": "Configure the new tab page URL", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_applicationlocalevalue", + "displayName": "Set application locale", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagelocation_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_applicationlocalevalue_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagelocation_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_applicationlocalevalue_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagelocation_newtabpagelocation", - "displayName": "New tab page URL (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_applicationlocalevalue_applicationlocalevalue", + "displayName": "Application locale (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup", - "displayName": "Action to take on startup", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowed", + "displayName": "Allow or block audio capture", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowed_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup", - "displayName": "Action to take on startup (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowedurls", + "displayName": "Sites that can access audio capture devices without requesting permission", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup_5", - "displayName": "Open a new tab", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup_1", - "displayName": "Restore the last session", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowedurls_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup_4", - "displayName": "Open a list of URLs", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowedurls_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartupurls", - "displayName": "Sites to open when the browser starts", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowedurls_audiocaptureallowedurlsdesc", + "displayName": "Sites that can access audio capture devices without requesting permission (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofilladdressenabled", + "displayName": "Enable AutoFill for addresses", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartupurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofilladdressenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartupurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofilladdressenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartupurls_restoreonstartupurlsdesc", - "displayName": "Sites to open when the browser starts (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_showhomebutton", - "displayName": "Show Home button on toolbar", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofillcreditcardenabled", + "displayName": "Enable AutoFill for payment instruments", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_showhomebutton_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofillcreditcardenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_showhomebutton_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofillcreditcardenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions", - "displayName": "Allow download restrictions", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun", + "displayName": "Automatically import another browser's data and settings at first run", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions", - "displayName": "Download restrictions (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun", + "displayName": "Automatically import another browser's data and settings at first run (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_0", - "displayName": "No special restrictions", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_0", + "displayName": "Automatically imports all supported datatypes and settings from the default browser", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_1", - "displayName": "Block malicious downloads and dangerous file types", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_1", + "displayName": "Automatically imports all supported datatypes and settings from Internet Explorer", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_2", - "displayName": "Block potentially dangerous or unwanted downloads and dangerous file types", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_2", + "displayName": "Automatically imports all supported datatypes and settings from Google Chrome", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_3", - "displayName": "Block all downloads", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_3", + "displayName": "Automatically imports all supported datatypes and settings from Safari", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_4", - "displayName": "Block malicious downloads", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_4", + "displayName": "Disables automatic import, and the import section of the first-run experience is skipped", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended", - "displayName": "Allow download restrictions", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_backgroundmodeenabled", + "displayName": "Continue running background apps after Microsoft Edge closes", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_backgroundmodeenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_backgroundmodeenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions", - "displayName": "Download restrictions (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_blockthirdpartycookies", + "displayName": "Block third party cookies", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_0", - "displayName": "No special restrictions", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_1", - "displayName": "Block malicious downloads and dangerous file types", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_2", - "displayName": "Block potentially dangerous or unwanted downloads and dangerous file types", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_3", - "displayName": "Block all downloads", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_blockthirdpartycookies_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_4", - "displayName": "Block malicious downloads", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_blockthirdpartycookies_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_adstransparencyenabled", - "displayName": "Configure if the ads transparency feature is enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browseraddprofileenabled", + "displayName": "Enable profile creation from the Identity flyout menu or the Settings page", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_adstransparencyenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browseraddprofileenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_adstransparencyenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browseraddprofileenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_hiderestoredialogenabled", - "displayName": "Hide restore pages dialog after browser crash", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browserguestmodeenabled", + "displayName": "Enable guest mode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_hiderestoredialogenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browserguestmodeenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_hiderestoredialogenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browserguestmodeenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_pdfsecuremode", - "displayName": "Secure mode and Certificate-based Digital Signature validation in native PDF reader", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsernetworktimequeriesenabled", + "displayName": "Allow queries to a Browser Network Time service", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_pdfsecuremode_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsernetworktimequeriesenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_pdfsecuremode_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsernetworktimequeriesenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_promptonmultiplematchingcertificates", - "displayName": "Prompt the user to select a certificate when multiple certificates match", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin", + "displayName": "Browser sign-in settings", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_promptonmultiplematchingcertificates_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_promptonmultiplematchingcertificates_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting", - "displayName": "Control use of the WebHID API", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_browsersignin", + "displayName": "Browser sign-in settings (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_browsersignin_0", + "displayName": "Disable browser sign-in", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_browsersignin_1", + "displayName": "Enable browser sign-in", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_browsersignin_2", + "displayName": "Force users to sign-in to use the browser", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_defaultwebhidguardsetting", - "displayName": "Control use of the WebHID API (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_builtindnsclientenabled", + "displayName": "Use built-in DNS client", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_defaultwebhidguardsetting_2", - "displayName": "Do not allow any site to request access to HID devices via the WebHID API", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_builtindnsclientenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_defaultwebhidguardsetting_3", - "displayName": "Allow sites to ask the user to grant access to a HID device", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_builtindnsclientenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidaskforurls", - "displayName": "Allow the WebHID API on these sites", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforcas", + "displayName": "Disable Certificate Transparency enforcement for a list of subjectPublicKeyInfo hashes", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidaskforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforcas_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidaskforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforcas_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidaskforurls_webhidaskforurlsdesc", - "displayName": "Allow the WebHID API on these sites (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforcas_certificatetransparencyenforcementdisabledforcasdesc", + "displayName": "Disable Certificate Transparency enforcement for a list of subjectPublicKeyInfo hashes (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidblockedforurls", - "displayName": "Block the WebHID API on these sites", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforlegacycas", + "displayName": "Disable Certificate Transparency enforcement for a list of legacy certificate authorities (obsolete)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidblockedforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforlegacycas_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidblockedforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforlegacycas_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidblockedforurls_webhidblockedforurlsdesc", - "displayName": "Block the WebHID API on these sites (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforlegacycas_certificatetransparencyenforcementdisabledforlegacycasdesc", + "displayName": "Disable Certificate Transparency enforcement for a list of legacy certificate authorities (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_configurekeyboardshortcuts", - "displayName": "Configure the list of commands for which to disable keyboard shortcuts", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforurls", + "displayName": "Disable Certificate Transparency enforcement for specific URLs", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_configurekeyboardshortcuts_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_configurekeyboardshortcuts_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_configurekeyboardshortcuts_configurekeyboardshortcuts", - "displayName": "Configure the list of commands for which to disable keyboard shortcuts (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforurls_certificatetransparencyenforcementdisabledforurlsdesc", + "displayName": "Disable Certificate Transparency enforcement for specific URLs (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_edgeassetdeliveryserviceenabled", - "displayName": "Allow features to download assets from the Asset Delivery Service", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_componentupdatesenabled", + "displayName": "Enable component updates in Microsoft Edge", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_edgeassetdeliveryserviceenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_componentupdatesenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_edgeassetdeliveryserviceenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_componentupdatesenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_internetexplorermodeenablesavepageas", - "displayName": "Allow Save page as in Internet Explorer mode", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configuredonottrack", + "displayName": "Configure Do Not Track", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_internetexplorermodeenablesavepageas_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configuredonottrack_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_internetexplorermodeenablesavepageas_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configuredonottrack_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_edgeassetdeliveryserviceenabled_recommended", - "displayName": "Allow features to download assets from the Asset Delivery Service", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configureonlinetexttospeech", + "displayName": "Configure Online Text To Speech", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_edgeassetdeliveryserviceenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configureonlinetexttospeech_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_edgeassetdeliveryserviceenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configureonlinetexttospeech_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_sitesafetyservicesenabled_recommended", - "displayName": "Allow users to configure Site safety services", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability", + "displayName": "Control where developer tools can be used", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_sitesafetyservicesenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_sitesafetyservicesenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended~extensions_recommended_controldefaultstateofallowextensionfromotherstoressettingenabled_recommended", - "displayName": "Configure default state of Allow extensions from other stores setting", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_developertoolsavailability", + "displayName": "Control where developer tools can be used (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended~extensions_recommended_controldefaultstateofallowextensionfromotherstoressettingenabled_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_developertoolsavailability_0", + "displayName": "Block the developer tools on extensions installed by enterprise policy, allow in other contexts", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended~extensions_recommended_controldefaultstateofallowextensionfromotherstoressettingenabled_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_developertoolsavailability_1", + "displayName": "Allow using the developer tools", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_developertoolsavailability_2", + "displayName": "Don't allow using the developer tools", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_sitesafetyservicesenabled", - "displayName": "Allow users to configure Site safety services", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disable3dapis", + "displayName": "Disable support for 3D graphics APIs", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_sitesafetyservicesenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disable3dapis_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_sitesafetyservicesenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disable3dapis_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~identity_edgedefaultprofileenabled", - "displayName": "Default Profile Setting Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disablescreenshots", + "displayName": "Disable taking screenshots", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~identity_edgedefaultprofileenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disablescreenshots_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~identity_edgedefaultprofileenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disablescreenshots_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~identity_edgedefaultprofileenabled_edgedefaultprofileenabled", - "displayName": "Default Profile Setting Enabled (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~kioskmode_kioskswipegesturesenabled", - "displayName": "Swipe gestures in Microsoft Edge kiosk mode enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachedir", + "displayName": "Set disk cache directory", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~kioskmode_kioskswipegesturesenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachedir_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~kioskmode_kioskswipegesturesenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachedir_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_networkservicesandboxenabled", - "displayName": "Enable the network service sandbox", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachedir_diskcachedir", + "displayName": "Set disk cache directory (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachesize", + "displayName": "Set disk cache size, in bytes", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_networkservicesandboxenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachesize_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_networkservicesandboxenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachesize_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_outlookhubmenuenabled", - "displayName": "Allow users to access the Outlook menu", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachesize_diskcachesize", + "displayName": "Set disk cache size: (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloaddirectory", + "displayName": "Set download directory", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_outlookhubmenuenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloaddirectory_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_outlookhubmenuenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloaddirectory_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_recommended_outlookhubmenuenabled_recommended", - "displayName": "Allow users to access the Outlook menu", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloaddirectory_downloaddirectory", + "displayName": "Set download directory (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions", + "displayName": "Allow download restrictions", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_recommended_outlookhubmenuenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_recommended_outlookhubmenuenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_settimeoutwithout1msclampenabled", - "displayName": "Control Javascript setTimeout() function minimum timeout (deprecated)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions", + "displayName": "Download restrictions (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_settimeoutwithout1msclampenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_0", + "displayName": "No special restrictions", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_settimeoutwithout1msclampenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_1", + "displayName": "Block dangerous downloads", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_2", + "displayName": "Block potentially dangerous downloads", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_3", + "displayName": "Block all downloads", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_useragentclienthintsgreaseupdateenabled", - "displayName": "Control the User-Agent Client Hints GREASE Update feature", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_editfavoritesenabled", + "displayName": "Allows users to edit favorites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_useragentclienthintsgreaseupdateenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_editfavoritesenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_useragentclienthintsgreaseupdateenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_editfavoritesenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge~httpauthentication_allhttpauthschemesallowedfororigins", - "displayName": "List of origins that allow all HTTP authentication", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledeprecatedwebplatformfeatures", + "displayName": "Re-enable deprecated web platform features for a limited time", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge~httpauthentication_allhttpauthschemesallowedfororigins_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledeprecatedwebplatformfeatures_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge~httpauthentication_allhttpauthschemesallowedfororigins_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledeprecatedwebplatformfeatures_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge~httpauthentication_allhttpauthschemesallowedfororigins_allhttpauthschemesallowedfororiginsdesc", - "displayName": "List of origins that allow all HTTP authentication (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledeprecatedwebplatformfeatures_enabledeprecatedwebplatformfeaturesdesc", + "displayName": "Re-enable deprecated web platform features for a limited time (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_internetexplorerzoomdisplay", - "displayName": "Display zoom in IE Mode tabs with DPI Scale included like it is in Internet Explorer", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledomainactionsdownload", + "displayName": "Enable Domain Actions Download from Microsoft (deprecated)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_internetexplorerzoomdisplay_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledomainactionsdownload_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_internetexplorerzoomdisplay_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledomainactionsdownload_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_livecaptionsallowed", - "displayName": "Live captions allowed", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enableonlinerevocationchecks", + "displayName": "Enable online OCSP/CRL checks", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_livecaptionsallowed_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enableonlinerevocationchecks_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_livecaptionsallowed_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enableonlinerevocationchecks_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_originagentclusterdefaultenabled", - "displayName": "Origin-keyed agent clustering enabled by default", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol", + "displayName": "Control communication with the Experimentation and Configuration Service", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_originagentclusterdefaultenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_originagentclusterdefaultenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge~identity_guidedswitchenabled", - "displayName": "Guided Switch Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol", + "displayName": "Control communication with the Experimentation and Configuration Service (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge~identity_guidedswitchenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_2", + "displayName": "Retrieve configurations and experiments", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge~identity_guidedswitchenabled_1", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_alloweddomainsforapps", - "displayName": "Define domains allowed to access Google Workspace", - "options": [ - { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_alloweddomainsforapps_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_1", + "displayName": "Retrieve configurations only", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_alloweddomainsforapps_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_0", + "displayName": "Disable communication with the Experimentation and Configuration Service", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_alloweddomainsforapps_alloweddomainsforapps", - "displayName": "Define domains allowed to access Google Workspace (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_askbeforecloseenabled", - "displayName": "Get user confirmation before closing a browser window with multiple tabs", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_favoritesbarenabled", + "displayName": "Enable favorites bar", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_askbeforecloseenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_favoritesbarenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_askbeforecloseenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_favoritesbarenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting", - "displayName": "Configure browser process code integrity guard setting", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch", + "displayName": "Enforce Bing SafeSearch", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_browsercodeintegritysetting", - "displayName": "Configure browser process code integrity guard setting (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_forcebingsafesearch", + "displayName": "Enforce Bing SafeSearch (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_browsercodeintegritysetting_0", - "displayName": "Do not enable code integrity guard in the browser process.", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_forcebingsafesearch_0", + "displayName": "Don't configure search restrictions in Bing", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_browsercodeintegritysetting_1", - "displayName": "Enable code integrity guard audit mode in the browser process.", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_forcebingsafesearch_1", + "displayName": "Configure moderate search restrictions in Bing", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_browsercodeintegritysetting_2", - "displayName": "Enable code integrity guard enforcement in the browser process.", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_forcebingsafesearch_2", + "displayName": "Configure strict search restrictions in Bing", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_doubleclickclosetabenabled", - "displayName": "Double Click feature in Microsoft Edge enabled (only available in China)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceephemeralprofiles", + "displayName": "Enable use of ephemeral profiles", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_doubleclickclosetabenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceephemeralprofiles_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_doubleclickclosetabenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceephemeralprofiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_edgeedropenabled", - "displayName": "Enable Drop feature in Microsoft Edge", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcegooglesafesearch", + "displayName": "Enforce Google SafeSearch", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_edgeedropenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcegooglesafesearch_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_edgeedropenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcegooglesafesearch_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_importoneachlaunch", - "displayName": "Allow import of data from other browsers on each Microsoft Edge launch", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict", + "displayName": "Force minimum YouTube Restricted Mode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_importoneachlaunch_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_importoneachlaunch_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_pdfxfaenabled", - "displayName": "XFA support in native PDF reader enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_forceyoutuberestrict", + "displayName": "Force minimum YouTube Restricted Mode (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_pdfxfaenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_forceyoutuberestrict_0", + "displayName": "Do not enforce Restricted Mode on YouTube", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_pdfxfaenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_forceyoutuberestrict_1", + "displayName": "Enforce at least Moderate Restricted Mode on YouTube", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_forceyoutuberestrict_2", + "displayName": "Enforce Strict Restricted Mode for YouTube", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_quicksearchshowminimenu", - "displayName": "Enables Microsoft Edge mini menu", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_fullscreenallowed", + "displayName": "Allow full screen mode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_quicksearchshowminimenu_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_fullscreenallowed_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_quicksearchshowminimenu_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_fullscreenallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_askbeforecloseenabled_recommended", - "displayName": "Get user confirmation before closing a browser window with multiple tabs", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_hardwareaccelerationmodeenabled", + "displayName": "Use hardware acceleration when available", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_askbeforecloseenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_hardwareaccelerationmodeenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_askbeforecloseenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_hardwareaccelerationmodeenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_quicksearchshowminimenu_recommended", - "displayName": "Enables Microsoft Edge mini menu", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importautofillformdata", + "displayName": "Allow importing of autofill form data", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_quicksearchshowminimenu_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importautofillformdata_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_quicksearchshowminimenu_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importautofillformdata_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_textpredictionenabled", - "displayName": "Text prediction enabled by default", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importfavorites", + "displayName": "Allow importing of favorites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_textpredictionenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importfavorites_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_textpredictionenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importfavorites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge~passwordmanager_passwordmanagerrestrictlengthenabled", - "displayName": "Restrict the length of passwords that can be saved in the Password Manager", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhistory", + "displayName": "Allow importing of browsing history", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge~passwordmanager_passwordmanagerrestrictlengthenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhistory_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge~passwordmanager_passwordmanagerrestrictlengthenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhistory_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_exemptfiletypedownloadwarnings", - "displayName": "Disable download file type extension-based warnings for specified file types on domains", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhomepage", + "displayName": "Allow importing of home page settings", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_exemptfiletypedownloadwarnings_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhomepage_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_exemptfiletypedownloadwarnings_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhomepage_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_exemptfiletypedownloadwarnings_exemptfiletypedownloadwarnings", - "displayName": "Disable download file type extension-based warnings for specified file types on domains (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_internetexplorerintegrationalwayswaitforunload", - "displayName": "Wait for Internet Explorer mode tabs to completely unload before ending the browser session", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importpaymentinfo", + "displayName": "Allow importing of payment info", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_internetexplorerintegrationalwayswaitforunload_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importpaymentinfo_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_internetexplorerintegrationalwayswaitforunload_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importpaymentinfo_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorproofingenabled", - "displayName": "Spell checking provided by Microsoft Editor", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsavedpasswords", + "displayName": "Allow importing of saved passwords", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorproofingenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsavedpasswords_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorproofingenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsavedpasswords_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorsynonymsenabled", - "displayName": "Synonyms are provided when using Microsoft Editor spell checker", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsearchengine", + "displayName": "Allow importing of search engine settings", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorsynonymsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsearchengine_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorsynonymsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsearchengine_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended", - "displayName": "Configure the default paste format of URLs copied from Microsoft Edge, and determine if additional formats will be available to users", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability", + "displayName": "Configure InPrivate mode availability", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_configurefriendlyurlformat", - "displayName": "Configure the default paste format of URLs copied from Microsoft Edge, and determine if additional formats will be available to users (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_inprivatemodeavailability", + "displayName": "Configure InPrivate mode availability (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_configurefriendlyurlformat_1", - "displayName": "The plain URL without any extra information, such as the page's title. This is the recommended option when this policy is configured. For more information, see the description.", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_inprivatemodeavailability_0", + "displayName": "InPrivate mode available", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_configurefriendlyurlformat_3", - "displayName": "Titled Hyperlink: A hyperlink that points to the copied URL, but whose visible text is the title of the destination page. This is the Friendly URL format.", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_inprivatemodeavailability_1", + "displayName": "InPrivate mode disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_configurefriendlyurlformat_4", - "displayName": "Coming soon. If set, behaves the same as 'Plain URL'.", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_inprivatemodeavailability_2", + "displayName": "InPrivate mode forced", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_unthrottlednestedtimeoutenabled", - "displayName": "JavaScript setTimeout will not be clamped until a higher nesting threshold is set (deprecated)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel", + "displayName": "Configure Internet Explorer integration", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_unthrottlednestedtimeoutenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_unthrottlednestedtimeoutenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_internetexplorerintegrationalwaysuseoscapture", - "displayName": "Always use the OS capture engine to avoid issues with capturing Internet Explorer mode tabs", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_internetexplorerintegrationlevel", + "displayName": "Configure Internet Explorer integration (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_internetexplorerintegrationalwaysuseoscapture_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_internetexplorerintegrationlevel_1", + "displayName": "Internet Explorer mode", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_internetexplorerintegrationalwaysuseoscapture_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_internetexplorerintegrationlevel_2", + "displayName": "Internet Explorer 11", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeenabled_recommended", - "displayName": "Efficiency mode enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_isolateorigins", + "displayName": "Enable site isolation for specific origins", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_isolateorigins_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_isolateorigins_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeonpowerenabled_recommended", - "displayName": "Enable efficiency mode when the device is connected to a power source", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_isolateorigins_isolateorigins", + "displayName": "Enable site isolation for specific origins (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedfavorites", + "displayName": "Configure favorites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeonpowerenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedfavorites_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeonpowerenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedfavorites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeenabled", - "displayName": "Efficiency mode enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedfavorites_managedfavorites", + "displayName": "Configure favorites (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedsearchengines", + "displayName": "Manage Search Engines", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedsearchengines_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedsearchengines_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeonpowerenabled", - "displayName": "Enable efficiency mode when the device is connected to a power source", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedsearchengines_managedsearchengines", + "displayName": "Manage Search Engines (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_maxconnectionsperproxy", + "displayName": "Maximum number of concurrent connections to the proxy server", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeonpowerenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_maxconnectionsperproxy_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeonpowerenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_maxconnectionsperproxy_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~printing_printpdfasimagedefault", - "displayName": "Print PDF as Image Default", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_maxconnectionsperproxy_maxconnectionsperproxy", + "displayName": "Maximum number of concurrent connections to the proxy server: (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_mediaroutercastallowallips", + "displayName": "Allow Google Cast to connect to Cast devices on all IP addresses", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~printing_printpdfasimagedefault_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_mediaroutercastallowallips_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~printing_printpdfasimagedefault_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_mediaroutercastallowallips_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_enhancesecuritymodebypassintranet", - "displayName": "Enhanced Security Mode configuration for Intranet zone sites", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_metricsreportingenabled", + "displayName": "Enable usage and crash-related data reporting", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_enhancesecuritymodebypassintranet_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_metricsreportingenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_enhancesecuritymodebypassintranet_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_metricsreportingenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_eventpathenabled", - "displayName": "Re-enable the Event.path API until Microsoft Edge version 115", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions", + "displayName": "Enable network prediction", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_eventpathenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_eventpathenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_internetexplorerintegrationlocalmhtfileallowed", - "displayName": "Allow local MHTML files to open automatically in Internet Explorer mode", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_networkpredictionoptions", + "displayName": "Enable network prediction (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_internetexplorerintegrationlocalmhtfileallowed_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_networkpredictionoptions_0", + "displayName": "Predict network actions on any network connection", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_internetexplorerintegrationlocalmhtfileallowed_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_networkpredictionoptions_1", + "displayName": "Predict network actions on any network that is not cellular.\r\n(Deprecated in 50, removed in 52. After 52, if value 1 is set, it will be treated as 0 - predict network actions on any network connection.)", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_networkpredictionoptions_2", + "displayName": "Don't predict network actions on any network connection", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_recommended~performance_recommended_performancedetectorenabled_recommended", - "displayName": "Performance Detector Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_overridesecurityrestrictionsoninsecureorigin", + "displayName": "Control where security restrictions on insecure origins apply", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_recommended~performance_recommended_performancedetectorenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_overridesecurityrestrictionsoninsecureorigin_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_recommended~performance_recommended_performancedetectorenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_overridesecurityrestrictionsoninsecureorigin_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_webselectenabled", - "displayName": "Web Select Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_overridesecurityrestrictionsoninsecureorigin_overridesecurityrestrictionsoninsecureorigindesc", + "displayName": "Control where security restrictions on insecure origins apply (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_proactiveauthenabled", + "displayName": "Enable Proactive Authentication", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_webselectenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_proactiveauthenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_webselectenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_proactiveauthenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlaccess", - "displayName": "Force WebSQL to be enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promotionaltabsenabled", + "displayName": "Enable full-tab promotional content (deprecated)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlaccess_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promotionaltabsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlaccess_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promotionaltabsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlnonsecurecontextenabled", - "displayName": "Force WebSQL in non-secure contexts to be enabled (deprecated)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promptfordownloadlocation", + "displayName": "Ask where to save downloaded files", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlnonsecurecontextenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promptfordownloadlocation_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlnonsecurecontextenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promptfordownloadlocation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~edgeworkspaces_edgeworkspacesenabled", - "displayName": "Enable Workspaces", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_quicallowed", + "displayName": "Allow QUIC protocol", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~edgeworkspaces_edgeworkspacesenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_quicallowed_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~edgeworkspaces_edgeworkspacesenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_quicallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~identity_linkedaccountenabled", - "displayName": "Enable the linked account feature", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_applicationlocalevalue_recommended", + "displayName": "Set application locale", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~identity_linkedaccountenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_applicationlocalevalue_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~identity_linkedaccountenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_applicationlocalevalue_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~performance_performancedetectorenabled", - "displayName": "Performance Detector Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_applicationlocalevalue_recommended_applicationlocalevalue", + "displayName": "Application locale (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofilladdressenabled_recommended", + "displayName": "Enable AutoFill for addresses", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~performance_performancedetectorenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofilladdressenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~performance_performancedetectorenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofilladdressenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~startup_restoreonstartupuserurlsenabled", - "displayName": "Allow users to add and remove their own sites during startup when the RestoreOnStartupURLs policy is configured", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofillcreditcardenabled_recommended", + "displayName": "Enable AutoFill for credit cards", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~startup_restoreonstartupuserurlsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofillcreditcardenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~startup_restoreonstartupuserurlsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofillcreditcardenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting", - "displayName": "Set the default \"share additional operating system region\" setting", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_backgroundmodeenabled_recommended", + "displayName": "Continue running background apps after Microsoft Edge closes", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_backgroundmodeenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_backgroundmodeenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_defaultshareadditionalosregionsetting", - "displayName": "'Set the default \"share additional operating system region\" setting (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_blockthirdpartycookies_recommended", + "displayName": "Block third party cookies", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_defaultshareadditionalosregionsetting_0", - "displayName": "Limited", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_defaultshareadditionalosregionsetting_1", - "displayName": "Always share the OS Regional format", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_blockthirdpartycookies_recommended_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_defaultshareadditionalosregionsetting_2", - "displayName": "Never share the OS Regional format", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_blockthirdpartycookies_recommended_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_encryptedclienthelloenabled", - "displayName": "TLS Encrypted ClientHello Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloaddirectory_recommended", + "displayName": "Set download directory", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_encryptedclienthelloenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloaddirectory_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_encryptedclienthelloenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloaddirectory_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended", - "displayName": "Set the default \"share additional operating system region\" setting", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloaddirectory_recommended_downloaddirectory", + "displayName": "Set download directory (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended", + "displayName": "Allow download restrictions", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_defaultshareadditionalosregionsetting", - "displayName": "'Set the default \"share additional operating system region\" setting (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions", + "displayName": "Download restrictions (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_defaultshareadditionalosregionsetting_0", - "displayName": "Limited", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_0", + "displayName": "No special restrictions", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_defaultshareadditionalosregionsetting_1", - "displayName": "Always share the OS Regional format", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_1", + "displayName": "Block dangerous downloads", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_defaultshareadditionalosregionsetting_2", - "displayName": "Never share the OS Regional format", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_2", + "displayName": "Block potentially dangerous downloads", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_3", + "displayName": "Block all downloads", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge~startup_newtabpageapplauncherenabled", - "displayName": "Hide App Launcher on Microsoft Edge new tab page", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_favoritesbarenabled_recommended", + "displayName": "Enable favorites bar", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge~startup_newtabpageapplauncherenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_favoritesbarenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge~startup_newtabpageapplauncherenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_favoritesbarenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardallowedforurls", - "displayName": "Allow clipboard use on specific sites", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importautofillformdata_recommended", + "displayName": "Allow importing of autofill form data", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardallowedforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importautofillformdata_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardallowedforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importautofillformdata_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardallowedforurls_clipboardallowedforurlsdesc", - "displayName": "Allow clipboard use on specific sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardblockedforurls", - "displayName": "Block clipboard use on specific sites", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importfavorites_recommended", + "displayName": "Allow importing of favorites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardblockedforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importfavorites_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardblockedforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importfavorites_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardblockedforurls_clipboardblockedforurlsdesc", - "displayName": "Block clipboard use on specific sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting", - "displayName": "Default clipboard site permission", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importhistory_recommended", + "displayName": "Allow importing of browsing history", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importhistory_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importhistory_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_defaultclipboardsetting", - "displayName": "Default clipboard site permission (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importpaymentinfo_recommended", + "displayName": "Allow importing of payment info", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_defaultclipboardsetting_2", - "displayName": "Do not allow any site to use the clipboard site permission", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importpaymentinfo_recommended_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_defaultclipboardsetting_3", - "displayName": "Allow sites to ask the user to grant the clipboard site permission", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importpaymentinfo_recommended_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_microsoftrootstoreenabled", - "displayName": "Determines whether the Microsoft Root Store and built-in certificate verifier will be used to verify server certificates (deprecated)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsavedpasswords_recommended", + "displayName": "Allow importing of saved passwords", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_microsoftrootstoreenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsavedpasswords_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_microsoftrootstoreenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsavedpasswords_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowalldevicesforurls", - "displayName": "Allow listed sites to connect to any HID device", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsearchengine_recommended", + "displayName": "Allow importing of search engine settings", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowalldevicesforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsearchengine_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowalldevicesforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsearchengine_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowalldevicesforurls_webhidallowalldevicesforurlsdesc", - "displayName": "Allow listed sites to connect to any HID device (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdevicesforurls", - "displayName": "Allow listed sites connect to specific HID devices", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended", + "displayName": "Enable network prediction", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdevicesforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdevicesforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdevicesforurls_webhidallowdevicesforurls", - "displayName": "Allow listed sites connect to specific HID devices (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdeviceswithhidusagesforurls", - "displayName": "Automatically grant permission to these sites to connect to HID devices containing top-level collections with the given HID usage", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_networkpredictionoptions", + "displayName": "Enable network prediction (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdeviceswithhidusagesforurls_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_networkpredictionoptions_0", + "displayName": "Predict network actions on any network connection", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdeviceswithhidusagesforurls_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_networkpredictionoptions_1", + "displayName": "Predict network actions on any network that is not cellular.\r\n(Deprecated in 50, removed in 52. After 52, if value 1 is set, it will be treated as 0 - predict network actions on any network connection.)", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_networkpredictionoptions_2", + "displayName": "Don't predict network actions on any network connection", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdeviceswithhidusagesforurls_webhidallowdeviceswithhidusagesforurls", - "displayName": "Automatically grant permission to these sites to connect to HID devices containing top-level collections with the given HID usage (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_autofillmembershipsenabled", - "displayName": "Save and fill memberships", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_resolvenavigationerrorsusewebservice_recommended", + "displayName": "Enable resolution of navigation errors using a web service", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_autofillmembershipsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_resolvenavigationerrorsusewebservice_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_autofillmembershipsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_resolvenavigationerrorsusewebservice_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_autofillmembershipsenabled_recommended", - "displayName": "Save and fill memberships", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_searchsuggestenabled_recommended", + "displayName": "Enable search suggestions", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_autofillmembershipsenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_searchsuggestenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_autofillmembershipsenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_searchsuggestenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_searchfiltersenabled_recommended", - "displayName": "Search Filters Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_syncdisabled_recommended", + "displayName": "Disable synchronization of data using Microsoft sync services", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_searchfiltersenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_syncdisabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_searchfiltersenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_syncdisabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended~printing_recommended_printpreviewstickysettings_recommended", - "displayName": "Configure the sticky print preview settings", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_translateenabled_recommended", + "displayName": "Enable Translate", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended~printing_recommended_printpreviewstickysettings_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_translateenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended~printing_recommended_printpreviewstickysettings_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_translateenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended~printing_recommended_printpreviewstickysettings_recommended_printpreviewstickysettings", - "displayName": "Configure the sticky print preview settings (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchfiltersenabled", - "displayName": "Search Filters Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~contentsettings_recommended_registeredprotocolhandlers_recommended", + "displayName": "Register protocol handlers", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchfiltersenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~contentsettings_recommended_registeredprotocolhandlers_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchfiltersenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~contentsettings_recommended_registeredprotocolhandlers_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled", - "displayName": "Search in Sidebar enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~contentsettings_recommended_registeredprotocolhandlers_recommended_registeredprotocolhandlers", + "displayName": "Register protocol handlers (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordmanagerenabled_recommended", + "displayName": "Enable saving passwords to the password manager", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordmanagerenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordmanagerenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_searchinsidebarenabled", - "displayName": "Search in Sidebar enabled (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printheaderfooter_recommended", + "displayName": "Print headers and footers", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_searchinsidebarenabled_0", - "displayName": "Enable search in sidebar", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_searchinsidebarenabled_1", - "displayName": "Disable search in sidebar for Kids Mode", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printheaderfooter_recommended_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_searchinsidebarenabled_2", - "displayName": "Disable search in sidebar", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printheaderfooter_recommended_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsallowedforurls", - "displayName": "Allow multiple automatic downloads in quick succession on specific sites", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printpreviewusesystemdefaultprinter_recommended", + "displayName": "Set the system default printer as the default printer", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsallowedforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printpreviewusesystemdefaultprinter_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsallowedforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printpreviewusesystemdefaultprinter_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsallowedforurls_automaticdownloadsallowedforurlsdesc", - "displayName": "Allow multiple automatic downloads in quick succession on specific sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsblockedforurls", - "displayName": "Block multiple automatic downloads in quick succession on specific sites", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenenabled_recommended", + "displayName": "Configure Microsoft Defender SmartScreen", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsblockedforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsblockedforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsblockedforurls_automaticdownloadsblockedforurlsdesc", - "displayName": "Block multiple automatic downloads in quick succession on specific sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting", - "displayName": "Default automatic downloads setting", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepageisnewtabpage_recommended", + "displayName": "Set the new tab page as the home page", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepageisnewtabpage_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepageisnewtabpage_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_defaultautomaticdownloadssetting", - "displayName": "Default automatic downloads setting (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepagelocation_recommended", + "displayName": "Configure the home page URL", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_defaultautomaticdownloadssetting_1", - "displayName": "Allow all websites to perform automatic downloads", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepagelocation_recommended_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_defaultautomaticdownloadssetting_2", - "displayName": "Don't allow any website to perform automatic downloads", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepagelocation_recommended_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~edgeworkspaces_workspacesnavigationsettings", - "displayName": "Configure navigation settings per groups of URLs in Microsoft Edge Workspaces", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepagelocation_recommended_homepagelocation", + "displayName": "Home page URL (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_newtabpagelocation_recommended", + "displayName": "Configure the new tab page URL", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~edgeworkspaces_workspacesnavigationsettings_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_newtabpagelocation_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~edgeworkspaces_workspacesnavigationsettings_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_newtabpagelocation_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~edgeworkspaces_workspacesnavigationsettings_workspacesnavigationsettings", - "displayName": "Configure navigation settings per groups of URLs in Microsoft Edge Workspaces (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_newtabpagelocation_recommended_newtabpagelocation", + "displayName": "New tab page URL (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereadergrammartoolsenabled", - "displayName": "Enable Grammar Tools feature within Immersive Reader in Microsoft Edge", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended", + "displayName": "Action to take on Microsoft Edge startup", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereadergrammartoolsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereadergrammartoolsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereaderpicturedictionaryenabled", - "displayName": "Enable Picture Dictionary feature within Immersive Reader in Microsoft Edge", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup", + "displayName": "Action to take on startup (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereaderpicturedictionaryenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup_5", + "displayName": "Open a new tab", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereaderpicturedictionaryenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup_1", + "displayName": "Restore the last session", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup_4", + "displayName": "Open a list of URLs", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~printing_printpreviewstickysettings", - "displayName": "Configure the sticky print preview settings", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartupurls_recommended", + "displayName": "Sites to open when the browser starts", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~printing_printpreviewstickysettings_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartupurls_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~printing_printpreviewstickysettings_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartupurls_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~printing_printpreviewstickysettings_printpreviewstickysettings", - "displayName": "Configure the sticky print preview settings (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartupurls_recommended_restoreonstartupurlsdesc", + "displayName": "Sites to open when the browser starts (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_internetexplorermodecleardataonexitenabled", - "displayName": "Clear history for IE and IE mode every time you exit", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_showhomebutton_recommended", + "displayName": "Show Home button on toolbar", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_internetexplorermodecleardataonexitenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_showhomebutton_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_internetexplorermodecleardataonexitenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_showhomebutton_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_newpdfreaderenabled", - "displayName": "Microsoft Edge built-in PDF reader powered by Adobe Acrobat enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification", + "displayName": "Notify a user that a browser restart is recommended or required for pending updates", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_newpdfreaderenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_newpdfreaderenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_recommended_newpdfreaderenabled_recommended", - "displayName": "Microsoft Edge built-in PDF reader powered by Adobe Acrobat enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_relaunchnotification", + "displayName": "Notify a user that a browser restart is recommended or required for pending updates (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_recommended_newpdfreaderenabled_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_relaunchnotification_1", + "displayName": "Recommended - Show a recurring prompt to the user indicating that a restart is recommended", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_recommended_newpdfreaderenabled_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_relaunchnotification_2", + "displayName": "Required - Show a recurring prompt to the user indicating that a restart is required", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_sharedarraybufferunrestrictedaccessallowed", - "displayName": "Specifies whether SharedArrayBuffers can be used in a non cross-origin-isolated context", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotificationperiod", + "displayName": "Set the time period for update notifications", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_sharedarraybufferunrestrictedaccessallowed_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotificationperiod_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_sharedarraybufferunrestrictedaccessallowed_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotificationperiod_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_showacrobatsubscriptionbutton", - "displayName": "Shows button on native PDF viewer in Microsoft Edge that allows users to sign up for Adobe Acrobat subscription", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotificationperiod_relaunchnotificationperiod", + "displayName": "Set the time period for update notifications: (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_requireonlinerevocationchecksforlocalanchors", + "displayName": "Specify if online OCSP/CRL checks are required for local trust anchors", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_showacrobatsubscriptionbutton_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_requireonlinerevocationchecksforlocalanchors_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_showacrobatsubscriptionbutton_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_requireonlinerevocationchecksforlocalanchors_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_cryptowalletenabled", - "displayName": "Enable CryptoWallet feature", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_resolvenavigationerrorsusewebservice", + "displayName": "Enable resolution of navigation errors using a web service", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_cryptowalletenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_resolvenavigationerrorsusewebservice_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_cryptowalletenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_resolvenavigationerrorsusewebservice_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_mousegestureenabled", - "displayName": "Mouse Gesture Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_restrictsignintopattern", + "displayName": "Restrict which accounts can be used to sign in to Microsoft Edge", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_mousegestureenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_restrictsignintopattern_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_mousegestureenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_restrictsignintopattern_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_readaloudenabled", - "displayName": "Enable Read Aloud feature in Microsoft Edge", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_restrictsignintopattern_restrictsignintopattern", + "displayName": "Restrict which accounts can be used as Microsoft Edge primary accounts (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_runallflashinallowmode", + "displayName": "Extend Adobe Flash content setting to all content", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_readaloudenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_runallflashinallowmode_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_readaloudenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_runallflashinallowmode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_restorepdfview", - "displayName": "Restore PDF view", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_savingbrowserhistorydisabled", + "displayName": "Disable saving browser history", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_restorepdfview_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_savingbrowserhistorydisabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_restorepdfview_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_savingbrowserhistorydisabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_tabservicesenabled", - "displayName": "Enable tab organization suggestions", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_searchsuggestenabled", + "displayName": "Enable search suggestions", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_tabservicesenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_searchsuggestenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_tabservicesenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_searchsuggestenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_defaultbrowsersettingscampaignenabled", - "displayName": "Enables default browser settings campaigns", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_securitykeypermitattestation", + "displayName": "Websites or domains that don't need permission to use direct Security Key attestation", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_defaultbrowsersettingscampaignenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_securitykeypermitattestation_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_defaultbrowsersettingscampaignenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_securitykeypermitattestation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_discoverpagecontextenabled", - "displayName": "Enable Discover access to page contents for AAD profiles", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_securitykeypermitattestation_securitykeypermitattestationdesc", + "displayName": "Websites or domains that don't need permission to use direct Security Key attestation (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendintranettointernetexplorer", + "displayName": "Send all intranet sites to Internet Explorer", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_discoverpagecontextenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendintranettointernetexplorer_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_discoverpagecontextenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendintranettointernetexplorer_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_enforcelocalanchorconstraintsenabled", - "displayName": "Determines whether the built-in certificate verifier will enforce constraints encoded into trust anchors loaded from the platform trust store (deprecated)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendsiteinfotoimproveservices", + "displayName": "Send site information to improve Microsoft services", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_enforcelocalanchorconstraintsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendsiteinfotoimproveservices_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_enforcelocalanchorconstraintsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendsiteinfotoimproveservices_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_showdownloadstoolbarbutton", - "displayName": "Show Downloads button on the toolbar", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_showofficeshortcutinfavoritesbar", + "displayName": "Show Microsoft Office shortcut in favorites bar", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_showdownloadstoolbarbutton_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_showofficeshortcutinfavoritesbar_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_showdownloadstoolbarbutton_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_showofficeshortcutinfavoritesbar_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_standalonehubssidebarenabled", - "displayName": "Standalone Sidebar Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_siteperprocess", + "displayName": "Enable site isolation for every site", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_standalonehubssidebarenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_siteperprocess_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_standalonehubssidebarenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_siteperprocess_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_composeinlineenabled", - "displayName": "Compose is enabled for writing on the web", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellcheckenabled", + "displayName": "Enable spellcheck", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_composeinlineenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellcheckenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_composeinlineenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellcheckenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeindicatoruienabled", - "displayName": "Manage the indicator UI of the Enhanced Security Mode (ESM) feature in Microsoft Edge", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellchecklanguage", + "displayName": "Enable specific spellcheck languages", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeindicatoruienabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellchecklanguage_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeindicatoruienabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellchecklanguage_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeoptoutuxenabled", - "displayName": "Manage opt-out user experience for Enhanced Security Mode (ESM) in Microsoft Edge", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellchecklanguage_spellchecklanguagedesc", + "displayName": "Enable specific spellcheck languages (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslerroroverrideallowed", + "displayName": "Allow users to proceed from the HTTPS warning page", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeoptoutuxenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslerroroverrideallowed_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeoptoutuxenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslerroroverrideallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_recommended_walletdonationenabled_recommended", - "displayName": "Wallet Donation Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin", + "displayName": "Minimum TLS version enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_recommended_walletdonationenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_recommended_walletdonationenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_searchforimageenabled", - "displayName": "Search for image enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_sslversionmin", + "displayName": "Minimum SSL version enabled (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_searchforimageenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_sslversionmin_tls1", + "displayName": "TLS 1.0", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_searchforimageenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_sslversionmin_tls1.1", + "displayName": "TLS 1.1", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_sslversionmin_tls1.2", + "displayName": "TLS 1.2", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_walletdonationenabled", - "displayName": "Wallet Donation Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_suppressunsupportedoswarning", + "displayName": "Suppress the unsupported OS warning", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_walletdonationenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_suppressunsupportedoswarning_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_walletdonationenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_suppressunsupportedoswarning_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenabled", - "displayName": "Microsoft Edge management enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_syncdisabled", + "displayName": "Disable synchronization of data using Microsoft sync services", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_syncdisabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_syncdisabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenrollmenttoken", - "displayName": "Microsoft Edge management enrollment token", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_tablifecyclesenabled", + "displayName": "Configure tab lifecycles", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenrollmenttoken_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_tablifecyclesenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenrollmenttoken_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_tablifecyclesenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenrollmenttoken_edgemanagementenrollmenttoken", - "displayName": "Microsoft Edge management enrollment token (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementextensionsfeedbackenabled", - "displayName": "Microsoft Edge management extensions feedback enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_taskmanagerendprocessenabled", + "displayName": "Enable ending processes in the Browser task manager", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementextensionsfeedbackenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_taskmanagerendprocessenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementextensionsfeedbackenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_taskmanagerendprocessenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_recommended~performance_recommended_pinbrowseressentialstoolbarbutton_recommended", - "displayName": "Pin browser essentials toolbar button", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_translateenabled", + "displayName": "Enable Translate", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_recommended~performance_recommended_pinbrowseressentialstoolbarbutton_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_translateenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_recommended~performance_recommended_pinbrowseressentialstoolbarbutton_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_translateenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_throttlenonvisiblecrossoriginiframesallowed", - "displayName": "Allows enabling throttling of non-visible, cross-origin iframes", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlallowlist", + "displayName": "Define a list of allowed URLs", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_throttlenonvisiblecrossoriginiframesallowed_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlallowlist_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_throttlenonvisiblecrossoriginiframesallowed_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlallowlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting", - "displayName": "Default setting for third-party storage partitioning", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlallowlist_urlallowlistdesc", + "displayName": "Define a list of allowed URLs (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlblocklist", + "displayName": "Block access to a list of URLs", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlblocklist_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlblocklist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting_defaultthirdpartystoragepartitioningsetting", - "displayName": "Default setting for third-party storage partitioning (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlblocklist_urlblocklistdesc", + "displayName": "Block access to a list of URLs (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userdatadir", + "displayName": "Set the user data directory", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting_defaultthirdpartystoragepartitioningsetting_1", - "displayName": "Let third-party storage partitioning to be enabled.", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userdatadir_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting_defaultthirdpartystoragepartitioningsetting_2", - "displayName": "Block third-party storage partitioning from being enabled.", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userdatadir_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_thirdpartystoragepartitioningblockedfororigins", - "displayName": "Block third-party storage partitioning for these origins", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userdatadir_userdatadir", + "displayName": "Set the user data directory (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userfeedbackallowed", + "displayName": "Allow user feedback", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_thirdpartystoragepartitioningblockedfororigins_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userfeedbackallowed_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_thirdpartystoragepartitioningblockedfororigins_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userfeedbackallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_thirdpartystoragepartitioningblockedfororigins_thirdpartystoragepartitioningblockedfororiginsdesc", - "displayName": "Block third-party storage partitioning for these origins (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~performance_pinbrowseressentialstoolbarbutton", - "displayName": "Pin browser essentials toolbar button", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowed", + "displayName": "Allow or block video capture", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~performance_pinbrowseressentialstoolbarbutton_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowed_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~performance_pinbrowseressentialstoolbarbutton_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_allowsystemnotifications", - "displayName": "Allows system notifications", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowedurls", + "displayName": "Sites that can access video capture devices without requesting permission", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_allowsystemnotifications_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowedurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_allowsystemnotifications_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowedurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_edgewalletetreeenabled", - "displayName": "Edge Wallet E-Tree Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowedurls_videocaptureallowedurlsdesc", + "displayName": "Sites that can access video capture devices without requesting permission (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webdriveroverridesincompatiblepolicies", + "displayName": "Allow WebDriver to Override Incompatible Policies (deprecated)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_edgewalletetreeenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webdriveroverridesincompatiblepolicies_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_edgewalletetreeenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webdriveroverridesincompatiblepolicies_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_internetexplorerintegrationzoneidentifiermhtfileallowed", - "displayName": "Automatically open downloaded MHT or MHTML files from the web in Internet Explorer mode", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling", + "displayName": "Restrict exposure of local IP address by WebRTC", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_internetexplorerintegrationzoneidentifiermhtfileallowed_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_internetexplorerintegrationzoneidentifiermhtfileallowed_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended_edgewalletetreeenabled_recommended", - "displayName": "Edge Wallet E-Tree Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling", + "displayName": "Restrict exposure of localhost IP address by WebRTC (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended_edgewalletetreeenabled_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling_default", + "displayName": "Allow all interfaces. This exposes the local IP address", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended_edgewalletetreeenabled_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling_default_public_and_private_interfaces", + "displayName": "Allow public and private interfaces over http default route. This exposes the local IP address", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling_default_public_interface_only", + "displayName": "Allow public interface over http default route. This doesn't expose the local IP address", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling_disable_non_proxied_udp", + "displayName": "Use TCP unless proxy server supports UDP. This doesn't expose the local IP address", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended~edgegames_recommended_gamermodeenabled_recommended", - "displayName": "Enable Gamer Mode", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtcudpportrange", + "displayName": "Restrict the range of local UDP ports used by WebRTC", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended~edgegames_recommended_gamermodeenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtcudpportrange_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended~edgegames_recommended_gamermodeenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtcudpportrange_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarallowed", - "displayName": "Enable the Search bar", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtcudpportrange_webrtcudpportrange", + "displayName": "Restrict the range of local UDP ports used by WebRTC (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_wpadquickcheckenabled", + "displayName": "Set WPAD optimization", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarallowed_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_wpadquickcheckenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarallowed_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_wpadquickcheckenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarisenabledonstartup", - "displayName": "Allow the Search bar at Windows startup", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_autoselectcertificateforurls", + "displayName": "Automatically select client certificates for these sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarisenabledonstartup_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_autoselectcertificateforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarisenabledonstartup_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_autoselectcertificateforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_showhistorythumbnails", - "displayName": "Show thumbnail images for browsing history", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_autoselectcertificateforurls_autoselectcertificateforurlsdesc", + "displayName": "Automatically select client certificates for these sites (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesallowedforurls", + "displayName": "Allow cookies on specific sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_showhistorythumbnails_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesallowedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_showhistorythumbnails_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesallowedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_splitscreenenabled", - "displayName": "Enable split screen feature in Microsoft Edge", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesallowedforurls_cookiesallowedforurlsdesc", + "displayName": "Allow cookies on specific sites (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesblockedforurls", + "displayName": "Block cookies on specific sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_splitscreenenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_splitscreenenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_uploadfromphoneenabled", - "displayName": "Enable upload files from phone in Microsoft Edge desktop", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesblockedforurls_cookiesblockedforurlsdesc", + "displayName": "Block cookies on specific sites (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiessessiononlyforurls", + "displayName": "Limit cookies from specific websites to the current session", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_uploadfromphoneenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiessessiononlyforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_uploadfromphoneenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiessessiononlyforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge~edgegames_gamermodeenabled", - "displayName": "Enable Gamer Mode", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiessessiononlyforurls_cookiessessiononlyforurlsdesc", + "displayName": "Limit cookies from specific websites to the current session (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting", + "displayName": "Configure cookies", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge~edgegames_gamermodeenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge~edgegames_gamermodeenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_beforeunloadeventcancelbypreventdefaultenabled", - "displayName": "Control the behavior for the cancel dialog produced by the beforeunload event", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_defaultcookiessetting", + "displayName": "Configure cookies (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_beforeunloadeventcancelbypreventdefaultenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_defaultcookiessetting_1", + "displayName": "Let all sites create cookies", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_beforeunloadeventcancelbypreventdefaultenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_defaultcookiessetting_2", + "displayName": "Don't let any site create cookies", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_defaultcookiessetting_4", + "displayName": "Keep cookies for the duration of the session", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcebuiltinpushmessagingclient", - "displayName": "Forces Microsoft Edge to use its built-in WNS push client to connect to the Windows Push Notification Service.", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting", + "displayName": "Default geolocation setting", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcebuiltinpushmessagingclient_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcebuiltinpushmessagingclient_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcepermissionpolicyunloaddefaultenabled", - "displayName": "Controls whether unload event handlers can be disabled.", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_defaultgeolocationsetting", + "displayName": "Default geolocation setting (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcepermissionpolicyunloaddefaultenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_defaultgeolocationsetting_1", + "displayName": "Allow sites to track users' physical location", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcepermissionpolicyunloaddefaultenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_defaultgeolocationsetting_2", + "displayName": "Don't allow any site to track users' physical location", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_defaultgeolocationsetting_3", + "displayName": "Ask whenever a site wants to track users' physical location", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_pictureinpictureoverlayenabled", - "displayName": "Enable Picture in Picture overlay feature on supported webpages in Microsoft Edge", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting", + "displayName": "Default images setting", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_pictureinpictureoverlayenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_pictureinpictureoverlayenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_recommended~passwordmanager_recommended_passworddeleteonbrowsercloseenabled_recommended", - "displayName": "Prevent passwords from being deleted if any Edge settings is enabled to delete browsing data when Microsoft Edge closes", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_defaultimagessetting", + "displayName": "Default images setting (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_recommended~passwordmanager_recommended_passworddeleteonbrowsercloseenabled_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_defaultimagessetting_1", + "displayName": "Allow all sites to show all images", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_recommended~passwordmanager_recommended_passworddeleteonbrowsercloseenabled_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_defaultimagessetting_2", + "displayName": "Don't allow any site to show images", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_sendmouseeventsdisabledformcontrolsenabled", - "displayName": "Control the new behavior for event dispatching on disabled form controls", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting", + "displayName": "Default JavaScript setting", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_sendmouseeventsdisabledformcontrolsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_sendmouseeventsdisabledformcontrolsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~contentsettings_dataurlinsvguseenabled", - "displayName": "Data URL support for SVGUseElement", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_defaultjavascriptsetting", + "displayName": "Default JavaScript setting (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~contentsettings_dataurlinsvguseenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_defaultjavascriptsetting_1", + "displayName": "Allow all sites to run JavaScript", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~contentsettings_dataurlinsvguseenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_defaultjavascriptsetting_2", + "displayName": "Don't allow any site to run JavaScript", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~network_compressiondictionarytransportenabled", - "displayName": "Enable compression dictionary transport support", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting", + "displayName": "Default notification setting", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~network_compressiondictionarytransportenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~network_compressiondictionarytransportenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~passwordmanager_passworddeleteonbrowsercloseenabled", - "displayName": "Prevent passwords from being deleted if any Edge settings is enabled to delete browsing data when Microsoft Edge closes", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_defaultnotificationssetting", + "displayName": "Default notification setting (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~passwordmanager_passworddeleteonbrowsercloseenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_defaultnotificationssetting_1", + "displayName": "Allow sites to show desktop notifications", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~passwordmanager_passworddeleteonbrowsercloseenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_defaultnotificationssetting_2", + "displayName": "Don't allow any site to show desktop notifications", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_defaultnotificationssetting_3", + "displayName": "Ask every time a site wants to show desktop notifications", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~smartscreen_exemptsmartscreendownloadwarnings", - "displayName": "Disable SmartScreen AppRep based warnings for specified file types on specified domains", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting", + "displayName": "Default Adobe Flash setting", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~smartscreen_exemptsmartscreendownloadwarnings_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~smartscreen_exemptsmartscreendownloadwarnings_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~smartscreen_exemptsmartscreendownloadwarnings_exemptsmartscreendownloadwarnings", - "displayName": "Disable SmartScreen AppRep based warnings for specified file types on specified domains (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagebingchatenabled", - "displayName": "Disable Bing chat entry-points on Microsoft Edge Enterprise new tab page", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_defaultpluginssetting", + "displayName": "Default Adobe Flash setting (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagebingchatenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_defaultpluginssetting_2", + "displayName": "Block the Adobe Flash plugin", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagebingchatenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_defaultpluginssetting_3", + "displayName": "Click to play", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagecompanylogoenabled", - "displayName": "Hide the company logo on the Microsoft Edge new tab page", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting", + "displayName": "Default pop-up window setting", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagecompanylogoenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagecompanylogoenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge_recommended_organizationalbrandingonworkprofileuienabled_recommended", - "displayName": "Allow the use of your organization's branding assets from M365 on the profile-related UI of a work profile", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_defaultpopupssetting", + "displayName": "Default pop-up window setting (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge_recommended_organizationalbrandingonworkprofileuienabled_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_defaultpopupssetting_1", + "displayName": "Allow all sites to show pop-ups", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge_recommended_organizationalbrandingonworkprofileuienabled_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_defaultpopupssetting_2", + "displayName": "Do not allow any site to show popups", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchintranetsitestoworkprofile", - "displayName": "Switch intranet sites to a work profile", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting", + "displayName": "Control use of the Web Bluetooth API", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchintranetsitestoworkprofile_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchintranetsitestoworkprofile_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchsitesoniemodesitelisttoworkprofile", - "displayName": "Switch sites on the IE mode site list to a work profile", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_defaultwebbluetoothguardsetting", + "displayName": "Control use of the Web Bluetooth API (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchsitesoniemodesitelisttoworkprofile_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_defaultwebbluetoothguardsetting_2", + "displayName": "Do not allow any site to request access to Bluetooth devices via the Web Bluetooth API", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchsitesoniemodesitelisttoworkprofile_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_defaultwebbluetoothguardsetting_3", + "displayName": "Allow sites to ask the user to grant access to a nearby Bluetooth device", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementpolicyoverridesplatformpolicy", - "displayName": "Microsoft Edge management service policy overrides platform policy.", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting", + "displayName": "Control use of the WebUSB API", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementpolicyoverridesplatformpolicy_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementpolicyoverridesplatformpolicy_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementuserpolicyoverridescloudmachinepolicy", - "displayName": "Allow Microsoft Edge management service user policies to override policies set through an enrollment token.", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_defaultwebusbguardsetting", + "displayName": "Control use of the WebUSB API (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementuserpolicyoverridescloudmachinepolicy_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_defaultwebusbguardsetting_2", + "displayName": "Do not allow any site to request access to USB devices via the WebUSB API", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementuserpolicyoverridescloudmachinepolicy_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_defaultwebusbguardsetting_3", + "displayName": "Allow sites to ask the user to grant access to a connected USB device", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_edge3pserptelemetryenabled", - "displayName": "Edge 3P SERP Telemetry Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesallowedforurls", + "displayName": "Allow images on these sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_edge3pserptelemetryenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesallowedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_edge3pserptelemetryenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesallowedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_edge3pserptelemetryenabled_recommended", - "displayName": "Edge 3P SERP Telemetry Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesallowedforurls_imagesallowedforurlsdesc", + "displayName": "Allow images on these sites (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesblockedforurls", + "displayName": "Block images on specific sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_edge3pserptelemetryenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_edge3pserptelemetryenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_organizationlogooverlayonappiconenabled_recommended", - "displayName": "Allow your organization's logo from Microsoft Entra to be overlaid on the Microsoft Edge app icon of a work profile", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesblockedforurls_imagesblockedforurlsdesc", + "displayName": "Block images on specific sites (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptallowedforurls", + "displayName": "Allow JavaScript on specific sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_organizationlogooverlayonappiconenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptallowedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_organizationlogooverlayonappiconenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptallowedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~identity_recommended_automaticprofileswitchingsitelist_recommended", - "displayName": "Configure the automatic profile switching site list", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptallowedforurls_javascriptallowedforurlsdesc", + "displayName": "Allow JavaScript on specific sites (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptblockedforurls", + "displayName": "Block JavaScript on specific sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~identity_recommended_automaticprofileswitchingsitelist_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~identity_recommended_automaticprofileswitchingsitelist_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~identity_recommended_automaticprofileswitchingsitelist_recommended_automaticprofileswitchingsitelist", - "displayName": "Configure the automatic profile switching site list (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptblockedforurls_javascriptblockedforurlsdesc", + "displayName": "Block JavaScript on specific sites (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~sleepingtabs_recommended_autodiscardsleepingtabsenabled_recommended", - "displayName": "Configure auto discard sleeping tabs", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsallowedforurls", + "displayName": "Allow notifications on specific sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~sleepingtabs_recommended_autodiscardsleepingtabsenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsallowedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~sleepingtabs_recommended_autodiscardsleepingtabsenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsallowedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_webappsettings", - "displayName": "Web App management settings", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsallowedforurls_notificationsallowedforurlsdesc", + "displayName": "Allow notifications on specific sites (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsblockedforurls", + "displayName": "Block notifications on specific sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_webappsettings_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_webappsettings_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_webappsettings_webappsettings", - "displayName": "Web App management settings (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsblockedforurls_notificationsblockedforurlsdesc", + "displayName": "Block notifications on specific sites (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~identity_automaticprofileswitchingsitelist", - "displayName": "Configure the automatic profile switching site list", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsallowedforurls", + "displayName": "Allow the Adobe Flash plug-in on specific sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~identity_automaticprofileswitchingsitelist_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsallowedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~identity_automaticprofileswitchingsitelist_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsallowedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~identity_automaticprofileswitchingsitelist_automaticprofileswitchingsitelist", - "displayName": "Configure the automatic profile switching site list (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsallowedforurls_pluginsallowedforurlsdesc", + "displayName": "Allow the Adobe Flash plug-in on specific sites (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~sleepingtabs_autodiscardsleepingtabsenabled", - "displayName": "Configure auto discard sleeping tabs", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsblockedforurls", + "displayName": "Block the Adobe Flash plug-in on specific sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~sleepingtabs_autodiscardsleepingtabsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~sleepingtabs_autodiscardsleepingtabsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_nativehostsexecutableslaunchdirectly", - "displayName": "Force Windows executable Native Messaging hosts to launch directly", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsblockedforurls_pluginsblockedforurlsdesc", + "displayName": "Block the Adobe Flash plug-in on specific sites (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsallowedforurls", + "displayName": "Allow pop-up windows on specific sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_nativehostsexecutableslaunchdirectly_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsallowedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_nativehostsexecutableslaunchdirectly_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsallowedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_postquantumkeyagreementenabled", - "displayName": "Enable post-quantum key agreement for TLS", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsallowedforurls_popupsallowedforurlsdesc", + "displayName": "Allow pop-up windows on specific sites (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsblockedforurls", + "displayName": "Block pop-up windows on specific sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_postquantumkeyagreementenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_postquantumkeyagreementenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~googlecast_edgedisabledialprotocolforcastdiscovery", - "displayName": "Disable DIAL protocol for cast device discovery", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsblockedforurls_popupsblockedforurlsdesc", + "displayName": "Block pop-up windows on specific sites (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusballowdevicesforurls", + "displayName": "Grant access to specific sites to connect to specific USB devices", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~googlecast_edgedisabledialprotocolforcastdiscovery_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusballowdevicesforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~googlecast_edgedisabledialprotocolforcastdiscovery_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusballowdevicesforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsenabled", - "displayName": "Enable Related Website Sets", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusballowdevicesforurls_webusballowdevicesforurls", + "displayName": "Grant access to specific sites to connect to specific USB devices (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbaskforurls", + "displayName": "Allow WebUSB on specific sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbaskforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbaskforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsoverrides", - "displayName": "Override Related Website Sets.", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbaskforurls_webusbaskforurlsdesc", + "displayName": "Allow WebUSB on specific sites (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbblockedforurls", + "displayName": "Block WebUSB on specific sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsoverrides_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsoverrides_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsoverrides_relatedwebsitesetsoverrides", - "displayName": "Override Related Website Sets. (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbblockedforurls_webusbblockedforurlsdesc", + "displayName": "Block WebUSB on specific sites (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_preventtyposquattingpromptoverride", - "displayName": "Prevent bypassing Edge Website Typo Protection prompts for sites", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderenabled", + "displayName": "Enable the default search provider", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_preventtyposquattingpromptoverride_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_preventtyposquattingpromptoverride_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_typosquattingallowlistdomains", - "displayName": "Configure the list of domains for which Edge Website Typo Protection won't trigger warnings", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderencodings", + "displayName": "Default search provider encodings", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_typosquattingallowlistdomains_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderencodings_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_typosquattingallowlistdomains_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderencodings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_typosquattingallowlistdomains_typosquattingallowlistdomainsdesc", - "displayName": "Configure the list of domains for which Edge Website Typo Protection won't trigger warnings (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderencodings_defaultsearchproviderencodingsdesc", + "displayName": "Default search provider encodings (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_aigenthemesenabled", - "displayName": "Enables DALL-E themes generation", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurl", + "displayName": "Specifies the search-by-image feature for the default search provider", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_aigenthemesenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurl_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_aigenthemesenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurl_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_enhancesecuritymodeallowuserbypass", - "displayName": "Allow users to bypass Enhanced Security Mode", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurl_defaultsearchproviderimageurl", + "displayName": "Specifies the search-by-image feature for the default search provider (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurlpostparams", + "displayName": "Parameters for an image URL that uses POST", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_enhancesecuritymodeallowuserbypass_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurlpostparams_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_enhancesecuritymodeallowuserbypass_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurlpostparams_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_superdragdropenabled", - "displayName": "Super Drag Drop Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurlpostparams_defaultsearchproviderimageurlpostparams", + "displayName": "Parameters for an image URL that uses POST (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderkeyword", + "displayName": "Default search provider keyword", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_superdragdropenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderkeyword_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_superdragdropenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderkeyword_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_urldiagnosticdataenabled", - "displayName": "URL reporting in Edge diagnostic data enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderkeyword_defaultsearchproviderkeyword", + "displayName": "Default search provider keyword (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidername", + "displayName": "Default search provider name", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_urldiagnosticdataenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidername_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_urldiagnosticdataenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidername_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_rsakeyusageforlocalanchorsenabled", - "displayName": "Check RSA key usage for server certificates issued by local trust anchors", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidername_defaultsearchprovidername", + "displayName": "Default search provider name (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersearchurl", + "displayName": "Default search provider search URL", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_rsakeyusageforlocalanchorsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersearchurl_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_rsakeyusageforlocalanchorsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersearchurl_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_screencapturewithoutgestureallowedfororigins", - "displayName": "Allow screen capture without prior user gesture", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersearchurl_defaultsearchprovidersearchurl", + "displayName": "Default search provider search URL (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersuggesturl", + "displayName": "Default search provider URL for suggestions", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_screencapturewithoutgestureallowedfororigins_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersuggesturl_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_screencapturewithoutgestureallowedfororigins_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersuggesturl_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_screencapturewithoutgestureallowedfororigins_screencapturewithoutgestureallowedfororiginsdesc", - "displayName": "Allow screen capture without prior user gesture (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersuggesturl_defaultsearchprovidersuggesturl", + "displayName": "Default search provider URL for suggestions (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting", - "displayName": "Default Window Management permission setting", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionallowedtypes", + "displayName": "Configure allowed extension types", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionallowedtypes_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionallowedtypes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting_defaultwindowmanagementsetting", - "displayName": "Default Window Management permission setting (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionallowedtypes_extensionallowedtypesdesc", + "displayName": "Types of extensions/apps that are allowed to be installed (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallallowlist", + "displayName": "Allow specific extensions to be installed", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting_defaultwindowmanagementsetting_2", - "displayName": "Denies the Window Management permission on all sites by default", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallallowlist_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting_defaultwindowmanagementsetting_3", - "displayName": "Ask every time a site wants obtain the Window Management permission", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallallowlist_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementallowedforurls", - "displayName": "Allow Window Management permission on specified sites", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallallowlist_extensioninstallallowlistdesc", + "displayName": "Extension IDs to exempt from the block list (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallblocklist", + "displayName": "Control which extensions cannot be installed", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementallowedforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallblocklist_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementallowedforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallblocklist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementallowedforurls_windowmanagementallowedforurlsdesc", - "displayName": "Allow Window Management permission on specified sites (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallblocklist_extensioninstallblocklistdesc", + "displayName": "Extension IDs the user should be prevented from installing (or * for all) (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementblockedforurls", - "displayName": "Block Window Management permission on specified sites", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallforcelist", + "displayName": "Control which extensions are installed silently", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementblockedforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallforcelist_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementblockedforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallforcelist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementblockedforurls_windowmanagementblockedforurlsdesc", - "displayName": "Block Window Management permission on specified sites (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallforcelist_extensioninstallforcelistdesc", + "displayName": "Extension/App IDs and update URLs to be silently installed (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensioninstalltypeblocklist", - "displayName": "Blocklist for extension install types", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallsources", + "displayName": "Configure extension and user script install sources", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensioninstalltypeblocklist_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallsources_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensioninstalltypeblocklist_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallsources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensioninstalltypeblocklist_extensioninstalltypeblocklistdesc", - "displayName": "Blocklist for extension install types (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallsources_extensioninstallsourcesdesc", + "displayName": "URL patterns to allow extension, app, and user script installs from (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability", - "displayName": "Control Manifest v2 extension availability", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionsettings", + "displayName": "Configure extension management settings", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionsettings_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionsettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_extensionmanifestv2availability", - "displayName": "Control Manifest v2 extension availability (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionsettings_extensionsettings", + "displayName": "Configure extension management settings (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_enablemediarouter", + "displayName": "Enable Google Cast", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_extensionmanifestv2availability_0", - "displayName": "Default browser behavior", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_extensionmanifestv2availability_1", - "displayName": "Manifest v2 is disabled", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_extensionmanifestv2availability_2", - "displayName": "Manifest v2 is enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_enablemediarouter_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_extensionmanifestv2availability_3", - "displayName": "Manifest v2 is enabled for forced extensions only", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_enablemediarouter_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotcdppagecontext", - "displayName": "Control Copilot with Commerical Data Protection access to browser context for Microsoft Entra ID profiles", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_showcasticonintoolbar", + "displayName": "Show the cast icon in the toolbar", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotcdppagecontext_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_showcasticonintoolbar_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotcdppagecontext_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_showcasticonintoolbar_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotpagecontext", - "displayName": "Control Copilot access to browser context for Microsoft Entra ID profiles", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_allowcrossoriginauthprompt", + "displayName": "Allow cross-origin HTTP Basic Auth prompts", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotpagecontext_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_allowcrossoriginauthprompt_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotpagecontext_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_allowcrossoriginauthprompt_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_mutationeventsenabled", - "displayName": "Enable deprecated/removed Mutation Events", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authnegotiatedelegateallowlist", + "displayName": "Specifies a list of servers that Microsoft Edge can delegate user credentials to", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_mutationeventsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authnegotiatedelegateallowlist_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_mutationeventsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authnegotiatedelegateallowlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_imageeditorserviceenabled", - "displayName": "Enable the Designer for Image Editor feature", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authnegotiatedelegateallowlist_authnegotiatedelegateallowlist", + "displayName": "Specifies a list of servers that Microsoft Edge can delegate user credentials to (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authschemes", + "displayName": "Supported authentication schemes", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_imageeditorserviceenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authschemes_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_imageeditorserviceenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authschemes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_qrcodegeneratorenabled", - "displayName": "Enable QR Code Generator", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authschemes_authschemes", + "displayName": "Supported authentication schemes (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authserverallowlist", + "displayName": "Configure list of allowed authentication servers", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_qrcodegeneratorenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authserverallowlist_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_qrcodegeneratorenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authserverallowlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge~network_zstdcontentencodingenabled", - "displayName": "Enable zstd content encoding support", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authserverallowlist_authserverallowlist", + "displayName": "Configure list of allowed authentication servers (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_disableauthnegotiatecnamelookup", + "displayName": "Disable CNAME lookup when negotiating Kerberos authentication", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge~network_zstdcontentencodingenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_disableauthnegotiatecnamelookup_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge~network_zstdcontentencodingenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_disableauthnegotiatecnamelookup_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge_internetexplorersetforegroundwhenactive", - "displayName": "Keep the active Microsoft Edge window with an Internet Explorer mode tab always in the foreground.", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_enableauthnegotiateport", + "displayName": "Include non-standard port in Kerberos SPN", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge_internetexplorersetforegroundwhenactive_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_enableauthnegotiateport_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge_internetexplorersetforegroundwhenactive_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_enableauthnegotiateport_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge~identity_proactiveauthworkflowenabled", - "displayName": "Enable proactive authentication", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingallowlist", + "displayName": "Control which native messaging hosts users can use", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge~identity_proactiveauthworkflowenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingallowlist_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge~identity_proactiveauthworkflowenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingallowlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_csscustomstatedeprecatedsyntaxenabled", - "displayName": "Controls whether the deprecated :--foo syntax for CSS custom state is enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingallowlist_nativemessagingallowlistdesc", + "displayName": "Names of the native messaging hosts to exempt from the block list (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingblocklist", + "displayName": "Configure native messaging block list", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_csscustomstatedeprecatedsyntaxenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingblocklist_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_csscustomstatedeprecatedsyntaxenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingblocklist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_edgesidebarappurlhostblocklist", - "displayName": "Control which apps cannot be opened in Microsoft Edge sidebar", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingblocklist_nativemessagingblocklistdesc", + "displayName": "Names of the forbidden native messaging hosts (or * for all) (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessaginguserlevelhosts", + "displayName": "Allow user-level native messaging hosts (installed without admin permissions)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_edgesidebarappurlhostblocklist_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessaginguserlevelhosts_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_edgesidebarappurlhostblocklist_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessaginguserlevelhosts_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_edgesidebarappurlhostblocklist_edgesidebarappurlhostblocklistdesc", - "displayName": "Control which apps cannot be opened in Microsoft Edge sidebar (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev128.1~policy~microsoft_edge_applicationboundencryptionenabled", - "displayName": "Enable Application Bound Encryption", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordmanagerenabled", + "displayName": "Enable saving passwords to the password manager", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev128.1~policy~microsoft_edge_applicationboundencryptionenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordmanagerenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128.1~policy~microsoft_edge_applicationboundencryptionenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordmanagerenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings", - "displayName": "Dynamic Code Settings", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionchangepasswordurl", + "displayName": "Configure the change password URL", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionchangepasswordurl_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionchangepasswordurl_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings_dynamiccodesettings", - "displayName": "Dynamic Code Settings (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionchangepasswordurl_passwordprotectionchangepasswordurl", + "displayName": "Configure the change password URL (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionloginurls", + "displayName": "Configure the list of enterprise login URLs where password protection service should capture fingerprint of password", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings_dynamiccodesettings_0", - "displayName": "Default dynamic code settings", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionloginurls_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings_dynamiccodesettings_1", - "displayName": "Prevent the browser process from creating dynamic code", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionloginurls_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgeopeninsidebarenabled", - "displayName": "Enable open in sidebar", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionloginurls_passwordprotectionloginurlsdesc", + "displayName": "Configure the list of enterprise login URLs where password protection service should capture fingerprint of password (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger", + "displayName": "Configure password protection warning trigger", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgeopeninsidebarenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgeopeninsidebarenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgesidebarcustomizeenabled", - "displayName": "Enable sidebar customize", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_passwordprotectionwarningtrigger", + "displayName": "Configure password protection warning trigger (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgesidebarcustomizeenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_passwordprotectionwarningtrigger_0", + "displayName": "Password protection warning is off", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgesidebarcustomizeenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_passwordprotectionwarningtrigger_1", + "displayName": "Password protection warning is triggered by password reuse", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_keyboardfocusablescrollersenabled", - "displayName": "Enable keyboard focusable scrollers", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_defaultprinterselection", + "displayName": "Default printer selection rules", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_keyboardfocusablescrollersenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_defaultprinterselection_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_keyboardfocusablescrollersenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_defaultprinterselection_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_recommended~downloads_recommended_showdownloadsinsecurewarningsenabled_recommended", - "displayName": "Enable insecure download warnings", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_defaultprinterselection_defaultprinterselection", + "displayName": "Default printer selection rules (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printheaderfooter", + "displayName": "Print headers and footers", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_recommended~downloads_recommended_showdownloadsinsecurewarningsenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printheaderfooter_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_recommended~downloads_recommended_showdownloadsinsecurewarningsenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printheaderfooter_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~downloads_showdownloadsinsecurewarningsenabled", - "displayName": "Enable insecure download warnings", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printingenabled", + "displayName": "Enable printing", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~downloads_showdownloadsinsecurewarningsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printingenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~downloads_showdownloadsinsecurewarningsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printingenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings", - "displayName": "Control the availability of developer mode on extensions page", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printpreviewusesystemdefaultprinter", + "displayName": "Set the system default printer as the default printer", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printpreviewusesystemdefaultprinter_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printpreviewusesystemdefaultprinter_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings_extensiondevelopermodesettings", - "displayName": "Control the availability of developer mode on extensions page (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_usesystemprintdialog", + "displayName": "Print using system print dialog", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings_extensiondevelopermodesettings_0", - "displayName": "Allow the usage of developer mode on extensions page", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_usesystemprintdialog_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings_extensiondevelopermodesettings_1", - "displayName": "Do not allow the usage of developer mode on extensions page", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_usesystemprintdialog_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensionextendedbackgroundlifetimeforportconnectionstourls", - "displayName": "Configure a list of origins that grant an extended background lifetime to connecting extensions.", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxybypasslist", + "displayName": "Configure proxy bypass rules", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensionextendedbackgroundlifetimeforportconnectionstourls_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxybypasslist_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensionextendedbackgroundlifetimeforportconnectionstourls_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxybypasslist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensionextendedbackgroundlifetimeforportconnectionstourls_extensionextendedbackgroundlifetimeforportconnectionstourlsdesc", - "displayName": "Configure a list of origins that grant an extended background lifetime to connecting extensions. (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxybypasslist_proxybypasslist", + "displayName": "Comma-separated list of proxy bypass rules (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev77.3~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended", - "displayName": "Action to take on Microsoft Edge startup", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode", + "displayName": "Configure proxy server settings", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev77.3~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev77.3~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev77.3~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup", - "displayName": "Action to take on Microsoft Edge startup (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode", + "displayName": "Configure proxy server settings (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev77.3~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup_5", - "displayName": "Open a new tab", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_direct", + "displayName": "Never use a proxy", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev77.3~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup_1", - "displayName": "Restore the last session", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_auto_detect", + "displayName": "Auto detect proxy settings", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev77.3~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup_4", - "displayName": "Open a list of URLs", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_pac_script", + "displayName": "Use a .pac proxy script", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev77.3~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup_6", - "displayName": "Open a list of URLs and restore the last session", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_fixed_servers", + "displayName": "Use fixed proxy servers", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_system", + "displayName": "Use system proxy settings", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev77.3~policy~microsoft_edge~startup_restoreonstartup", - "displayName": "Action to take on Microsoft Edge startup", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxypacurl", + "displayName": "Set the proxy .pac file URL", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev77.3~policy~microsoft_edge~startup_restoreonstartup_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxypacurl_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev77.3~policy~microsoft_edge~startup_restoreonstartup_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxypacurl_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev77.3~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup", - "displayName": "Action to take on Microsoft Edge startup (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxypacurl_proxypacurl", + "displayName": "Set the proxy .pac file URL (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxyserver", + "displayName": "Configure address or URL of proxy server", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev77.3~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup_5", - "displayName": "Open a new tab", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev77.3~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup_1", - "displayName": "Restore the last session", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev77.3~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup_4", - "displayName": "Open a list of URLs", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxyserver_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev77.3~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup_6", - "displayName": "Open a list of URLs and restore the last session", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxyserver_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_adssettingforintrusiveadssites", - "displayName": "Ads setting for sites with intrusive ads", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxyserver_proxyserver", + "displayName": "Configure address or URL of proxy server (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxysettings", + "displayName": "Proxy settings", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_adssettingforintrusiveadssites_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxysettings_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_adssettingforintrusiveadssites_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxysettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_adssettingforintrusiveadssites_adssettingforintrusiveadssites", - "displayName": "Ads setting for sites with intrusive ads (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxysettings_proxysettings", + "displayName": "Proxy settings (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverride", + "displayName": "Prevent bypassing Microsoft Defender SmartScreen prompts for sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_adssettingforintrusiveadssites_adssettingforintrusiveadssites_1", - "displayName": "Allow ads on all sites", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverride_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_adssettingforintrusiveadssites_adssettingforintrusiveadssites_2", - "displayName": "Block ads on sites with intrusive ads. (Default value)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverride_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_allowpopupsduringpageunload", - "displayName": "Allows a page to show popups during its unloading", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverrideforfiles", + "displayName": "Prevent bypassing of Microsoft Defender SmartScreen warnings about downloads", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_allowpopupsduringpageunload_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverrideforfiles_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_allowpopupsduringpageunload_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverrideforfiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_allowtrackingforurls", - "displayName": "Configure tracking prevention exceptions for specific sites", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenallowlistdomains", + "displayName": "Configure the list of domains for which Microsoft Defender SmartScreen won't trigger warnings", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_allowtrackingforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenallowlistdomains_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_allowtrackingforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenallowlistdomains_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_allowtrackingforurls_allowtrackingforurlsdesc", - "displayName": "Configure tracking prevention exceptions for specific sites (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenallowlistdomains_smartscreenallowlistdomainsdesc", + "displayName": "Configure the list of domains for which SmartScreen won't trigger warnings (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_autoplayallowed", - "displayName": "Allow media autoplay for websites", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenenabled", + "displayName": "Configure Microsoft Defender SmartScreen", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_autoplayallowed_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_autoplayallowed_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_clearbrowsingdataonexit", - "displayName": "Clear browsing data when Microsoft Edge closes", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepageisnewtabpage", + "displayName": "Set the new tab page as the home page", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_clearbrowsingdataonexit_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepageisnewtabpage_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_clearbrowsingdataonexit_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepageisnewtabpage_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_clickonceenabled", - "displayName": "Allow users to open files using the ClickOnce protocol", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepagelocation", + "displayName": "Configure the home page URL", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_clickonceenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepagelocation_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_clickonceenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepagelocation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_commandlineflagsecuritywarningsenabled", - "displayName": "Enable security warnings for command-line flags", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepagelocation_homepagelocation", + "displayName": "Home page URL (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagehidedefaulttopsites", + "displayName": "Hide the default top sites from the new tab page", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_commandlineflagsecuritywarningsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagehidedefaulttopsites_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_commandlineflagsecuritywarningsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagehidedefaulttopsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_directinvokeenabled", - "displayName": "Allow users to open files using the DirectInvoke protocol", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagelocation", + "displayName": "Configure the new tab page URL", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_directinvokeenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagelocation_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_directinvokeenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagelocation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_edgecollectionsenabled", - "displayName": "Enable the Collections feature", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagelocation_newtabpagelocation", + "displayName": "New tab page URL (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup", + "displayName": "Action to take on Microsoft Edge startup", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_edgecollectionsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_edgecollectionsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_enterprisehardwareplatformapienabled", - "displayName": "Allow managed extensions to use the Enterprise Hardware Platform API", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup", + "displayName": "Action to take on startup (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_enterprisehardwareplatformapienabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup_5", + "displayName": "Open a new tab", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_enterprisehardwareplatformapienabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup_1", + "displayName": "Restore the last session", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup_4", + "displayName": "Open a list of URLs", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_forcenetworkinprocess", - "displayName": "Force networking code to run in the browser process", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartupurls", + "displayName": "Sites to open when the browser starts", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_forcenetworkinprocess_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartupurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_forcenetworkinprocess_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartupurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_gotointranetsiteforsinglewordentryinaddressbar", - "displayName": "Force direct intranet site navigation instead of searching on single word entries in the Address Bar", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartupurls_restoreonstartupurlsdesc", + "displayName": "Sites to open when the browser starts (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_showhomebutton", + "displayName": "Show Home button on toolbar", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_gotointranetsiteforsinglewordentryinaddressbar_0", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_showhomebutton_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_gotointranetsiteforsinglewordentryinaddressbar_1", + "id": "device_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_showhomebutton_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_importbrowsersettings", - "displayName": "Allow importing of browser settings", + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions", + "displayName": "Allow download restrictions", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_importbrowsersettings_0", + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_importbrowsersettings_1", + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_internetexplorerintegrationsitelist", - "displayName": "Configure the Enterprise Mode Site List", + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions", + "displayName": "Download restrictions (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_internetexplorerintegrationsitelist_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_0", + "displayName": "No special restrictions", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_internetexplorerintegrationsitelist_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_1", + "displayName": "Block malicious downloads and dangerous file types", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_2", + "displayName": "Block potentially dangerous or unwanted downloads and dangerous file types", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_3", + "displayName": "Block all downloads", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_4", + "displayName": "Block malicious downloads", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_internetexplorerintegrationsitelist_internetexplorerintegrationsitelist", - "displayName": "Configure the Enterprise Mode Site List (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_nonremovableprofileenabled", - "displayName": "Configure whether a user always has a default profile automatically signed in with their work or school account", + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended", + "displayName": "Allow download restrictions", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_nonremovableprofileenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_nonremovableprofileenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_recommended_clearbrowsingdataonexit_recommended", - "displayName": "Clear browsing data when Microsoft Edge closes", + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions", + "displayName": "Download restrictions (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_recommended_clearbrowsingdataonexit_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_0", + "displayName": "No special restrictions", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_recommended_clearbrowsingdataonexit_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_1", + "displayName": "Block malicious downloads and dangerous file types", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_2", + "displayName": "Block potentially dangerous or unwanted downloads and dangerous file types", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_3", + "displayName": "Block all downloads", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_4", + "displayName": "Block malicious downloads", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_recommended_importbrowsersettings_recommended", - "displayName": "Allow importing of browser settings", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_adstransparencyenabled", + "displayName": "Configure if the ads transparency feature is enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_recommended_importbrowsersettings_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_adstransparencyenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_recommended_importbrowsersettings_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_adstransparencyenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenfortrusteddownloadsenabled_recommended", - "displayName": "Force Microsoft Defender SmartScreen checks on downloads from trusted sources", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_hiderestoredialogenabled", + "displayName": "Hide restore pages dialog after browser crash", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenfortrusteddownloadsenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_hiderestoredialogenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenfortrusteddownloadsenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_hiderestoredialogenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_renderercodeintegrityenabled", - "displayName": "Enable renderer code integrity", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_pdfsecuremode", + "displayName": "Secure mode and Certificate-based Digital Signature validation in native PDF reader", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_renderercodeintegrityenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_pdfsecuremode_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_renderercodeintegrityenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_pdfsecuremode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_signedhttpexchangeenabled", - "displayName": "Enable Signed HTTP Exchange (SXG) support", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_promptonmultiplematchingcertificates", + "displayName": "Prompt the user to select a certificate when multiple certificates match", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_signedhttpexchangeenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_promptonmultiplematchingcertificates_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_signedhttpexchangeenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_promptonmultiplematchingcertificates_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_spellchecklanguageblocklist", - "displayName": "Force disable spellcheck languages", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting", + "displayName": "Control use of the WebHID API", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_spellchecklanguageblocklist_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_spellchecklanguageblocklist_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_spellchecklanguageblocklist_spellchecklanguageblocklistdesc", - "displayName": "Force disable spellcheck languages (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_trackingprevention", - "displayName": "Block tracking of users' web-browsing activity", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_defaultwebhidguardsetting", + "displayName": "Control use of the WebHID API (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_trackingprevention_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_defaultwebhidguardsetting_2", + "displayName": "Do not allow any site to request access to HID devices via the WebHID API", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_trackingprevention_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_defaultwebhidguardsetting_3", + "displayName": "Allow sites to ask the user to grant access to a HID device", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_trackingprevention_trackingprevention", - "displayName": "Block tracking of users' web-browsing activity (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidaskforurls", + "displayName": "Allow the WebHID API on these sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_trackingprevention_trackingprevention_0", - "displayName": "Off (no tracking prevention)", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidaskforurls_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_trackingprevention_trackingprevention_1", - "displayName": "Basic (blocks harmful trackers, content and ads will be personalized)", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_trackingprevention_trackingprevention_2", - "displayName": "Balanced (blocks harmful trackers and trackers from sites user has not visited; content and ads will be less personalized)", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge_trackingprevention_trackingprevention_3", - "displayName": "Strict (blocks harmful trackers and majority of trackers from all sites; content and ads will have minimal personalization. Some parts of sites might not work)", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidaskforurls_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge~smartscreen_smartscreenfortrusteddownloadsenabled", - "displayName": "Force Microsoft Defender SmartScreen checks on downloads from trusted sources", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidaskforurls_webhidaskforurlsdesc", + "displayName": "Allow the WebHID API on these sites (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidblockedforurls", + "displayName": "Block the WebHID API on these sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge~smartscreen_smartscreenfortrusteddownloadsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev78diff~policy~microsoft_edge~smartscreen_smartscreenfortrusteddownloadsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_allowsyncxhrinpagedismissal", - "displayName": "Allow pages to send synchronous XHR requests during page dismissal", + "id": "device_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidblockedforurls_webhidblockedforurlsdesc", + "displayName": "Block the WebHID API on these sites (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_configurekeyboardshortcuts", + "displayName": "Configure the list of commands for which to disable keyboard shortcuts", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_allowsyncxhrinpagedismissal_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_configurekeyboardshortcuts_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_allowsyncxhrinpagedismissal_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_configurekeyboardshortcuts_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_backgroundtemplatelistupdatesenabled", - "displayName": "Enables background updates to the list of available templates for Collections and other features that use templates", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_configurekeyboardshortcuts_configurekeyboardshortcuts", + "displayName": "Configure the list of commands for which to disable keyboard shortcuts (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_edgeassetdeliveryserviceenabled", + "displayName": "Allow features to download assets from the Asset Delivery Service", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_backgroundtemplatelistupdatesenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_edgeassetdeliveryserviceenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_backgroundtemplatelistupdatesenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_edgeassetdeliveryserviceenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_customhelplink", - "displayName": "Specify custom help link", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_internetexplorermodeenablesavepageas", + "displayName": "Allow Save page as in Internet Explorer mode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_customhelplink_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_internetexplorermodeenablesavepageas_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_customhelplink_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_internetexplorermodeenablesavepageas_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_customhelplink_customhelplink", - "displayName": "Specify custom help link (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_externalprotocoldialogshowalwaysopencheckbox", - "displayName": "Show an \"Always open\" checkbox in external protocol dialog", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_edgeassetdeliveryserviceenabled_recommended", + "displayName": "Allow features to download assets from the Asset Delivery Service", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_externalprotocoldialogshowalwaysopencheckbox_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_edgeassetdeliveryserviceenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_externalprotocoldialogshowalwaysopencheckbox_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_edgeassetdeliveryserviceenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_hstspolicybypasslist", - "displayName": "Configure the list of names that will bypass the HSTS policy check", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_sitesafetyservicesenabled_recommended", + "displayName": "Allow users to configure Site safety services (obsolete)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_hstspolicybypasslist_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_sitesafetyservicesenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_hstspolicybypasslist_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_sitesafetyservicesenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_hstspolicybypasslist_hstspolicybypasslistdesc", - "displayName": "Configure the list of names that will bypass the HSTS policy check (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_importopentabs", - "displayName": "Allow importing of open tabs", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended~extensions_recommended_controldefaultstateofallowextensionfromotherstoressettingenabled_recommended", + "displayName": "Configure default state of Allow extensions from other stores setting", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_importopentabs_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended~extensions_recommended_controldefaultstateofallowextensionfromotherstoressettingenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_importopentabs_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended~extensions_recommended_controldefaultstateofallowextensionfromotherstoressettingenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_recommended_importopentabs_recommended", - "displayName": "Allow importing of open tabs", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_sitesafetyservicesenabled", + "displayName": "Allow users to configure Site safety services (obsolete)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_recommended_importopentabs_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_sitesafetyservicesenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_recommended_importopentabs_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_sitesafetyservicesenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_recommended~startup_recommended_newtabpagemanagedquicklinks_recommended", - "displayName": "Set new tab page quick links", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~identity_edgedefaultprofileenabled", + "displayName": "Default Profile Setting Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_recommended~startup_recommended_newtabpagemanagedquicklinks_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~identity_edgedefaultprofileenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_recommended~startup_recommended_newtabpagemanagedquicklinks_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~identity_edgedefaultprofileenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_recommended~startup_recommended_newtabpagemanagedquicklinks_recommended_newtabpagemanagedquicklinks", - "displayName": "Set new tab page quick links (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~identity_edgedefaultprofileenabled_edgedefaultprofileenabled", + "displayName": "Default Profile Setting Enabled (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_recommended~startup_recommended_newtabpagesetfeedtype_recommended", - "displayName": "Configure the Microsoft Edge new tab page experience", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~kioskmode_kioskswipegesturesenabled", + "displayName": "Swipe gestures in Microsoft Edge kiosk mode enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_recommended~startup_recommended_newtabpagesetfeedtype_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~kioskmode_kioskswipegesturesenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_recommended~startup_recommended_newtabpagesetfeedtype_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~kioskmode_kioskswipegesturesenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_recommended~startup_recommended_newtabpagesetfeedtype_recommended_newtabpagesetfeedtype", - "displayName": "New tab page experience (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_networkservicesandboxenabled", + "displayName": "Enable the network service sandbox", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_recommended~startup_recommended_newtabpagesetfeedtype_recommended_newtabpagesetfeedtype_0", - "displayName": "Microsoft News feed experience", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_networkservicesandboxenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_recommended~startup_recommended_newtabpagesetfeedtype_recommended_newtabpagesetfeedtype_1", - "displayName": "Office 365 feed experience", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_networkservicesandboxenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_tabfreezingenabled", - "displayName": "Allow freezing of background tabs", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_outlookhubmenuenabled", + "displayName": "Allow users to access the Outlook menu", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_tabfreezingenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_outlookhubmenuenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge_tabfreezingenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_outlookhubmenuenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge~startup_newtabpagecompanylogo", - "displayName": "Set new tab page company logo (deprecated)", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_recommended_outlookhubmenuenabled_recommended", + "displayName": "Allow users to access the Outlook menu", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge~startup_newtabpagecompanylogo_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_recommended_outlookhubmenuenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge~startup_newtabpagecompanylogo_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_recommended_outlookhubmenuenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge~startup_newtabpagecompanylogo_newtabpagecompanylogo", - "displayName": "New tab page company logo (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge~startup_newtabpagemanagedquicklinks", - "displayName": "Set new tab page quick links", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_settimeoutwithout1msclampenabled", + "displayName": "Control Javascript setTimeout() function minimum timeout (deprecated)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge~startup_newtabpagemanagedquicklinks_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_settimeoutwithout1msclampenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge~startup_newtabpagemanagedquicklinks_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_settimeoutwithout1msclampenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge~startup_newtabpagemanagedquicklinks_newtabpagemanagedquicklinks", - "displayName": "Set new tab page quick links (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge~startup_newtabpagesetfeedtype", - "displayName": "Configure the Microsoft Edge new tab page experience", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_useragentclienthintsgreaseupdateenabled", + "displayName": "Control the User-Agent Client Hints GREASE Update feature", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge~startup_newtabpagesetfeedtype_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_useragentclienthintsgreaseupdateenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge~startup_newtabpagesetfeedtype_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_useragentclienthintsgreaseupdateenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge~startup_newtabpagesetfeedtype_newtabpagesetfeedtype", - "displayName": "New tab page experience (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge~httpauthentication_allhttpauthschemesallowedfororigins", + "displayName": "List of origins that allow all HTTP authentication", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge~startup_newtabpagesetfeedtype_newtabpagesetfeedtype_0", - "displayName": "Microsoft News feed experience", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge~httpauthentication_allhttpauthschemesallowedfororigins_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev79diff~policy~microsoft_edge~startup_newtabpagesetfeedtype_newtabpagesetfeedtype_1", - "displayName": "Office 365 feed experience", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge~httpauthentication_allhttpauthschemesallowedfororigins_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_alternateerrorpagesenabled", - "displayName": "Suggest similar pages when a webpage canโ€™t be found", + "id": "device_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge~httpauthentication_allhttpauthschemesallowedfororigins_allhttpauthschemesallowedfororiginsdesc", + "displayName": "List of origins that allow all HTTP authentication (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_internetexplorerzoomdisplay", + "displayName": "Display zoom in IE Mode tabs with DPI Scale included like it is in Internet Explorer", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_alternateerrorpagesenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_internetexplorerzoomdisplay_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_alternateerrorpagesenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_internetexplorerzoomdisplay_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_dnsinterceptionchecksenabled", - "displayName": "DNS interception checks enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_livecaptionsallowed", + "displayName": "Live captions allowed", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_dnsinterceptionchecksenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_livecaptionsallowed_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_dnsinterceptionchecksenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_livecaptionsallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_hidefirstrunexperience", - "displayName": "Hide the First-run experience and splash screen", + "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_originagentclusterdefaultenabled", + "displayName": "Origin-keyed agent clustering enabled by default", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_hidefirstrunexperience_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_originagentclusterdefaultenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_hidefirstrunexperience_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_originagentclusterdefaultenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_paymentmethodqueryenabled", - "displayName": "Allow websites to query for available payment methods", + "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge~identity_guidedswitchenabled", + "displayName": "Guided Switch Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_paymentmethodqueryenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge~identity_guidedswitchenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_paymentmethodqueryenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge~identity_guidedswitchenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_personalizationreportingenabled", - "displayName": "Allow personalization of ads, search and news by sending browsing history to Microsoft", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_alloweddomainsforapps", + "displayName": "Define domains allowed to access Google Workspace", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_personalizationreportingenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_alloweddomainsforapps_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_personalizationreportingenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_alloweddomainsforapps_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_pinningwizardallowed", - "displayName": "Allow Pin to taskbar wizard", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_alloweddomainsforapps_alloweddomainsforapps", + "displayName": "Define domains allowed to access Google Workspace (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_askbeforecloseenabled", + "displayName": "Get user confirmation before closing a browser window with multiple tabs", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_pinningwizardallowed_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_askbeforecloseenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_pinningwizardallowed_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_askbeforecloseenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_recommended_alternateerrorpagesenabled_recommended", - "displayName": "Suggest similar pages when a webpage canโ€™t be found", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting", + "displayName": "Configure browser process code integrity guard setting", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_recommended_alternateerrorpagesenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_recommended_alternateerrorpagesenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenpuaenabled_recommended", - "displayName": "Configure Microsoft Defender SmartScreen to block potentially unwanted apps", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_browsercodeintegritysetting", + "displayName": "Configure browser process code integrity guard setting (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenpuaenabled_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_browsercodeintegritysetting_0", + "displayName": "Do not enable code integrity guard in the browser process.", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenpuaenabled_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_browsercodeintegritysetting_1", + "displayName": "Enable code integrity guard audit mode in the browser process.", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_browsercodeintegritysetting_2", + "displayName": "Enable code integrity guard enforcement in the browser process.", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_totalmemorylimitmb", - "displayName": "Set limit on megabytes of memory a single Microsoft Edge instance can use.", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_doubleclickclosetabenabled", + "displayName": "Double Click feature in Microsoft Edge enabled (only available in China)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_totalmemorylimitmb_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_doubleclickclosetabenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_totalmemorylimitmb_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_doubleclickclosetabenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_totalmemorylimitmb_totalmemorylimitmb", - "displayName": "Set memory limit for Microsoft Edge instances: (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_webappinstallforcelist", - "displayName": "Configure list of force-installed Web Apps", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_edgeedropenabled", + "displayName": "Enable Drop feature in Microsoft Edge", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_webappinstallforcelist_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_edgeedropenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_webappinstallforcelist_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_edgeedropenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_webappinstallforcelist_webappinstallforcelist", - "displayName": "URLs for Web Apps to be silently installed. (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_webcomponentsv0enabled", - "displayName": "Re-enable Web Components v0 API until M84. (deprecated)", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_importoneachlaunch", + "displayName": "Allow import of data from other browsers on each Microsoft Edge launch", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_webcomponentsv0enabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_importoneachlaunch_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_webcomponentsv0enabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_importoneachlaunch_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_webrtclocalipsallowedurls", - "displayName": "Manage exposure of local IP addressess by WebRTC", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_pdfxfaenabled", + "displayName": "XFA support in native PDF reader enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_webrtclocalipsallowedurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_pdfxfaenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_webrtclocalipsallowedurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_pdfxfaenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge_webrtclocalipsallowedurls_webrtclocalipsallowedurlsdesc", - "displayName": "Manage exposure of local IP addressess by WebRTC (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_defaultinsecurecontentsetting", - "displayName": "Control use of insecure content exceptions", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_quicksearchshowminimenu", + "displayName": "Enables Microsoft Edge mini menu", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_defaultinsecurecontentsetting_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_quicksearchshowminimenu_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_defaultinsecurecontentsetting_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_quicksearchshowminimenu_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_defaultinsecurecontentsetting_defaultinsecurecontentsetting", - "displayName": "Control use of insecure content exceptions (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_askbeforecloseenabled_recommended", + "displayName": "Get user confirmation before closing a browser window with multiple tabs", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_defaultinsecurecontentsetting_defaultinsecurecontentsetting_2", - "displayName": "Do not allow any site to load blockable mixed content", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_askbeforecloseenabled_recommended_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_defaultinsecurecontentsetting_defaultinsecurecontentsetting_3", - "displayName": "Allow users to add exceptions to allow blockable mixed content", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_askbeforecloseenabled_recommended_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_insecurecontentallowedforurls", - "displayName": "Allow insecure content on specified sites", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_quicksearchshowminimenu_recommended", + "displayName": "Enables Microsoft Edge mini menu", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_insecurecontentallowedforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_quicksearchshowminimenu_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_insecurecontentallowedforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_quicksearchshowminimenu_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_insecurecontentallowedforurls_insecurecontentallowedforurlsdesc", - "displayName": "Allow insecure content on specified sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_insecurecontentblockedforurls", - "displayName": "Block insecure content on specified sites", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_textpredictionenabled", + "displayName": "Text prediction enabled by default", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_insecurecontentblockedforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_textpredictionenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_insecurecontentblockedforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_textpredictionenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_insecurecontentblockedforurls_insecurecontentblockedforurlsdesc", - "displayName": "Block insecure content on specified sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_legacysamesitecookiebehaviorenabled", - "displayName": "Enable default legacy SameSite cookie behavior setting", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge~passwordmanager_passwordmanagerrestrictlengthenabled", + "displayName": "Restrict the length of passwords that can be saved in the Password Manager", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_legacysamesitecookiebehaviorenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge~passwordmanager_passwordmanagerrestrictlengthenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_legacysamesitecookiebehaviorenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge~passwordmanager_passwordmanagerrestrictlengthenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_legacysamesitecookiebehaviorenabled_legacysamesitecookiebehaviorenabled", - "displayName": "Enable default legacy SameSite cookie behavior setting (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_exemptfiletypedownloadwarnings", + "displayName": "Disable download file type extension-based warnings for specified file types on domains", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_legacysamesitecookiebehaviorenabled_legacysamesitecookiebehaviorenabled_1", - "displayName": "Revert to legacy SameSite behavior for cookies on all sites", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_exemptfiletypedownloadwarnings_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_legacysamesitecookiebehaviorenabled_legacysamesitecookiebehaviorenabled_2", - "displayName": "Use SameSite-by-default behavior for cookies on all sites", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_exemptfiletypedownloadwarnings_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_legacysamesitecookiebehaviorenabledfordomainlist", - "displayName": "Revert to legacy SameSite behavior for cookies on specified sites", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_exemptfiletypedownloadwarnings_exemptfiletypedownloadwarnings", + "displayName": "Disable download file type extension-based warnings for specified file types on domains (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_internetexplorerintegrationalwayswaitforunload", + "displayName": "Wait for Internet Explorer mode tabs to completely unload before ending the browser session", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_legacysamesitecookiebehaviorenabledfordomainlist_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_internetexplorerintegrationalwayswaitforunload_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_legacysamesitecookiebehaviorenabledfordomainlist_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_internetexplorerintegrationalwayswaitforunload_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~contentsettings_legacysamesitecookiebehaviorenabledfordomainlist_legacysamesitecookiebehaviorenabledfordomainlistdesc", - "displayName": "Revert to legacy SameSite behavior for cookies on specified sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~smartscreen_smartscreenpuaenabled", - "displayName": "Configure Microsoft Defender SmartScreen to block potentially unwanted apps", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorproofingenabled", + "displayName": "Spell checking provided by Microsoft Editor", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~smartscreen_smartscreenpuaenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorproofingenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev80diff~policy~microsoft_edge~smartscreen_smartscreenpuaenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorproofingenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_addressbarmicrosoftsearchinbingproviderenabled", - "displayName": "Enable Microsoft Search in Bing suggestions in the address bar", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorsynonymsenabled", + "displayName": "Synonyms are provided when using Microsoft Editor spell checker", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_addressbarmicrosoftsearchinbingproviderenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorsynonymsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_addressbarmicrosoftsearchinbingproviderenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorsynonymsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_ambientauthenticationinprivatemodesenabled", - "displayName": "Enable Ambient Authentication for InPrivate and Guest profiles", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended", + "displayName": "Configure the default paste format of URLs copied from Microsoft Edge, and determine if additional formats will be available to users", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_ambientauthenticationinprivatemodesenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_ambientauthenticationinprivatemodesenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_ambientauthenticationinprivatemodesenabled_ambientauthenticationinprivatemodesenabled", - "displayName": "Enable Ambient Authentication for InPrivate and Guest profiles (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_configurefriendlyurlformat", + "displayName": "Configure the default paste format of URLs copied from Microsoft Edge, and determine if additional formats will be available to users (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_ambientauthenticationinprivatemodesenabled_ambientauthenticationinprivatemodesenabled_0", - "displayName": "Enable ambient authentication in regular sessions only", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_ambientauthenticationinprivatemodesenabled_ambientauthenticationinprivatemodesenabled_1", - "displayName": "Enable ambient authentication in InPrivate and regular sessions", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_configurefriendlyurlformat_1", + "displayName": "The plain URL without any extra information, such as the page's title. This is the recommended option when this policy is configured. For more information, see the description.", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_ambientauthenticationinprivatemodesenabled_ambientauthenticationinprivatemodesenabled_2", - "displayName": "Enable ambient authentication in guest and regular sessions", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_configurefriendlyurlformat_3", + "displayName": "Titled Hyperlink: A hyperlink that points to the copied URL, but whose visible text is the title of the destination page. This is the Friendly URL format.", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_ambientauthenticationinprivatemodesenabled_ambientauthenticationinprivatemodesenabled_3", - "displayName": "Enable ambient authentication in regular, InPrivate and guest sessions", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_configurefriendlyurlformat_4", + "displayName": "Coming soon. If set, behaves the same as 'Plain URL'.", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_audiosandboxenabled", - "displayName": "Allow the audio sandbox to run", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_unthrottlednestedtimeoutenabled", + "displayName": "JavaScript setTimeout will not be clamped until a higher nesting threshold is set (deprecated)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_audiosandboxenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_unthrottlednestedtimeoutenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_audiosandboxenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_unthrottlednestedtimeoutenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_configureonpremisesaccountautosignin", - "displayName": "Configure automatic sign in with an Active Directory domain account when there is no Azure AD domain account", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_internetexplorerintegrationalwaysuseoscapture", + "displayName": "Always use the OS capture engine to avoid issues with capturing Internet Explorer mode tabs", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_configureonpremisesaccountautosignin_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_internetexplorerintegrationalwaysuseoscapture_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_configureonpremisesaccountautosignin_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_internetexplorerintegrationalwaysuseoscapture_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_configureonpremisesaccountautosignin_configureonpremisesaccountautosignin", - "displayName": "Configure automatic sign in with an Active Directory domain account when there is no Azure AD domain account (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeenabled_recommended", + "displayName": "Efficiency mode enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_configureonpremisesaccountautosignin_configureonpremisesaccountautosignin_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_configureonpremisesaccountautosignin_configureonpremisesaccountautosignin_1", - "displayName": "Sign in and make domain account non-removable", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeenabled_recommended_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_forcelegacydefaultreferrerpolicy", - "displayName": "Use a default referrer policy of no-referrer-when-downgrade. (deprecated)", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeonpowerenabled_recommended", + "displayName": "Enable efficiency mode when the device is connected to a power source", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_forcelegacydefaultreferrerpolicy_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeonpowerenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_forcelegacydefaultreferrerpolicy_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeonpowerenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_globallyscopehttpauthcacheenabled", - "displayName": "Enable globally scoped HTTP auth cache", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeenabled", + "displayName": "Efficiency mode enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_globallyscopehttpauthcacheenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_globallyscopehttpauthcacheenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_importcookies", - "displayName": "Allow importing of Cookies", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeonpowerenabled", + "displayName": "Enable efficiency mode when the device is connected to a power source", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_importcookies_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeonpowerenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_importcookies_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeonpowerenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_importextensions", - "displayName": "Allow importing of extensions", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~printing_printpdfasimagedefault", + "displayName": "Print PDF as Image Default", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_importextensions_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~printing_printpdfasimagedefault_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_importextensions_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~printing_printpdfasimagedefault_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_importshortcuts", - "displayName": "Allow importing of shortcuts", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_enhancesecuritymodebypassintranet", + "displayName": "Enhanced Security Mode configuration for Intranet zone sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_importshortcuts_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_enhancesecuritymodebypassintranet_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_importshortcuts_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_enhancesecuritymodebypassintranet_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_internetexplorerintegrationsiteredirect", - "displayName": "Specify how \"in-page\" navigations to unconfigured sites behave when started from Internet Explorer mode pages", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_eventpathenabled", + "displayName": "Re-enable the Event.path API until Microsoft Edge version 115", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_internetexplorerintegrationsiteredirect_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_eventpathenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_internetexplorerintegrationsiteredirect_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_eventpathenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_internetexplorerintegrationsiteredirect_internetexplorerintegrationsiteredirect", - "displayName": "Specify how \"in-page\" navigations to unconfigured sites behave when started from Internet Explorer mode pages (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_internetexplorerintegrationlocalmhtfileallowed", + "displayName": "Allow local MHTML files to open automatically in Internet Explorer mode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_internetexplorerintegrationsiteredirect_internetexplorerintegrationsiteredirect_0", - "displayName": "Default", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_internetexplorerintegrationsiteredirect_internetexplorerintegrationsiteredirect_1", - "displayName": "Keep only automatic navigations in Internet Explorer mode", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_internetexplorerintegrationlocalmhtfileallowed_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_internetexplorerintegrationsiteredirect_internetexplorerintegrationsiteredirect_2", - "displayName": "Keep all in-page navigations in Internet Explorer mode", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_internetexplorerintegrationlocalmhtfileallowed_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_recommended_importcookies_recommended", - "displayName": "Allow importing of Cookies", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_recommended~performance_recommended_performancedetectorenabled_recommended", + "displayName": "Performance Detector Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_recommended_importcookies_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_recommended~performance_recommended_performancedetectorenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_recommended_importcookies_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_recommended~performance_recommended_performancedetectorenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_recommended_importextensions_recommended", - "displayName": "Allow importing of extensions", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_webselectenabled", + "displayName": "Web Select Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_recommended_importextensions_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_webselectenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_recommended_importextensions_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_webselectenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_recommended_importshortcuts_recommended", - "displayName": "Allow importing of shortcuts", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlaccess", + "displayName": "Force WebSQL to be enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_recommended_importshortcuts_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlaccess_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_recommended_importshortcuts_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlaccess_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_strictermixedcontenttreatmentenabled", - "displayName": "Enable stricter treatment for mixed content", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlnonsecurecontextenabled", + "displayName": "Force WebSQL in non-secure contexts to be enabled (deprecated)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_strictermixedcontenttreatmentenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlnonsecurecontextenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_strictermixedcontenttreatmentenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlnonsecurecontextenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_tls13hardeningforlocalanchorsenabled", - "displayName": "Enable a TLS 1.3 security feature for local trust anchors.", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~edgeworkspaces_edgeworkspacesenabled", + "displayName": "Enable Workspaces", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_tls13hardeningforlocalanchorsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~edgeworkspaces_edgeworkspacesenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81diff~policy~microsoft_edge_tls13hardeningforlocalanchorsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~edgeworkspaces_edgeworkspacesenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81identitydiff~policy~microsoft_edge_forcecertificatepromptsonmultiplematches", - "displayName": "Configure whether Microsoft Edge should automatically select a certificate when there are multiple certificate matches for a site configured with \"AutoSelectCertificateForUrls\"", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~identity_linkedaccountenabled", + "displayName": "Enable the linked account feature", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev81identitydiff~policy~microsoft_edge_forcecertificatepromptsonmultiplematches_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~identity_linkedaccountenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev81identitydiff~policy~microsoft_edge_forcecertificatepromptsonmultiplematches_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~identity_linkedaccountenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_allowsurfgame", - "displayName": "Allow surf game", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~performance_performancedetectorenabled", + "displayName": "Performance Detector Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_allowsurfgame_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~performance_performancedetectorenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_allowsurfgame_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~performance_performancedetectorenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_allowtokenbindingforurls", - "displayName": "Configure the list of sites for which Microsoft Edge will attempt to establish a Token Binding with.", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~startup_restoreonstartupuserurlsenabled", + "displayName": "Allow users to add and remove their own sites during startup when the RestoreOnStartupURLs policy is configured", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_allowtokenbindingforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~startup_restoreonstartupuserurlsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_allowtokenbindingforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~startup_restoreonstartupuserurlsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_allowtokenbindingforurls_allowtokenbindingforurlsdesc", - "displayName": "Configure the list of sites for which Microsoft Edge will attempt to establish a Token Binding with. (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_bingadssuppression", - "displayName": "Block all ads on Bing search results", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting", + "displayName": "Set the default \"share additional operating system region\" setting", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_bingadssuppression_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_bingadssuppression_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_clearcachedimagesandfilesonexit", - "displayName": "Clear cached images and files when Microsoft Edge closes", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_defaultshareadditionalosregionsetting", + "displayName": "'Set the default \"share additional operating system region\" setting (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_clearcachedimagesandfilesonexit_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_defaultshareadditionalosregionsetting_0", + "displayName": "Limited", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_clearcachedimagesandfilesonexit_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_defaultshareadditionalosregionsetting_1", + "displayName": "Always share the OS Regional format", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_defaultshareadditionalosregionsetting_2", + "displayName": "Never share the OS Regional format", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_configureshare", - "displayName": "Configure the Share experience", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_encryptedclienthelloenabled", + "displayName": "TLS Encrypted ClientHello Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_configureshare_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_encryptedclienthelloenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_configureshare_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_encryptedclienthelloenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_configureshare_configureshare", - "displayName": "Configure the Share experience (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended", + "displayName": "Set the default \"share additional operating system region\" setting", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_configureshare_configureshare_0", - "displayName": "Allow using the Share experience", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_configureshare_configureshare_1", - "displayName": "Don't allow using the Share experience", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_deletedataonmigration", - "displayName": "Delete old browser data on migration", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_defaultshareadditionalosregionsetting", + "displayName": "'Set the default \"share additional operating system region\" setting (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_deletedataonmigration_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_defaultshareadditionalosregionsetting_0", + "displayName": "Limited", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_deletedataonmigration_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_defaultshareadditionalosregionsetting_1", + "displayName": "Always share the OS Regional format", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_defaultshareadditionalosregionsetting_2", + "displayName": "Never share the OS Regional format", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_dnsoverhttpsmode", - "displayName": "Control the mode of DNS-over-HTTPS", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge~startup_newtabpageapplauncherenabled", + "displayName": "Hide App Launcher on Microsoft Edge new tab page", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_dnsoverhttpsmode_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge~startup_newtabpageapplauncherenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_dnsoverhttpsmode_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge~startup_newtabpageapplauncherenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_dnsoverhttpsmode_dnsoverhttpsmode", - "displayName": "Control the mode of DNS-over-HTTPS (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardallowedforurls", + "displayName": "Allow clipboard use on specific sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_dnsoverhttpsmode_dnsoverhttpsmode_off", - "displayName": "Disable DNS-over-HTTPS", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_dnsoverhttpsmode_dnsoverhttpsmode_automatic", - "displayName": "Enable DNS-over-HTTPS with insecure fallback", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardallowedforurls_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_dnsoverhttpsmode_dnsoverhttpsmode_secure", - "displayName": "Enable DNS-over-HTTPS without insecure fallback", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardallowedforurls_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_dnsoverhttpstemplates", - "displayName": "Specify URI template of desired DNS-over-HTTPS resolver", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardallowedforurls_clipboardallowedforurlsdesc", + "displayName": "Allow clipboard use on specific sites (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardblockedforurls", + "displayName": "Block clipboard use on specific sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_dnsoverhttpstemplates_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_dnsoverhttpstemplates_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_dnsoverhttpstemplates_dnsoverhttpstemplates", - "displayName": "Specify URI template of desired DNS-over-HTTPS resolver (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardblockedforurls_clipboardblockedforurlsdesc", + "displayName": "Block clipboard use on specific sites (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_familysafetysettingsenabled", - "displayName": "Allow users to configure Family safety", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting", + "displayName": "Default clipboard site permission", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_familysafetysettingsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_familysafetysettingsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_localprovidersenabled", - "displayName": "Allow suggestions from local providers", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_defaultclipboardsetting", + "displayName": "Default clipboard site permission (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_localprovidersenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_defaultclipboardsetting_2", + "displayName": "Do not allow any site to use the clipboard site permission", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_localprovidersenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_defaultclipboardsetting_3", + "displayName": "Allow sites to ask the user to grant the clipboard site permission", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_recommended_clearcachedimagesandfilesonexit_recommended", - "displayName": "Clear cached images and files when Microsoft Edge closes", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_microsoftrootstoreenabled", + "displayName": "Determines whether the Microsoft Root Store and built-in certificate verifier will be used to verify server certificates (obsolete)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_recommended_clearcachedimagesandfilesonexit_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_microsoftrootstoreenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_recommended_clearcachedimagesandfilesonexit_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_microsoftrootstoreenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_recommended_localprovidersenabled_recommended", - "displayName": "Allow suggestions from local providers", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowalldevicesforurls", + "displayName": "Allow listed sites to connect to any HID device", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_recommended_localprovidersenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowalldevicesforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_recommended_localprovidersenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowalldevicesforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_screencaptureallowed", - "displayName": "Allow or deny screen capture", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowalldevicesforurls_webhidallowalldevicesforurlsdesc", + "displayName": "Allow listed sites to connect to any HID device (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdevicesforurls", + "displayName": "Allow listed sites connect to specific HID devices", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_screencaptureallowed_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdevicesforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_screencaptureallowed_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdevicesforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_scrolltotextfragmentenabled", - "displayName": "Enable scrolling to text specified in URL fragments", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdevicesforurls_webhidallowdevicesforurls", + "displayName": "Allow listed sites connect to specific HID devices (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdeviceswithhidusagesforurls", + "displayName": "Automatically grant permission to these sites to connect to HID devices containing top-level collections with the given HID usage", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_scrolltotextfragmentenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdeviceswithhidusagesforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_scrolltotextfragmentenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdeviceswithhidusagesforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_synctypeslistdisabled", - "displayName": "Configure the list of types that are excluded from synchronization", + "id": "device_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdeviceswithhidusagesforurls_webhidallowdeviceswithhidusagesforurls", + "displayName": "Automatically grant permission to these sites to connect to HID devices containing top-level collections with the given HID usage (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_autofillmembershipsenabled", + "displayName": "Save and fill memberships", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_synctypeslistdisabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_autofillmembershipsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_synctypeslistdisabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_autofillmembershipsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev83diff~policy~microsoft_edge_synctypeslistdisabled_synctypeslistdisableddesc", - "displayName": "Configure the list of types that are excluded from synchronization (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_appcacheforceenabled", - "displayName": "Allows the AppCache feature to be re-enabled, even if it's turned off by default", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_autofillmembershipsenabled_recommended", + "displayName": "Save and fill memberships", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_appcacheforceenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_autofillmembershipsenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_appcacheforceenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_autofillmembershipsenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_delaynavigationsforinitialsitelistdownload", - "displayName": "Require that the Enterprise Mode Site List is available before tab navigation", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_searchfiltersenabled_recommended", + "displayName": "Search Filters Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_delaynavigationsforinitialsitelistdownload_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_searchfiltersenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_delaynavigationsforinitialsitelistdownload_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_searchfiltersenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_delaynavigationsforinitialsitelistdownload_delaynavigationsforinitialsitelistdownload", - "displayName": "Require that the Enterprise Mode Site List is available before tab navigation (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended~printing_recommended_printpreviewstickysettings_recommended", + "displayName": "Configure the sticky print preview settings", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_delaynavigationsforinitialsitelistdownload_delaynavigationsforinitialsitelistdownload_0", - "displayName": "None", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended~printing_recommended_printpreviewstickysettings_recommended_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_delaynavigationsforinitialsitelistdownload_delaynavigationsforinitialsitelistdownload_1", - "displayName": "All eligible navigations", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended~printing_recommended_printpreviewstickysettings_recommended_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_internetexplorerintegrationenhancedhangdetection", - "displayName": "Configure enhanced hang detection for Internet Explorer mode", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended~printing_recommended_printpreviewstickysettings_recommended_printpreviewstickysettings", + "displayName": "Configure the sticky print preview settings (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchfiltersenabled", + "displayName": "Search Filters Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_internetexplorerintegrationenhancedhangdetection_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchfiltersenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_internetexplorerintegrationenhancedhangdetection_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchfiltersenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_internetexplorerintegrationenhancedhangdetection_internetexplorerintegrationenhancedhangdetection", - "displayName": "Configure enhanced hang detection for Internet Explorer mode (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled", + "displayName": "Search in Sidebar enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_internetexplorerintegrationenhancedhangdetection_internetexplorerintegrationenhancedhangdetection_0", - "displayName": "Enhanced hang detection disabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_internetexplorerintegrationenhancedhangdetection_internetexplorerintegrationenhancedhangdetection_1", - "displayName": "Enhanced hang detection enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_nativewindowocclusionenabled", - "displayName": "Enable Hiding of Native Windows", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_searchinsidebarenabled", + "displayName": "Search in Sidebar enabled (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_nativewindowocclusionenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_searchinsidebarenabled_0", + "displayName": "Enable search in sidebar", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_nativewindowocclusionenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_searchinsidebarenabled_1", + "displayName": "Disable search in sidebar for Kids Mode", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_searchinsidebarenabled_2", + "displayName": "Disable search in sidebar", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_navigationdelayforinitialsitelistdownloadtimeout", - "displayName": "Set a timeout for delay of tab navigation for the Enterprise Mode Site List", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsallowedforurls", + "displayName": "Allow multiple automatic downloads in quick succession on specific sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_navigationdelayforinitialsitelistdownloadtimeout_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsallowedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_navigationdelayforinitialsitelistdownloadtimeout_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsallowedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_navigationdelayforinitialsitelistdownloadtimeout_navigationdelayforinitialsitelistdownloadtimeout", - "displayName": "Set a timeout for delay of tab navigation for the Enterprise Mode Site List: (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsallowedforurls_automaticdownloadsallowedforurlsdesc", + "displayName": "Allow multiple automatic downloads in quick succession on specific sites (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended_managedsearchengines_recommended", - "displayName": "Manage Search Engines", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsblockedforurls", + "displayName": "Block multiple automatic downloads in quick succession on specific sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended_managedsearchengines_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended_managedsearchengines_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended_managedsearchengines_recommended_managedsearchengines", - "displayName": "Manage Search Engines (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsblockedforurls_automaticdownloadsblockedforurlsdesc", + "displayName": "Block multiple automatic downloads in quick succession on specific sites (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderenabled_recommended", - "displayName": "Enable the default search provider", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting", + "displayName": "Default automatic downloads setting", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderencodings_recommended", - "displayName": "Default search provider encodings", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_defaultautomaticdownloadssetting", + "displayName": "Default automatic downloads setting (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderencodings_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_defaultautomaticdownloadssetting_1", + "displayName": "Allow all websites to perform automatic downloads", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderencodings_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_defaultautomaticdownloadssetting_2", + "displayName": "Don't allow any website to perform automatic downloads", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderencodings_recommended_defaultsearchproviderencodingsdesc", - "displayName": "Default search provider encodings (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderimageurl_recommended", - "displayName": "Specifies the search-by-image feature for the default search provider", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~edgeworkspaces_workspacesnavigationsettings", + "displayName": "Configure navigation settings per groups of URLs in Microsoft Edge Workspaces", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderimageurl_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~edgeworkspaces_workspacesnavigationsettings_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderimageurl_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~edgeworkspaces_workspacesnavigationsettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderimageurl_recommended_defaultsearchproviderimageurl", - "displayName": "Specifies the search-by-image feature for the default search provider (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~edgeworkspaces_workspacesnavigationsettings_workspacesnavigationsettings", + "displayName": "Configure navigation settings per groups of URLs in Microsoft Edge Workspaces (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderimageurlpostparams_recommended", - "displayName": "Parameters for an image URL that uses POST", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereadergrammartoolsenabled", + "displayName": "Enable Grammar Tools feature within Immersive Reader in Microsoft Edge (obsolete)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderimageurlpostparams_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereadergrammartoolsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderimageurlpostparams_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereadergrammartoolsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderimageurlpostparams_recommended_defaultsearchproviderimageurlpostparams", - "displayName": "Parameters for an image URL that uses POST (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderkeyword_recommended", - "displayName": "Default search provider keyword", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereaderpicturedictionaryenabled", + "displayName": "Enable Picture Dictionary feature within Immersive Reader in Microsoft Edge (obsolete)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderkeyword_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereaderpicturedictionaryenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderkeyword_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereaderpicturedictionaryenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchproviderkeyword_recommended_defaultsearchproviderkeyword", - "displayName": "Default search provider keyword (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchprovidername_recommended", - "displayName": "Default search provider name", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~printing_printpreviewstickysettings", + "displayName": "Configure the sticky print preview settings", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchprovidername_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~printing_printpreviewstickysettings_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchprovidername_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~printing_printpreviewstickysettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchprovidername_recommended_defaultsearchprovidername", - "displayName": "Default search provider name (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~printing_printpreviewstickysettings_printpreviewstickysettings", + "displayName": "Configure the sticky print preview settings (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchprovidersearchurl_recommended", - "displayName": "Default search provider search URL", + "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_internetexplorermodecleardataonexitenabled", + "displayName": "Clear history for IE and IE mode every time you exit", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchprovidersearchurl_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_internetexplorermodecleardataonexitenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchprovidersearchurl_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_internetexplorermodecleardataonexitenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchprovidersearchurl_recommended_defaultsearchprovidersearchurl", - "displayName": "Default search provider search URL (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchprovidersuggesturl_recommended", - "displayName": "Default search provider URL for suggestions", + "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_newpdfreaderenabled", + "displayName": "Microsoft Edge built-in PDF reader powered by Adobe Acrobat enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchprovidersuggesturl_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_newpdfreaderenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchprovidersuggesturl_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_newpdfreaderenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_defaultsearchprovidersuggesturl_recommended_defaultsearchprovidersuggesturl", - "displayName": "Default search provider URL for suggestions (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_winhttpproxyresolverenabled", - "displayName": "Use Windows proxy resolver (deprecated)", + "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_recommended_newpdfreaderenabled_recommended", + "displayName": "Microsoft Edge built-in PDF reader powered by Adobe Acrobat enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_winhttpproxyresolverenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_recommended_newpdfreaderenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge_winhttpproxyresolverenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_recommended_newpdfreaderenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge~applicationguard_applicationguardcontainerproxy", - "displayName": "Application Guard Container Proxy", + "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_sharedarraybufferunrestrictedaccessallowed", + "displayName": "Specifies whether SharedArrayBuffers can be used in a non cross-origin-isolated context", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge~applicationguard_applicationguardcontainerproxy_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_sharedarraybufferunrestrictedaccessallowed_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge~applicationguard_applicationguardcontainerproxy_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_sharedarraybufferunrestrictedaccessallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev84diff~policy~microsoft_edge~applicationguard_applicationguardcontainerproxy_applicationguardcontainerproxy", - "displayName": "Application Guard Container Proxy (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_autolaunchprotocolsfromorigins", - "displayName": "Define a list of protocols that can launch an external application from listed origins without prompting the user", + "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_showacrobatsubscriptionbutton", + "displayName": "Shows button on native PDF viewer in Microsoft Edge that allows users to sign up for Adobe Acrobat subscription", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_autolaunchprotocolsfromorigins_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_showacrobatsubscriptionbutton_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_autolaunchprotocolsfromorigins_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_showacrobatsubscriptionbutton_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_autolaunchprotocolsfromorigins_autolaunchprotocolsfromorigins", - "displayName": "Define a list of protocols that can launch an external application from listed origins without prompting the user (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_autoopenallowedforurls", - "displayName": "URLs where AutoOpenFileTypes can apply", + "id": "device_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_cryptowalletenabled", + "displayName": "Enable CryptoWallet feature (obsolete)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_autoopenallowedforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_cryptowalletenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_autoopenallowedforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_cryptowalletenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_autoopenallowedforurls_autoopenallowedforurlsdesc", - "displayName": "URLs where AutoOpenFileTypes can apply (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_autoopenfiletypes", - "displayName": "List of file types that should be automatically opened on download", + "id": "device_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_mousegestureenabled", + "displayName": "Mouse Gesture Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_autoopenfiletypes_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_mousegestureenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_autoopenfiletypes_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_mousegestureenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_autoopenfiletypes_autoopenfiletypesdesc", - "displayName": "List of file types that should be automatically opened on download (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_defaultsearchprovidercontextmenuaccessallowed", - "displayName": "Allow default search provider context menu search access", + "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_readaloudenabled", + "displayName": "Enable Read Aloud feature in Microsoft Edge", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_defaultsearchprovidercontextmenuaccessallowed_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_readaloudenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_defaultsearchprovidercontextmenuaccessallowed_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_readaloudenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_enablesha1forlocalanchors", - "displayName": "Allow certificates signed using SHA-1 when issued by local trust anchors (deprecated)", + "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_restorepdfview", + "displayName": "Restore PDF view", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_enablesha1forlocalanchors_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_restorepdfview_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_enablesha1forlocalanchors_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_restorepdfview_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_exemptdomainfiletypepairsfromfiletypedownloadwarnings", - "displayName": "Disable download file type extension-based warnings for specified file types on domains", + "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_tabservicesenabled", + "displayName": "Enable tab organization suggestions", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_exemptdomainfiletypepairsfromfiletypedownloadwarnings_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_tabservicesenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_exemptdomainfiletypepairsfromfiletypedownloadwarnings_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_tabservicesenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_exemptdomainfiletypepairsfromfiletypedownloadwarnings_exemptdomainfiletypepairsfromfiletypedownloadwarningsdesc", - "displayName": "Disable download file type extension-based warnings for specified file types on domains (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_intensivewakeupthrottlingenabled", - "displayName": "Control the IntensiveWakeUpThrottling feature", + "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_defaultbrowsersettingscampaignenabled", + "displayName": "Enables default browser settings campaigns", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_intensivewakeupthrottlingenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_defaultbrowsersettingscampaignenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_intensivewakeupthrottlingenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_defaultbrowsersettingscampaignenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_newtabpagesearchbox_recommended", - "displayName": "Configure the new tab page search box experience", + "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_discoverpagecontextenabled", + "displayName": "Enable Discover access to page contents for AAD profiles (obsolete)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_newtabpagesearchbox_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_discoverpagecontextenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_newtabpagesearchbox_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_discoverpagecontextenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_newtabpagesearchbox_recommended_newtabpagesearchbox", - "displayName": "New tab page search box experience (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_enforcelocalanchorconstraintsenabled", + "displayName": "Determines whether the built-in certificate verifier will enforce constraints encoded into trust anchors loaded from the platform trust store (obsolete)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_newtabpagesearchbox_recommended_newtabpagesearchbox_bing", - "displayName": "Search box (Recommended)", + "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_enforcelocalanchorconstraintsenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_recommended~defaultsearchprovider_recommended_newtabpagesearchbox_recommended_newtabpagesearchbox_redirect", - "displayName": "Address bar", + "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_enforcelocalanchorconstraintsenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordmonitorallowed_recommended", - "displayName": "Allow users to be alerted if their passwords are found to be unsafe", + "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_showdownloadstoolbarbutton", + "displayName": "Show Downloads button on the toolbar", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordmonitorallowed_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_showdownloadstoolbarbutton_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordmonitorallowed_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_showdownloadstoolbarbutton_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_recommended~startup_recommended_newtabpageprerenderenabled_recommended", - "displayName": "Enable preload of the new tab page for faster rendering", + "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_standalonehubssidebarenabled", + "displayName": "Standalone Sidebar Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_recommended~startup_recommended_newtabpageprerenderenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_standalonehubssidebarenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_recommended~startup_recommended_newtabpageprerenderenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_standalonehubssidebarenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_roamingprofilelocation", - "displayName": "Set the roaming profile directory", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_composeinlineenabled", + "displayName": "Compose is enabled for writing on the web", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_roamingprofilelocation_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_composeinlineenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_roamingprofilelocation_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_composeinlineenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_roamingprofilelocation_roamingprofilelocation", - "displayName": "Set the roaming profile directory (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_roamingprofilesupportenabled", - "displayName": "Enable using roaming copies for Microsoft Edge profile data", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeindicatoruienabled", + "displayName": "Manage the indicator UI of the Enhanced Security Mode (ESM) feature in Microsoft Edge", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_roamingprofilesupportenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeindicatoruienabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_roamingprofilesupportenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeindicatoruienabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_tlsciphersuitedenylist", - "displayName": "Specify the TLS cipher suites to disable", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeoptoutuxenabled", + "displayName": "Manage opt-out user experience for Enhanced Security Mode (ESM) in Microsoft Edge (deprecated)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_tlsciphersuitedenylist_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeoptoutuxenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_tlsciphersuitedenylist_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeoptoutuxenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge_tlsciphersuitedenylist_tlsciphersuitedenylistdesc", - "displayName": "Specify the TLS cipher suites to disable (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge~defaultsearchprovider_newtabpagesearchbox", - "displayName": "Configure the new tab page search box experience", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_recommended_walletdonationenabled_recommended", + "displayName": "Wallet Donation Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge~defaultsearchprovider_newtabpagesearchbox_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_recommended_walletdonationenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge~defaultsearchprovider_newtabpagesearchbox_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_recommended_walletdonationenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge~defaultsearchprovider_newtabpagesearchbox_newtabpagesearchbox", - "displayName": "New tab page search box experience (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_searchforimageenabled", + "displayName": "Search for image enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge~defaultsearchprovider_newtabpagesearchbox_newtabpagesearchbox_bing", - "displayName": "Search box (Recommended)", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_searchforimageenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge~defaultsearchprovider_newtabpagesearchbox_newtabpagesearchbox_redirect", - "displayName": "Address bar", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_searchforimageenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge~passwordmanager_passwordmonitorallowed", - "displayName": "Allow users to be alerted if their passwords are found to be unsafe", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_walletdonationenabled", + "displayName": "Wallet Donation Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge~passwordmanager_passwordmonitorallowed_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_walletdonationenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge~passwordmanager_passwordmonitorallowed_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_walletdonationenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge~startup_newtabpageprerenderenabled", - "displayName": "Enable preload of the new tab page for faster rendering", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenabled", + "displayName": "Microsoft Edge management enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge~startup_newtabpageprerenderenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev85diff~policy~microsoft_edge~startup_newtabpageprerenderenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_collectionsservicesandexportsblocklist", - "displayName": "Block access to a specified list of services and export targets in Collections", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenrollmenttoken", + "displayName": "Microsoft Edge management enrollment token", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_collectionsservicesandexportsblocklist_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenrollmenttoken_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_collectionsservicesandexportsblocklist_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenrollmenttoken_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_collectionsservicesandexportsblocklist_collectionsservicesandexportsblocklistdesc", - "displayName": "Block access to a specified list of services and export targets in Collections (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenrollmenttoken_edgemanagementenrollmenttoken", + "displayName": "Microsoft Edge management enrollment token (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_defaultsensorssetting", - "displayName": "Default sensors setting", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementextensionsfeedbackenabled", + "displayName": "Microsoft Edge management extensions feedback enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_defaultsensorssetting_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementextensionsfeedbackenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_defaultsensorssetting_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementextensionsfeedbackenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_defaultsensorssetting_defaultsensorssetting", - "displayName": "Default sensors setting (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_recommended~performance_recommended_pinbrowseressentialstoolbarbutton_recommended", + "displayName": "Pin browser essentials toolbar button", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_defaultsensorssetting_defaultsensorssetting_1", - "displayName": "Allow sites to access sensors", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_recommended~performance_recommended_pinbrowseressentialstoolbarbutton_recommended_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_defaultsensorssetting_defaultsensorssetting_2", - "displayName": "Do not allow any site to access sensors", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_recommended~performance_recommended_pinbrowseressentialstoolbarbutton_recommended_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_defaultserialguardsetting", - "displayName": "Control use of the Serial API", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_throttlenonvisiblecrossoriginiframesallowed", + "displayName": "Allows enabling throttling of non-visible, cross-origin iframes (obsolete)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_defaultserialguardsetting_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_throttlenonvisiblecrossoriginiframesallowed_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_defaultserialguardsetting_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_throttlenonvisiblecrossoriginiframesallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_defaultserialguardsetting_defaultserialguardsetting", - "displayName": "Control use of the Serial API (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting", + "displayName": "Default setting for third-party storage partitioning", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_defaultserialguardsetting_defaultserialguardsetting_2", - "displayName": "Do not allow any site to request access to serial ports via the Serial API", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_defaultserialguardsetting_defaultserialguardsetting_3", - "displayName": "Allow sites to ask for user permission to access a serial port", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_diagnosticdata", - "displayName": "Send required and optional diagnostic data about browser usage", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting_defaultthirdpartystoragepartitioningsetting", + "displayName": "Default setting for third-party storage partitioning (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_diagnosticdata_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting_defaultthirdpartystoragepartitioningsetting_1", + "displayName": "Let third-party storage partitioning to be enabled.", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_diagnosticdata_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting_defaultthirdpartystoragepartitioningsetting_2", + "displayName": "Block third-party storage partitioning from being enabled.", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_diagnosticdata_diagnosticdata", - "displayName": "Send required and optional diagnostic data about browser usage (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_thirdpartystoragepartitioningblockedfororigins", + "displayName": "Disable third-party storage partitioning for specific top-level origins", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_diagnosticdata_diagnosticdata_0", - "displayName": "Off (Not recommended)", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_diagnosticdata_diagnosticdata_1", - "displayName": "Required data", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_thirdpartystoragepartitioningblockedfororigins_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_diagnosticdata_diagnosticdata_2", - "displayName": "Optional data", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_thirdpartystoragepartitioningblockedfororigins_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_enterprisemodesitelistmanagerallowed", - "displayName": "Allow access to the Enterprise Mode Site List Manager tool", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_thirdpartystoragepartitioningblockedfororigins_thirdpartystoragepartitioningblockedfororiginsdesc", + "displayName": "Block third-party storage partitioning for these origins (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~performance_pinbrowseressentialstoolbarbutton", + "displayName": "Pin browser essentials toolbar button", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_enterprisemodesitelistmanagerallowed_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~performance_pinbrowseressentialstoolbarbutton_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_enterprisemodesitelistmanagerallowed_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~performance_pinbrowseressentialstoolbarbutton_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_forcesync", - "displayName": "Force synchronization of browser data and do not show the sync consent prompt", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_allowsystemnotifications", + "displayName": "Allows system notifications", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_forcesync_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_allowsystemnotifications_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_forcesync_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_allowsystemnotifications_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_insecureformswarningsenabled", - "displayName": "Enable warnings for insecure forms", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_edgewalletetreeenabled", + "displayName": "Edge Wallet E-Tree Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_insecureformswarningsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_edgewalletetreeenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_insecureformswarningsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_edgewalletetreeenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_internetexplorerintegrationtestingallowed", - "displayName": "Allow Internet Explorer mode testing", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_internetexplorerintegrationzoneidentifiermhtfileallowed", + "displayName": "Automatically open downloaded MHT or MHTML files from the web in Internet Explorer mode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_internetexplorerintegrationtestingallowed_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_internetexplorerintegrationzoneidentifiermhtfileallowed_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_internetexplorerintegrationtestingallowed_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_internetexplorerintegrationzoneidentifiermhtfileallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_savecookiesonexit", - "displayName": "Save cookies when Microsoft Edge closes", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended_edgewalletetreeenabled_recommended", + "displayName": "Edge Wallet E-Tree Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_savecookiesonexit_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended_edgewalletetreeenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_savecookiesonexit_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended_edgewalletetreeenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_savecookiesonexit_savecookiesonexitdesc", - "displayName": "Save cookies when Microsoft Edge closes (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_sensorsallowedforurls", - "displayName": "Allow access to sensors on specific sites", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended~edgegames_recommended_gamermodeenabled_recommended", + "displayName": "Enable Gamer Mode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_sensorsallowedforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended~edgegames_recommended_gamermodeenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_sensorsallowedforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended~edgegames_recommended_gamermodeenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_sensorsallowedforurls_sensorsallowedforurlsdesc", - "displayName": "Allow access to sensors on specific sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_sensorsblockedforurls", - "displayName": "Block access to sensors on specific sites", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarallowed", + "displayName": "Enable the Search bar", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_sensorsblockedforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarallowed_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_sensorsblockedforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_sensorsblockedforurls_sensorsblockedforurlsdesc", - "displayName": "Block access to sensors on specific sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_serialaskforurls", - "displayName": "Allow the Serial API on specific sites", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarisenabledonstartup", + "displayName": "Allow the Search bar at Windows startup", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_serialaskforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarisenabledonstartup_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_serialaskforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarisenabledonstartup_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_serialaskforurls_serialaskforurlsdesc", - "displayName": "Allow the Serial API on specific sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_serialblockedforurls", - "displayName": "Block the Serial API on specific sites", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_showhistorythumbnails", + "displayName": "Show thumbnail images for browsing history", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_serialblockedforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_showhistorythumbnails_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_serialblockedforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_showhistorythumbnails_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_serialblockedforurls_serialblockedforurlsdesc", - "displayName": "Block the Serial API on specific sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_useragentclienthintsenabled", - "displayName": "Enable the User-Agent Client Hints feature (deprecated)", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_splitscreenenabled", + "displayName": "Enable split screen feature in Microsoft Edge", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_useragentclienthintsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_splitscreenenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_useragentclienthintsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_splitscreenenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_userdatasnapshotretentionlimit", - "displayName": "Limits the number of user data snapshots retained for use in case of emergency rollback", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_uploadfromphoneenabled", + "displayName": "Enable upload files from mobile in Microsoft Edge desktop", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_userdatasnapshotretentionlimit_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_uploadfromphoneenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_userdatasnapshotretentionlimit_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_uploadfromphoneenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge_userdatasnapshotretentionlimit_userdatasnapshotretentionlimit", - "displayName": "Limits the number of user data snapshots retained for use in case of emergency rollback: (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_defaultfilesystemreadguardsetting", - "displayName": "Control use of the File System API for reading", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge~edgegames_gamermodeenabled", + "displayName": "Enable Gamer Mode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_defaultfilesystemreadguardsetting_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge~edgegames_gamermodeenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_defaultfilesystemreadguardsetting_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge~edgegames_gamermodeenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_defaultfilesystemreadguardsetting_defaultfilesystemreadguardsetting", - "displayName": "Control use of the File System API for reading (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_beforeunloadeventcancelbypreventdefaultenabled", + "displayName": "Control the behavior for the cancel dialog produced by the beforeunload event", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_defaultfilesystemreadguardsetting_defaultfilesystemreadguardsetting_2", - "displayName": "Don't allow any site to request read access to files and directories via the File System API", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_beforeunloadeventcancelbypreventdefaultenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_defaultfilesystemreadguardsetting_defaultfilesystemreadguardsetting_3", - "displayName": "Allow sites to ask the user to grant read access to files and directories via the File System API", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_beforeunloadeventcancelbypreventdefaultenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_defaultfilesystemwriteguardsetting", - "displayName": "Control use of the File System API for writing", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcebuiltinpushmessagingclient", + "displayName": "Forces Microsoft Edge to use its built-in WNS push client to connect to the Windows Push Notification Service.", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_defaultfilesystemwriteguardsetting_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcebuiltinpushmessagingclient_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_defaultfilesystemwriteguardsetting_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcebuiltinpushmessagingclient_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_defaultfilesystemwriteguardsetting_defaultfilesystemwriteguardsetting", - "displayName": "Control use of the File System API for writing (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcepermissionpolicyunloaddefaultenabled", + "displayName": "Controls whether unload event handlers can be disabled.", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_defaultfilesystemwriteguardsetting_defaultfilesystemwriteguardsetting_2", - "displayName": "Don't allow any site to request write access to files and directories", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcepermissionpolicyunloaddefaultenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_defaultfilesystemwriteguardsetting_defaultfilesystemwriteguardsetting_3", - "displayName": "Allow sites to ask the user to grant write access to files and directories", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcepermissionpolicyunloaddefaultenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_filesystemreadaskforurls", - "displayName": "Allow read access via the File System API on these sites", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_pictureinpictureoverlayenabled", + "displayName": "Enable Picture in Picture overlay feature on supported webpages in Microsoft Edge", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_filesystemreadaskforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_pictureinpictureoverlayenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_filesystemreadaskforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_pictureinpictureoverlayenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_filesystemreadaskforurls_filesystemreadaskforurlsdesc", - "displayName": "Allow read access via the File System API on these sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_filesystemreadblockedforurls", - "displayName": "Block read access via the File System API on these sites", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_recommended~passwordmanager_recommended_passworddeleteonbrowsercloseenabled_recommended", + "displayName": "Prevent passwords from being deleted if any Edge settings is enabled to delete browsing data when Microsoft Edge closes", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_filesystemreadblockedforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_recommended~passwordmanager_recommended_passworddeleteonbrowsercloseenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_filesystemreadblockedforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_recommended~passwordmanager_recommended_passworddeleteonbrowsercloseenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_filesystemreadblockedforurls_filesystemreadblockedforurlsdesc", - "displayName": "Block read access via the File System API on these sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_filesystemwriteaskforurls", - "displayName": "Allow write access to files and directories on these sites", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_sendmouseeventsdisabledformcontrolsenabled", + "displayName": "Control the new behavior for event dispatching on disabled form controls", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_filesystemwriteaskforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_sendmouseeventsdisabledformcontrolsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_filesystemwriteaskforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_sendmouseeventsdisabledformcontrolsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_filesystemwriteaskforurls_filesystemwriteaskforurlsdesc", - "displayName": "Allow write access to files and directories on these sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_filesystemwriteblockedforurls", - "displayName": "Block write access to files and directories on these sites", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~contentsettings_dataurlinsvguseenabled", + "displayName": "Data URL support for SVGUseElement", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_filesystemwriteblockedforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~contentsettings_dataurlinsvguseenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_filesystemwriteblockedforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~contentsettings_dataurlinsvguseenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_filesystemwriteblockedforurls_filesystemwriteblockedforurlsdesc", - "displayName": "Block write access to files and directories on these sites (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_spotlightexperiencesandrecommendationsenabled", - "displayName": "Choose whether users can receive customized background images and text, suggestions, notifications,\r\nand tips for Microsoft services", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~network_compressiondictionarytransportenabled", + "displayName": "Enable compression dictionary transport support", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_spotlightexperiencesandrecommendationsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~network_compressiondictionarytransportenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~contentsettings_spotlightexperiencesandrecommendationsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~network_compressiondictionarytransportenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~startup_newtabpageallowedbackgroundtypes", - "displayName": "Configure the background types allowed for the new tab page layout", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~passwordmanager_passworddeleteonbrowsercloseenabled", + "displayName": "Prevent passwords from being deleted if any Edge settings is enabled to delete browsing data when Microsoft Edge closes", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~startup_newtabpageallowedbackgroundtypes_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~passwordmanager_passworddeleteonbrowsercloseenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~startup_newtabpageallowedbackgroundtypes_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~passwordmanager_passworddeleteonbrowsercloseenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~startup_newtabpageallowedbackgroundtypes_newtabpageallowedbackgroundtypes", - "displayName": "New tab page experience (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~smartscreen_exemptsmartscreendownloadwarnings", + "displayName": "Disable SmartScreen AppRep based warnings for specified file types on specified domains", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~startup_newtabpageallowedbackgroundtypes_newtabpageallowedbackgroundtypes_1", - "displayName": "Disable daily background image type", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~startup_newtabpageallowedbackgroundtypes_newtabpageallowedbackgroundtypes_2", - "displayName": "Disable custom background image type", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~smartscreen_exemptsmartscreendownloadwarnings_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev86~policy~microsoft_edge~startup_newtabpageallowedbackgroundtypes_newtabpageallowedbackgroundtypes_3", - "displayName": "Disable all background image types", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~smartscreen_exemptsmartscreendownloadwarnings_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_configurefriendlyurlformat", - "displayName": "Configure the default paste format of URLs copied from Microsoft Edge, and determine if additional formats will be available to users", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~smartscreen_exemptsmartscreendownloadwarnings_exemptsmartscreendownloadwarnings", + "displayName": "Disable SmartScreen AppRep based warnings for specified file types on specified domains (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagebingchatenabled", + "displayName": "Disable Bing chat entry-points on Microsoft Edge Enterprise new tab page", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_configurefriendlyurlformat_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagebingchatenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_configurefriendlyurlformat_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagebingchatenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_configurefriendlyurlformat_configurefriendlyurlformat", - "displayName": "Configure the default paste format of URLs copied from Microsoft Edge, and determine if additional formats will be available to users (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagecompanylogoenabled", + "displayName": "Hide the company logo on the Microsoft Edge new tab page", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_configurefriendlyurlformat_configurefriendlyurlformat_1", - "displayName": "The plain URL without any extra information, such as the page's title. This is the recommended option when this policy is configured. For more information, see the description.", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_configurefriendlyurlformat_configurefriendlyurlformat_3", - "displayName": "Titled Hyperlink: A hyperlink that points to the copied URL, but whose visible text is the title of the destination page. This is the Friendly URL format.", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagecompanylogoenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_configurefriendlyurlformat_configurefriendlyurlformat_4", - "displayName": "Coming soon. If set, behaves the same as 'Plain URL'.", + "id": "device_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagecompanylogoenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_edgeshoppingassistantenabled", - "displayName": "Shopping in Microsoft Edge Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge_recommended_organizationalbrandingonworkprofileuienabled_recommended", + "displayName": "Allow the use of your organization's branding assets from Microsoft Entra on the profile-related UI of a work profile", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_edgeshoppingassistantenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge_recommended_organizationalbrandingonworkprofileuienabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_edgeshoppingassistantenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge_recommended_organizationalbrandingonworkprofileuienabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_hideinternetexplorerredirectuxforincompatiblesitesenabled", - "displayName": "Hide the one-time redirection dialog and the banner on Microsoft Edge", + "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchintranetsitestoworkprofile", + "displayName": "Switch intranet sites to a work profile", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_hideinternetexplorerredirectuxforincompatiblesitesenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchintranetsitestoworkprofile_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_hideinternetexplorerredirectuxforincompatiblesitesenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchintranetsitestoworkprofile_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_recommended_edgeshoppingassistantenabled_recommended", - "displayName": "Shopping in Microsoft Edge Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchsitesoniemodesitelisttoworkprofile", + "displayName": "Switch sites on the IE mode site list to a work profile", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_recommended_edgeshoppingassistantenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchsitesoniemodesitelisttoworkprofile_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_recommended_edgeshoppingassistantenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchsitesoniemodesitelisttoworkprofile_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_recommended_redirectsitesfrominternetexplorerredirectmode_recommended", - "displayName": "Redirect incompatible sites from Internet Explorer to Microsoft Edge", + "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementpolicyoverridesplatformpolicy", + "displayName": "Microsoft Edge management service policy overrides platform policy.", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_recommended_redirectsitesfrominternetexplorerredirectmode_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementpolicyoverridesplatformpolicy_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_recommended_redirectsitesfrominternetexplorerredirectmode_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementpolicyoverridesplatformpolicy_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_recommended_redirectsitesfrominternetexplorerredirectmode_recommended_redirectsitesfrominternetexplorerredirectmode", - "displayName": "Redirect incompatible sites from Internet Explorer to Microsoft Edge (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementuserpolicyoverridescloudmachinepolicy", + "displayName": "Allow cloud-based Microsoft Edge management service user policies to override local user policies.", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_recommended_redirectsitesfrominternetexplorerredirectmode_recommended_redirectsitesfrominternetexplorerredirectmode_0", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementuserpolicyoverridescloudmachinepolicy_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_recommended_redirectsitesfrominternetexplorerredirectmode_recommended_redirectsitesfrominternetexplorerredirectmode_1", - "displayName": "Redirect sites based on the incompatible sites sitelist", + "id": "device_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementuserpolicyoverridescloudmachinepolicy_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordrevealenabled_recommended", - "displayName": "Enable Password reveal button", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_edge3pserptelemetryenabled", + "displayName": "Edge 3P SERP Telemetry Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordrevealenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_edge3pserptelemetryenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordrevealenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_edge3pserptelemetryenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_redirectsitesfrominternetexplorerpreventbhoinstall", - "displayName": "Prevent install of the BHO to redirect incompatible sites from Internet Explorer to Microsoft Edge", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_edge3pserptelemetryenabled_recommended", + "displayName": "Edge 3P SERP Telemetry Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_redirectsitesfrominternetexplorerpreventbhoinstall_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_edge3pserptelemetryenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_redirectsitesfrominternetexplorerpreventbhoinstall_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_edge3pserptelemetryenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_redirectsitesfrominternetexplorerredirectmode", - "displayName": "Redirect incompatible sites from Internet Explorer to Microsoft Edge", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_organizationlogooverlayonappiconenabled_recommended", + "displayName": "Allow your organization's logo from Microsoft Entra to be overlaid on the Microsoft Edge app icon of a work profile", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_redirectsitesfrominternetexplorerredirectmode_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_organizationlogooverlayonappiconenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_redirectsitesfrominternetexplorerredirectmode_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_organizationlogooverlayonappiconenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_redirectsitesfrominternetexplorerredirectmode_redirectsitesfrominternetexplorerredirectmode", - "displayName": "Redirect incompatible sites from Internet Explorer to Microsoft Edge (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~identity_recommended_automaticprofileswitchingsitelist_recommended", + "displayName": "Configure the automatic profile switching site list", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_redirectsitesfrominternetexplorerredirectmode_redirectsitesfrominternetexplorerredirectmode_0", - "displayName": "Disable", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~identity_recommended_automaticprofileswitchingsitelist_recommended_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_redirectsitesfrominternetexplorerredirectmode_redirectsitesfrominternetexplorerredirectmode_1", - "displayName": "Redirect sites based on the incompatible sites sitelist", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~identity_recommended_automaticprofileswitchingsitelist_recommended_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_speechrecognitionenabled", - "displayName": "Configure Speech Recognition", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~identity_recommended_automaticprofileswitchingsitelist_recommended_automaticprofileswitchingsitelist", + "displayName": "Configure the automatic profile switching site list (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~sleepingtabs_recommended_autodiscardsleepingtabsenabled_recommended", + "displayName": "Configure auto discard sleeping tabs", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_speechrecognitionenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~sleepingtabs_recommended_autodiscardsleepingtabsenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_speechrecognitionenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~sleepingtabs_recommended_autodiscardsleepingtabsenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_webcaptureenabled", - "displayName": "Enable web capture feature in Microsoft Edge", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_webappsettings", + "displayName": "Web App management settings", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_webcaptureenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_webappsettings_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge_webcaptureenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_webappsettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge~kioskmode_kioskaddressbareditingenabled", - "displayName": "Configure address bar editing for kiosk mode public browsing experience", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_webappsettings_webappsettings", + "displayName": "Web App management settings (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~identity_automaticprofileswitchingsitelist", + "displayName": "Configure the automatic profile switching site list", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge~kioskmode_kioskaddressbareditingenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~identity_automaticprofileswitchingsitelist_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge~kioskmode_kioskaddressbareditingenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~identity_automaticprofileswitchingsitelist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge~kioskmode_kioskdeletedownloadsonexit", - "displayName": "Delete files downloaded as part of kiosk session when Microsoft Edge closes", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~identity_automaticprofileswitchingsitelist_automaticprofileswitchingsitelist", + "displayName": "Configure the automatic profile switching site list (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~sleepingtabs_autodiscardsleepingtabsenabled", + "displayName": "Configure auto discard sleeping tabs", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge~kioskmode_kioskdeletedownloadsonexit_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~sleepingtabs_autodiscardsleepingtabsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge~kioskmode_kioskdeletedownloadsonexit_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~sleepingtabs_autodiscardsleepingtabsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge~printing_printingpapersizedefault", - "displayName": "Default printing page size", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_nativehostsexecutableslaunchdirectly", + "displayName": "Force Windows executable Native Messaging hosts to launch directly", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge~printing_printingpapersizedefault_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_nativehostsexecutableslaunchdirectly_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge~printing_printingpapersizedefault_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_nativehostsexecutableslaunchdirectly_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev87~policy~microsoft_edge~printing_printingpapersizedefault_printingpapersizedefault", - "displayName": "Default printing page size (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.0.705.23~policy~microsoft_edge_targetblankimpliesnoopener", - "displayName": "Do not set window.opener for links targeting _blank", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_postquantumkeyagreementenabled", + "displayName": "Enable post-quantum key agreement for TLS", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.0.705.23~policy~microsoft_edge_targetblankimpliesnoopener_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_postquantumkeyagreementenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.0.705.23~policy~microsoft_edge_targetblankimpliesnoopener_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_postquantumkeyagreementenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.0.705.23~policy~microsoft_edge~httpauthentication_basicauthoverhttpenabled", - "displayName": "Allow Basic authentication for HTTP", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~googlecast_edgedisabledialprotocolforcastdiscovery", + "displayName": "Disable DIAL protocol for cast device discovery", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.0.705.23~policy~microsoft_edge~httpauthentication_basicauthoverhttpenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~googlecast_edgedisabledialprotocolforcastdiscovery_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.0.705.23~policy~microsoft_edge~httpauthentication_basicauthoverhttpenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~googlecast_edgedisabledialprotocolforcastdiscovery_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_recommended_sleepingtabstimeout_recommended", - "displayName": "Set the background tab inactivity timeout for sleeping tabs", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsenabled", + "displayName": "Enable Related Website Sets", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_recommended_sleepingtabstimeout_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_recommended_sleepingtabstimeout_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout", - "displayName": "Set the background tab inactivity timeout for sleeping tabs (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsoverrides", + "displayName": "Override Related Website Sets.", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout_30", - "displayName": "30 seconds of inactivity", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout_300", - "displayName": "5 minutes of inactivity", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout_900", - "displayName": "15 minutes of inactivity", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout_1800", - "displayName": "30 minutes of inactivity", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout_3600", - "displayName": "1 hour of inactivity", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout_7200", - "displayName": "2 hours of inactivity", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout_10800", - "displayName": "3 hours of inactivity", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout_21600", - "displayName": "6 hours of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsoverrides_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout_43200", - "displayName": "12 hours of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsoverrides_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_sleepingtabstimeout", - "displayName": "Set the background tab inactivity timeout for sleeping tabs", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsoverrides_relatedwebsitesetsoverrides", + "displayName": "Override Related Website Sets. (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_preventtyposquattingpromptoverride", + "displayName": "Prevent bypassing Edge Website Typo Protection prompts for sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_sleepingtabstimeout_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_preventtyposquattingpromptoverride_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_sleepingtabstimeout_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_preventtyposquattingpromptoverride_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_sleepingtabstimeout_sleepingtabstimeout", - "displayName": "Set the background tab inactivity timeout for sleeping tabs (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_typosquattingallowlistdomains", + "displayName": "Configure the list of domains for which Edge Website Typo Protection won't trigger warnings", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_sleepingtabstimeout_sleepingtabstimeout_30", - "displayName": "30 seconds of inactivity", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_sleepingtabstimeout_sleepingtabstimeout_300", - "displayName": "5 minutes of inactivity", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_sleepingtabstimeout_sleepingtabstimeout_900", - "displayName": "15 minutes of inactivity", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_sleepingtabstimeout_sleepingtabstimeout_1800", - "displayName": "30 minutes of inactivity", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_sleepingtabstimeout_sleepingtabstimeout_3600", - "displayName": "1 hour of inactivity", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_sleepingtabstimeout_sleepingtabstimeout_7200", - "displayName": "2 hours of inactivity", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_sleepingtabstimeout_sleepingtabstimeout_10800", - "displayName": "3 hours of inactivity", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_sleepingtabstimeout_sleepingtabstimeout_21600", - "displayName": "6 hours of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_typosquattingallowlistdomains_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88.1~policy~microsoft_edge_sleepingtabstimeout_sleepingtabstimeout_43200", - "displayName": "12 hours of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_typosquattingallowlistdomains_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_internetexplorerintegrationlocalfileallowed", - "displayName": "Allow launching of local files in Internet Explorer mode", + "id": "device_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_typosquattingallowlistdomains_typosquattingallowlistdomainsdesc", + "displayName": "Configure the list of domains for which Edge Website Typo Protection won't trigger warnings (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_aigenthemesenabled", + "displayName": "Enables DALL-E themes generation", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_internetexplorerintegrationlocalfileallowed_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_aigenthemesenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_internetexplorerintegrationlocalfileallowed_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_aigenthemesenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_internetexplorerintegrationlocalfileextensionallowlist", - "displayName": "Open local files in Internet Explorer mode file extension allow list", + "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_enhancesecuritymodeallowuserbypass", + "displayName": "Allow users to bypass Enhanced Security Mode", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_internetexplorerintegrationlocalfileextensionallowlist_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_enhancesecuritymodeallowuserbypass_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_internetexplorerintegrationlocalfileextensionallowlist_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_enhancesecuritymodeallowuserbypass_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_internetexplorerintegrationlocalfileextensionallowlist_internetexplorerintegrationlocalfileextensionallowlistdesc", - "displayName": "Open local files in Internet Explorer mode file extension allow list (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_internetexplorerintegrationlocalfileshowcontextmenu", - "displayName": "Show context menu to open a link in Internet Explorer mode", + "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_superdragdropenabled", + "displayName": "Super Drag Drop Enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_internetexplorerintegrationlocalfileshowcontextmenu_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_superdragdropenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_internetexplorerintegrationlocalfileshowcontextmenu_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_superdragdropenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_intranetredirectbehavior", - "displayName": "Intranet Redirection Behavior", + "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_urldiagnosticdataenabled", + "displayName": "URL reporting in Edge diagnostic data enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_intranetredirectbehavior_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_urldiagnosticdataenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_intranetredirectbehavior_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_urldiagnosticdataenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_intranetredirectbehavior_intranetredirectbehavior", - "displayName": "Intranet Redirection Behavior (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_rsakeyusageforlocalanchorsenabled", + "displayName": "Check RSA key usage for server certificates issued by local trust anchors", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_intranetredirectbehavior_intranetredirectbehavior_0", - "displayName": "Use default browser behavior.", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_rsakeyusageforlocalanchorsenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_intranetredirectbehavior_intranetredirectbehavior_1", - "displayName": "Disable DNS interception checks and did-you-mean \"http://intranetsite/\" infobars.", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_rsakeyusageforlocalanchorsenabled_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_screencapturewithoutgestureallowedfororigins", + "displayName": "Allow screen capture without prior user gesture", + "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_intranetredirectbehavior_intranetredirectbehavior_2", - "displayName": "Disable DNS interception checks; allow did-you-mean \"http://intranetsite/\" infobars.", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_screencapturewithoutgestureallowedfororigins_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_intranetredirectbehavior_intranetredirectbehavior_3", - "displayName": "Allow DNS interception checks and did-you-mean \"http://intranetsite/\" infobars.", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_screencapturewithoutgestureallowedfororigins_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended_showmicrosoftrewards_recommended", - "displayName": "Show Microsoft Rewards experiences", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_screencapturewithoutgestureallowedfororigins_screencapturewithoutgestureallowedfororiginsdesc", + "displayName": "Allow screen capture without prior user gesture (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting", + "displayName": "Default Window Management permission setting", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended_showmicrosoftrewards_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended_showmicrosoftrewards_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~performance_recommended_startupboostenabled_recommended", - "displayName": "Enable startup boost", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting_defaultwindowmanagementsetting", + "displayName": "Default Window Management permission setting (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~performance_recommended_startupboostenabled_recommended_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting_defaultwindowmanagementsetting_2", + "displayName": "Denies the Window Management permission on all sites by default", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~performance_recommended_startupboostenabled_recommended_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting_defaultwindowmanagementsetting_3", + "displayName": "Ask every time a site wants obtain the Window Management permission", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabsblockedforurls_recommended", - "displayName": "Block Sleeping Tabs on specific sites", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementallowedforurls", + "displayName": "Allow Window Management permission on specified sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabsblockedforurls_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementallowedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabsblockedforurls_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementallowedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabsblockedforurls_recommended_sleepingtabsblockedforurlsdesc", - "displayName": "Block Sleeping Tabs on specific sites (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementallowedforurls_windowmanagementallowedforurlsdesc", + "displayName": "Allow Window Management permission on specified sites (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabsenabled_recommended", - "displayName": "Configure Sleeping Tabs", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementblockedforurls", + "displayName": "Block Window Management permission on specified sites", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabsenabled_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabsenabled_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabstimeout_recommended", - "displayName": "Set the background tab inactivity timeout for Sleeping Tabs", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementblockedforurls_windowmanagementblockedforurlsdesc", + "displayName": "Block Window Management permission on specified sites (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensioninstalltypeblocklist", + "displayName": "Blocklist for extension install types", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabstimeout_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensioninstalltypeblocklist_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabstimeout_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensioninstalltypeblocklist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout", - "displayName": "Set the background tab inactivity timeout for Sleeping Tabs (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensioninstalltypeblocklist_extensioninstalltypeblocklistdesc", + "displayName": "Blocklist for extension install types (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability", + "displayName": "Control Manifest v2 extension availability", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout_300", - "displayName": "5 minutes of inactivity", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout_900", - "displayName": "15 minutes of inactivity", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout_1800", - "displayName": "30 minutes of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout_3600", - "displayName": "1 hour of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_extensionmanifestv2availability", + "displayName": "Control Manifest v2 extension availability (Device)", + "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout_7200", - "displayName": "2 hours of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_extensionmanifestv2availability_0", + "displayName": "Default browser behavior", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout_10800", - "displayName": "3 hours of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_extensionmanifestv2availability_1", + "displayName": "Manifest v2 is disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout_21600", - "displayName": "6 hours of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_extensionmanifestv2availability_2", + "displayName": "Manifest v2 is enabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_recommended~sleepingtabs_recommended_sleepingtabstimeout_recommended_sleepingtabstimeout_43200", - "displayName": "12 hours of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_extensionmanifestv2availability_3", + "displayName": "Manifest v2 is enabled for forced extensions only", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_showmicrosoftrewards", - "displayName": "Show Microsoft Rewards experiences", + "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotcdppagecontext", + "displayName": "Control Copilot with Commercial Data Protection access to page context for Microsoft Entra ID profiles (obsolete)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_showmicrosoftrewards_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotcdppagecontext_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_showmicrosoftrewards_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotcdppagecontext_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_verticaltabsallowed", - "displayName": "Configures availability of a vertical layout for tabs on the side of the browser", + "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotpagecontext", + "displayName": "Control Copilot access to page context for Microsoft Entra ID profiles", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_verticaltabsallowed_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotpagecontext_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_verticaltabsallowed_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotpagecontext_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_webrtcallowlegacytlsprotocols", - "displayName": "Allow legacy TLS/DTLS downgrade in WebRTC (deprecated)", + "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_mutationeventsenabled", + "displayName": "Enable deprecated/removed Mutation Events (deprecated)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_webrtcallowlegacytlsprotocols_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_mutationeventsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_webrtcallowlegacytlsprotocols_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_mutationeventsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_webwidgetallowed", - "displayName": "Enable the Web widget", + "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_imageeditorserviceenabled", + "displayName": "Enable the Designer for Image Editor feature", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_webwidgetallowed_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_imageeditorserviceenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_webwidgetallowed_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_imageeditorserviceenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_webwidgetisenabledonstartup", - "displayName": "Allow the Web widget at Windows startup", + "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_qrcodegeneratorenabled", + "displayName": "Enable QR Code Generator", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_webwidgetisenabledonstartup_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_qrcodegeneratorenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge_webwidgetisenabledonstartup_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_qrcodegeneratorenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~extensions_blockexternalextensions", - "displayName": "Blocks external extensions from being installed", + "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge~network_zstdcontentencodingenabled", + "displayName": "Enable zstd content encoding support", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~extensions_blockexternalextensions_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge~network_zstdcontentencodingenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~extensions_blockexternalextensions_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge~network_zstdcontentencodingenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~performance_startupboostenabled", - "displayName": "Enable startup boost", + "id": "device_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge_internetexplorersetforegroundwhenactive", + "displayName": "Keep the active Microsoft Edge window with an Internet Explorer mode tab always in the foreground.", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~performance_startupboostenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge_internetexplorersetforegroundwhenactive_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~performance_startupboostenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge_internetexplorersetforegroundwhenactive_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~printing_printertypedenylist", - "displayName": "Disable printer types on the deny list", + "id": "device_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge~identity_proactiveauthworkflowenabled", + "displayName": "Enable proactive authentication", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~printing_printertypedenylist_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge~identity_proactiveauthworkflowenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~printing_printertypedenylist_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge~identity_proactiveauthworkflowenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~printing_printertypedenylist_printertypedenylistdesc", - "displayName": "Disable printer types on the deny list (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabsblockedforurls", - "displayName": "Block Sleeping Tabs on specific sites", + "id": "device_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_csscustomstatedeprecatedsyntaxenabled", + "displayName": "Controls whether the deprecated :--foo syntax for CSS custom state is enabled (obsolete)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabsblockedforurls_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_csscustomstatedeprecatedsyntaxenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabsblockedforurls_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_csscustomstatedeprecatedsyntaxenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabsblockedforurls_sleepingtabsblockedforurlsdesc", - "displayName": "Block Sleeping Tabs on specific sites (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_edgesidebarappurlhostblocklist", + "displayName": "Control which apps cannot be opened in Microsoft Edge sidebar", + "options": [ + { + "id": "device_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_edgesidebarappurlhostblocklist_0", + "displayName": "Disabled", + "description": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_edgesidebarappurlhostblocklist_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_edgesidebarappurlhostblocklist_edgesidebarappurlhostblocklistdesc", + "displayName": "Control which apps cannot be opened in Microsoft Edge sidebar (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabsenabled", - "displayName": "Configure Sleeping Tabs", + "id": "device_vendor_msft_policy_config_microsoft_edgev128.1~policy~microsoft_edge_applicationboundencryptionenabled", + "displayName": "Enable Application Bound Encryption", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabsenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev128.1~policy~microsoft_edge_applicationboundencryptionenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabsenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev128.1~policy~microsoft_edge_applicationboundencryptionenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabstimeout", - "displayName": "Set the background tab inactivity timeout for Sleeping Tabs", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings", + "displayName": "Dynamic Code Settings", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabstimeout_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabstimeout_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabstimeout_sleepingtabstimeout", - "displayName": "Set the background tab inactivity timeout for Sleeping Tabs (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings_dynamiccodesettings", + "displayName": "Dynamic Code Settings (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabstimeout_sleepingtabstimeout_300", - "displayName": "5 minutes of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings_dynamiccodesettings_0", + "displayName": "Default dynamic code settings", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabstimeout_sleepingtabstimeout_900", - "displayName": "15 minutes of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings_dynamiccodesettings_1", + "displayName": "Prevent the browser process from creating dynamic code", "description": null - }, + } + ] + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgeopeninsidebarenabled", + "displayName": "Enable open in sidebar", + "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabstimeout_sleepingtabstimeout_1800", - "displayName": "30 minutes of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgeopeninsidebarenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabstimeout_sleepingtabstimeout_3600", - "displayName": "1 hour of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgeopeninsidebarenabled_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgesidebarcustomizeenabled", + "displayName": "Enable sidebar customize", + "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabstimeout_sleepingtabstimeout_7200", - "displayName": "2 hours of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgesidebarcustomizeenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabstimeout_sleepingtabstimeout_10800", - "displayName": "3 hours of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgesidebarcustomizeenabled_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_keyboardfocusablescrollersenabled", + "displayName": "Enable keyboard focusable scrollers", + "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabstimeout_sleepingtabstimeout_21600", - "displayName": "6 hours of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_keyboardfocusablescrollersenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev88~policy~microsoft_edge~sleepingtabs_sleepingtabstimeout_sleepingtabstimeout_43200", - "displayName": "12 hours of inactivity", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_keyboardfocusablescrollersenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_browsingdatalifetime", - "displayName": "Browsing Data Lifetime Settings", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_recommended~downloads_recommended_showdownloadsinsecurewarningsenabled_recommended", + "displayName": "Enable insecure download warnings", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_browsingdatalifetime_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_recommended~downloads_recommended_showdownloadsinsecurewarningsenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_browsingdatalifetime_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_recommended~downloads_recommended_showdownloadsinsecurewarningsenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_browsingdatalifetime_browsingdatalifetime", - "displayName": "Browsing Data Lifetime Settings (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_definepreferredlanguages", - "displayName": "Define an ordered list of preferred languages that websites should display in if the site supports the language", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~downloads_showdownloadsinsecurewarningsenabled", + "displayName": "Enable insecure download warnings", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_definepreferredlanguages_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~downloads_showdownloadsinsecurewarningsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_definepreferredlanguages_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~downloads_showdownloadsinsecurewarningsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_definepreferredlanguages_definepreferredlanguages", - "displayName": "Define an ordered list of preferred languages that websites should display in if the site supports the language (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_recommended_smartactionsblocklist_recommended", - "displayName": "Block smart actions for a list of services", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings", + "displayName": "Control the availability of developer mode on extensions page", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_recommended_smartactionsblocklist_recommended_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_recommended_smartactionsblocklist_recommended_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_recommended_smartactionsblocklist_recommended_smartactionsblocklistdesc", - "displayName": "Block smart actions for a list of services (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_showrecommendationsenabled", - "displayName": "Allow feature recommendations and browser assistance notifications from Microsoft Edge", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings_extensiondevelopermodesettings", + "displayName": "Control the availability of developer mode on extensions page (Device)", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_showrecommendationsenabled_0", - "displayName": "Disabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings_extensiondevelopermodesettings_0", + "displayName": "Allow the usage of developer mode on extensions page", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_showrecommendationsenabled_1", - "displayName": "Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings_extensiondevelopermodesettings_1", + "displayName": "Do not allow the usage of developer mode on extensions page", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_smartactionsblocklist", - "displayName": "Block smart actions for a list of services", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensionextendedbackgroundlifetimeforportconnectionstourls", + "displayName": "Configure a list of origins that grant an extended background lifetime to connecting extensions.", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_smartactionsblocklist_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensionextendedbackgroundlifetimeforportconnectionstourls_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_smartactionsblocklist_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensionextendedbackgroundlifetimeforportconnectionstourls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge_smartactionsblocklist_smartactionsblocklistdesc", - "displayName": "Block smart actions for a list of services (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensionextendedbackgroundlifetimeforportconnectionstourls_extensionextendedbackgroundlifetimeforportconnectionstourlsdesc", + "displayName": "Configure a list of origins that grant an extended background lifetime to connecting extensions. (Device)", "options": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge~manageability_mamenabled", - "displayName": "Mobile App Management Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev129~policy~microsoft_edge~printing_printinglpacsandboxenabled", + "displayName": "Enable Printing LPAC Sandbox", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge~manageability_mamenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev129~policy~microsoft_edge~printing_printinglpacsandboxenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge~manageability_mamenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev129~policy~microsoft_edge~printing_printinglpacsandboxenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge~printing_printingallowedbackgroundgraphicsmodes", - "displayName": "Restrict background graphics printing mode", + "id": "device_vendor_msft_policy_config_microsoft_edgev130~policy~microsoft_edge_edgeentracopilotpagecontext", + "displayName": "Control Copilot access to Microsoft Edge page content for Entra account user profiles when using Copilot in the Microsoft Edge sidepane", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge~printing_printingallowedbackgroundgraphicsmodes_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev130~policy~microsoft_edge_edgeentracopilotpagecontext_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge~printing_printingallowedbackgroundgraphicsmodes_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev130~policy~microsoft_edge_edgeentracopilotpagecontext_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge~printing_printingallowedbackgroundgraphicsmodes_printingallowedbackgroundgraphicsmodes", - "displayName": "Restrict background graphics printing mode (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev130~policy~microsoft_edge~performance_extensionsperformancedetectorenabled", + "displayName": "Extensions Performance Detector enabled", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge~printing_printingallowedbackgroundgraphicsmodes_printingallowedbackgroundgraphicsmodes_any", - "displayName": "Allow printing with and without background graphics", - "description": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge~printing_printingallowedbackgroundgraphicsmodes_printingallowedbackgroundgraphicsmodes_enabled", - "displayName": "Allow printing only with background graphics", + "id": "device_vendor_msft_policy_config_microsoft_edgev130~policy~microsoft_edge~performance_extensionsperformancedetectorenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge~printing_printingallowedbackgroundgraphicsmodes_printingallowedbackgroundgraphicsmodes_disabled", - "displayName": "Allow printing only without background graphics", + "id": "device_vendor_msft_policy_config_microsoft_edgev130~policy~microsoft_edge~performance_extensionsperformancedetectorenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge~printing_printingbackgroundgraphicsdefault", - "displayName": "Default background graphics printing mode", + "id": "device_vendor_msft_policy_config_microsoft_edgev131~policy~microsoft_edge_edgesidebarappurlhostallowlist", + "displayName": "Allow specific apps to be opened in Microsoft Edge sidebar", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge~printing_printingbackgroundgraphicsdefault_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev131~policy~microsoft_edge_edgesidebarappurlhostallowlist_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge~printing_printingbackgroundgraphicsdefault_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev131~policy~microsoft_edge_edgesidebarappurlhostallowlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge~printing_printingbackgroundgraphicsdefault_printingbackgroundgraphicsdefault", - "displayName": "Default background graphics printing mode (Device)", + "id": "device_vendor_msft_policy_config_microsoft_edgev131~policy~microsoft_edge_edgesidebarappurlhostallowlist_edgesidebarappurlhostallowlistdesc", + "displayName": "Allow specific apps to be opened in Microsoft Edge sidebar (Device)", + "options": null + }, + { + "id": "device_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_edgeautofillmlenabled", + "displayName": "Machine learning powered autofill suggestions", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge~printing_printingbackgroundgraphicsdefault_printingbackgroundgraphicsdefault_enabled", - "displayName": "Enable background graphics printing mode by default", + "id": "device_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_edgeautofillmlenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev89~policy~microsoft_edge~printing_printingbackgroundgraphicsdefault_printingbackgroundgraphicsdefault_disabled", - "displayName": "Disable background graphics printing mode by default", + "id": "device_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_edgeautofillmlenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev90~policy~microsoft_edge_fetchkeepalivedurationsecondsonshutdown", - "displayName": "Fetch keepalive duration on shutdown", + "id": "device_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_livetranslationallowed", + "displayName": "Live translation allowed", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev90~policy~microsoft_edge_fetchkeepalivedurationsecondsonshutdown_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_livetranslationallowed_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev90~policy~microsoft_edge_fetchkeepalivedurationsecondsonshutdown_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_livetranslationallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev90~policy~microsoft_edge_fetchkeepalivedurationsecondsonshutdown_fetchkeepalivedurationsecondsonshutdown", - "displayName": "Fetch keepalive duration on shutdown: (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev90~policy~microsoft_edge_managedconfigurationperorigin", - "displayName": "Sets managed configuration values for websites to specific origins", + "id": "device_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_personalizetopsitesincustomizesidebarenabled", + "displayName": "Personalize my top sites in Customize Sidebar enabled by default", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev90~policy~microsoft_edge_managedconfigurationperorigin_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_personalizetopsitesincustomizesidebarenabled_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev90~policy~microsoft_edge_managedconfigurationperorigin_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_personalizetopsitesincustomizesidebarenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev90~policy~microsoft_edge_managedconfigurationperorigin_managedconfigurationperorigin", - "displayName": "Sets managed configuration values for websites to specific origins (Device)", - "options": null - }, - { - "id": "device_vendor_msft_policy_config_microsoft_edgev90~policy~microsoft_edge_quickviewofficefilesenabled", - "displayName": "Manage QuickView Office files capability in Microsoft Edge", + "id": "device_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_recommended_edgeautofillmlenabled_recommended", + "displayName": "Machine learning powered autofill suggestions", "options": [ { - "id": "device_vendor_msft_policy_config_microsoft_edgev90~policy~microsoft_edge_quickviewofficefilesenabled_0", + "id": "device_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_recommended_edgeautofillmlenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev90~policy~microsoft_edge_quickviewofficefilesenabled_1", + "id": "device_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_recommended_edgeautofillmlenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "device_vendor_msft_policy_config_microsoft_edgev90~policy~microsoft_edge_recommended~httpauthentication_recommended_windowshelloforhttpauthenabled_recommended", - "displayName": "Windows Hello For HTTP Auth Enabled", + "id": "device_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_selectparserrelaxationenabled", + "displayName": "Controls whether the new HTML parser behavior for the element is enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printingenabled_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_selectparserrelaxationenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printingenabled_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_selectparserrelaxationenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printingpapersizedefault", - "displayName": "Default printing page size (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_sendmouseeventsdisabledformcontrolsenabled", + "displayName": "Control the new behavior for event dispatching on disabled form controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printingpapersizedefault_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_sendmouseeventsdisabledformcontrolsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printingpapersizedefault_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_sendmouseeventsdisabledformcontrolsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printingpapersizedefault_printingpapersizedefault", - "displayName": "Default printing page size (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printpdfasimageavailability", - "displayName": "Print PDF as Image Available (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_settimeoutwithout1msclampenabled", + "displayName": "Control Javascript setTimeout() function minimum timeout. (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printpdfasimageavailability_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_settimeoutwithout1msclampenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printpdfasimageavailability_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_settimeoutwithout1msclampenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printpostscriptmode", - "displayName": "Print PostScript Mode (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_taborganizersettings", + "displayName": "Settings for Tab Organizer (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printpostscriptmode_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_taborganizersettings_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printpostscriptmode_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_taborganizersettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printpostscriptmode_printpostscriptmode", - "displayName": "Print PostScript Mode (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_taborganizersettings_taborganizersettings", + "displayName": "Settings for Tab Organizer (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printpostscriptmode_printpostscriptmode_0", - "displayName": "Default", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_taborganizersettings_taborganizersettings_0", + "displayName": "Allow Tab Organizer and improve AI models.", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printpostscriptmode_printpostscriptmode_1", - "displayName": "Type42", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_taborganizersettings_taborganizersettings_1", + "displayName": "Allow Tab Organizer without improving AI models.", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_taborganizersettings_taborganizersettings_2", + "displayName": "Do not allow Tab Organizer.", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printpreviewusesystemdefaultprinter", - "displayName": "Use System Default Printer as Default (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_throttlenonvisiblecrossoriginiframesallowed", + "displayName": "Allows enabling throttling of non-visible, cross-origin iframes (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printpreviewusesystemdefaultprinter_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_throttlenonvisiblecrossoriginiframesallowed_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printpreviewusesystemdefaultprinter_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_throttlenonvisiblecrossoriginiframesallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printrasterizationmode", - "displayName": "Print Rasterization Mode (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_toolbaravatarlabelsettings", + "displayName": "Managed toolbar avatar label setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printrasterizationmode_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_toolbaravatarlabelsettings_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printrasterizationmode_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_toolbaravatarlabelsettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printrasterizationmode_printrasterizationmode", - "displayName": "Print Rasterization Mode (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_toolbaravatarlabelsettings_toolbaravatarlabelsettings", + "displayName": "Managed toolbar avatar label setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printrasterizationmode_printrasterizationmode_0", - "displayName": "Full", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_toolbaravatarlabelsettings_toolbaravatarlabelsettings_0", + "displayName": "Always display management label", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printrasterizationmode_printrasterizationmode_1", - "displayName": "Fast", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_toolbaravatarlabelsettings_toolbaravatarlabelsettings_1", + "displayName": "Display management labels for 30s", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printrasterizepdfdpi", - "displayName": "Print Rasterize PDF DPI (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_unthrottlednestedtimeoutenabled", + "displayName": "Control the nesting threshold before which Javascript setTimeout() function start being clamped (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printrasterizepdfdpi_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_unthrottlednestedtimeoutenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printrasterizepdfdpi_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_unthrottlednestedtimeoutenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~printing_printrasterizepdfdpi_printrasterizepdfdpi", - "displayName": "Print Rasterize PDF DPI: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowclientpairing", - "displayName": "Enable or disable PIN-less authentication for remote access hosts (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_urlparamfilterenabled", + "displayName": "Control the URL parameter filter feature (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowclientpairing_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_urlparamfilterenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowclientpairing_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_urlparamfilterenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowfiletransfer", - "displayName": "Allow remote access users to transfer files to/from the host (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_usemojovideodecoderforpepperallowed", + "displayName": "Allow Pepper to use a new decoder for hardware accelerated video decoding. (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowfiletransfer_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_usemojovideodecoderforpepperallowed_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowfiletransfer_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_usemojovideodecoderforpepperallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowrelayedconnection", - "displayName": "Enable the use of relay servers by the remote access host (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_useragentclienthintsgreaseupdateenabled", + "displayName": "Control the User-Agent Client Hints GREASE Update feature. (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowrelayedconnection_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_useragentclienthintsgreaseupdateenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowrelayedconnection_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_useragentclienthintsgreaseupdateenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowremoteaccessconnections", - "displayName": "Allow remote access connections to this machine (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_websqlaccess", + "displayName": "Force WebSQL to be enabled. (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowremoteaccessconnections_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_websqlaccess_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowremoteaccessconnections_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_websqlaccess_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowremotesupportconnections", - "displayName": "Allow remote support connections to this machine (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_websqlnonsecurecontextenabled", + "displayName": "Force WebSQL in non-secure contexts to be enabled. (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowremotesupportconnections_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_websqlnonsecurecontextenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowremotesupportconnections_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_websqlnonsecurecontextenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowuiaccessforremoteassistance", - "displayName": "Allow remote users to interact with elevated windows in remote assistance sessions (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_zstdcontentencodingenabled", + "displayName": "Enable zstd content-encoding support (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowuiaccessforremoteassistance_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_zstdcontentencodingenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostallowuiaccessforremoteassistance_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~removedpolicies_zstdcontentencodingenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostclientdomainlist", - "displayName": "Configure the required domain names for remote access clients (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingdeepscanningenabled", + "displayName": "Allow download deep scanning for Safe Browsing-enabled users (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostclientdomainlist_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingdeepscanningenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostclientdomainlist_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingdeepscanningenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostclientdomainlist_remoteaccesshostclientdomainlistdesc", - "displayName": "Configure the required domain names for remote access clients (User)", - "options": null + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingproxiedrealtimechecksallowed", + "displayName": "Allow Safe Browsing Proxied Real Time Checks (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingproxiedrealtimechecksallowed_0", + "displayName": "Disabled", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingproxiedrealtimechecksallowed_1", + "displayName": "Enabled", + "description": null + } + ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostclipboardsizebytes", - "displayName": "The maximum size, in bytes, that can be transferred between client and host via clipboard synchronization (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingsurveysenabled", + "displayName": "Allow Safe Browsing Surveys (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostclipboardsizebytes_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingsurveysenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostclipboardsizebytes_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~safebrowsing_safebrowsingsurveysenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostclipboardsizebytes_remoteaccesshostclipboardsizebytes", - "displayName": "The maximum size, in bytes, that can be transferred between client and host via clipboard synchronization: (User)", - "options": null + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~signin_boundsessioncredentialsenabled", + "displayName": "Bind Google credentials to a device (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~signin_boundsessioncredentialsenabled_0", + "displayName": "Disabled", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~signin_boundsessioncredentialsenabled_1", + "displayName": "Enabled", + "description": null + } + ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostdomainlist", - "displayName": "Configure the required domain names for remote access hosts (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~signin_profileseparationdomainexceptionlist", + "displayName": "Enterprise profile separation secondary domain allowlist (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostdomainlist_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~signin_profileseparationdomainexceptionlist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostdomainlist_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~signin_profileseparationdomainexceptionlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostdomainlist_remoteaccesshostdomainlistdesc", - "displayName": "Configure the required domain names for remote access hosts (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~signin_profileseparationdomainexceptionlist_profileseparationdomainexceptionlistdesc", + "displayName": "Enterprise profile separation secondary domain allowlist (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostfirewalltraversal", - "displayName": "Enable firewall traversal from remote access host (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~webrtc_webrtciphandlingurl", + "displayName": "WebRTC per URL IP Handling (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostfirewalltraversal_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~webrtc_webrtciphandlingurl_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostfirewalltraversal_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~webrtc_webrtciphandlingurl_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostmaximumsessiondurationminutes", - "displayName": "Maximum session duration allowed for remote access connections (User)", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~webrtc_webrtciphandlingurl_webrtciphandlingurl", + "displayName": "WebRTC per URL IP Handling (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~webrtc_webrtcpostquantumkeyagreement", + "displayName": "Enable post-quantum key agreement for WebRTC (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostmaximumsessiondurationminutes_0", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~webrtc_webrtcpostquantumkeyagreement_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostmaximumsessiondurationminutes_1", + "id": "user_vendor_msft_policy_config_chromeintunev141~policy~googlechrome~webrtc_webrtcpostquantumkeyagreement_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostmaximumsessiondurationminutes_remoteaccesshostmaximumsessiondurationminutes", - "displayName": "Maximum session duration allowed for remote access connections: (User)", - "options": null + "id": "user_vendor_msft_policy_config_connectivity_disablecrossdeviceresume", + "displayName": "Disable Cross Device Resume (User) (Windows Insiders only)", + "options": [ + { + "id": "user_vendor_msft_policy_config_connectivity_disablecrossdeviceresume_0", + "displayName": "CrossDeviceResume is Enabled.", + "description": "CrossDeviceResume is Enabled." + }, + { + "id": "user_vendor_msft_policy_config_connectivity_disablecrossdeviceresume_1", + "displayName": "CrossDeviceResume is Disabled.", + "description": "CrossDeviceResume is Disabled." + } + ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostrequirecurtain", - "displayName": "Enable curtaining of remote access hosts (User)", + "id": "user_vendor_msft_policy_config_credentialsui_disablepasswordreveal", + "displayName": "Do not display the password reveal button (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostrequirecurtain_0", + "id": "user_vendor_msft_policy_config_credentialsui_disablepasswordreveal_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostrequirecurtain_1", + "id": "user_vendor_msft_policy_config_credentialsui_disablepasswordreveal_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostudpportrange", - "displayName": "Restrict the UDP port range used by the remote access host (User)", + "id": "user_vendor_msft_policy_config_desktop_preventuserredirectionofprofilefolders", + "displayName": "Prohibit User from manually redirecting Profile Folders (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostudpportrange_0", + "id": "user_vendor_msft_policy_config_desktop_preventuserredirectionofprofilefolders_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostudpportrange_1", + "id": "user_vendor_msft_policy_config_desktop_preventuserredirectionofprofilefolders_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~remoteaccess_remoteaccesshostudpportrange_remoteaccesshostudpportrange", - "displayName": "Restrict the UDP port range used by the remote access host (User)", - "options": null + "id": "user_vendor_msft_policy_config_display_configuremultipledisplaymode", + "displayName": "Configure Multiple Display Mode (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_display_configuremultipledisplaymode_0", + "displayName": "Default.", + "description": "Default." + }, + { + "id": "user_vendor_msft_policy_config_display_configuremultipledisplaymode_1", + "displayName": "Internal Only.", + "description": "Internal Only." + }, + { + "id": "user_vendor_msft_policy_config_display_configuremultipledisplaymode_2", + "displayName": "External Only.", + "description": "External Only." + }, + { + "id": "user_vendor_msft_policy_config_display_configuremultipledisplaymode_3", + "displayName": "Clone.", + "description": "Clone." + }, + { + "id": "user_vendor_msft_policy_config_display_configuremultipledisplaymode_4", + "displayName": "Extend.", + "description": "Extend." + } + ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_additionallaunchparameters", - "displayName": "Additional command line parameters for Google Chrome (User)", + "id": "user_vendor_msft_policy_config_display_enableperprocessdpi", + "displayName": "Enable Per Process Dpi (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_additionallaunchparameters_0", + "id": "user_vendor_msft_policy_config_display_enableperprocessdpi_0", "displayName": "Disabled", - "description": null + "description": "Disable." }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_additionallaunchparameters_1", + "id": "user_vendor_msft_policy_config_display_enableperprocessdpi_1", "displayName": "Enabled", - "description": null + "description": "Enable." } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_additionallaunchparameters_additionallaunchparameters", - "displayName": "Additional command line parameters for Google Chrome (User)", + "id": "user_vendor_msft_policy_config_display_setclonepreferredresolutionsource", + "displayName": "Set Clone Preferred Resolution Source (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_display_setclonepreferredresolutionsource_0", + "displayName": "Default.", + "description": "Default." + }, + { + "id": "user_vendor_msft_policy_config_display_setclonepreferredresolutionsource_1", + "displayName": "Internal.", + "description": "Internal." + }, + { + "id": "user_vendor_msft_policy_config_display_setclonepreferredresolutionsource_2", + "displayName": "External.", + "description": "External." + } + ] + }, + { + "id": "user_vendor_msft_policy_config_education_allowgraphingcalculator", + "displayName": "Allow Graphing Calculator (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_education_allowgraphingcalculator_0", + "displayName": "Block", + "description": "Disabled." + }, + { + "id": "user_vendor_msft_policy_config_education_allowgraphingcalculator_1", + "displayName": "Allow", + "description": "Enabled." + } + ] + }, + { + "id": "user_vendor_msft_policy_config_education_defaultprintername", + "displayName": "Default Printer Name (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_advancedprotectiondeepscanningenabled", - "displayName": "Enable sending downloads to Google for deep scanning for users enrolled in the Advanced Protection program (User)", + "id": "user_vendor_msft_policy_config_education_preventaddingnewprinters", + "displayName": "Prevent Adding New Printers (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_advancedprotectiondeepscanningenabled_0", + "id": "user_vendor_msft_policy_config_education_preventaddingnewprinters_0", "displayName": "Disabled", - "description": null + "description": "Allow user installation." }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_advancedprotectiondeepscanningenabled_1", + "id": "user_vendor_msft_policy_config_education_preventaddingnewprinters_1", "displayName": "Enabled", - "description": null + "description": "Prevent user installation." } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_allowoutdatedplugins", - "displayName": "Allow running plugins that are outdated (User)", + "id": "user_vendor_msft_policy_config_education_printernames", + "displayName": "Printer Names (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_enterprisecloudprint_cloudprinterdiscoveryendpoint", + "displayName": "Cloud Printer Discovery End Point (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_enterprisecloudprint_cloudprintoauthauthority", + "displayName": "Cloud Print OAuth Authority (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_enterprisecloudprint_cloudprintoauthclientid", + "displayName": "Cloud Print OAuth Client Id (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_enterprisecloudprint_cloudprintresourceid", + "displayName": "Cloud Print Resource Id (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_enterprisecloudprint_mopriadiscoveryresourceid", + "displayName": "Mopria Discovery Resource Id (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v10~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_excelforcesupportforunicodesurrogates", + "displayName": "Force support for Unicode surrogates in Excel 2021 and Excel 2024 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_allowoutdatedplugins_0", + "id": "user_vendor_msft_policy_config_excel16v10~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_excelforcesupportforunicodesurrogates_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_allowoutdatedplugins_1", + "id": "user_vendor_msft_policy_config_excel16v10~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_excelforcesupportforunicodesurrogates_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_allowpopupsduringpageunload", - "displayName": "Allows a page to show popups during its unloading (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_customizableerrormessages_l_listoferrormessagestocustomize", + "displayName": "List of error messages to customize (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_allowpopupsduringpageunload_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_customizableerrormessages_l_listoferrormessagestocustomize_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_allowpopupsduringpageunload_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_customizableerrormessages_l_listoferrormessagestocustomize_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_alwaysauthorizeplugins", - "displayName": "Always runs plugins that require authorization (deprecated) (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_customizableerrormessages_l_listoferrormessagestocustomize_l_listoferrormessagestocustomize87", + "displayName": "List of error messages to customize (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_customizableerrormessages_l_listoferrormessagestocustomize_l_listoferrormessagestocustomize87_key", + "displayName": "Name", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_customizableerrormessages_l_listoferrormessagestocustomize_l_listoferrormessagestocustomize87_value", + "displayName": "Value", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_datarecovery_l_donotshowdataextractionoptionswhenopeningcorruptworkbooks", + "displayName": "Do not show data extraction options when opening corrupt workbooks (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_alwaysauthorizeplugins_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_datarecovery_l_donotshowdataextractionoptionswhenopeningcorruptworkbooks_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_alwaysauthorizeplugins_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_datarecovery_l_donotshowdataextractionoptionswhenopeningcorruptworkbooks_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_appcacheforceenabled", - "displayName": "Allows the AppCache feature to be re-enabled even if it is off by default. (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_custom_l_disablecommandbarbuttonsandmenuitems165", + "displayName": "Disable commands (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_appcacheforceenabled_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_custom_l_disablecommandbarbuttonsandmenuitems165_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_appcacheforceenabled_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_custom_l_disablecommandbarbuttonsandmenuitems165_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_chromeframecontenttypes", - "displayName": "Allow Google Chrome Frame to handle the listed content types (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_custom_l_disablecommandbarbuttonsandmenuitems165_l_enteracommandbaridtodisable", + "displayName": "Enter a command bar ID to disable (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_custom_l_disableshortcutkeys166", + "displayName": "Disable shortcut keys (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_chromeframecontenttypes_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_custom_l_disableshortcutkeys166_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_chromeframecontenttypes_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_custom_l_disableshortcutkeys166_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_chromeframecontenttypes_chromeframecontenttypesdesc", - "displayName": "Allow Google Chrome Frame to handle the listed content types (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_custom_l_disableshortcutkeys166_l_enterakeyandmodifiertodisable", + "displayName": "Enter a key and modifier to disable (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_chromeframerenderersettings", - "displayName": "Default HTML renderer for Google Chrome Frame (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems", + "displayName": "Disable commands (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_chromeframerenderersettings_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_chromeframerenderersettings_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_chromeframerenderersettings_chromeframerenderersettings", - "displayName": "Default HTML renderer for Google Chrome Frame (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodemacros", + "displayName": "Developer tab | Code | Macros (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_chromeframerenderersettings_chromeframerenderersettings_0", - "displayName": "Use the host browser by default", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodemacros_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_chromeframerenderersettings_chromeframerenderersettings_1", - "displayName": "Use Google Chrome Frame by default", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodemacros_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_clearsitedataonexit", - "displayName": "Clear site data on browser shutdown (deprecated) (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodemacrosecurity", + "displayName": "Developer tab | Code | Macro Security (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_clearsitedataonexit_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodemacrosecurity_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_clearsitedataonexit_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodemacrosecurity_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_cloudprintwarningssuppressed", - "displayName": "Suppress Google Cloud Print deprecation messages (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercoderecordmacro", + "displayName": "Developer tab | Code | Record Macro (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_cloudprintwarningssuppressed_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercoderecordmacro_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_cloudprintwarningssuppressed_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercoderecordmacro_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_corslegacymodeenabled", - "displayName": "Use the legacy CORS implementation rather than new CORS (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodevisualbasic", + "displayName": "Developer tab | Code | Visual Basic (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_corslegacymodeenabled_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodevisualbasic_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_corslegacymodeenabled_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodevisualbasic_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_corsmitigationlist", - "displayName": "Enable CORS check mitigations in the new CORS implementation (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_insertlinkshyperlink", + "displayName": "Insert tab | Links | Hyperlink (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_corsmitigationlist_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_insertlinkshyperlink_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_corsmitigationlist_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_insertlinkshyperlink_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_corsmitigationlist_corsmitigationlistdesc", - "displayName": "Enable CORS check mitigations in the new CORS implementation (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultfilehandlingguardsetting", - "displayName": "Control use of the File Handling API (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonexceloptionscustomizationmailrecipient", + "displayName": "File tab | Share | Email (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultfilehandlingguardsetting_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonexceloptionscustomizationmailrecipient_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultfilehandlingguardsetting_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonexceloptionscustomizationmailrecipient_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultfilehandlingguardsetting_defaultfilehandlingguardsetting", - "displayName": "Control use of the File Handling API (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonexceloptionscustomizedocumentlocation", + "displayName": "File tab | Options | Customize Ribbon | All Commands | Document Location (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultfilehandlingguardsetting_defaultfilehandlingguardsetting_2", - "displayName": "Do not allow any web app to access file types via the File Handling API", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonexceloptionscustomizedocumentlocation_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultfilehandlingguardsetting_defaultfilehandlingguardsetting_3", - "displayName": "Allow web apps to ask the user to grant access to file types via the File Handling API", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonexceloptionscustomizedocumentlocation_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultkeygensetting", - "displayName": "Default key generation setting (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonxceloptionscustomizationcombinedpreviewwebpagepreview", + "displayName": "File tab | Options | Customize Ribbon | All Commands | Web Page Preview (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultkeygensetting_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonxceloptionscustomizationcombinedpreviewwebpagepreview_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultkeygensetting_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonxceloptionscustomizationcombinedpreviewwebpagepreview_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultkeygensetting_defaultkeygensetting", - "displayName": "Default key generation setting (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectsharing", + "displayName": "Review tab | Changes | Protect and Share Workbook (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultkeygensetting_defaultkeygensetting_1", - "displayName": "Allow all sites to use key generation", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectsharing_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultkeygensetting_defaultkeygensetting_2", - "displayName": "Do not allow any site to use key generation", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectsharing_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultpluginssetting", - "displayName": "Default Flash setting (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectsheet", + "displayName": "Review tab | Changes | Protect Sheet (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultpluginssetting_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectsheet_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultpluginssetting_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectsheet_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultpluginssetting_defaultpluginssetting", - "displayName": "Default Flash setting (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectworkbook", + "displayName": "Review tab | Changes | Protect Workbook (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultpluginssetting_defaultpluginssetting_1", - "displayName": "Allow all sites to automatically run the Flash plugin", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectworkbook_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultpluginssetting_defaultpluginssetting_2", - "displayName": "Block the Flash plugin", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectworkbook_1", + "displayName": "True", + "description": null + } + ] + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_viewmacrosmacros", + "displayName": "View tab | Macros | Macros (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_viewmacrosmacros_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultpluginssetting_defaultpluginssetting_3", - "displayName": "Click to play", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_viewmacrosmacros_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultsearchproviderinstanturl", - "displayName": "Default search provider instant URL (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys", + "displayName": "Disable shortcut keys (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultsearchproviderinstanturl_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultsearchproviderinstanturl_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultsearchproviderinstanturl_defaultsearchproviderinstanturl", - "displayName": "Default search provider instant URL (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultsearchproviderinstanturlpostparams", - "displayName": "Parameters for instant URL which uses POST (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_altf8toolsmacromacros", + "displayName": "Alt+F8 (Developer | Code | Macros) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultsearchproviderinstanturlpostparams_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_altf8toolsmacromacros_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultsearchproviderinstanturlpostparams_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_altf8toolsmacromacros_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultsearchproviderinstanturlpostparams_defaultsearchproviderinstanturlpostparams", - "displayName": "Parameters for instant URL which uses POST (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultsearchprovidersearchtermsreplacementkey", - "displayName": "Parameter controlling search term placement for the default search provider (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_altlvdevelopercodevisualbasic", + "displayName": "Alt+F11 (Developer | Code | Visual Basic) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultsearchprovidersearchtermsreplacementkey_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_altlvdevelopercodevisualbasic_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultsearchprovidersearchtermsreplacementkey_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_altlvdevelopercodevisualbasic_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_defaultsearchprovidersearchtermsreplacementkey_defaultsearchprovidersearchtermsreplacementkey", - "displayName": "Parameter controlling search term placement for the default search provider (User)", - "options": null + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_ctrlfhomeeditingfind", + "displayName": "Ctrl+F (Home | Editing | Find & Select | Find) (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_ctrlfhomeeditingfind_0", + "displayName": "False", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_ctrlfhomeeditingfind_1", + "displayName": "True", + "description": null + } + ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_dheenabled", - "displayName": "Enable DHE cipher suites in TLS (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_ctrlkinsertlinkshyperlinks", + "displayName": "Ctrl+K (Insert | Links | Hyperlink) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_dheenabled_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_ctrlkinsertlinkshyperlinks_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_dheenabled_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_ctrlkinsertlinkshyperlinks_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_disabledplugins", - "displayName": "Specify a list of disabled plugins (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_alertbeforeoverwritingcells", + "displayName": "Alert before overwriting cells (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_disabledplugins_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_alertbeforeoverwritingcells_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_disabledplugins_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_alertbeforeoverwritingcells_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_disabledplugins_disabledpluginsdesc", - "displayName": "List of disabled plugins (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_disabledpluginsexceptions", - "displayName": "Specify a list of plugins that the user can enable or disable (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_alternatestartupfilelocation", + "displayName": "Alternate startup file location (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_disabledpluginsexceptions_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_alternatestartupfilelocation_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_disabledpluginsexceptions_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_alternatestartupfilelocation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_disabledpluginsexceptions_disabledpluginsexceptionsdesc", - "displayName": "List of exceptions to the list of disabled plugins (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_alternatestartupfilelocation_l_alternatestartupfilelocation86", + "displayName": "Alternate startup file location (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_disablepluginfinder", - "displayName": "Specify whether the plugin finder should be disabled (deprecated) (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_asktoupdateautomaticlinks", + "displayName": "Ask to update automatic links (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_disablepluginfinder_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_asktoupdateautomaticlinks_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_disablepluginfinder_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_asktoupdateautomaticlinks_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_disablespdy", - "displayName": "Disable SPDY protocol (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_automaticallyflashfill", + "displayName": "Automatically Flash Fill (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_disablespdy_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_automaticallyflashfill_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_disablespdy_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_automaticallyflashfill_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_disablesslrecordsplitting", - "displayName": "Disable TLS False Start (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_automaticallyinsertadecimalpoint", + "displayName": "Automatically insert a decimal point (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_disablesslrecordsplitting_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_automaticallyinsertadecimalpoint_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_disablesslrecordsplitting_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_automaticallyinsertadecimalpoint_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_dnsprefetchingenabled", - "displayName": "Enable network prediction (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_chartreftrackingenabled", + "displayName": "Allow formatting and labels to track data points (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_dnsprefetchingenabled_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_chartreftrackingenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_dnsprefetchingenabled_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_chartreftrackingenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enablecommonnamefallbackforlocalanchors", - "displayName": "Allow certificates issued by local trust anchors without subjectAlternativeName extension (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_comments", + "displayName": "Comments (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enablecommonnamefallbackforlocalanchors_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_comments_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enablecommonnamefallbackforlocalanchors_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_comments_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enabledeprecatedprivetprinting", - "displayName": "Enable deprecated privet printing (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_comments_l_comments85", + "displayName": "Comments (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enabledeprecatedprivetprinting_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_comments_l_comments85_0", + "displayName": "None", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enabledeprecatedprivetprinting_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_comments_l_comments85_1", + "displayName": "Comment indicator only", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_comments_l_comments85_2", + "displayName": "Comment & indicator", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enabledeprecatedwebbasedsignin", - "displayName": "Enable the old web-based signin flow (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cursormovement", + "displayName": "Cursor movement (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enabledeprecatedwebbasedsignin_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cursormovement_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enabledeprecatedwebbasedsignin_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cursormovement_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enabledeprecatedwebplatformfeatures", - "displayName": "Enable deprecated web platform features for a limited time (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cursormovement_l_cursormovement82", + "displayName": "Cursor movement (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enabledeprecatedwebplatformfeatures_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cursormovement_l_cursormovement82_0", + "displayName": "Logical", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enabledeprecatedwebplatformfeatures_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cursormovement_l_cursormovement82_1", + "displayName": "Visual", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enabledeprecatedwebplatformfeatures_enabledeprecatedwebplatformfeaturesdesc", - "displayName": "Enable deprecated web platform features for a limited time (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enabledplugins", - "displayName": "Specify a list of enabled plugins (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cutandcopyobjectswithcells", + "displayName": "Cut and copy objects with cells (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enabledplugins_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cutandcopyobjectswithcells_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enabledplugins_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cutandcopyobjectswithcells_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enabledplugins_enabledpluginsdesc", - "displayName": "List of enabled plugins (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enablesha1forlocalanchors", - "displayName": "Allow SHA-1 signed certificates issued by local trust anchors (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_defaultdirection", + "displayName": "Default sheet direction (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enablesha1forlocalanchors_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_defaultdirection_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enablesha1forlocalanchors_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_defaultdirection_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enablesymanteclegacyinfrastructure", - "displayName": "Enable trust in Symantec Corporation's Legacy PKI Infrastructure (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_defaultdirection_l_defaultdirection81", + "displayName": "Default sheet direction (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enablesymanteclegacyinfrastructure_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_defaultdirection_l_defaultdirection81_1", + "displayName": "Right-to-Left", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enablesymanteclegacyinfrastructure_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_defaultdirection_l_defaultdirection81_0", + "displayName": "Left-to-Right", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enterprisewebstorename", - "displayName": "Enterprise web store name (deprecated) (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_editdirectlyincell", + "displayName": "Edit directly in cell (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enterprisewebstorename_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_editdirectlyincell_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enterprisewebstorename_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_editdirectlyincell_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enterprisewebstorename_enterprisewebstorename", - "displayName": "Enterprise web store name (deprecated) (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enterprisewebstoreurl", - "displayName": "Enterprise web store URL (deprecated) (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enableautocompleteforcellvalues", + "displayName": "Enable AutoComplete for cell values (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enterprisewebstoreurl_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enableautocompleteforcellvalues_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enterprisewebstoreurl_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enableautocompleteforcellvalues_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_enterprisewebstoreurl_enterprisewebstoreurl", - "displayName": "Enterprise web store URL (deprecated) (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_extensionallowinsecureupdates", - "displayName": "Allow insecure algorithms in integrity checks on extension updates and installs (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enableautomaticpercententry", + "displayName": "Enable automatic percent entry (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_extensionallowinsecureupdates_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enableautomaticpercententry_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_extensionallowinsecureupdates_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enableautomaticpercententry_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_filehandlingallowedforurls", - "displayName": "Allow the File Handling API on these web apps (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enablefillhandleandcelldraganddrop", + "displayName": "Enable fill handle and cell drag-and-drop (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_filehandlingallowedforurls_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enablefillhandleandcelldraganddrop_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_filehandlingallowedforurls_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enablefillhandleandcelldraganddrop_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_filehandlingallowedforurls_filehandlingallowedforurlsdesc", - "displayName": "Allow the File Handling API on these web apps (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_filehandlingblockedforurls", - "displayName": "Block the File Handling API on these web apps (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_extenddatarangeformatsandformulas", + "displayName": "Extend data range formats and formulas (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_filehandlingblockedforurls_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_extenddatarangeformatsandformulas_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_filehandlingblockedforurls_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_extenddatarangeformatsandformulas_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_filehandlingblockedforurls_filehandlingblockedforurlsdesc", - "displayName": "Block the File Handling API on these web apps (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_forcelegacydefaultreferrerpolicy", - "displayName": "Use a default referrer policy of no-referrer-when-downgrade. (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_functiontooltips", + "displayName": "Function tooltips (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_forcelegacydefaultreferrerpolicy_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_functiontooltips_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_forcelegacydefaultreferrerpolicy_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_functiontooltips_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_forcenetworkinprocess", - "displayName": "Force networking code to run in the browser process (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_ignoreotherapplications", + "displayName": "Ignore other applications (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_forcenetworkinprocess_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_ignoreotherapplications_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_forcenetworkinprocess_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_ignoreotherapplications_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_gcfuserdatadir", - "displayName": "Set Google Chrome Frame user data directory (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_microsoftexcelmenuorhelpkey", + "displayName": "Microsoft Excel menu or Help key (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_gcfuserdatadir_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_microsoftexcelmenuorhelpkey_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_gcfuserdatadir_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_microsoftexcelmenuorhelpkey_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_gcfuserdatadir_gcfuserdatadir", - "displayName": "Set user data directory (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_microsoftexcelmenuorhelpkey_l_helpkey", + "displayName": "Enter ASCII value (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_hidewebstorepromo", - "displayName": "Prevent app promotions from appearing on the new tab page (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenter", + "displayName": "Move selection after Enter (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_hidewebstorepromo_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenter_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_hidewebstorepromo_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenter_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_http09onnondefaultportsenabled", - "displayName": "Enable HTTP/0.9 support on non-default ports (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenterdirection", + "displayName": "Move selection after Enter direction (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_http09onnondefaultportsenabled_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenterdirection_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_http09onnondefaultportsenabled_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenterdirection_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_instantenabled", - "displayName": "Enable Instant (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenterdirection_l_moveselectionafterenterdirection84", + "displayName": "Move selection after Enter direction (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_instantenabled_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenterdirection_l_moveselectionafterenterdirection84_0", + "displayName": "Down", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_instantenabled_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenterdirection_l_moveselectionafterenterdirection84_1", + "displayName": "Right", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenterdirection_l_moveselectionafterenterdirection84_2", + "displayName": "Up", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenterdirection_l_moveselectionafterenterdirection84_3", + "displayName": "Left", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_keygenallowedforurls", - "displayName": "Allow key generation on these sites (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_recentlyusedfilelist", + "displayName": "Number of workbooks in the Recent Workbooks list (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_keygenallowedforurls_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_recentlyusedfilelist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_keygenallowedforurls_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_recentlyusedfilelist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_keygenallowedforurls_keygenallowedforurlsdesc", - "displayName": "Allow key generation on these sites (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_recentlyusedfilelist_l_entriesonrecentlyusedfilelist", + "displayName": "Entries on recently used file list (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_keygenblockedforurls", - "displayName": "Block key generation on these sites (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_setnumberofplacesintherecentplaceslist", + "displayName": "Number of folders in the Recent Folders list (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_keygenblockedforurls_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_setnumberofplacesintherecentplaceslist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_keygenblockedforurls_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_setnumberofplacesintherecentplaceslist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_keygenblockedforurls_keygenblockedforurlsdesc", - "displayName": "Block key generation on these sites (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_setnumberofplacesintherecentplaceslist_l_setnumberofplacesintherecentplaceslistspinid", + "displayName": "", "options": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_legacysamesitecookiebehaviorenabled", - "displayName": "Default legacy SameSite cookie behavior setting (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showalertifnotdefault", + "displayName": "Show Alert if Excel is not the default for its associated file types (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_legacysamesitecookiebehaviorenabled_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showalertifnotdefault_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_legacysamesitecookiebehaviorenabled_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showalertifnotdefault_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_legacysamesitecookiebehaviorenabled_legacysamesitecookiebehaviorenabled", - "displayName": "Default legacy SameSite cookie behavior setting (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showcontrolcharacters", + "displayName": "Show control characters (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_legacysamesitecookiebehaviorenabled_legacysamesitecookiebehaviorenabled_1", - "displayName": "Revert to legacy SameSite behavior for cookies on all sites", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showcontrolcharacters_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_legacysamesitecookiebehaviorenabled_legacysamesitecookiebehaviorenabled_2", - "displayName": "Use SameSite-by-default behavior for cookies on all sites", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showcontrolcharacters_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_localdiscoveryenabled", - "displayName": "Enable chrome://devices (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showformulabarinfullview", + "displayName": "Show Formula bar in Full View (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_localdiscoveryenabled_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showformulabarinfullview_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_localdiscoveryenabled_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showformulabarinfullview_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_machinelevelusercloudpolicyenrollmenttoken", - "displayName": "The enrollment token of cloud policy on desktop (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showformulabarinnormalview", + "displayName": "Show Formula bar in Normal View (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_machinelevelusercloudpolicyenrollmenttoken_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showformulabarinnormalview_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_machinelevelusercloudpolicyenrollmenttoken_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showformulabarinnormalview_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_machinelevelusercloudpolicyenrollmenttoken_machinelevelusercloudpolicyenrollmenttoken", - "displayName": "The enrollment token of cloud policy on desktop (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_mediacachesize", - "displayName": "Set media disk cache size in bytes (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showinsertoptionsbuttons", + "displayName": "Show Insert Options buttons (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_mediacachesize_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showinsertoptionsbuttons_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_mediacachesize_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showinsertoptionsbuttons_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_mediacachesize_mediacachesize", - "displayName": "Set media disk cache size: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_pachttpsurlstrippingenabled", - "displayName": "Enable PAC URL stripping (for https://) (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_shownames", + "displayName": "Show names (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_pachttpsurlstrippingenabled_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_shownames_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_pachttpsurlstrippingenabled_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_shownames_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_passwordmanagerallowshowpasswords", - "displayName": "Allow users to show passwords in Password Manager (deprecated) (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showpasteoptionsbuttonwhencontentispasted", + "displayName": "Show Paste Options button when content is pasted (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_passwordmanagerallowshowpasswords_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showpasteoptionsbuttonwhencontentispasted_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_passwordmanagerallowshowpasswords_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showpasteoptionsbuttonwhencontentispasted_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_pluginsallowedforurls", - "displayName": "Allow the Flash plugin on these sites (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showvalues", + "displayName": "Show values (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_pluginsallowedforurls_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showvalues_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_pluginsallowedforurls_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showvalues_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_pluginsallowedforurls_pluginsallowedforurlsdesc", - "displayName": "Allow the Flash plugin on these sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_pluginsblockedforurls", - "displayName": "Block the Flash plugin on these sites (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_transitionnavigationkeys", + "displayName": "Transition navigation keys (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_pluginsblockedforurls_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_transitionnavigationkeys_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_pluginsblockedforurls_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_transitionnavigationkeys_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_pluginsblockedforurls_pluginsblockedforurlsdesc", - "displayName": "Block the Flash plugin on these sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_rc4enabled", - "displayName": "Enable RC4 cipher suites in TLS (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_zoomonrollwithintellimouse", + "displayName": "Zoom on roll with IntelliMouse (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_rc4enabled_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_zoomonrollwithintellimouse_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_rc4enabled_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_zoomonrollwithintellimouse_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_remoteaccessclientfirewalltraversal", - "displayName": "Enable firewall traversal from remote access client (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced~l_weboptions~l_general_l_loadpicturesfromwebpagesnotcreatedinexcel", + "displayName": "Load pictures from Web pages not created in Excel (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_remoteaccessclientfirewalltraversal_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced~l_weboptions~l_general_l_loadpicturesfromwebpagesnotcreatedinexcel_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_remoteaccessclientfirewalltraversal_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced~l_weboptions~l_general_l_loadpicturesfromwebpagesnotcreatedinexcel_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_remoteaccesshostdebugoverridepolicies", - "displayName": "Policy overrides for Debug builds of the remote access host (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_formulas_l_r1c1referencestyle", + "displayName": "R1C1 reference style (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_remoteaccesshostdebugoverridepolicies_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_formulas_l_r1c1referencestyle_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_remoteaccesshostdebugoverridepolicies_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_formulas_l_r1c1referencestyle_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_remoteaccesshostdebugoverridepolicies_remoteaccesshostdebugoverridepolicies", - "displayName": "Policy overrides for Debug builds of the remote access host (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_remoteaccesshostrequiretwofactor", - "displayName": "Enable two-factor authentication for remote access hosts (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionscustomizeribbon_l_displaydevelopertab", + "displayName": "Display Developer tab in the Ribbon (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_remoteaccesshostrequiretwofactor_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionscustomizeribbon_l_displaydevelopertab_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_remoteaccesshostrequiretwofactor_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionscustomizeribbon_l_displaydevelopertab_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_remoteaccesshosttalkgadgetprefix", - "displayName": "Configure the TalkGadget prefix for remote access hosts (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_allowquickanalysis", + "displayName": "Show Quick Analysis options on selection (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_remoteaccesshosttalkgadgetprefix_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_allowquickanalysis_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_remoteaccesshosttalkgadgetprefix_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_allowquickanalysis_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_remoteaccesshosttalkgadgetprefix_remoteaccesshosttalkgadgetprefix", - "displayName": "Configure the TalkGadget prefix for remote access hosts (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_renderinchromeframelist", - "displayName": "Always render the following URL patterns in Google Chrome Frame (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_allowselectionfloaties", + "displayName": "Show Mini Toolbar on selection (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_renderinchromeframelist_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_allowselectionfloaties_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_renderinchromeframelist_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_allowselectionfloaties_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_renderinchromeframelist_renderinchromeframelistdesc", - "displayName": "Always render the following URL patterns in Google Chrome Frame (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_renderinhostlist", - "displayName": "Always render the following URL patterns in the host browser (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_defaultsheets", + "displayName": "Default Sheets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_renderinhostlist_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_defaultsheets_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_renderinhostlist_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_defaultsheets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_renderinhostlist_renderinhostlistdesc", - "displayName": "Always render the following URL patterns in the host browser (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_defaultsheets_l_sheetsinnewworkbook", + "displayName": "Sheets in new workbook (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_runallflashinallowmode", - "displayName": "Extend Flash content setting to all content (deprecated) (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_disablelivepreview", + "displayName": "Enable Live Preview (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_runallflashinallowmode_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_disablelivepreview_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_runallflashinallowmode_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_disablelivepreview_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_safebrowsingextendedreportingoptinallowed", - "displayName": "Allow users to opt in to Safe Browsing extended reporting (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_font", + "displayName": "Font (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_safebrowsingextendedreportingoptinallowed_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_font_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_safebrowsingextendedreportingoptinallowed_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_font_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_skipmetadatacheck", - "displayName": "Skip the meta tag check in Google Chrome Frame (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_font_l_namesize", + "displayName": "Name, Size (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_windowsintaskbar", + "displayName": "Show all windows in the Taskbar (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_skipmetadatacheck_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_windowsintaskbar_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_skipmetadatacheck_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_windowsintaskbar_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_sslversionfallbackmin", - "displayName": "Minimum TLS version to fallback to (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_proofing~l_autocorrectoptions_l_includenewrowsandcolumnsinlist", + "displayName": "Include new rows and columns in table (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_sslversionfallbackmin_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_proofing~l_autocorrectoptions_l_includenewrowsandcolumnsinlist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_sslversionfallbackmin_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_proofing~l_autocorrectoptions_l_includenewrowsandcolumnsinlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_sslversionfallbackmin_sslversionfallbackmin", - "displayName": "Minimum TLS version to fallback to (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_proofing~l_autocorrectoptions_l_internetandnetworkpathsashyperlinks", + "displayName": "Internet and network paths as hyperlinks (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_sslversionfallbackmin_sslversionfallbackmin_tls1.1", - "displayName": "TLS 1.1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_proofing~l_autocorrectoptions_l_internetandnetworkpathsashyperlinks_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_sslversionfallbackmin_sslversionfallbackmin_tls1.2", - "displayName": "TLS 1.2", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_proofing~l_autocorrectoptions_l_internetandnetworkpathsashyperlinks_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_sslversionmax", - "displayName": "Maximum SSL version enabled (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecoverdelay", + "displayName": "AutoRecover delay (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_sslversionmax_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecoverdelay_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_sslversionmax_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecoverdelay_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_sslversionmax_sslversionmax", - "displayName": "Maximum SSL version enabled (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecoverdelay_l_secondsofidletimebeforeautorecoverstarts", + "displayName": "Seconds of idle time before AutoRecover starts (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecoversavelocation", + "displayName": "AutoRecover save location (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_sslversionmax_sslversionmax_tls1.2", - "displayName": "TLS 1.2", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecoversavelocation_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_sslversionmax_sslversionmax_tls1.3", - "displayName": "TLS 1.3", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecoversavelocation_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_supervisedusercreationenabled", - "displayName": "Enable creation of supervised users (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecoversavelocation_l_autorecoversavelocation2", + "displayName": "AutoRecover save location (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecovertime", + "displayName": "AutoRecover time (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_supervisedusercreationenabled_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecovertime_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_supervisedusercreationenabled_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecovertime_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_suppresschromeframeturndownprompt", - "displayName": "Suppress the Google Chrome Frame turndown prompt (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecovertime_l_saveautorecoverinfoevery", + "displayName": "Save AutoRecover info every (minutes): (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_defaultfilelocation", + "displayName": "Default file location (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_suppresschromeframeturndownprompt_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_defaultfilelocation_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_suppresschromeframeturndownprompt_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_defaultfilelocation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_tabfreezingenabled", - "displayName": "Allow background tabs freeze (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_defaultfilelocation_l_defaultfilelocation0", + "displayName": "Default file location (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_disableautorepublish", + "displayName": "Disable AutoRepublish (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_tabfreezingenabled_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_disableautorepublish_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_tabfreezingenabled_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_disableautorepublish_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_tabunderallowed", - "displayName": "Allow sites to simultaneously navigate and open pop-ups (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_donotshowautorepublishwarningalert", + "displayName": "Do not show AutoRepublish warning alert (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_tabunderallowed_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_donotshowautorepublishwarningalert_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_tabunderallowed_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_donotshowautorepublishwarningalert_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_tls13hardeningforlocalanchorsenabled", - "displayName": "Enable a TLS 1.3 security feature for local trust anchors. (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_keeplastautosavedversions", + "displayName": "Keep the last AutoSaved versions of files for the next session (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_tls13hardeningforlocalanchorsenabled_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_keeplastautosavedversions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_tls13hardeningforlocalanchorsenabled_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_keeplastautosavedversions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_tripledesenabled", - "displayName": "Enable 3DES cipher suites in TLS (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_promptforworkbookproperties", + "displayName": "Prompt for workbook properties (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_tripledesenabled_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_promptforworkbookproperties_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_tripledesenabled_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_promptforworkbookproperties_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_uselegacyformcontrols", - "displayName": "Use Legacy Form Controls until M84. (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveautorecoverinfo", + "displayName": "Save AutoRecover info (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_uselegacyformcontrols_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveautorecoverinfo_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_uselegacyformcontrols_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveautorecoverinfo_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_useragentclienthintsenabled", - "displayName": "Control the User-Agent Client Hints feature. (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas", + "displayName": "Default file format (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_useragentclienthintsenabled_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_useragentclienthintsenabled_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_webcomponentsv0enabled", - "displayName": "Re-enable Web Components v0 API until M84. (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_l_saveexcelfilesas1", + "displayName": "Save Excel files as (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_webcomponentsv0enabled_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_l_saveexcelfilesas1_51", + "displayName": "Excel Workbook (*.xlsx)", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_webcomponentsv0enabled_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_l_saveexcelfilesas1_52", + "displayName": "Excel Macro-Enabled Workbook (*.xlsm)", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_l_saveexcelfilesas1_50", + "displayName": "Excel Binary Workbook (*.xlsb)", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_l_saveexcelfilesas1_44", + "displayName": "Web Page (*.htm; *.html)", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_l_saveexcelfilesas1_56", + "displayName": "Excel 97-2003 Workbook (*.xls)", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_l_saveexcelfilesas1_39", + "displayName": "Excel 5.0/95 Workbook (*.xls)", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_l_saveexcelfilesas1_60", + "displayName": "OpenDocument Spreadsheet (*.ods)", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_webdriveroverridesincompatiblepolicies", - "displayName": "Allow WebDriver to Override Incompatible Policies (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_turnofffileformatcompatiblitydialogforods", + "displayName": "Suppress file format compatibility dialog box for OpenDocument Spreadsheet format (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_webdriveroverridesincompatiblepolicies_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_turnofffileformatcompatiblitydialogforods_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_webdriveroverridesincompatiblepolicies_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_turnofffileformatcompatiblitydialogforods_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_welcomepageonosupgradeenabled", - "displayName": "Enable showing the welcome page on the first browser launch following OS upgrade (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_determinewhethertoforceencryptedexcel", + "displayName": "Scan encrypted macros in Excel Open XML workbooks (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_welcomepageonosupgradeenabled_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_determinewhethertoforceencryptedexcel_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~removedpolicies_welcomepageonosupgradeenabled_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_determinewhethertoforceencryptedexcel_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_passwordprotectionchangepasswordurl", - "displayName": "Configure the change password URL. (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_determinewhethertoforceencryptedexcel_l_determinewhethertoforceencryptedexceldropid", + "displayName": "", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_passwordprotectionchangepasswordurl_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_determinewhethertoforceencryptedexcel_l_determinewhethertoforceencryptedexceldropid_0", + "displayName": "Scan encrypted macros (default)", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_passwordprotectionchangepasswordurl_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_determinewhethertoforceencryptedexcel_l_determinewhethertoforceencryptedexceldropid_1", + "displayName": "Scan if anti-virus software available", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_determinewhethertoforceencryptedexcel_l_determinewhethertoforceencryptedexceldropid_2", + "displayName": "Load macros without scanning", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_passwordprotectionchangepasswordurl_passwordprotectionchangepasswordurl", - "displayName": "Configure the change password URL. (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_passwordprotectionloginurls", - "displayName": "Configure the list of enterprise login URLs where password protection service should capture salted hashes of passwords. (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_forcefileextenstionstomatch", + "displayName": "Force file extension to match file type (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_passwordprotectionloginurls_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_forcefileextenstionstomatch_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_passwordprotectionloginurls_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_forcefileextenstionstomatch_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_passwordprotectionloginurls_passwordprotectionloginurlsdesc", - "displayName": "Configure the list of enterprise login URLs where password protection service should capture salted hashes of passwords. (User)", - "options": null + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_forcefileextenstionstomatch_l_empty", + "displayName": "", + "options": [ + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_forcefileextenstionstomatch_l_empty_0", + "displayName": "Allow different", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_forcefileextenstionstomatch_l_empty_1", + "displayName": "Allow different, but warn", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_forcefileextenstionstomatch_l_empty_2", + "displayName": "Always match file type", + "description": null + } + ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_passwordprotectionwarningtrigger", - "displayName": "Password protection warning trigger (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_performfilevalidationonpivotcaches", + "displayName": "Perform file validation on pivot caches (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_passwordprotectionwarningtrigger_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_performfilevalidationonpivotcaches_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_passwordprotectionwarningtrigger_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_performfilevalidationonpivotcaches_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_passwordprotectionwarningtrigger_passwordprotectionwarningtrigger", - "displayName": "Password protection warning trigger (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_performfilevalidationonpivotcaches_l_performfilevalidationonpivotcachesdropid", + "displayName": "", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_passwordprotectionwarningtrigger_passwordprotectionwarningtrigger_0", - "displayName": "Password protection warning is off", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_performfilevalidationonpivotcaches_l_performfilevalidationonpivotcachesdropid_0", + "displayName": "No file validation", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_passwordprotectionwarningtrigger_passwordprotectionwarningtrigger_1", - "displayName": "Password protection warning is triggered by password reuse", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_performfilevalidationonpivotcaches_l_performfilevalidationonpivotcachesdropid_1", + "displayName": "Web and email sources", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_passwordprotectionwarningtrigger_passwordprotectionwarningtrigger_2", - "displayName": "Password protection warning is triggered by password reuse on phishing page", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_performfilevalidationonpivotcaches_l_performfilevalidationonpivotcachesdropid_2", + "displayName": "Always perform validation", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_safebrowsingallowlistdomains", - "displayName": "Configure the list of domains on which Safe Browsing will not trigger warnings. (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_turnofffilevalidation", + "displayName": "Turn off file validation (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_safebrowsingallowlistdomains_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_turnofffilevalidation_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_safebrowsingallowlistdomains_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_turnofffilevalidation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_safebrowsingallowlistdomains_safebrowsingallowlistdomainsdesc", - "displayName": "Configure the list of domains on which Safe Browsing will not trigger warnings. (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_safebrowsingextendedreportingenabled", - "displayName": "Enable Safe Browsing Extended Reporting (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_webcontentwarninglevel", + "displayName": "WEBSERVICE Function Notification Settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_safebrowsingextendedreportingenabled_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_webcontentwarninglevel_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_safebrowsingextendedreportingenabled_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_webcontentwarninglevel_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_safebrowsingprotectionlevel", - "displayName": "Safe Browsing Protection Level (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_webcontentwarninglevel_l_webcontentwarninglevelvalue", + "displayName": "", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_safebrowsingprotectionlevel_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_webcontentwarninglevel_l_webcontentwarninglevelvalue_0", + "displayName": "Enable all WEBSERVICE functions (not recommended)", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_safebrowsingprotectionlevel_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_webcontentwarninglevel_l_webcontentwarninglevelvalue_1", + "displayName": "Disable all with notification", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_webcontentwarninglevel_l_webcontentwarninglevelvalue_2", + "displayName": "Disable all without notification", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_safebrowsingprotectionlevel_safebrowsingprotectionlevel", - "displayName": "Safe Browsing Protection Level (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_configurecngcipherchainingmode", + "displayName": "Configure CNG cipher chaining mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_safebrowsingprotectionlevel_safebrowsingprotectionlevel_0", - "displayName": "Safe Browsing is never active.", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_configurecngcipherchainingmode_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_safebrowsingprotectionlevel_safebrowsingprotectionlevel_1", - "displayName": "Safe Browsing is active in the standard mode.", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_configurecngcipherchainingmode_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_configurecngcipherchainingmode_l_configurecngcipherchainingmodedropid", + "displayName": "", + "options": [ + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_configurecngcipherchainingmode_l_configurecngcipherchainingmodedropid_chainingmodecbc", + "displayName": "Cipher Block Chaining (CBC)", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~safebrowsing_safebrowsingprotectionlevel_safebrowsingprotectionlevel_2", - "displayName": "Safe Browsing is active in the enhanced mode. This mode provides better security, but requires sharing more browsing information with Google.", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_configurecngcipherchainingmode_l_configurecngcipherchainingmodedropid_chainingmodecfb", + "displayName": "Cipher Feedback (CFB)", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_sameorigintabcaptureallowedbyorigins", - "displayName": "Allow Same Origin Tab capture by these origins (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngcipheralgorithm", + "displayName": "Set CNG cipher algorithm (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_sameorigintabcaptureallowedbyorigins_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngcipheralgorithm_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_sameorigintabcaptureallowedbyorigins_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngcipheralgorithm_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_sameorigintabcaptureallowedbyorigins_sameorigintabcaptureallowedbyoriginsdesc", - "displayName": "Allow Same Origin Tab capture by these origins (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngcipheralgorithm_l_setcngcipheralgorithmid", + "displayName": "CNG cipher algorithm: (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_screencaptureallowed", - "displayName": "Allow or deny screen capture (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngcipherkeylength", + "displayName": "Set CNG cipher key length (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_screencaptureallowed_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngcipherkeylength_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_screencaptureallowed_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngcipherkeylength_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_screencaptureallowedbyorigins", - "displayName": "Allow Desktop, Window, and Tab capture by these origins (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngcipherkeylength_l_setcngcipherkeylengthspinid", + "displayName": "Cipher key length (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngpasswordspincount", + "displayName": "Set CNG password spin count (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_screencaptureallowedbyorigins_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngpasswordspincount_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_screencaptureallowedbyorigins_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngpasswordspincount_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_screencaptureallowedbyorigins_screencaptureallowedbyoriginsdesc", - "displayName": "Allow Desktop, Window, and Tab capture by these origins (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngpasswordspincount_l_setcngpasswordspincountspinid", + "displayName": "", "options": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_tabcaptureallowedbyorigins", - "displayName": "Allow Tab capture by these origins (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setparametersforcngcontext", + "displayName": "Set parameters for CNG context (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_tabcaptureallowedbyorigins_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setparametersforcngcontext_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_tabcaptureallowedbyorigins_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setparametersforcngcontext_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_tabcaptureallowedbyorigins_tabcaptureallowedbyoriginsdesc", - "displayName": "Allow Tab capture by these origins (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setparametersforcngcontext_l_setparametersforcngcontextid", + "displayName": "Parameters (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_windowcaptureallowedbyorigins", - "displayName": "Allow Window and Tab capture by these origins (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycnghashalgorithm", + "displayName": "Specify CNG hash algorithm (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_windowcaptureallowedbyorigins_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycnghashalgorithm_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_windowcaptureallowedbyorigins_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycnghashalgorithm_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~screencapture_windowcaptureallowedbyorigins_windowcaptureallowedbyoriginsdesc", - "displayName": "Allow Window and Tab capture by these origins (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_homepageisnewtabpage", - "displayName": "Use New Tab Page as homepage (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycnghashalgorithm_l_specifycnghashalgorithmdropid", + "displayName": "", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_homepageisnewtabpage_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycnghashalgorithm_l_specifycnghashalgorithmdropid_sha1", + "displayName": "SHA1", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_homepageisnewtabpage_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycnghashalgorithm_l_specifycnghashalgorithmdropid_sha256", + "displayName": "SHA256", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycnghashalgorithm_l_specifycnghashalgorithmdropid_sha384", + "displayName": "SHA384", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycnghashalgorithm_l_specifycnghashalgorithmdropid_sha512", + "displayName": "SHA512", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_homepagelocation", - "displayName": "Configure the home page URL (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycngrandomnumbergeneratoralgorithm", + "displayName": "Specify CNG random number generator algorithm (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_homepagelocation_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycngrandomnumbergeneratoralgorithm_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_homepagelocation_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycngrandomnumbergeneratoralgorithm_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_homepagelocation_homepagelocation", - "displayName": "Home page URL (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycngrandomnumbergeneratoralgorithm_l_specifycngrandomnumbergeneratoralgorithmid", + "displayName": "Random number generator: (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_newtabpagelocation", - "displayName": "Configure the New Tab page URL (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycngsaltlength", + "displayName": "Specify CNG salt length (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_newtabpagelocation_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycngsaltlength_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_newtabpagelocation_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycngsaltlength_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_newtabpagelocation_newtabpagelocation", - "displayName": "New Tab page URL (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycngsaltlength_l_specifycngsaltlengthspinid", + "displayName": "Number of bytes (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_restoreonstartup", - "displayName": "Action on startup (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifyencryptioncompatibility", + "displayName": "Specify encryption compatibility (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_restoreonstartup_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifyencryptioncompatibility_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_restoreonstartup_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifyencryptioncompatibility_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_restoreonstartup_restoreonstartup", - "displayName": "Action on startup (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifyencryptioncompatibility_l_specifyencryptioncompatibilitydropid", + "displayName": "", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_restoreonstartup_restoreonstartup_5", - "displayName": "Open New Tab Page", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifyencryptioncompatibility_l_specifyencryptioncompatibilitydropid_0", + "displayName": "Use legacy format", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_restoreonstartup_restoreonstartup_1", - "displayName": "Restore the last session", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifyencryptioncompatibility_l_specifyencryptioncompatibilitydropid_1", + "displayName": "Use next generation format", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_restoreonstartup_restoreonstartup_4", - "displayName": "Open a list of URLs", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifyencryptioncompatibility_l_specifyencryptioncompatibilitydropid_2", + "displayName": "All files save with next generation format", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_restoreonstartupurls", - "displayName": "URLs to open on startup (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_usenewkeyonpasswordchange", + "displayName": "Use new key on password change (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_restoreonstartupurls_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_usenewkeyonpasswordchange_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_restoreonstartupurls_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_usenewkeyonpasswordchange_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_restoreonstartupurls_restoreonstartupurlsdesc", - "displayName": "URLs to open on startup (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_showhomebutton", - "displayName": "Show Home button on toolbar (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockmacroexecutionfrominternet", + "displayName": "Block macros from running in Office files from the Internet (User)", "options": [ { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_showhomebutton_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockmacroexecutionfrominternet_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_chromeintunev1~policy~googlechrome~startup_showhomebutton_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockmacroexecutionfrominternet_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_credentialsui_disablepasswordreveal", - "displayName": "Do not display the password reveal button (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disableallapplicationextensions", + "displayName": "Disable all application add-ins (User)", "options": [ { - "id": "user_vendor_msft_policy_config_credentialsui_disablepasswordreveal_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disableallapplicationextensions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_credentialsui_disablepasswordreveal_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disableallapplicationextensions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_desktop_preventuserredirectionofprofilefolders", - "displayName": "Prohibit User from manually redirecting Profile Folders (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disabletrustbarnotificationforunsigned", + "displayName": "Disable Trust Bar Notification for unsigned application add-ins and block them (User) (Deprecated)", "options": [ { - "id": "user_vendor_msft_policy_config_desktop_preventuserredirectionofprofilefolders_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disabletrustbarnotificationforunsigned_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_desktop_preventuserredirectionofprofilefolders_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disabletrustbarnotificationforunsigned_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_display_enableperprocessdpi", - "displayName": "Enable Per Process Dpi (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disabletrustbarnotificationforunsigned_v2", + "displayName": "Disable Trust Bar Notification for unsigned application add-ins and block them (User)", "options": [ { - "id": "user_vendor_msft_policy_config_display_enableperprocessdpi_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disabletrustbarnotificationforunsigned_v2_0", "displayName": "Disabled", - "description": "Disable." + "description": null }, { - "id": "user_vendor_msft_policy_config_display_enableperprocessdpi_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disabletrustbarnotificationforunsigned_v2_1", "displayName": "Enabled", - "description": "Enable." + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_education_allowgraphingcalculator", - "displayName": "Allow Graphing Calculator (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_requirethatapplicationextensionsaresigned", + "displayName": "Require that application add-ins are signed by Trusted Publisher (User)", "options": [ { - "id": "user_vendor_msft_policy_config_education_allowgraphingcalculator_0", - "displayName": "Block", - "description": "Disabled." + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_requirethatapplicationextensionsaresigned_0", + "displayName": "Disabled", + "description": null }, { - "id": "user_vendor_msft_policy_config_education_allowgraphingcalculator_1", - "displayName": "Allow", - "description": "Enabled." + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_requirethatapplicationextensionsaresigned_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_education_defaultprintername", - "displayName": "Default Printer Name (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_education_preventaddingnewprinters", - "displayName": "Prevent Adding New Printers (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_setmaximumnumberoftrusteddocuments", + "displayName": "Set maximum number of trusted documents (User)", "options": [ { - "id": "user_vendor_msft_policy_config_education_preventaddingnewprinters_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_setmaximumnumberoftrusteddocuments_0", "displayName": "Disabled", - "description": "Allow user installation." + "description": null }, { - "id": "user_vendor_msft_policy_config_education_preventaddingnewprinters_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_setmaximumnumberoftrusteddocuments_1", "displayName": "Enabled", - "description": "Prevent user installation." + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_education_printernames", - "displayName": "Printer Names (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_enterprisecloudprint_cloudprinterdiscoveryendpoint", - "displayName": "Cloud Printer Discovery End Point (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_enterprisecloudprint_cloudprintoauthauthority", - "displayName": "Cloud Print OAuth Authority (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_enterprisecloudprint_cloudprintoauthclientid", - "displayName": "Cloud Print OAuth Client Id (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_enterprisecloudprint_cloudprintresourceid", - "displayName": "Cloud Print Resource Id (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_enterprisecloudprint_mopriadiscoveryresourceid", - "displayName": "Mopria Discovery Resource Id (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_setmaximumnumberoftrusteddocuments_l_setmaximumnumberoftrusteddocumentsspinid", + "displayName": "Maximum number: (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_customizableerrormessages_l_listoferrormessagestocustomize", - "displayName": "List of error messages to customize (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_setmaximumnumberoftrustrecordstopreserve", + "displayName": "Set maximum number of trust records to preserve (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_customizableerrormessages_l_listoferrormessagestocustomize_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_setmaximumnumberoftrustrecordstopreserve_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_customizableerrormessages_l_listoferrormessagestocustomize_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_setmaximumnumberoftrustrecordstopreserve_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_customizableerrormessages_l_listoferrormessagestocustomize_l_listoferrormessagestocustomize87", - "displayName": "List of error messages to customize (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_customizableerrormessages_l_listoferrormessagestocustomize_l_listoferrormessagestocustomize87_key", - "displayName": "Name", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_customizableerrormessages_l_listoferrormessagestocustomize_l_listoferrormessagestocustomize87_value", - "displayName": "Value", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_setmaximumnumberoftrustrecordstopreserve_l_setmaximumnumberoftrustrecordstopreservespinid", + "displayName": "Maximum to preserve: (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_datarecovery_l_donotshowdataextractionoptionswhenopeningcorruptworkbooks", - "displayName": "Do not show data extraction options when opening corrupt workbooks (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_storemacroinpersonalmacroworkbookbydefault", + "displayName": "Store macro in Personal Macro Workbook by default (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_datarecovery_l_donotshowdataextractionoptionswhenopeningcorruptworkbooks_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_storemacroinpersonalmacroworkbookbydefault_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_datarecovery_l_donotshowdataextractionoptionswhenopeningcorruptworkbooks_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_storemacroinpersonalmacroworkbookbydefault_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_custom_l_disablecommandbarbuttonsandmenuitems165", - "displayName": "Disable commands (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_trustaccesstovisualbasicproject", + "displayName": "Trust access to Visual Basic Project (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_custom_l_disablecommandbarbuttonsandmenuitems165_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_trustaccesstovisualbasicproject_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_custom_l_disablecommandbarbuttonsandmenuitems165_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_trustaccesstovisualbasicproject_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_custom_l_disablecommandbarbuttonsandmenuitems165_l_enteracommandbaridtodisable", - "displayName": "Enter a command bar ID to disable (User)", - "options": null + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_turnofftrusteddocuments", + "displayName": "Turn off trusted documents (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_turnofftrusteddocuments_0", + "displayName": "Disabled", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_turnofftrusteddocuments_1", + "displayName": "Enabled", + "description": null + } + ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_custom_l_disableshortcutkeys166", - "displayName": "Disable shortcut keys (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_turnofftrusteddocumentsonthenetwork", + "displayName": "Turn off Trusted Documents on the network (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_custom_l_disableshortcutkeys166_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_turnofftrusteddocumentsonthenetwork_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_custom_l_disableshortcutkeys166_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_turnofftrusteddocumentsonthenetwork_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_custom_l_disableshortcutkeys166_l_enterakeyandmodifiertodisable", - "displayName": "Enter a key and modifier to disable (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems", - "displayName": "Disable commands (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_vbawarningspolicy", + "displayName": "VBA Macro Notification Settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_vbawarningspolicy_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_vbawarningspolicy_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodemacros", - "displayName": "Developer tab | Code | Macros (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_vbawarningspolicy_l_empty4", + "displayName": "", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodemacros_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_vbawarningspolicy_l_empty4_2", + "displayName": "Disable all with notification", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodemacros_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_vbawarningspolicy_l_empty4_3", + "displayName": "Disable all except digitally signed macros", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodemacrosecurity", - "displayName": "Developer tab | Code | Macro Security (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodemacrosecurity_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_vbawarningspolicy_l_empty4_4", + "displayName": "Disable all without notification", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodemacrosecurity_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_vbawarningspolicy_l_empty4_1", + "displayName": "Enable all macros (not recommended)", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercoderecordmacro", - "displayName": "Developer tab | Code | Record Macro (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_dbaseiiiandivfiles", + "displayName": "dBase III / IV files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercoderecordmacro_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_dbaseiiiandivfiles_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercoderecordmacro_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_dbaseiiiandivfiles_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodevisualbasic", - "displayName": "Developer tab | Code | Visual Basic (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_dbaseiiiandivfiles_l_dbaseiiiandivfilesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodevisualbasic_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_dbaseiiiandivfiles_l_dbaseiiiandivfilesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_developercodevisualbasic_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_dbaseiiiandivfiles_l_dbaseiiiandivfilesdropid_2", + "displayName": "Open/Save blocked, use open policy", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_insertlinkshyperlink", - "displayName": "Insert tab | Links | Hyperlink (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_difandsylkfiles", + "displayName": "Dif and Sylk files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_insertlinkshyperlink_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_difandsylkfiles_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_insertlinkshyperlink_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_difandsylkfiles_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonexceloptionscustomizationmailrecipient", - "displayName": "File tab | Share | Email (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_difandsylkfiles_l_difandsylkfilesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonexceloptionscustomizationmailrecipient_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_difandsylkfiles_l_difandsylkfilesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonexceloptionscustomizationmailrecipient_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_difandsylkfiles_l_difandsylkfilesdropid_1", + "displayName": "Save blocked", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_difandsylkfiles_l_difandsylkfilesdropid_2", + "displayName": "Open/Save blocked, use open policy", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonexceloptionscustomizedocumentlocation", - "displayName": "File tab | Options | Customize Ribbon | All Commands | Document Location (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlateraddinfiles", + "displayName": "Excel 2007 and later add-in files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonexceloptionscustomizedocumentlocation_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlateraddinfiles_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonexceloptionscustomizedocumentlocation_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlateraddinfiles_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonxceloptionscustomizationcombinedpreviewwebpagepreview", - "displayName": "File tab | Options | Customize Ribbon | All Commands | Web Page Preview (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlateraddinfiles_l_excel2007andlateraddinfilesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonxceloptionscustomizationcombinedpreviewwebpagepreview_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlateraddinfiles_l_excel2007andlateraddinfilesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_officebuttonxceloptionscustomizationcombinedpreviewwebpagepreview_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlateraddinfiles_l_excel2007andlateraddinfilesdropid_1", + "displayName": "Save blocked", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlateraddinfiles_l_excel2007andlateraddinfilesdropid_2", + "displayName": "Open/Save blocked, use open policy", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectsharing", - "displayName": "Review tab | Changes | Protect and Share Workbook (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks", + "displayName": "Excel 2007 and later binary workbooks (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectsharing_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectsharing_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectsheet", - "displayName": "Review tab | Changes | Protect Sheet (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_l_excel2007andlaterbinaryworkbooksdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectsheet_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_l_excel2007andlaterbinaryworkbooksdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectsheet_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_l_excel2007andlaterbinaryworkbooksdropid_1", + "displayName": "Save blocked", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectworkbook", - "displayName": "Review tab | Changes | Protect Workbook (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectworkbook_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_l_excel2007andlaterbinaryworkbooksdropid_2", + "displayName": "Open/Save blocked, use open policy", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_reviewchangesprotectworkbook_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_l_excel2007andlaterbinaryworkbooksdropid_3", + "displayName": "Block", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_viewmacrosmacros", - "displayName": "View tab | Macros | Macros (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_viewmacrosmacros_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_l_excel2007andlaterbinaryworkbooksdropid_4", + "displayName": "Open in Protected View", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disablecommandbarbuttonsandmenuitems_l_viewmacrosmacros_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_l_excel2007andlaterbinaryworkbooksdropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys", - "displayName": "Disable shortcut keys (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates", + "displayName": "Excel 2007 and later macro-enabled workbooks and templates (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_altf8toolsmacromacros", - "displayName": "Alt+F8 (Developer | Code | Macros) (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_l_excel2007andlatermacroenabledworkbooksandtemplatesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_altf8toolsmacromacros_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_l_excel2007andlatermacroenabledworkbooksandtemplatesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_altf8toolsmacromacros_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_l_excel2007andlatermacroenabledworkbooksandtemplatesdropid_1", + "displayName": "Save blocked", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_altlvdevelopercodevisualbasic", - "displayName": "Alt+F11 (Developer | Code | Visual Basic) (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_altlvdevelopercodevisualbasic_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_l_excel2007andlatermacroenabledworkbooksandtemplatesdropid_2", + "displayName": "Open/Save blocked, use open policy", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_altlvdevelopercodevisualbasic_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_l_excel2007andlatermacroenabledworkbooksandtemplatesdropid_3", + "displayName": "Block", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_l_excel2007andlatermacroenabledworkbooksandtemplatesdropid_4", + "displayName": "Open in Protected View", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_l_excel2007andlatermacroenabledworkbooksandtemplatesdropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_ctrlfhomeeditingfind", - "displayName": "Ctrl+F (Home | Editing | Find & Select | Find) (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates", + "displayName": "Excel 2007 and later workbooks and templates (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_ctrlfhomeeditingfind_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_ctrlfhomeeditingfind_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_ctrlkinsertlinkshyperlinks", - "displayName": "Ctrl+K (Insert | Links | Hyperlink) (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_l_excel2007andlaterworkbooksandtemplatesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_ctrlkinsertlinkshyperlinks_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_l_excel2007andlaterworkbooksandtemplatesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_disableitemsinuserinterface~l_predefined_l_disableshortcutkeys_l_ctrlkinsertlinkshyperlinks_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_l_excel2007andlaterworkbooksandtemplatesdropid_1", + "displayName": "Save blocked", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_l_excel2007andlaterworkbooksandtemplatesdropid_2", + "displayName": "Open/Save blocked, use open policy", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_l_excel2007andlaterworkbooksandtemplatesdropid_3", + "displayName": "Block", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_l_excel2007andlaterworkbooksandtemplatesdropid_4", + "displayName": "Open in Protected View", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_l_excel2007andlaterworkbooksandtemplatesdropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_alertbeforeoverwritingcells", - "displayName": "Alert before overwriting cells (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles", + "displayName": "Excel 2 macrosheets and add-in files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_alertbeforeoverwritingcells_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_alertbeforeoverwritingcells_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_alternatestartupfilelocation", - "displayName": "Alternate startup file location (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles_l_excel2macrosheetsandaddinfilesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_alternatestartupfilelocation_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles_l_excel2macrosheetsandaddinfilesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_alternatestartupfilelocation_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles_l_excel2macrosheetsandaddinfilesdropid_2", + "displayName": "Open/Save blocked, use open policy", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles_l_excel2macrosheetsandaddinfilesdropid_3", + "displayName": "Block", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles_l_excel2macrosheetsandaddinfilesdropid_4", + "displayName": "Open in Protected View", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles_l_excel2macrosheetsandaddinfilesdropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_alternatestartupfilelocation_l_alternatestartupfilelocation86", - "displayName": "Alternate startup file location (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_asktoupdateautomaticlinks", - "displayName": "Ask to update automatic links (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets", + "displayName": "Excel 2 worksheets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_asktoupdateautomaticlinks_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_asktoupdateautomaticlinks_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_automaticallyflashfill", - "displayName": "Automatically Flash Fill (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets_l_excel2worksheetsdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_automaticallyflashfill_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets_l_excel2worksheetsdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_automaticallyflashfill_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets_l_excel2worksheetsdropid_2", + "displayName": "Open/Save blocked, use open policy", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets_l_excel2worksheetsdropid_3", + "displayName": "Block", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets_l_excel2worksheetsdropid_4", + "displayName": "Open in Protected View", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets_l_excel2worksheetsdropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_automaticallyinsertadecimalpoint", - "displayName": "Automatically insert a decimal point (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles", + "displayName": "Excel 3 macrosheets and add-in files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_automaticallyinsertadecimalpoint_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_automaticallyinsertadecimalpoint_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_chartreftrackingenabled", - "displayName": "Allow formatting and labels to track data points (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles_l_excel3macrosheetsandaddinfilesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_chartreftrackingenabled_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles_l_excel3macrosheetsandaddinfilesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_chartreftrackingenabled_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles_l_excel3macrosheetsandaddinfilesdropid_2", + "displayName": "Open/Save blocked, use open policy", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles_l_excel3macrosheetsandaddinfilesdropid_3", + "displayName": "Block", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles_l_excel3macrosheetsandaddinfilesdropid_4", + "displayName": "Open in Protected View", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles_l_excel3macrosheetsandaddinfilesdropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_comments", - "displayName": "Comments (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets", + "displayName": "Excel 3 worksheets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_comments_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_comments_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_comments_l_comments85", - "displayName": "Comments (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets_l_excel3worksheetsdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_comments_l_comments85_0", - "displayName": "None", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets_l_excel3worksheetsdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_comments_l_comments85_1", - "displayName": "Comment indicator only", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets_l_excel3worksheetsdropid_2", + "displayName": "Open/Save blocked, use open policy", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_comments_l_comments85_2", - "displayName": "Comment & indicator", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets_l_excel3worksheetsdropid_3", + "displayName": "Block", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets_l_excel3worksheetsdropid_4", + "displayName": "Open in Protected View", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets_l_excel3worksheetsdropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cursormovement", - "displayName": "Cursor movement (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles", + "displayName": "Excel 4 macrosheets and add-in files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cursormovement_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cursormovement_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cursormovement_l_cursormovement82", - "displayName": "Cursor movement (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles_l_excel4macrosheetsandaddinfilesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cursormovement_l_cursormovement82_0", - "displayName": "Logical", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles_l_excel4macrosheetsandaddinfilesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cursormovement_l_cursormovement82_1", - "displayName": "Visual", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles_l_excel4macrosheetsandaddinfilesdropid_2", + "displayName": "Open/Save blocked, use open policy", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cutandcopyobjectswithcells", - "displayName": "Cut and copy objects with cells (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cutandcopyobjectswithcells_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles_l_excel4macrosheetsandaddinfilesdropid_3", + "displayName": "Block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_cutandcopyobjectswithcells_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles_l_excel4macrosheetsandaddinfilesdropid_4", + "displayName": "Open in Protected View", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles_l_excel4macrosheetsandaddinfilesdropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_defaultdirection", - "displayName": "Default sheet direction (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks", + "displayName": "Excel 4 workbooks (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_defaultdirection_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_defaultdirection_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_defaultdirection_l_defaultdirection81", - "displayName": "Default sheet direction (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks_l_excel4workbooksdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_defaultdirection_l_defaultdirection81_1", - "displayName": "Right-to-Left", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks_l_excel4workbooksdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_defaultdirection_l_defaultdirection81_0", - "displayName": "Left-to-Right", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks_l_excel4workbooksdropid_2", + "displayName": "Open/Save blocked, use open policy", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_editdirectlyincell", - "displayName": "Edit directly in cell (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_editdirectlyincell_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks_l_excel4workbooksdropid_3", + "displayName": "Block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_editdirectlyincell_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks_l_excel4workbooksdropid_4", + "displayName": "Open in Protected View", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks_l_excel4workbooksdropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enableautocompleteforcellvalues", - "displayName": "Enable AutoComplete for cell values (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets", + "displayName": "Excel 4 worksheets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enableautocompleteforcellvalues_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enableautocompleteforcellvalues_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enableautomaticpercententry", - "displayName": "Enable automatic percent entry (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets_l_excel4worksheetsdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enableautomaticpercententry_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets_l_excel4worksheetsdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enableautomaticpercententry_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets_l_excel4worksheetsdropid_2", + "displayName": "Open/Save blocked, use open policy", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets_l_excel4worksheetsdropid_3", + "displayName": "Block", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets_l_excel4worksheetsdropid_4", + "displayName": "Open in Protected View", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets_l_excel4worksheetsdropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enablefillhandleandcelldraganddrop", - "displayName": "Enable fill handle and cell drag-and-drop (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates", + "displayName": "Excel 95-97 workbooks and templates (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enablefillhandleandcelldraganddrop_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_enablefillhandleandcelldraganddrop_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_extenddatarangeformatsandformulas", - "displayName": "Extend data range formats and formulas (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates_l_excel9597workbooksandtemplatesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_extenddatarangeformatsandformulas_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates_l_excel9597workbooksandtemplatesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_extenddatarangeformatsandformulas_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates_l_excel9597workbooksandtemplatesdropid_2", + "displayName": "Open/Save blocked, use open policy", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates_l_excel9597workbooksandtemplatesdropid_3", + "displayName": "Block", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates_l_excel9597workbooksandtemplatesdropid_4", + "displayName": "Open in Protected View", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates_l_excel9597workbooksandtemplatesdropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_functiontooltips", - "displayName": "Function tooltips (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks", + "displayName": "Excel 95 workbooks (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_functiontooltips_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_functiontooltips_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_ignoreotherapplications", - "displayName": "Ignore other applications (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_l_excel95workbooksdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_ignoreotherapplications_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_l_excel95workbooksdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_ignoreotherapplications_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_l_excel95workbooksdropid_1", + "displayName": "Save blocked", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_l_excel95workbooksdropid_2", + "displayName": "Open/Save blocked, use open policy", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_l_excel95workbooksdropid_3", + "displayName": "Block", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_l_excel95workbooksdropid_4", + "displayName": "Open in Protected View", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_l_excel95workbooksdropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_microsoftexcelmenuorhelpkey", - "displayName": "Microsoft Excel menu or Help key (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003addinfiles", + "displayName": "Excel 97-2003 add-in files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_microsoftexcelmenuorhelpkey_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003addinfiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_microsoftexcelmenuorhelpkey_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003addinfiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_microsoftexcelmenuorhelpkey_l_helpkey", - "displayName": "Enter ASCII value (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenter", - "displayName": "Move selection after Enter (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003addinfiles_l_excel972003addinfilesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenter_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003addinfiles_l_excel972003addinfilesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenter_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003addinfiles_l_excel972003addinfilesdropid_1", + "displayName": "Save blocked", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003addinfiles_l_excel972003addinfilesdropid_2", + "displayName": "Open/Save blocked, use open policy", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenterdirection", - "displayName": "Move selection after Enter direction (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates", + "displayName": "Excel 97-2003 workbooks and templates (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenterdirection_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenterdirection_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenterdirection_l_moveselectionafterenterdirection84", - "displayName": "Move selection after Enter direction (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_l_excel972003workbooksandtemplatesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenterdirection_l_moveselectionafterenterdirection84_0", - "displayName": "Down", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_l_excel972003workbooksandtemplatesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenterdirection_l_moveselectionafterenterdirection84_1", - "displayName": "Right", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_l_excel972003workbooksandtemplatesdropid_1", + "displayName": "Save blocked", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenterdirection_l_moveselectionafterenterdirection84_2", - "displayName": "Up", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_l_excel972003workbooksandtemplatesdropid_2", + "displayName": "Open/Save blocked, use open policy", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_moveselectionafterenterdirection_l_moveselectionafterenterdirection84_3", - "displayName": "Left", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_l_excel972003workbooksandtemplatesdropid_3", + "displayName": "Block", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_recentlyusedfilelist", - "displayName": "Number of workbooks in the Recent Workbooks list (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_recentlyusedfilelist_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_l_excel972003workbooksandtemplatesdropid_4", + "displayName": "Open in Protected View", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_recentlyusedfilelist_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_l_excel972003workbooksandtemplatesdropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_recentlyusedfilelist_l_entriesonrecentlyusedfilelist", - "displayName": "Entries on recently used file list (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_setnumberofplacesintherecentplaceslist", - "displayName": "Number of folders in the Recent Folders list (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_exceladdinfiles", + "displayName": "Excel add-in files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_setnumberofplacesintherecentplaceslist_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_exceladdinfiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_setnumberofplacesintherecentplaceslist_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_exceladdinfiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_setnumberofplacesintherecentplaceslist_l_setnumberofplacesintherecentplaceslistspinid", - "displayName": "", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showalertifnotdefault", - "displayName": "Show Alert if Excel is not the default for its associated file types (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_exceladdinfiles_l_exceladdinfilesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showalertifnotdefault_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_exceladdinfiles_l_exceladdinfilesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showalertifnotdefault_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_exceladdinfiles_l_exceladdinfilesdropid_2", + "displayName": "Open/Save blocked, use open policy", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showcontrolcharacters", - "displayName": "Show control characters (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel", + "displayName": "Legacy converters for Excel (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showcontrolcharacters_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showcontrolcharacters_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showformulabarinfullview", - "displayName": "Show Formula bar in Full View (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel_l_legacyconvertersforexceldropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showformulabarinfullview_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel_l_legacyconvertersforexceldropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showformulabarinfullview_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel_l_legacyconvertersforexceldropid_2", + "displayName": "Open/Save blocked, use open policy", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showformulabarinnormalview", - "displayName": "Show Formula bar in Normal View (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showformulabarinnormalview_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel_l_legacyconvertersforexceldropid_3", + "displayName": "Block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showformulabarinnormalview_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel_l_legacyconvertersforexceldropid_4", + "displayName": "Open in Protected View", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel_l_legacyconvertersforexceldropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showinsertoptionsbuttons", - "displayName": "Show Insert Options buttons (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel", + "displayName": "Microsoft Office Open XML converters for Excel (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showinsertoptionsbuttons_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showinsertoptionsbuttons_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_shownames", - "displayName": "Show names (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_l_microsoftofficeopenxmlconvertersforexceldropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_shownames_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_l_microsoftofficeopenxmlconvertersforexceldropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_shownames_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_l_microsoftofficeopenxmlconvertersforexceldropid_1", + "displayName": "Save blocked", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_l_microsoftofficeopenxmlconvertersforexceldropid_2", + "displayName": "Open/Save blocked, use open policy", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_l_microsoftofficeopenxmlconvertersforexceldropid_3", + "displayName": "Block", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_l_microsoftofficeopenxmlconvertersforexceldropid_4", + "displayName": "Open in Protected View", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_l_microsoftofficeopenxmlconvertersforexceldropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showpasteoptionsbuttonwhencontentispasted", - "displayName": "Show Paste Options button when content is pasted (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles", + "displayName": "Microsoft Office query files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showpasteoptionsbuttonwhencontentispasted_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showpasteoptionsbuttonwhencontentispasted_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showvalues", - "displayName": "Show values (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_l_microsoftofficequeryfilesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showvalues_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_l_microsoftofficequeryfilesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_showvalues_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_l_microsoftofficequeryfilesdropid_1", + "displayName": "Save blocked", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_l_microsoftofficequeryfilesdropid_2", + "displayName": "Open/Save blocked, use open policy", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_l_microsoftofficequeryfilesdropid_3", + "displayName": "Block", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_l_microsoftofficequeryfilesdropid_4", + "displayName": "Open in Protected View", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_l_microsoftofficequeryfilesdropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_transitionnavigationkeys", - "displayName": "Transition navigation keys (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_officedataconnectionfiles", + "displayName": "Microsoft Office data connection files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_transitionnavigationkeys_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_officedataconnectionfiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_transitionnavigationkeys_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_officedataconnectionfiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_zoomonrollwithintellimouse", - "displayName": "Zoom on roll with IntelliMouse (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_officedataconnectionfiles_l_officedataconnectionfilesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_zoomonrollwithintellimouse_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_officedataconnectionfiles_l_officedataconnectionfilesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced_l_zoomonrollwithintellimouse_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_officedataconnectionfiles_l_officedataconnectionfilesdropid_2", + "displayName": "Open/Save blocked, use open policy", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced~l_weboptions~l_general_l_loadpicturesfromwebpagesnotcreatedinexcel", - "displayName": "Load pictures from Web pages not created in Excel (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_offlinecubefiles", + "displayName": "Offline cube files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced~l_weboptions~l_general_l_loadpicturesfromwebpagesnotcreatedinexcel_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_offlinecubefiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_advanced~l_weboptions~l_general_l_loadpicturesfromwebpagesnotcreatedinexcel_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_offlinecubefiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_formulas_l_r1c1referencestyle", - "displayName": "R1C1 reference style (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_offlinecubefiles_l_offlinecubefilesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_formulas_l_r1c1referencestyle_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_offlinecubefiles_l_offlinecubefilesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_formulas_l_r1c1referencestyle_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_offlinecubefiles_l_offlinecubefilesdropid_2", + "displayName": "Open/Save blocked, use open policy", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionscustomizeribbon_l_displaydevelopertab", - "displayName": "Display Developer tab in the Ribbon (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles", + "displayName": "OpenDocument Spreadsheet files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionscustomizeribbon_l_displaydevelopertab_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionscustomizeribbon_l_displaydevelopertab_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_allowquickanalysis", - "displayName": "Show Quick Analysis options on selection (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_l_opendocumentspreadsheetfilesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_allowquickanalysis_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_l_opendocumentspreadsheetfilesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_allowquickanalysis_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_l_opendocumentspreadsheetfilesdropid_1", + "displayName": "Save blocked", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_l_opendocumentspreadsheetfilesdropid_2", + "displayName": "Open/Save blocked, use open policy", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_l_opendocumentspreadsheetfilesdropid_3", + "displayName": "Block", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_l_opendocumentspreadsheetfilesdropid_4", + "displayName": "Open in Protected View", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_l_opendocumentspreadsheetfilesdropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_allowselectionfloaties", - "displayName": "Show Mini Toolbar on selection (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_otherdatasourcefiles", + "displayName": "Other data source files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_allowselectionfloaties_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_otherdatasourcefiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_allowselectionfloaties_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_otherdatasourcefiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_defaultsheets", - "displayName": "Default Sheets (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_otherdatasourcefiles_l_otherdatasourcefilesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_defaultsheets_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_otherdatasourcefiles_l_otherdatasourcefilesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_defaultsheets_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_otherdatasourcefiles_l_otherdatasourcefilesdropid_2", + "displayName": "Open/Save blocked, use open policy", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_defaultsheets_l_sheetsinnewworkbook", - "displayName": "Sheets in new workbook (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_disablelivepreview", - "displayName": "Enable Live Preview (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_setdefaultfileblockbehavior", + "displayName": "Set default file block behavior (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_disablelivepreview_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_setdefaultfileblockbehavior_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_disablelivepreview_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_setdefaultfileblockbehavior_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_font", - "displayName": "Font (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_setdefaultfileblockbehavior_l_setdefaultfileblockbehaviordropid", + "displayName": "", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_font_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_setdefaultfileblockbehavior_l_setdefaultfileblockbehaviordropid_0", + "displayName": "Blocked files are not opened", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_font_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_setdefaultfileblockbehavior_l_setdefaultfileblockbehaviordropid_1", + "displayName": "Blocked files open in Protected View and can not be edited", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_setdefaultfileblockbehavior_l_setdefaultfileblockbehaviordropid_2", + "displayName": "Blocked files open in Protected View and can be edited", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_font_l_namesize", - "displayName": "Name, Size (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_windowsintaskbar", - "displayName": "Show all windows in the Taskbar (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_textfiles", + "displayName": "Text files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_windowsintaskbar_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_textfiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_optionsgeneral_l_windowsintaskbar_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_textfiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_proofing~l_autocorrectoptions_l_includenewrowsandcolumnsinlist", - "displayName": "Include new rows and columns in table (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_textfiles_l_textfilesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_proofing~l_autocorrectoptions_l_includenewrowsandcolumnsinlist_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_textfiles_l_textfilesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_proofing~l_autocorrectoptions_l_includenewrowsandcolumnsinlist_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_textfiles_l_textfilesdropid_1", + "displayName": "Save blocked", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_textfiles_l_textfilesdropid_2", + "displayName": "Open/Save blocked, use open policy", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_proofing~l_autocorrectoptions_l_internetandnetworkpathsashyperlinks", - "displayName": "Internet and network paths as hyperlinks (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets", + "displayName": "Web pages and Excel 2003 XML spreadsheets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_proofing~l_autocorrectoptions_l_internetandnetworkpathsashyperlinks_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_proofing~l_autocorrectoptions_l_internetandnetworkpathsashyperlinks_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecoverdelay", - "displayName": "AutoRecover delay (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_l_webpagesandexcel2003xmlspreadsheetsdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecoverdelay_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_l_webpagesandexcel2003xmlspreadsheetsdropid_0", + "displayName": "Do not block", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_l_webpagesandexcel2003xmlspreadsheetsdropid_1", + "displayName": "Save blocked", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_l_webpagesandexcel2003xmlspreadsheetsdropid_2", + "displayName": "Open/Save blocked, use open policy", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_l_webpagesandexcel2003xmlspreadsheetsdropid_3", + "displayName": "Block", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_l_webpagesandexcel2003xmlspreadsheetsdropid_4", + "displayName": "Open in Protected View", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecoverdelay_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_l_webpagesandexcel2003xmlspreadsheetsdropid_5", + "displayName": "Allow editing and open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecoverdelay_l_secondsofidletimebeforeautorecoverstarts", - "displayName": "Seconds of idle time before AutoRecover starts (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecoversavelocation", - "displayName": "AutoRecover save location (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_xmlfiles", + "displayName": "XML files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecoversavelocation_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_xmlfiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecoversavelocation_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_xmlfiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecoversavelocation_l_autorecoversavelocation2", - "displayName": "AutoRecover save location (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecovertime", - "displayName": "AutoRecover time (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_xmlfiles_l_xmlfilesdropid", + "displayName": "File block setting: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecovertime_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_xmlfiles_l_xmlfilesdropid_0", + "displayName": "Do not block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecovertime_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_xmlfiles_l_xmlfilesdropid_1", + "displayName": "Save blocked", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_xmlfiles_l_xmlfilesdropid_2", + "displayName": "Open/Save blocked, use open policy", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_autorecovertime_l_saveautorecoverinfoevery", - "displayName": "Save AutoRecover info every (minutes): (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_defaultfilelocation", - "displayName": "Default file location (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_donotopenfilesfromtheinternetzoneinprotectedview", + "displayName": "Do not open files from the Internet zone in Protected View (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_defaultfilelocation_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_donotopenfilesfromtheinternetzoneinprotectedview_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_defaultfilelocation_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_donotopenfilesfromtheinternetzoneinprotectedview_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_defaultfilelocation_l_defaultfilelocation0", - "displayName": "Default file location (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_disableautorepublish", - "displayName": "Disable AutoRepublish (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_donotopenfilesinunsafelocationsinprotectedview", + "displayName": "Do not open files in unsafe locations in Protected View (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_disableautorepublish_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_donotopenfilesinunsafelocationsinprotectedview_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_disableautorepublish_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_donotopenfilesinunsafelocationsinprotectedview_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_donotshowautorepublishwarningalert", - "displayName": "Do not show AutoRepublish warning alert (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_openfilesonlocalintranetuncinprotectedview", + "displayName": "Open files on local Intranet UNC in Protected View (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_donotshowautorepublishwarningalert_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_openfilesonlocalintranetuncinprotectedview_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_donotshowautorepublishwarningalert_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_openfilesonlocalintranetuncinprotectedview_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_keeplastautosavedversions", - "displayName": "Keep the last AutoSaved versions of files for the next session (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails", + "displayName": "Set document behavior if file validation fails (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_keeplastautosavedversions_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_keeplastautosavedversions_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_promptforworkbookproperties", - "displayName": "Prompt for workbook properties (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails_l_setdocumentbehavioriffilevalidationfailsdropid", + "displayName": "", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_promptforworkbookproperties_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails_l_setdocumentbehavioriffilevalidationfailsdropid_0", + "displayName": "Block files", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_promptforworkbookproperties_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails_l_setdocumentbehavioriffilevalidationfailsdropid_1", + "displayName": "Open in Protected View", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveautorecoverinfo", - "displayName": "Save AutoRecover info (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails_l_setdocumentbehavioriffilevalidationfailsstr3", + "displayName": "Checked: Allow edit. Unchecked: Do not allow edit. (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveautorecoverinfo_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails_l_setdocumentbehavioriffilevalidationfailsstr3_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveautorecoverinfo_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails_l_setdocumentbehavioriffilevalidationfailsstr3_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas", - "displayName": "Default file format (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_turnoffprotectedviewforattachmentsopenedfromoutlook", + "displayName": "Turn off Protected View for attachments opened from Outlook (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_turnoffprotectedviewforattachmentsopenedfromoutlook_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_turnoffprotectedviewforattachmentsopenedfromoutlook_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_l_saveexcelfilesas1", - "displayName": "Save Excel files as (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_allowtrustedlocationsonthenetwork", + "displayName": "Allow Trusted Locations on the network (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_l_saveexcelfilesas1_51", - "displayName": "Excel Workbook (*.xlsx)", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_l_saveexcelfilesas1_52", - "displayName": "Excel Macro-Enabled Workbook (*.xlsm)", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_l_saveexcelfilesas1_50", - "displayName": "Excel Binary Workbook (*.xlsb)", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_l_saveexcelfilesas1_44", - "displayName": "Web Page (*.htm; *.html)", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_l_saveexcelfilesas1_56", - "displayName": "Excel 97-2003 Workbook (*.xls)", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_l_saveexcelfilesas1_39", - "displayName": "Excel 5.0/95 Workbook (*.xls)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_allowtrustedlocationsonthenetwork_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_saveexcelfilesas_l_saveexcelfilesas1_60", - "displayName": "OpenDocument Spreadsheet (*.ods)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_allowtrustedlocationsonthenetwork_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_turnofffileformatcompatiblitydialogforods", - "displayName": "Suppress file format compatibility dialog box for OpenDocument Spreadsheet format (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_disabletrustedloc", + "displayName": "Disable all trusted locations (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_turnofffileformatcompatiblitydialogforods_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_disabletrustedloc_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_save_l_turnofffileformatcompatiblitydialogforods_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_disabletrustedloc_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_determinewhethertoforceencryptedexcel", - "displayName": "Scan encrypted macros in Excel Open XML workbooks (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01", + "displayName": "Trusted Location #1 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_determinewhethertoforceencryptedexcel_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_determinewhethertoforceencryptedexcel_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_determinewhethertoforceencryptedexcel_l_determinewhethertoforceencryptedexceldropid", - "displayName": "", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01_l_allowsubfolders", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_determinewhethertoforceencryptedexcel_l_determinewhethertoforceencryptedexceldropid_0", - "displayName": "Scan encrypted macros (default)", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_determinewhethertoforceencryptedexcel_l_determinewhethertoforceencryptedexceldropid_1", - "displayName": "Scan if anti-virus software available", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01_l_allowsubfolders_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_determinewhethertoforceencryptedexcel_l_determinewhethertoforceencryptedexceldropid_2", - "displayName": "Load macros without scanning", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01_l_allowsubfolders_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_forcefileextenstionstomatch", - "displayName": "Force file extension to match file type (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01_l_datecolon", + "displayName": "Date: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01_l_descriptioncolon", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01_l_pathcolon", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02", + "displayName": "Trusted Location #2 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_forcefileextenstionstomatch_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_forcefileextenstionstomatch_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_forcefileextenstionstomatch_l_empty", - "displayName": "", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02_l_allowsubfolders8", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_forcefileextenstionstomatch_l_empty_0", - "displayName": "Allow different", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_forcefileextenstionstomatch_l_empty_1", - "displayName": "Allow different, but warn", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02_l_allowsubfolders8_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_forcefileextenstionstomatch_l_empty_2", - "displayName": "Always match file type", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02_l_allowsubfolders8_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_performfilevalidationonpivotcaches", - "displayName": "Perform file validation on pivot caches (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02_l_datecolon6", + "displayName": "Date: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02_l_descriptioncolon7", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02_l_pathcolon5", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03", + "displayName": "Trusted Location #3 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_performfilevalidationonpivotcaches_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_performfilevalidationonpivotcaches_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_performfilevalidationonpivotcaches_l_performfilevalidationonpivotcachesdropid", - "displayName": "", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03_l_allowsubfolders12", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_performfilevalidationonpivotcaches_l_performfilevalidationonpivotcachesdropid_0", - "displayName": "No file validation", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_performfilevalidationonpivotcaches_l_performfilevalidationonpivotcachesdropid_1", - "displayName": "Web and email sources", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03_l_allowsubfolders12_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_performfilevalidationonpivotcaches_l_performfilevalidationonpivotcachesdropid_2", - "displayName": "Always perform validation", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03_l_allowsubfolders12_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_turnofffilevalidation", - "displayName": "Turn off file validation (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_turnofffilevalidation_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_turnofffilevalidation_1", - "displayName": "Enabled", - "description": null - } - ] + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03_l_datecolon10", + "displayName": "Date: (User)", + "options": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_webcontentwarninglevel", - "displayName": "WEBSERVICE Function Notification Settings (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03_l_descriptioncolon11", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03_l_pathcolon9", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04", + "displayName": "Trusted Location #4 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_webcontentwarninglevel_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_webcontentwarninglevel_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_webcontentwarninglevel_l_webcontentwarninglevelvalue", - "displayName": "", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04_l_allowsubfolders16", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_webcontentwarninglevel_l_webcontentwarninglevelvalue_0", - "displayName": "Enable all WEBSERVICE functions (not recommended)", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_webcontentwarninglevel_l_webcontentwarninglevelvalue_1", - "displayName": "Disable all with notification", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04_l_allowsubfolders16_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security_l_webcontentwarninglevel_l_webcontentwarninglevelvalue_2", - "displayName": "Disable all without notification", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04_l_allowsubfolders16_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_configurecngcipherchainingmode", - "displayName": "Configure CNG cipher chaining mode (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04_l_datecolon14", + "displayName": "Date: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04_l_descriptioncolon15", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04_l_pathcolon13", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05", + "displayName": "Trusted Location #5 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_configurecngcipherchainingmode_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_configurecngcipherchainingmode_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_configurecngcipherchainingmode_l_configurecngcipherchainingmodedropid", - "displayName": "", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05_l_allowsubfolders20", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_configurecngcipherchainingmode_l_configurecngcipherchainingmodedropid_chainingmodecbc", - "displayName": "Cipher Block Chaining (CBC)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05_l_allowsubfolders20_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_configurecngcipherchainingmode_l_configurecngcipherchainingmodedropid_chainingmodecfb", - "displayName": "Cipher Feedback (CFB)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05_l_allowsubfolders20_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngcipheralgorithm", - "displayName": "Set CNG cipher algorithm (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05_l_datecolon18", + "displayName": "Date: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05_l_descriptioncolon19", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05_l_pathcolon17", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06", + "displayName": "Trusted Location #6 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngcipheralgorithm_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngcipheralgorithm_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngcipheralgorithm_l_setcngcipheralgorithmid", - "displayName": "CNG cipher algorithm: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngcipherkeylength", - "displayName": "Set CNG cipher key length (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06_l_allowsubfolders24", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngcipherkeylength_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06_l_allowsubfolders24_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngcipherkeylength_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06_l_allowsubfolders24_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngcipherkeylength_l_setcngcipherkeylengthspinid", - "displayName": "Cipher key length (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06_l_datecolon22", + "displayName": "Date: (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngpasswordspincount", - "displayName": "Set CNG password spin count (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06_l_descriptioncolon23", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06_l_pathcolon21", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07", + "displayName": "Trusted Location #7 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngpasswordspincount_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngpasswordspincount_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setcngpasswordspincount_l_setcngpasswordspincountspinid", - "displayName": "", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setparametersforcngcontext", - "displayName": "Set parameters for CNG context (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07_l_allowsubfolders28", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setparametersforcngcontext_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07_l_allowsubfolders28_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setparametersforcngcontext_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07_l_allowsubfolders28_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_setparametersforcngcontext_l_setparametersforcngcontextid", - "displayName": "Parameters (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07_l_datecolon26", + "displayName": "Date: (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycnghashalgorithm", - "displayName": "Specify CNG hash algorithm (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07_l_descriptioncolon27", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07_l_pathcolon25", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08", + "displayName": "Trusted Location #8 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycnghashalgorithm_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycnghashalgorithm_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycnghashalgorithm_l_specifycnghashalgorithmdropid", - "displayName": "", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08_l_allowsubfolders32", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycnghashalgorithm_l_specifycnghashalgorithmdropid_sha1", - "displayName": "SHA1", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycnghashalgorithm_l_specifycnghashalgorithmdropid_sha256", - "displayName": "SHA256", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycnghashalgorithm_l_specifycnghashalgorithmdropid_sha384", - "displayName": "SHA384", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08_l_allowsubfolders32_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycnghashalgorithm_l_specifycnghashalgorithmdropid_sha512", - "displayName": "SHA512", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08_l_allowsubfolders32_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycngrandomnumbergeneratoralgorithm", - "displayName": "Specify CNG random number generator algorithm (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08_l_datecolon30", + "displayName": "Date: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08_l_descriptioncolon31", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08_l_pathcolon29", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09", + "displayName": "Trusted Location #9 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycngrandomnumbergeneratoralgorithm_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycngrandomnumbergeneratoralgorithm_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycngrandomnumbergeneratoralgorithm_l_specifycngrandomnumbergeneratoralgorithmid", - "displayName": "Random number generator: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycngsaltlength", - "displayName": "Specify CNG salt length (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09_l_allowsubfolders36", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycngsaltlength_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09_l_allowsubfolders36_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycngsaltlength_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09_l_allowsubfolders36_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifycngsaltlength_l_specifycngsaltlengthspinid", - "displayName": "Number of bytes (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09_l_datecolon34", + "displayName": "Date: (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifyencryptioncompatibility", - "displayName": "Specify encryption compatibility (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09_l_descriptioncolon35", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09_l_pathcolon33", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10", + "displayName": "Trusted Location #10 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifyencryptioncompatibility_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifyencryptioncompatibility_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifyencryptioncompatibility_l_specifyencryptioncompatibilitydropid", - "displayName": "", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10_l_allowsubfolders40", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifyencryptioncompatibility_l_specifyencryptioncompatibilitydropid_0", - "displayName": "Use legacy format", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifyencryptioncompatibility_l_specifyencryptioncompatibilitydropid_1", - "displayName": "Use next generation format", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10_l_allowsubfolders40_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_specifyencryptioncompatibility_l_specifyencryptioncompatibilitydropid_2", - "displayName": "All files save with next generation format", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10_l_allowsubfolders40_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_usenewkeyonpasswordchange", - "displayName": "Use new key on password change (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10_l_datecolon38", + "displayName": "Date: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10_l_descriptioncolon39", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10_l_pathcolon37", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11", + "displayName": "Trusted Location #11 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_usenewkeyonpasswordchange_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_cryptography_l_usenewkeyonpasswordchange_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockmacroexecutionfrominternet", - "displayName": "Block macros from running in Office files from the Internet (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11_l_allowsubfolders44", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockmacroexecutionfrominternet_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11_l_allowsubfolders44_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockmacroexecutionfrominternet_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11_l_allowsubfolders44_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disableallapplicationextensions", - "displayName": "Disable all application add-ins (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11_l_datecolon42", + "displayName": "Date: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11_l_descriptioncolon43", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11_l_pathcolon41", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12", + "displayName": "Trusted Location #12 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disableallapplicationextensions_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disableallapplicationextensions_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disabletrustbarnotificationforunsigned", - "displayName": "Disable Trust Bar Notification for unsigned application add-ins and block them (User) (Deprecated)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12_l_allowsubfolders48", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disabletrustbarnotificationforunsigned_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12_l_allowsubfolders48_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disabletrustbarnotificationforunsigned_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12_l_allowsubfolders48_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disabletrustbarnotificationforunsigned_v2", - "displayName": "Disable Trust Bar Notification for unsigned application add-ins and block them (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12_l_datecolon46", + "displayName": "Date: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12_l_descriptioncolon47", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12_l_pathcolon45", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13", + "displayName": "Trusted Location #13 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disabletrustbarnotificationforunsigned_v2_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_disabletrustbarnotificationforunsigned_v2_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_requirethatapplicationextensionsaresigned", - "displayName": "Require that application add-ins are signed by Trusted Publisher (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13_l_allowsubfolders52", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_requirethatapplicationextensionsaresigned_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13_l_allowsubfolders52_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_requirethatapplicationextensionsaresigned_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13_l_allowsubfolders52_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_setmaximumnumberoftrusteddocuments", - "displayName": "Set maximum number of trusted documents (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13_l_datecolon50", + "displayName": "Date: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13_l_descriptioncolon51", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13_l_pathcolon49", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14", + "displayName": "Trusted Location #14 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_setmaximumnumberoftrusteddocuments_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_setmaximumnumberoftrusteddocuments_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_setmaximumnumberoftrusteddocuments_l_setmaximumnumberoftrusteddocumentsspinid", - "displayName": "Maximum number: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_setmaximumnumberoftrustrecordstopreserve", - "displayName": "Set maximum number of trust records to preserve (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14_l_allowsubfolders56", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_setmaximumnumberoftrustrecordstopreserve_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14_l_allowsubfolders56_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_setmaximumnumberoftrustrecordstopreserve_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14_l_allowsubfolders56_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_setmaximumnumberoftrustrecordstopreserve_l_setmaximumnumberoftrustrecordstopreservespinid", - "displayName": "Maximum to preserve: (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14_l_datecolon54", + "displayName": "Date: (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_storemacroinpersonalmacroworkbookbydefault", - "displayName": "Store macro in Personal Macro Workbook by default (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14_l_descriptioncolon55", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14_l_pathcolon53", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15", + "displayName": "Trusted Location #15 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_storemacroinpersonalmacroworkbookbydefault_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_storemacroinpersonalmacroworkbookbydefault_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_trustaccesstovisualbasicproject", - "displayName": "Trust access to Visual Basic Project (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15_l_allowsubfolders60", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_trustaccesstovisualbasicproject_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15_l_allowsubfolders60_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_trustaccesstovisualbasicproject_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15_l_allowsubfolders60_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_turnofftrusteddocuments", - "displayName": "Turn off trusted documents (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15_l_datecolon58", + "displayName": "Date: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15_l_descriptioncolon59", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15_l_pathcolon57", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16", + "displayName": "Trusted Location #16 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_turnofftrusteddocuments_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_turnofftrusteddocuments_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_turnofftrusteddocumentsonthenetwork", - "displayName": "Turn off Trusted Documents on the network (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16_l_allowsubfolders64", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_turnofftrusteddocumentsonthenetwork_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16_l_allowsubfolders64_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_turnofftrusteddocumentsonthenetwork_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16_l_allowsubfolders64_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_vbawarningspolicy", - "displayName": "VBA Macro Notification Settings (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16_l_datecolon62", + "displayName": "Date: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16_l_descriptioncolon63", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16_l_pathcolon61", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17", + "displayName": "Trusted Location #17 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_vbawarningspolicy_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_vbawarningspolicy_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_vbawarningspolicy_l_empty4", - "displayName": "", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17_l_allowsubfolders68", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_vbawarningspolicy_l_empty4_2", - "displayName": "Disable all with notification", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_vbawarningspolicy_l_empty4_3", - "displayName": "Disable all except digitally signed macros", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_vbawarningspolicy_l_empty4_4", - "displayName": "Disable all without notification", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17_l_allowsubfolders68_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_vbawarningspolicy_l_empty4_1", - "displayName": "Enable all macros (not recommended)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17_l_allowsubfolders68_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_dbaseiiiandivfiles", - "displayName": "dBase III / IV files (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17_l_datecolon66", + "displayName": "Date: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17_l_descriptioncolon67", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17_l_pathcolon65", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18", + "displayName": "Trusted Location #18 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_dbaseiiiandivfiles_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_dbaseiiiandivfiles_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_dbaseiiiandivfiles_l_dbaseiiiandivfilesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18_l_allowsubfolders72", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_dbaseiiiandivfiles_l_dbaseiiiandivfilesdropid_0", - "displayName": "Do not block", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18_l_allowsubfolders72_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_dbaseiiiandivfiles_l_dbaseiiiandivfilesdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18_l_allowsubfolders72_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_difandsylkfiles", - "displayName": "Dif and Sylk files (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18_l_datecolon70", + "displayName": "Date: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18_l_descriptioncolon71", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18_l_pathcolon69", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19", + "displayName": "Trusted Location #19 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_difandsylkfiles_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_difandsylkfiles_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_difandsylkfiles_l_difandsylkfilesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19_l_allowsubfolders76", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_difandsylkfiles_l_difandsylkfilesdropid_0", - "displayName": "Do not block", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_difandsylkfiles_l_difandsylkfilesdropid_1", - "displayName": "Save blocked", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19_l_allowsubfolders76_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_difandsylkfiles_l_difandsylkfilesdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19_l_allowsubfolders76_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlateraddinfiles", - "displayName": "Excel 2007 and later add-in files (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19_l_datecolon74", + "displayName": "Date: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19_l_descriptioncolon75", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19_l_pathcolon73", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20", + "displayName": "Trusted Location #20 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlateraddinfiles_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlateraddinfiles_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlateraddinfiles_l_excel2007andlateraddinfilesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20_l_allowsubfolders80", + "displayName": "Allow sub folders: (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlateraddinfiles_l_excel2007andlateraddinfilesdropid_0", - "displayName": "Do not block", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlateraddinfiles_l_excel2007andlateraddinfilesdropid_1", - "displayName": "Save blocked", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20_l_allowsubfolders80_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlateraddinfiles_l_excel2007andlateraddinfilesdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20_l_allowsubfolders80_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks", - "displayName": "Excel 2007 and later binary workbooks (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20_l_datecolon78", + "displayName": "Date: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20_l_descriptioncolon79", + "displayName": "Description: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20_l_pathcolon77", + "displayName": "Path: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_backgroundaccessibilitycheckerinformation", + "displayName": "Check for accessibility issues while editing (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_backgroundaccessibilitycheckerinformation_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_backgroundaccessibilitycheckerinformation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_l_excel2007andlaterbinaryworkbooksdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingalttextaccessibilityinformation", + "displayName": "Stop checking for alt text accessibility information (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_l_excel2007andlaterbinaryworkbooksdropid_0", - "displayName": "Do not block", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_l_excel2007andlaterbinaryworkbooksdropid_1", - "displayName": "Save blocked", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_l_excel2007andlaterbinaryworkbooksdropid_2", - "displayName": "Open/Save blocked, use open policy", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_l_excel2007andlaterbinaryworkbooksdropid_3", - "displayName": "Block", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_l_excel2007andlaterbinaryworkbooksdropid_4", - "displayName": "Open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingalttextaccessibilityinformation_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterbinaryworkbooks_l_excel2007andlaterbinaryworkbooksdropid_5", - "displayName": "Allow editing and open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingalttextaccessibilityinformation_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates", - "displayName": "Excel 2007 and later macro-enabled workbooks and templates (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingforblanktablerowsusedasformatting", + "displayName": "Stop checking for blank table rows used as formatting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingforblanktablerowsusedasformatting_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingforblanktablerowsusedasformatting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_l_excel2007andlatermacroenabledworkbooksandtemplatesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingformergedcells", + "displayName": "Stop checking for merged cells (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_l_excel2007andlatermacroenabledworkbooksandtemplatesdropid_0", - "displayName": "Do not block", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_l_excel2007andlatermacroenabledworkbooksandtemplatesdropid_1", - "displayName": "Save blocked", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_l_excel2007andlatermacroenabledworkbooksandtemplatesdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingformergedcells_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_l_excel2007andlatermacroenabledworkbooksandtemplatesdropid_3", - "displayName": "Block", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingformergedcells_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtableheaderaccessibilityinformation", + "displayName": "Stop checking for table header accessibility information (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_l_excel2007andlatermacroenabledworkbooksandtemplatesdropid_4", - "displayName": "Open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtableheaderaccessibilityinformation_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlatermacroenabledworkbooksandtemplates_l_excel2007andlatermacroenabledworkbooksandtemplatesdropid_5", - "displayName": "Allow editing and open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtableheaderaccessibilityinformation_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates", - "displayName": "Excel 2007 and later workbooks and templates (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensurehyperlinktextismeaningful", + "displayName": "Stop checking to ensure hyperlink text is meaningful (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensurehyperlinktextismeaningful_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensurehyperlinktextismeaningful_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_l_excel2007andlaterworkbooksandtemplatesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensurenondefaultsheetnames", + "displayName": "Stop checking to ensure non-default sheet names (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_l_excel2007andlaterworkbooksandtemplatesdropid_0", - "displayName": "Do not block", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensurenondefaultsheetnames_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_l_excel2007andlaterworkbooksandtemplatesdropid_1", - "displayName": "Save blocked", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensurenondefaultsheetnames_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensureworkbooksallowprogrammaticaccess", + "displayName": "Stop checking to ensure workbooks allow programmatic access (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_l_excel2007andlaterworkbooksandtemplatesdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensureworkbooksallowprogrammaticaccess_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_l_excel2007andlaterworkbooksandtemplatesdropid_3", - "displayName": "Block", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensureworkbooksallowprogrammaticaccess_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_intelligentservices_l_insights", + "displayName": "Remove Ideas button from the Ribbon (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_l_excel2007andlaterworkbooksandtemplatesdropid_4", - "displayName": "Open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_intelligentservices_l_insights_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2007andlaterworkbooksandtemplates_l_excel2007andlaterworkbooksandtemplatesdropid_5", - "displayName": "Allow editing and open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_intelligentservices_l_insights_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles", - "displayName": "Excel 2 macrosheets and add-in files (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_blockallunmanagedaddins", + "displayName": "Block all unmanaged add-ins (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_blockallunmanagedaddins_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_blockallunmanagedaddins_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles_l_excel2macrosheetsandaddinfilesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_defaultcustomtab", + "displayName": "Show custom templates tab by default in Excel on the Office Start screen and in File | New (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles_l_excel2macrosheetsandaddinfilesdropid_0", - "displayName": "Do not block", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles_l_excel2macrosheetsandaddinfilesdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_defaultcustomtab_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles_l_excel2macrosheetsandaddinfilesdropid_3", - "displayName": "Block", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_defaultcustomtab_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_disableofficestartexcel", + "displayName": "Disable the Office Start screen for Excel (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles_l_excel2macrosheetsandaddinfilesdropid_4", - "displayName": "Open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_disableofficestartexcel_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2macrosheetsandaddinfiles_l_excel2macrosheetsandaddinfilesdropid_5", - "displayName": "Allow editing and open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_disableofficestartexcel_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets", - "displayName": "Excel 2 worksheets (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_donotcachenetworkfileslocally", + "displayName": "Do not cache network files locally (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_donotcachenetworkfileslocally_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_donotcachenetworkfileslocally_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets_l_excel2worksheetsdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_enablefourdigityeardisplay", + "displayName": "Enable four-digit year display (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets_l_excel2worksheetsdropid_0", - "displayName": "Do not block", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets_l_excel2worksheetsdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_enablefourdigityeardisplay_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets_l_excel2worksheetsdropid_3", - "displayName": "Block", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_enablefourdigityeardisplay_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_graphgallerypath", + "displayName": "Graph gallery path (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets_l_excel2worksheetsdropid_4", - "displayName": "Open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_graphgallerypath_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel2worksheets_l_excel2worksheetsdropid_5", - "displayName": "Allow editing and open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_graphgallerypath_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles", - "displayName": "Excel 3 macrosheets and add-in files (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_graphgallerypath_l_graphgallerypath169", + "displayName": "Graph gallery path (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_listofmanagedaddins", + "displayName": "List of managed add-ins (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_listofmanagedaddins_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_listofmanagedaddins_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles_l_excel3macrosheetsandaddinfilesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_listofmanagedaddins_l_listofmanagedaddins2", + "displayName": "List of managed add-ins (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_listofmanagedaddins_l_listofmanagedaddins2_key", + "displayName": "Name", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_listofmanagedaddins_l_listofmanagedaddins2_value", + "displayName": "Value", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_olappivottableuserdefinedfunctionudfsecuritysetting", + "displayName": "OLAP PivotTable User Defined Function (UDF) security setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles_l_excel3macrosheetsandaddinfilesdropid_0", - "displayName": "Do not block", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_olappivottableuserdefinedfunctionudfsecuritysetting_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles_l_excel3macrosheetsandaddinfilesdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_olappivottableuserdefinedfunctionudfsecuritysetting_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_olappivottableuserdefinedfunctionudfsecuritysetting_l_olappivottableuserdefinedfunctionudfsecuritysetting171", + "displayName": "OLAP PivotTable User Defined Function (UDF) security setting (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles_l_excel3macrosheetsandaddinfilesdropid_3", - "displayName": "Block", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_olappivottableuserdefinedfunctionudfsecuritysetting_l_olappivottableuserdefinedfunctionudfsecuritysetting171_1", + "displayName": "Allow ALL UDFs", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles_l_excel3macrosheetsandaddinfilesdropid_4", - "displayName": "Open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_olappivottableuserdefinedfunctionudfsecuritysetting_l_olappivottableuserdefinedfunctionudfsecuritysetting171_2", + "displayName": "Allow safe UDFs only", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3macrosheetsandaddinfiles_l_excel3macrosheetsandaddinfilesdropid_5", - "displayName": "Allow editing and open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_olappivottableuserdefinedfunctionudfsecuritysetting_l_olappivottableuserdefinedfunctionudfsecuritysetting171_3", + "displayName": "Allow NO UDFs", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets", - "displayName": "Excel 3 worksheets (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_personaltemplatespath", + "displayName": "Personal templates path for Excel (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets_0", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_personaltemplatespath_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets_1", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_personaltemplatespath_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets_l_excel3worksheetsdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_personaltemplatespath_l_personaltemplatespath", + "displayName": "Personal templates path (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168~l_serversettings_l_turnofffilesynchronizationviasoapoverhttp", + "displayName": "Turn off file synchronization via SOAP over HTTP (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets_l_excel3worksheetsdropid_0", - "displayName": "Do not block", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets_l_excel3worksheetsdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168~l_serversettings_l_turnofffilesynchronizationviasoapoverhttp_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets_l_excel3worksheetsdropid_3", - "displayName": "Block", + "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168~l_serversettings_l_turnofffilesynchronizationviasoapoverhttp_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_disableddeserverlaunch", + "displayName": "Donโ€™t allow Dynamic Data Exchange (DDE) server launch in Excel (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets_l_excel3worksheetsdropid_4", - "displayName": "Open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_disableddeserverlaunch_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel3worksheets_l_excel3worksheetsdropid_5", - "displayName": "Allow editing and open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_disableddeserverlaunch_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles", - "displayName": "Excel 4 macrosheets and add-in files (User)", + "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_disableddeserverlookup", + "displayName": "Donโ€™t allow Dynamic Data Exchange (DDE) server lookup in Excel (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles_0", + "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_disableddeserverlookup_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles_1", + "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_disableddeserverlookup_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles_l_excel4macrosheetsandaddinfilesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_enableblockunsecurequeryfiles", + "displayName": "Always prevent untrusted Microsoft Query files from opening (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles_l_excel4macrosheetsandaddinfilesdropid_0", - "displayName": "Do not block", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles_l_excel4macrosheetsandaddinfilesdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_enableblockunsecurequeryfiles_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles_l_excel4macrosheetsandaddinfilesdropid_3", - "displayName": "Block", + "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_enableblockunsecurequeryfiles_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_enabledatabasefileprotectedview", + "displayName": "Always open untrusted database files in Protected View (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles_l_excel4macrosheetsandaddinfilesdropid_4", - "displayName": "Open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_enabledatabasefileprotectedview_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4macrosheetsandaddinfiles_l_excel4macrosheetsandaddinfilesdropid_5", - "displayName": "Allow editing and open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_enabledatabasefileprotectedview_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks", - "displayName": "Excel 4 workbooks (User)", + "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_enableforeigntextfileprotectedview", + "displayName": "Always open untrusted text-based files in Protected View (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks_0", + "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_enableforeigntextfileprotectedview_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks_1", + "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_enableforeigntextfileprotectedview_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks_l_excel4workbooksdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_excel16v4~policy~l_microsoftofficeexcel~l_powerbi_l_disablefrompowerbidatasetorganizationname", + "displayName": "Disable displaying organization name in the buttons to create PivotTables from Power BI datasets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks_l_excel4workbooksdropid_0", - "displayName": "Do not block", + "id": "user_vendor_msft_policy_config_excel16v4~policy~l_microsoftofficeexcel~l_powerbi_l_disablefrompowerbidatasetorganizationname_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks_l_excel4workbooksdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_excel16v4~policy~l_microsoftofficeexcel~l_powerbi_l_disablefrompowerbidatasetorganizationname_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_excel16v5~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtablealttextaccessibilityinformation", + "displayName": "Stop checking for table alt text accessibility information (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks_l_excel4workbooksdropid_3", - "displayName": "Block", + "id": "user_vendor_msft_policy_config_excel16v5~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtablealttextaccessibilityinformation_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks_l_excel4workbooksdropid_4", - "displayName": "Open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v5~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtablealttextaccessibilityinformation_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "user_vendor_msft_policy_config_excel16v6~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_xl4killswitchpolicy", + "displayName": "Prevent Excel from running XLM macros (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_excel16v6~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_xl4killswitchpolicy_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4workbooks_l_excel4workbooksdropid_5", - "displayName": "Allow editing and open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v6~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_xl4killswitchpolicy_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets", - "displayName": "Excel 4 worksheets (User)", + "id": "user_vendor_msft_policy_config_excel16v7~policy~l_microsoftofficeexcel~l_miscellaneous168_l_exceldisableofficescripts", + "displayName": "Disable Office Scripts in Excel for Windows Desktop (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets_0", + "id": "user_vendor_msft_policy_config_excel16v7~policy~l_microsoftofficeexcel~l_miscellaneous168_l_exceldisableofficescripts_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets_1", + "id": "user_vendor_msft_policy_config_excel16v7~policy~l_microsoftofficeexcel~l_miscellaneous168_l_exceldisableofficescripts_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets_l_excel4worksheetsdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_excel16v8~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockxllfrominternet", + "displayName": "Block Excel XLL Add-ins that come from an untrusted source (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets_l_excel4worksheetsdropid_0", - "displayName": "Do not block", + "id": "user_vendor_msft_policy_config_excel16v8~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockxllfrominternet_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets_l_excel4worksheetsdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_excel16v8~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockxllfrominternet_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_excel16v8~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockxllfrominternet_l_blockxllfrominternetenum", + "displayName": "", + "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets_l_excel4worksheetsdropid_3", + "id": "user_vendor_msft_policy_config_excel16v8~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockxllfrominternet_l_blockxllfrominternetenum_1", "displayName": "Block", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets_l_excel4worksheetsdropid_4", - "displayName": "Open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v8~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockxllfrominternet_l_blockxllfrominternetenum_0", + "displayName": "Show Additional Warning", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel4worksheets_l_excel4worksheetsdropid_5", - "displayName": "Allow editing and open in Protected View", + "id": "user_vendor_msft_policy_config_excel16v8~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockxllfrominternet_l_blockxllfrominternetenum_2", + "displayName": "Allow", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates", - "displayName": "Excel 95-97 workbooks and templates (User)", + "id": "user_vendor_msft_policy_config_excel16v9~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excelfileblockexternallinks", + "displayName": "File Block includes external link files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates_0", + "id": "user_vendor_msft_policy_config_excel16v9~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excelfileblockexternallinks_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates_1", + "id": "user_vendor_msft_policy_config_excel16v9~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excelfileblockexternallinks_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates_l_excel9597workbooksandtemplatesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_experience_allowspotlightcollection", + "displayName": "Allow Spotlight Collection (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_experience_allowtailoredexperienceswithdiagnosticdata", + "displayName": "Allow Tailored Experiences With Diagnostic Data (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates_l_excel9597workbooksandtemplatesdropid_0", - "displayName": "Do not block", - "description": null + "id": "user_vendor_msft_policy_config_experience_allowtailoredexperienceswithdiagnosticdata_0", + "displayName": "Block", + "description": "Not allowed." }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates_l_excel9597workbooksandtemplatesdropid_2", - "displayName": "Open/Save blocked, use open policy", - "description": null - }, + "id": "user_vendor_msft_policy_config_experience_allowtailoredexperienceswithdiagnosticdata_1", + "displayName": "Allow", + "description": "Allowed." + } + ] + }, + { + "id": "user_vendor_msft_policy_config_experience_allowthirdpartysuggestionsinwindowsspotlight", + "displayName": "Allow Third Party Suggestions In Windows Spotlight (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates_l_excel9597workbooksandtemplatesdropid_3", + "id": "user_vendor_msft_policy_config_experience_allowthirdpartysuggestionsinwindowsspotlight_0", "displayName": "Block", - "description": null + "description": "Third-party suggestions not allowed." }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates_l_excel9597workbooksandtemplatesdropid_4", - "displayName": "Open in Protected View", - "description": null + "id": "user_vendor_msft_policy_config_experience_allowthirdpartysuggestionsinwindowsspotlight_1", + "displayName": "Allow", + "description": "Third-party suggestions allowed." + } + ] + }, + { + "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlight", + "displayName": "Allow Windows Spotlight (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlight_0", + "displayName": "Block", + "description": "Not allowed." }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel9597workbooksandtemplates_l_excel9597workbooksandtemplatesdropid_5", - "displayName": "Allow editing and open in Protected View", - "description": null + "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlight_1", + "displayName": "Allow", + "description": "Allowed." } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks", - "displayName": "Excel 95 workbooks (User)", + "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightonactioncenter", + "displayName": "Allow Windows Spotlight On Action Center (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_0", - "displayName": "Disabled", - "description": null + "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightonactioncenter_0", + "displayName": "Block", + "description": "Not allowed." }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_1", - "displayName": "Enabled", - "description": null + "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightonactioncenter_1", + "displayName": "Allow", + "description": "Allowed." } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_l_excel95workbooksdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightonsettings", + "displayName": "Allow Windows Spotlight On Settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_l_excel95workbooksdropid_0", - "displayName": "Do not block", - "description": null + "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightonsettings_0", + "displayName": "Block", + "description": "Not allowed." }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_l_excel95workbooksdropid_1", - "displayName": "Save blocked", - "description": null + "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightonsettings_1", + "displayName": "Allow", + "description": "Allowed." + } + ] + }, + { + "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightwindowswelcomeexperience", + "displayName": "Allow Windows Spotlight Windows Welcome Experience (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightwindowswelcomeexperience_0", + "displayName": "Block", + "description": "Not allowed." }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_l_excel95workbooksdropid_2", - "displayName": "Open/Save blocked, use open policy", - "description": null + "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightwindowswelcomeexperience_1", + "displayName": "Allow", + "description": "Allowed." + } + ] + }, + { + "id": "user_vendor_msft_policy_config_experience_configurewindowsspotlightonlockscreen", + "displayName": "Configure Windows Spotlight On Lock Screen (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_experience_configurewindowsspotlightonlockscreen_0", + "displayName": "Windows spotlight disabled.", + "description": "Windows spotlight disabled." }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_l_excel95workbooksdropid_3", - "displayName": "Block", - "description": null + "id": "user_vendor_msft_policy_config_experience_configurewindowsspotlightonlockscreen_1", + "displayName": "Windows spotlight enabled.", + "description": "Windows spotlight enabled." }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_l_excel95workbooksdropid_4", - "displayName": "Open in Protected View", - "description": null + "id": "user_vendor_msft_policy_config_experience_configurewindowsspotlightonlockscreen_2", + "displayName": "Windows spotlight is always enabled, the user cannot disable it", + "description": "Windows spotlight is always enabled, the user cannot disable it" }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel95workbooks_l_excel95workbooksdropid_5", - "displayName": "Allow editing and open in Protected View", - "description": null + "id": "user_vendor_msft_policy_config_experience_configurewindowsspotlightonlockscreen_3", + "displayName": "Windows spotlight is always enabled, the user cannot disable it. For special configurations only", + "description": "Windows spotlight is always enabled, the user cannot disable it. For special configurations only" } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003addinfiles", - "displayName": "Excel 97-2003 add-in files (User)", + "id": "user_vendor_msft_policy_config_experience_enableorganizationalmessages", + "displayName": "Enable delivery of organizational messages (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003addinfiles_0", + "id": "user_vendor_msft_policy_config_experience_enableorganizationalmessages_0", "displayName": "Disabled", - "description": null + "description": "Disabled" }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003addinfiles_1", + "id": "user_vendor_msft_policy_config_experience_enableorganizationalmessages_1", "displayName": "Enabled", - "description": null + "description": "Enabled" } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003addinfiles_l_excel972003addinfilesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_fileexplorer_allowoptiontoshownetwork", + "displayName": "Allow Option To Show Network (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003addinfiles_l_excel972003addinfilesdropid_0", - "displayName": "Do not block", - "description": null + "id": "user_vendor_msft_policy_config_fileexplorer_allowoptiontoshownetwork_0", + "displayName": "Not Allowed.", + "description": "Not Allowed." }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003addinfiles_l_excel972003addinfilesdropid_1", - "displayName": "Save blocked", - "description": null + "id": "user_vendor_msft_policy_config_fileexplorer_allowoptiontoshownetwork_1", + "displayName": "Allowed.", + "description": "Allowed." + } + ] + }, + { + "id": "user_vendor_msft_policy_config_fileexplorer_allowoptiontoshowthispc", + "displayName": "Allow Option To Show This PC (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_fileexplorer_allowoptiontoshowthispc_0", + "displayName": "Not Allowed.", + "description": "Not Allowed." }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003addinfiles_l_excel972003addinfilesdropid_2", - "displayName": "Open/Save blocked, use open policy", - "description": null + "id": "user_vendor_msft_policy_config_fileexplorer_allowoptiontoshowthispc_1", + "displayName": "Allowed.", + "description": "Allowed." } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates", - "displayName": "Excel 97-2003 workbooks and templates (User)", + "id": "user_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations", + "displayName": "Set Allowed Folder Locations (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_0", - "displayName": "Disabled", - "description": null + "id": "user_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_0", + "displayName": "Access to all folder locations.", + "description": "Access to all folder locations." }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_1", - "displayName": "Enabled", - "description": null + "id": "user_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_13", + "displayName": "Documents, Pictures, Downloads", + "description": "Documents, Pictures, Downloads" + }, + { + "id": "user_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_15", + "displayName": "Desktop, Documents, Pictures, Downloads", + "description": "Desktop, Documents, Pictures, Downloads" + }, + { + "id": "user_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_31", + "displayName": "Desktop, Documents, Pictures, Downloads, Network", + "description": "Desktop, Documents, Pictures, Downloads, Network" + }, + { + "id": "user_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_47", + "displayName": "This PC, Desktop, Documents, Pictures, Downloads", + "description": "This PC, Desktop, Documents, Pictures, Downloads" + }, + { + "id": "user_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_63", + "displayName": "This PC, Desktop, Documents, Pictures, Downloads, Network", + "description": "This PC, Desktop, Documents, Pictures, Downloads, Network" } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_l_excel972003workbooksandtemplatesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations", + "displayName": "Set Allowed Storage Locations (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_l_excel972003workbooksandtemplatesdropid_0", - "displayName": "Do not block", - "description": null + "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_0", + "displayName": "Access to all storage locations.", + "description": "Access to all storage locations." }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_l_excel972003workbooksandtemplatesdropid_1", - "displayName": "Save blocked", - "description": null + "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_1", + "displayName": "Removable Drives", + "description": "Removable Drives" }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_l_excel972003workbooksandtemplatesdropid_2", - "displayName": "Open/Save blocked, use open policy", - "description": null + "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_2", + "displayName": "Sync roots", + "description": "Sync roots" }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_l_excel972003workbooksandtemplatesdropid_3", - "displayName": "Block", - "description": null + "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_3", + "displayName": "Removable Drives, Sync roots", + "description": "Removable Drives, Sync roots" }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_l_excel972003workbooksandtemplatesdropid_4", - "displayName": "Open in Protected View", - "description": null + "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_4", + "displayName": "Local Drives", + "description": "Local Drives" }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_excel972003workbooksandtemplates_l_excel972003workbooksandtemplatesdropid_5", - "displayName": "Allow editing and open in Protected View", - "description": null + "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_5", + "displayName": "Removable Drives, Local Drives", + "description": "Removable Drives, Local Drives" + }, + { + "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_6", + "displayName": "Sync Roots, Local Drives", + "description": "Sync Roots, Local Drives" + }, + { + "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_7", + "displayName": "Removable Drives, Sync Roots, Local Drives", + "description": "Removable Drives, Sync Roots, Local Drives" } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_exceladdinfiles", - "displayName": "Excel add-in files (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_addsearchprovider", + "displayName": "Add a specific list of search providers to the user's list of search providers (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_exceladdinfiles_0", + "id": "user_vendor_msft_policy_config_internetexplorer_addsearchprovider_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_exceladdinfiles_1", + "id": "user_vendor_msft_policy_config_internetexplorer_addsearchprovider_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_exceladdinfiles_l_exceladdinfilesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowactivexfiltering", + "displayName": "Turn on ActiveX Filtering (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_exceladdinfiles_l_exceladdinfilesdropid_0", - "displayName": "Do not block", + "id": "user_vendor_msft_policy_config_internetexplorer_allowactivexfiltering_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_exceladdinfiles_l_exceladdinfilesdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_internetexplorer_allowactivexfiltering_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel", - "displayName": "Legacy converters for Excel (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowaddonlist", + "displayName": "Add-on List (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowaddonlist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowaddonlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel_l_legacyconvertersforexceldropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowaddonlist_addonlist", + "displayName": "Add-on List (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowaddonlist_addonlist_key", + "displayName": "Name", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowaddonlist_addonlist_value", + "displayName": "Value", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowautocomplete", + "displayName": "Turn on the auto-complete feature for user names and passwords on forms (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel_l_legacyconvertersforexceldropid_0", - "displayName": "Do not block", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel_l_legacyconvertersforexceldropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_internetexplorer_allowautocomplete_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel_l_legacyconvertersforexceldropid_3", - "displayName": "Block", + "id": "user_vendor_msft_policy_config_internetexplorer_allowautocomplete_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowautocomplete_chkbox_passwordask", + "displayName": "Prompt me to save passwords (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel_l_legacyconvertersforexceldropid_4", - "displayName": "Open in Protected View", + "id": "user_vendor_msft_policy_config_internetexplorer_allowautocomplete_chkbox_passwordask_0", + "displayName": "False", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_legacyconvertersforexcel_l_legacyconvertersforexceldropid_5", - "displayName": "Allow editing and open in Protected View", + "id": "user_vendor_msft_policy_config_internetexplorer_allowautocomplete_chkbox_passwordask_1", + "displayName": "True", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel", - "displayName": "Microsoft Office Open XML converters for Excel (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowcertificateaddressmismatchwarning", + "displayName": "Turn on certificate address mismatch warning (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowcertificateaddressmismatchwarning_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowcertificateaddressmismatchwarning_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_l_microsoftofficeopenxmlconvertersforexceldropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowdeletingbrowsinghistoryonexit", + "displayName": "Allow deleting browsing history on exit (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_l_microsoftofficeopenxmlconvertersforexceldropid_0", - "displayName": "Do not block", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_l_microsoftofficeopenxmlconvertersforexceldropid_1", - "displayName": "Save blocked", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_l_microsoftofficeopenxmlconvertersforexceldropid_2", - "displayName": "Open/Save blocked, use open policy", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_l_microsoftofficeopenxmlconvertersforexceldropid_3", - "displayName": "Block", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_l_microsoftofficeopenxmlconvertersforexceldropid_4", - "displayName": "Open in Protected View", + "id": "user_vendor_msft_policy_config_internetexplorer_allowdeletingbrowsinghistoryonexit_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficeopenxmlconvertersforexcel_l_microsoftofficeopenxmlconvertersforexceldropid_5", - "displayName": "Allow editing and open in Protected View", + "id": "user_vendor_msft_policy_config_internetexplorer_allowdeletingbrowsinghistoryonexit_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles", - "displayName": "Microsoft Office query files (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowenhancedprotectedmode", + "displayName": "Turn on Enhanced Protected Mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowenhancedprotectedmode_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowenhancedprotectedmode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_l_microsoftofficequeryfilesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowenhancedsuggestionsinaddressbar", + "displayName": "Allow Microsoft services to provide enhanced suggestions as the user types in the Address bar (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_l_microsoftofficequeryfilesdropid_0", - "displayName": "Do not block", + "id": "user_vendor_msft_policy_config_internetexplorer_allowenhancedsuggestionsinaddressbar_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_l_microsoftofficequeryfilesdropid_1", - "displayName": "Save blocked", + "id": "user_vendor_msft_policy_config_internetexplorer_allowenhancedsuggestionsinaddressbar_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowenterprisemodefromtoolsmenu", + "displayName": "Let users turn on and use Enterprise Mode from the Tools menu (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_l_microsoftofficequeryfilesdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_internetexplorer_allowenterprisemodefromtoolsmenu_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_l_microsoftofficequeryfilesdropid_3", - "displayName": "Block", + "id": "user_vendor_msft_policy_config_internetexplorer_allowenterprisemodefromtoolsmenu_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowenterprisemodefromtoolsmenu_enterreportbackprompt", + "displayName": "Type the location (URL) of where to receive reports about the websites for which users turn on and use Enterprise Mode (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowenterprisemodesitelist", + "displayName": "Use the Enterprise Mode IE website list (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_l_microsoftofficequeryfilesdropid_4", - "displayName": "Open in Protected View", + "id": "user_vendor_msft_policy_config_internetexplorer_allowenterprisemodesitelist_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_microsoftofficequeryfiles_l_microsoftofficequeryfilesdropid_5", - "displayName": "Allow editing and open in Protected View", + "id": "user_vendor_msft_policy_config_internetexplorer_allowenterprisemodesitelist_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_officedataconnectionfiles", - "displayName": "Microsoft Office data connection files (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowenterprisemodesitelist_entersitelistprompt", + "displayName": "Type the location (URL) of your Enterprise Mode IE website list (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetexplorer7policylist", + "displayName": "Use Policy List of Internet Explorer 7 sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_officedataconnectionfiles_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetexplorer7policylist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_officedataconnectionfiles_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetexplorer7policylist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_officedataconnectionfiles_l_officedataconnectionfilesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetexplorer7policylist_compatview_sitelist", + "displayName": "List of sites (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetexplorerstandardsmode", + "displayName": "Turn on Internet Explorer Standards Mode for local intranet (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_officedataconnectionfiles_l_officedataconnectionfilesdropid_0", - "displayName": "Do not block", + "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetexplorerstandardsmode_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_officedataconnectionfiles_l_officedataconnectionfilesdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetexplorerstandardsmode_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_offlinecubefiles", - "displayName": "Offline cube files (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate", + "displayName": "Internet Zone Template (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_offlinecubefiles_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_offlinecubefiles_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_offlinecubefiles_l_offlinecubefilesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate", + "displayName": "Internet (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_offlinecubefiles_l_offlinecubefilesdropid_0", - "displayName": "Do not block", + "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_1", + "displayName": "Low", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_offlinecubefiles_l_offlinecubefilesdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_2", + "displayName": "Medium Low", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_3", + "displayName": "Medium", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_5", + "displayName": "Medium High", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles", - "displayName": "OpenDocument Spreadsheet files (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate", + "displayName": "Intranet Zone Template (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_l_opendocumentspreadsheetfilesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate", + "displayName": "Intranet (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_l_opendocumentspreadsheetfilesdropid_0", - "displayName": "Do not block", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_l_opendocumentspreadsheetfilesdropid_1", - "displayName": "Save blocked", + "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_1", + "displayName": "Low", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_l_opendocumentspreadsheetfilesdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_2", + "displayName": "Medium Low", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_l_opendocumentspreadsheetfilesdropid_3", - "displayName": "Block", + "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_3", + "displayName": "Medium", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_l_opendocumentspreadsheetfilesdropid_4", - "displayName": "Open in Protected View", + "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_5", + "displayName": "Medium High", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_opendocumentspreadsheetfiles_l_opendocumentspreadsheetfilesdropid_5", - "displayName": "Allow editing and open in Protected View", + "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_otherdatasourcefiles", - "displayName": "Other data source files (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate", + "displayName": "Local Machine Zone Template (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_otherdatasourcefiles_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_otherdatasourcefiles_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_otherdatasourcefiles_l_otherdatasourcefilesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate", + "displayName": "Local Machine Zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_otherdatasourcefiles_l_otherdatasourcefilesdropid_0", - "displayName": "Do not block", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_1", + "displayName": "Low", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_otherdatasourcefiles_l_otherdatasourcefilesdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_2", + "displayName": "Medium Low", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_3", + "displayName": "Medium", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_5", + "displayName": "Medium High", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_setdefaultfileblockbehavior", - "displayName": "Set default file block behavior (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate", + "displayName": "Locked-Down Internet Zone Template (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_setdefaultfileblockbehavior_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_setdefaultfileblockbehavior_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_setdefaultfileblockbehavior_l_setdefaultfileblockbehaviordropid", - "displayName": "", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate", + "displayName": "Locked-Down Internet (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_setdefaultfileblockbehavior_l_setdefaultfileblockbehaviordropid_0", - "displayName": "Blocked files are not opened", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_1", + "displayName": "Low", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_setdefaultfileblockbehavior_l_setdefaultfileblockbehaviordropid_1", - "displayName": "Blocked files open in Protected View and can not be edited", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_2", + "displayName": "Medium Low", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_setdefaultfileblockbehavior_l_setdefaultfileblockbehaviordropid_2", - "displayName": "Blocked files open in Protected View and can be edited", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_3", + "displayName": "Medium", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_5", + "displayName": "Medium High", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_textfiles", - "displayName": "Text files (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate", + "displayName": "Locked-Down Intranet Zone Template (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_textfiles_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_textfiles_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_textfiles_l_textfilesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate", + "displayName": "Locked-Down Intranet (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_textfiles_l_textfilesdropid_0", - "displayName": "Do not block", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_1", + "displayName": "Low", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_textfiles_l_textfilesdropid_1", - "displayName": "Save blocked", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_2", + "displayName": "Medium Low", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_textfiles_l_textfilesdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_3", + "displayName": "Medium", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_5", + "displayName": "Medium High", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets", - "displayName": "Web pages and Excel 2003 XML spreadsheets (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate", + "displayName": "Locked-Down Local Machine Zone Template (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_l_webpagesandexcel2003xmlspreadsheetsdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate", + "displayName": "Locked-Down Local Machine Zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_l_webpagesandexcel2003xmlspreadsheetsdropid_0", - "displayName": "Do not block", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_l_webpagesandexcel2003xmlspreadsheetsdropid_1", - "displayName": "Save blocked", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_1", + "displayName": "Low", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_l_webpagesandexcel2003xmlspreadsheetsdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_2", + "displayName": "Medium Low", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_l_webpagesandexcel2003xmlspreadsheetsdropid_3", - "displayName": "Block", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_3", + "displayName": "Medium", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_l_webpagesandexcel2003xmlspreadsheetsdropid_4", - "displayName": "Open in Protected View", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_5", + "displayName": "Medium High", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_webpagesandexcel2003xmlspreadsheets_l_webpagesandexcel2003xmlspreadsheetsdropid_5", - "displayName": "Allow editing and open in Protected View", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_xmlfiles", - "displayName": "XML files (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate", + "displayName": "Locked-Down Restricted Sites Zone Template (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_xmlfiles_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_xmlfiles_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_xmlfiles_l_xmlfilesdropid", - "displayName": "File block setting: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate", + "displayName": "Locked-Down Restricted Sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_xmlfiles_l_xmlfilesdropid_0", - "displayName": "Do not block", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_1", + "displayName": "Low", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_xmlfiles_l_xmlfilesdropid_1", - "displayName": "Save blocked", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_2", + "displayName": "Medium Low", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_fileblocksettings_l_xmlfiles_l_xmlfilesdropid_2", - "displayName": "Open/Save blocked, use open policy", + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_3", + "displayName": "Medium", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_5", + "displayName": "Medium High", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_donotopenfilesfromtheinternetzoneinprotectedview", - "displayName": "Do not open files from the Internet zone in Protected View (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowonewordentry", + "displayName": "Go to an intranet site for a one-word entry in the Address bar (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_donotopenfilesfromtheinternetzoneinprotectedview_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowonewordentry_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_donotopenfilesfromtheinternetzoneinprotectedview_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowonewordentry_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_donotopenfilesinunsafelocationsinprotectedview", - "displayName": "Do not open files in unsafe locations in Protected View (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsavetargetasiniemode", + "displayName": "Allow \"Save Target As\" in Internet Explorer mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_donotopenfilesinunsafelocationsinprotectedview_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsavetargetasiniemode_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_donotopenfilesinunsafelocationsinprotectedview_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsavetargetasiniemode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_openfilesonlocalintranetuncinprotectedview", - "displayName": "Open files on local Intranet UNC in Protected View (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist", + "displayName": "Site to Zone Assignment List (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_openfilesonlocalintranetuncinprotectedview_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_openfilesonlocalintranetuncinprotectedview_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails", - "displayName": "Set document behavior if file validation fails (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_iz_zonemapprompt", + "displayName": "Enter the zone assignments here. (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_iz_zonemapprompt_key", + "displayName": "Name", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_iz_zonemapprompt_value", + "displayName": "Value", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate", + "displayName": "Locked-Down Trusted Sites Zone Template (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails_l_setdocumentbehavioriffilevalidationfailsdropid", - "displayName": "", + "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate", + "displayName": "Locked-Down Trusted Sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails_l_setdocumentbehavioriffilevalidationfailsdropid_0", - "displayName": "Block files", + "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_1", + "displayName": "Low", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails_l_setdocumentbehavioriffilevalidationfailsdropid_1", - "displayName": "Open in Protected View", + "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_2", + "displayName": "Medium Low", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails_l_setdocumentbehavioriffilevalidationfailsstr3", - "displayName": "Checked: Allow edit. Unchecked: Do not allow edit. (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails_l_setdocumentbehavioriffilevalidationfailsstr3_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_3", + "displayName": "Medium", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_setdocumentbehavioriffilevalidationfails_l_setdocumentbehavioriffilevalidationfailsstr3_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_5", + "displayName": "Medium High", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_turnoffprotectedviewforattachmentsopenedfromoutlook", - "displayName": "Turn off Protected View for attachments opened from Outlook (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsoftwarewhensignatureisinvalid", + "displayName": "Allow software to run or install even if the signature is invalid (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_turnoffprotectedviewforattachmentsopenedfromoutlook_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsoftwarewhensignatureisinvalid_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_turnoffprotectedviewforattachmentsopenedfromoutlook_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsoftwarewhensignatureisinvalid_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_allowtrustedlocationsonthenetwork", - "displayName": "Allow Trusted Locations on the network (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate", + "displayName": "Restricted Sites Zone Template (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_allowtrustedlocationsonthenetwork_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_allowtrustedlocationsonthenetwork_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_disabletrustedloc", - "displayName": "Disable all trusted locations (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate", + "displayName": "Restricted Sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_disabletrustedloc_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_1", + "displayName": "Low", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_disabletrustedloc_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_2", + "displayName": "Medium Low", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01", - "displayName": "Trusted Location #1 (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_3", + "displayName": "Medium", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_5", + "displayName": "Medium High", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01_l_allowsubfolders", - "displayName": "Allow sub folders: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsuggestedsites", + "displayName": "Turn on Suggested Sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01_l_allowsubfolders_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsuggestedsites_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01_l_allowsubfolders_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_allowsuggestedsites_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01_l_datecolon", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01_l_descriptioncolon", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc01_l_pathcolon", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02", - "displayName": "Trusted Location #2 (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate", + "displayName": "Trusted Sites Zone Template (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02_0", + "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02_1", + "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02_l_allowsubfolders8", - "displayName": "Allow sub folders: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate", + "displayName": "Trusted Sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02_l_allowsubfolders8_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_1", + "displayName": "Low", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02_l_allowsubfolders8_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_2", + "displayName": "Medium Low", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02_l_datecolon6", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02_l_descriptioncolon7", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc02_l_pathcolon5", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03", - "displayName": "Trusted Location #3 (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_3", + "displayName": "Medium", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_5", + "displayName": "Medium High", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_4", + "displayName": "High", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03_l_allowsubfolders12", - "displayName": "Allow sub folders: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_autodetectintranet", + "displayName": "Turn on automatic detection of intranet (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03_l_allowsubfolders12_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_autodetectintranet_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03_l_allowsubfolders12_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_autodetectintranet_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03_l_datecolon10", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03_l_descriptioncolon11", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc03_l_pathcolon9", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04", - "displayName": "Trusted Location #4 (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_checkservercertificaterevocation", + "displayName": "Check for server certificate revocation (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04_0", + "id": "user_vendor_msft_policy_config_internetexplorer_checkservercertificaterevocation_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04_1", + "id": "user_vendor_msft_policy_config_internetexplorer_checkservercertificaterevocation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04_l_allowsubfolders16", - "displayName": "Allow sub folders: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_checksignaturesondownloadedprograms", + "displayName": "Check for signatures on downloaded programs (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04_l_allowsubfolders16_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_checksignaturesondownloadedprograms_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04_l_allowsubfolders16_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_checksignaturesondownloadedprograms_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04_l_datecolon14", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04_l_descriptioncolon15", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc04_l_pathcolon13", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05", - "displayName": "Trusted Location #5 (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel", + "displayName": "Configure which channel of Microsoft Edge to use for opening redirected sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05_0", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05_1", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05_l_allowsubfolders20", - "displayName": "Allow sub folders: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser", + "displayName": "First choice (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05_l_allowsubfolders20_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_", + "displayName": "", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05_l_allowsubfolders20_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_1", + "displayName": "Microsoft Edge Stable", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05_l_datecolon18", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05_l_descriptioncolon19", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc05_l_pathcolon17", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06", - "displayName": "Trusted Location #6 (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_2", + "displayName": "Microsoft Edge Beta version 77 or later", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_3", + "displayName": "Microsoft Edge Dev version 77 or later", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06_l_allowsubfolders24", - "displayName": "Allow sub folders: (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06_l_allowsubfolders24_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_4", + "displayName": "Microsoft Edge Canary version 77 or later", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06_l_allowsubfolders24_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_0", + "displayName": "Microsoft Edge version 45 or earlier", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06_l_datecolon22", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06_l_descriptioncolon23", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc06_l_pathcolon21", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07", - "displayName": "Trusted Location #7 (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2", + "displayName": "Second choice (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_", + "displayName": "", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_1", + "displayName": "Microsoft Edge Stable", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07_l_allowsubfolders28", - "displayName": "Allow sub folders: (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07_l_allowsubfolders28_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_2", + "displayName": "Microsoft Edge Beta version 77 or later", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07_l_allowsubfolders28_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_3", + "displayName": "Microsoft Edge Dev version 77 or later", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07_l_datecolon26", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07_l_descriptioncolon27", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc07_l_pathcolon25", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08", - "displayName": "Trusted Location #8 (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_4", + "displayName": "Microsoft Edge Canary version 77 or later", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_0", + "displayName": "Microsoft Edge version 45 or earlier", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08_l_allowsubfolders32", - "displayName": "Allow sub folders: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3", + "displayName": "Third choice (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08_l_allowsubfolders32_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_", + "displayName": "", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08_l_allowsubfolders32_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_1", + "displayName": "Microsoft Edge Stable", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08_l_datecolon30", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08_l_descriptioncolon31", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc08_l_pathcolon29", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09", - "displayName": "Trusted Location #9 (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_2", + "displayName": "Microsoft Edge Beta version 77 or later", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_3", + "displayName": "Microsoft Edge Dev version 77 or later", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_4", + "displayName": "Microsoft Edge Canary version 77 or later", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_0", + "displayName": "Microsoft Edge version 45 or earlier", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09_l_allowsubfolders36", - "displayName": "Allow sub folders: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_consistentmimehandlinginternetexplorerprocesses", + "displayName": "Internet Explorer Processes (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09_l_allowsubfolders36_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_consistentmimehandlinginternetexplorerprocesses_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09_l_allowsubfolders36_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_consistentmimehandlinginternetexplorerprocesses_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09_l_datecolon34", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09_l_descriptioncolon35", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc09_l_pathcolon33", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10", - "displayName": "Trusted Location #10 (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disableactivexversionlistautodownload", + "displayName": "Turn off automatic download of the ActiveX VersionList (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disableactivexversionlistautodownload_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disableactivexversionlistautodownload_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10_l_allowsubfolders40", - "displayName": "Allow sub folders: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disableadobeflash", + "displayName": "Turn off Adobe Flash in Internet Explorer and prevent applications from using Internet Explorer technology to instantiate Flash objects (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10_l_allowsubfolders40_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_disableadobeflash_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10_l_allowsubfolders40_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_disableadobeflash_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10_l_datecolon38", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10_l_descriptioncolon39", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc10_l_pathcolon37", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11", - "displayName": "Trusted Location #11 (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarnings", + "displayName": "Prevent bypassing SmartScreen Filter warnings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarnings_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarnings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11_l_allowsubfolders44", - "displayName": "Allow sub folders: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarningsaboutuncommonfiles", + "displayName": "Prevent bypassing SmartScreen Filter warnings about files that are not commonly downloaded from the Internet (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11_l_allowsubfolders44_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarningsaboutuncommonfiles_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11_l_allowsubfolders44_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarningsaboutuncommonfiles_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11_l_datecolon42", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11_l_descriptioncolon43", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc11_l_pathcolon41", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12", - "displayName": "Trusted Location #12 (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disablecompatview", + "displayName": "Turn off Compatibility View (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disablecompatview_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disablecompatview_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12_l_allowsubfolders48", - "displayName": "Allow sub folders: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disableconfiguringhistory", + "displayName": "Disable \"Configuring History\" (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12_l_allowsubfolders48_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_disableconfiguringhistory_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12_l_allowsubfolders48_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_disableconfiguringhistory_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12_l_datecolon46", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12_l_descriptioncolon47", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc12_l_pathcolon45", - "displayName": "Path: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disableconfiguringhistory_daystokeep_prompt", + "displayName": "Days to keep pages in History (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13", - "displayName": "Trusted Location #13 (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disablecrashdetection", + "displayName": "Turn off Crash Detection (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disablecrashdetection_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disablecrashdetection_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13_l_allowsubfolders52", - "displayName": "Allow sub folders: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disablecustomerexperienceimprovementprogramparticipation", + "displayName": "Prevent participation in the Customer Experience Improvement Program (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13_l_allowsubfolders52_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_disablecustomerexperienceimprovementprogramparticipation_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13_l_allowsubfolders52_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_disablecustomerexperienceimprovementprogramparticipation_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13_l_datecolon50", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13_l_descriptioncolon51", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc13_l_pathcolon49", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14", - "displayName": "Trusted Location #14 (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disabledeletinguservisitedwebsites", + "displayName": "Prevent deleting websites that the user has visited (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disabledeletinguservisitedwebsites_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disabledeletinguservisitedwebsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14_l_allowsubfolders56", - "displayName": "Allow sub folders: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disableenclosuredownloading", + "displayName": "Prevent downloading of enclosures (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14_l_allowsubfolders56_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_disableenclosuredownloading_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14_l_allowsubfolders56_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_disableenclosuredownloading_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14_l_datecolon54", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14_l_descriptioncolon55", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc14_l_pathcolon53", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15", - "displayName": "Trusted Location #15 (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport", + "displayName": "Turn off encryption support (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15_l_allowsubfolders60", - "displayName": "Allow sub folders: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions", + "displayName": "Secure Protocol combinations (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15_l_allowsubfolders60_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_0", + "displayName": "Use no secure protocols", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15_l_allowsubfolders60_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_8", + "displayName": "[Obsolete] Only use SSL 2.0", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15_l_datecolon58", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15_l_descriptioncolon59", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc15_l_pathcolon57", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16", - "displayName": "Trusted Location #16 (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_32", + "displayName": "Only use SSL 3.0", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_40", + "displayName": "[Obsolete] Use SSL 2.0 and SSL 3.0", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16_l_allowsubfolders64", - "displayName": "Allow sub folders: (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16_l_allowsubfolders64_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_128", + "displayName": "Only use TLS 1.0", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16_l_allowsubfolders64_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_136", + "displayName": "[Obsolete] Use SSL 2.0 and TLS 1.0", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16_l_datecolon62", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16_l_descriptioncolon63", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc16_l_pathcolon61", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17", - "displayName": "Trusted Location #17 (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_160", + "displayName": "Use SSL 3.0 and TLS 1.0", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_168", + "displayName": "[Obsolete] Use SSL 2.0, SSL 3.0, and TLS 1.0", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17_l_allowsubfolders68", - "displayName": "Allow sub folders: (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17_l_allowsubfolders68_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_512", + "displayName": "Only use TLS 1.1", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17_l_allowsubfolders68_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_520", + "displayName": "[Obsolete] Use SSL 2.0 and TLS 1.1", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_544", + "displayName": "Use SSL 3.0 and TLS 1.1", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_552", + "displayName": "[Obsolete] Use SSL 2.0, SSL 3.0, and TLS 1.1", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_640", + "displayName": "Use TLS 1.0 and TLS 1.1", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_648", + "displayName": "[Obsolete] Use SSL 2.0, TLS 1.0, and TLS 1.1", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_672", + "displayName": "Use SSL 3.0, TLS 1.0, and TLS 1.1", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_680", + "displayName": "[Obsolete] Use SSL 2.0, SSL 3.0, TLS 1.0, and TLS 1.1", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2048", + "displayName": "Only use TLS 1.2", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2056", + "displayName": "[Obsolete] Use SSL 2.0 and TLS 1.2", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2080", + "displayName": "Use SSL 3.0 and TLS 1.2", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2088", + "displayName": "[Obsolete] Use SSL 2.0, SSL 3.0, and TLS 1.2", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2176", + "displayName": "Use TLS 1.0 and TLS 1.2", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2184", + "displayName": "[Obsolete] Use SSL 2.0, TLS 1.0, and TLS 1.2", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2208", + "displayName": "Use SSL 3.0, TLS 1.0, and TLS 1.2", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2216", + "displayName": "[Obsolete] Use SSL 2.0, SSL 3.0, TLS 1.0, and TLS 1.2", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2560", + "displayName": "Use TLS 1.1 and TLS 1.2", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2568", + "displayName": "[Obsolete] Use SSL 2.0, TLS 1.1, and TLS 1.2", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2592", + "displayName": "Use SSL 3.0, TLS 1.1, and TLS 1.2", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2600", + "displayName": "[Obsolete] Use SSL 2.0, SSL 3.0, TLS 1.1, and TLS 1.2", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2688", + "displayName": "Use TLS 1.0, TLS 1.1, and TLS 1.2", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2696", + "displayName": "[Obsolete] Use SSL 2.0, TLS 1.0, TLS 1.1, and TLS 1.2", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2720", + "displayName": "Use SSL 3.0, TLS 1.0, TLS 1.1, and TLS 1.2", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2728", + "displayName": "[Obsolete] Use SSL 2.0, SSL 3.0, TLS 1.0, TLS 1.1, and TLS 1.2", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_8192", + "displayName": "Only use TLS 1.3", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_10240", + "displayName": "Use TLS 1.2 and TLS 1.3", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_10752", + "displayName": "Use TLS 1.1, TLS 1.2, and TLS 1.3", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_10880", + "displayName": "Use TLS 1.0, TLS 1.1, TLS 1.2, and TLS 1.3", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_10912", + "displayName": "Use SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2, and TLS 1.3", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17_l_datecolon66", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17_l_descriptioncolon67", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc17_l_pathcolon65", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18", - "displayName": "Trusted Location #18 (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disablefeedsbackgroundsync", + "displayName": "Turn off background synchronization for feeds and Web Slices (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disablefeedsbackgroundsync_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disablefeedsbackgroundsync_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18_l_allowsubfolders72", - "displayName": "Allow sub folders: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard", + "displayName": "Prevent running First Run wizard (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18_l_allowsubfolders72_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18_l_allowsubfolders72_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18_l_datecolon70", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18_l_descriptioncolon71", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc18_l_pathcolon69", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19", - "displayName": "Trusted Location #19 (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_firstrunoptions", + "displayName": "Select your choice (User)", "options": [ - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19_0", - "displayName": "Disabled", + { + "id": "user_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_firstrunoptions_1", + "displayName": "Go directly to home page", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_firstrunoptions_2", + "displayName": "Go directly to \"Welcome To IE\" page", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19_l_allowsubfolders76", - "displayName": "Allow sub folders: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disableflipaheadfeature", + "displayName": "Turn off the flip ahead with page prediction feature (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19_l_allowsubfolders76_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_disableflipaheadfeature_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19_l_allowsubfolders76_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_disableflipaheadfeature_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19_l_datecolon74", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19_l_descriptioncolon75", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc19_l_pathcolon73", - "displayName": "Path: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20", - "displayName": "Trusted Location #20 (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disablegeolocation", + "displayName": "Turn off browser geolocation (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disablegeolocation_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disablegeolocation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20_l_allowsubfolders80", - "displayName": "Allow sub folders: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disablehomepagechange", + "displayName": "Disable changing home page settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20_l_allowsubfolders80_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_disablehomepagechange_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20_l_allowsubfolders80_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_disablehomepagechange_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20_l_datecolon78", - "displayName": "Date: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20_l_descriptioncolon79", - "displayName": "Description: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_trustedlocations_l_trustedloc20_l_pathcolon77", - "displayName": "Path: (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disablehomepagechange_enterhomepageprompt", + "displayName": "Home Page (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_backgroundaccessibilitycheckerinformation", - "displayName": "Check for accessibility issues while editing (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disablehtmlapplication", + "displayName": "Disable HTML Application (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_backgroundaccessibilitycheckerinformation_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disablehtmlapplication_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_backgroundaccessibilitycheckerinformation_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disablehtmlapplication_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingalttextaccessibilityinformation", - "displayName": "Stop checking for alt text accessibility information (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disableignoringcertificateerrors", + "displayName": "Prevent ignoring certificate errors (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingalttextaccessibilityinformation_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disableignoringcertificateerrors_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingalttextaccessibilityinformation_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disableignoringcertificateerrors_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingforblanktablerowsusedasformatting", - "displayName": "Stop checking for blank table rows used as formatting (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disableinprivatebrowsing", + "displayName": "Turn off InPrivate Browsing (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingforblanktablerowsusedasformatting_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disableinprivatebrowsing_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingforblanktablerowsusedasformatting_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disableinprivatebrowsing_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingformergedcells", - "displayName": "Stop checking for merged cells (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp", + "displayName": "[Deprecated] Disable Internet Explorer 11 as a standalone browser (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingformergedcells_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingformergedcells_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtableheaderaccessibilityinformation", - "displayName": "Stop checking for table header accessibility information (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2", + "displayName": "Disable Internet Explorer 11 as a standalone browser (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtableheaderaccessibilityinformation_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtableheaderaccessibilityinformation_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensurehyperlinktextismeaningful", - "displayName": "Stop checking to ensure hyperlink text is meaningful (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_notifydisableieoptions", + "displayName": "Notify that Internet Explorer 11 browser is disabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensurehyperlinktextismeaningful_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_notifydisableieoptions_0", + "displayName": "Never", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensurehyperlinktextismeaningful_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_notifydisableieoptions_1", + "displayName": "Always", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_notifydisableieoptions_2", + "displayName": "Once per user", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensurenondefaultsheetnames", - "displayName": "Stop checking to ensure non-default sheet names (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerlaunchviacom", + "displayName": "Disable Internet Explorer 11 Launch Via COM Automation (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensurenondefaultsheetnames_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerlaunchviacom_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensurenondefaultsheetnames_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerlaunchviacom_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensureworkbooksallowprogrammaticaccess", - "displayName": "Stop checking to ensure workbooks allow programmatic access (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disableprocessesinenhancedprotectedmode", + "displayName": "Turn on 64-bit tab processes when running in Enhanced Protected Mode on 64-bit versions of Windows (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensureworkbooksallowprogrammaticaccess_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disableprocessesinenhancedprotectedmode_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtoensureworkbooksallowprogrammaticaccess_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disableprocessesinenhancedprotectedmode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_intelligentservices_l_insights", - "displayName": "Remove Ideas button from the Ribbon (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disableproxychange", + "displayName": "Prevent changing proxy settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_intelligentservices_l_insights_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disableproxychange_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_intelligentservices_l_insights_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disableproxychange_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_blockallunmanagedaddins", - "displayName": "Block all unmanaged add-ins (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disablesearchproviderchange", + "displayName": "Prevent changing the default search provider (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_blockallunmanagedaddins_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disablesearchproviderchange_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_blockallunmanagedaddins_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disablesearchproviderchange_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_defaultcustomtab", - "displayName": "Show custom templates tab by default in Excel on the Office Start screen and in File | New (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disablesecondaryhomepagechange", + "displayName": "Disable changing secondary home page settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_defaultcustomtab_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disablesecondaryhomepagechange_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_defaultcustomtab_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disablesecondaryhomepagechange_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_disableofficestartexcel", - "displayName": "Disable the Office Start screen for Excel (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disablesecondaryhomepagechange_secondaryhomepageslist", + "displayName": "Secondary home pages (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_disablesecuritysettingscheck", + "displayName": "Turn off the Security Settings Check feature (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_disableofficestartexcel_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disablesecuritysettingscheck_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_disableofficestartexcel_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disablesecuritysettingscheck_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_donotcachenetworkfileslocally", - "displayName": "Do not cache network files locally (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_disablewebaddressautocomplete", + "displayName": "Turn off the auto-complete feature for web addresses (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_donotcachenetworkfileslocally_0", + "id": "user_vendor_msft_policy_config_internetexplorer_disablewebaddressautocomplete_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_donotcachenetworkfileslocally_1", + "id": "user_vendor_msft_policy_config_internetexplorer_disablewebaddressautocomplete_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_enablefourdigityeardisplay", - "displayName": "Enable four-digit year display (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_donotallowactivexcontrolsinprotectedmode", + "displayName": "Do not allow ActiveX controls to run in Protected Mode when Enhanced Protected Mode is enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_enablefourdigityeardisplay_0", + "id": "user_vendor_msft_policy_config_internetexplorer_donotallowactivexcontrolsinprotectedmode_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_enablefourdigityeardisplay_1", + "id": "user_vendor_msft_policy_config_internetexplorer_donotallowactivexcontrolsinprotectedmode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_graphgallerypath", - "displayName": "Graph gallery path (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrols", + "displayName": "Turn off blocking of outdated ActiveX controls for Internet Explorer (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_graphgallerypath_0", + "id": "user_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_graphgallerypath_1", + "id": "user_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_graphgallerypath_l_graphgallerypath169", - "displayName": "Graph gallery path (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_listofmanagedaddins", - "displayName": "List of managed add-ins (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrolsonspecificdomains", + "displayName": "Turn off blocking of outdated ActiveX controls for Internet Explorer on specific domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_listofmanagedaddins_0", + "id": "user_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrolsonspecificdomains_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_listofmanagedaddins_1", + "id": "user_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrolsonspecificdomains_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_listofmanagedaddins_l_listofmanagedaddins2", - "displayName": "List of managed add-ins (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_listofmanagedaddins_l_listofmanagedaddins2_key", - "displayName": "Name", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_listofmanagedaddins_l_listofmanagedaddins2_value", - "displayName": "Value", + "id": "user_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrolsonspecificdomains_domainlist", + "displayName": "Domain allow list (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_olappivottableuserdefinedfunctionudfsecuritysetting", - "displayName": "OLAP PivotTable User Defined Function (UDF) security setting (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_enableextendediemodehotkeys", + "displayName": "Enable extended hot keys in Internet Explorer mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_olappivottableuserdefinedfunctionudfsecuritysetting_0", + "id": "user_vendor_msft_policy_config_internetexplorer_enableextendediemodehotkeys_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_olappivottableuserdefinedfunctionudfsecuritysetting_1", + "id": "user_vendor_msft_policy_config_internetexplorer_enableextendediemodehotkeys_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_olappivottableuserdefinedfunctionudfsecuritysetting_l_olappivottableuserdefinedfunctionudfsecuritysetting171", - "displayName": "OLAP PivotTable User Defined Function (UDF) security setting (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_enableglobalwindowlistiniemode", + "displayName": "Enable global window list in Internet Explorer mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_olappivottableuserdefinedfunctionudfsecuritysetting_l_olappivottableuserdefinedfunctionudfsecuritysetting171_1", - "displayName": "Allow ALL UDFs", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_olappivottableuserdefinedfunctionudfsecuritysetting_l_olappivottableuserdefinedfunctionudfsecuritysetting171_2", - "displayName": "Allow safe UDFs only", + "id": "user_vendor_msft_policy_config_internetexplorer_enableglobalwindowlistiniemode_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_olappivottableuserdefinedfunctionudfsecuritysetting_l_olappivottableuserdefinedfunctionudfsecuritysetting171_3", - "displayName": "Allow NO UDFs", + "id": "user_vendor_msft_policy_config_internetexplorer_enableglobalwindowlistiniemode_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_personaltemplatespath", - "displayName": "Personal templates path for Excel (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_includealllocalsites", + "displayName": "Intranet Sites: Include all local (intranet) sites not listed in other zones (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_personaltemplatespath_0", + "id": "user_vendor_msft_policy_config_internetexplorer_includealllocalsites_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_personaltemplatespath_1", + "id": "user_vendor_msft_policy_config_internetexplorer_includealllocalsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168_l_personaltemplatespath_l_personaltemplatespath", - "displayName": "Personal templates path (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168~l_serversettings_l_turnofffilesynchronizationviasoapoverhttp", - "displayName": "Turn off file synchronization via SOAP over HTTP (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_includeallnetworkpaths", + "displayName": "Intranet Sites: Include all network paths (UNCs) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168~l_serversettings_l_turnofffilesynchronizationviasoapoverhttp_0", + "id": "user_vendor_msft_policy_config_internetexplorer_includeallnetworkpaths_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v2~policy~l_microsoftofficeexcel~l_miscellaneous168~l_serversettings_l_turnofffilesynchronizationviasoapoverhttp_1", + "id": "user_vendor_msft_policy_config_internetexplorer_includeallnetworkpaths_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_disableddeserverlaunch", - "displayName": "Donโ€™t allow Dynamic Data Exchange (DDE) server launch in Excel (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_includeallproxybypasssites", + "displayName": "Intranet Sites: Include all sites that bypass the proxy server (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_disableddeserverlaunch_0", + "id": "user_vendor_msft_policy_config_internetexplorer_includeallproxybypasssites_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_disableddeserverlaunch_1", + "id": "user_vendor_msft_policy_config_internetexplorer_includeallproxybypasssites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_disableddeserverlookup", - "displayName": "Donโ€™t allow Dynamic Data Exchange (DDE) server lookup in Excel (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources", + "displayName": "Access data sources across domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_disableddeserverlookup_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_disableddeserverlookup_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_enableblockunsecurequeryfiles", - "displayName": "Always prevent untrusted Microsoft Query files from opening (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_iz_partname1406", + "displayName": "Access data sources across domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_enableblockunsecurequeryfiles_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_iz_partname1406_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_externalcontent_l_enableblockunsecurequeryfiles_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_iz_partname1406_3", + "displayName": "Disable", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_iz_partname1406_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_enabledatabasefileprotectedview", - "displayName": "Always open untrusted database files in Protected View (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols", + "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_enabledatabasefileprotectedview_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_enabledatabasefileprotectedview_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_enableforeigntextfileprotectedview", - "displayName": "Always open untrusted text-based files in Protected View (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_enableforeigntextfileprotectedview_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v3~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter~l_protectedview_l_enableforeigntextfileprotectedview_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v4~policy~l_microsoftofficeexcel~l_powerbi_l_disablefrompowerbidatasetorganizationname", - "displayName": "Disable displaying organization name in the buttons to create PivotTables from Power BI datasets (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads", + "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v4~policy~l_microsoftofficeexcel~l_powerbi_l_disablefrompowerbidatasetorganizationname_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v4~policy~l_microsoftofficeexcel~l_powerbi_l_disablefrompowerbidatasetorganizationname_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v5~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtablealttextaccessibilityinformation", - "displayName": "Stop checking for table alt text accessibility information (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v5~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtablealttextaccessibilityinformation_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v5~policy~l_microsoftofficeexcel~l_filetab~l_checkaccessibility_l_stopcheckingtablealttextaccessibilityinformation_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v6~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_xl4killswitchpolicy", - "displayName": "Prevent Excel from running XLM macros (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript", + "displayName": "Allow cut, copy or paste operations from the clipboard via script (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v6~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_xl4killswitchpolicy_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v6~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_xl4killswitchpolicy_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v7~policy~l_microsoftofficeexcel~l_miscellaneous168_l_exceldisableofficescripts", - "displayName": "Disable Office Scripts in Excel for Windows Desktop (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_iz_partname1407", + "displayName": "Allow paste operations via script (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v7~policy~l_microsoftofficeexcel~l_miscellaneous168_l_exceldisableofficescripts_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_iz_partname1407_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v7~policy~l_microsoftofficeexcel~l_miscellaneous168_l_exceldisableofficescripts_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_iz_partname1407_3", + "displayName": "Disable", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_iz_partname1407_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v8~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockxllfrominternet", - "displayName": "Block Excel XLL Add-ins that come from an untrusted source (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles", + "displayName": "Allow drag and drop or copy and paste files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v8~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockxllfrominternet_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v8~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockxllfrominternet_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_excel16v8~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockxllfrominternet_l_blockxllfrominternetenum", - "displayName": "", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_iz_partname1802", + "displayName": "Allow drag and drop or copy and paste files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_excel16v8~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockxllfrominternet_l_blockxllfrominternetenum_1", - "displayName": "Block", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_iz_partname1802_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v8~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockxllfrominternet_l_blockxllfrominternetenum_0", - "displayName": "Show Additional Warning", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_iz_partname1802_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_excel16v8~policy~l_microsoftofficeexcel~l_exceloptions~l_security~l_trustcenter_l_blockxllfrominternet_l_blockxllfrominternetenum_2", - "displayName": "Allow", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_iz_partname1802_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_experience_allowspotlightcollection", - "displayName": "Allow Spotlight Collection (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_experience_allowtailoredexperienceswithdiagnosticdata", - "displayName": "Allow Tailored Experiences With Diagnostic Data (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads", + "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_experience_allowtailoredexperienceswithdiagnosticdata_0", - "displayName": "Block", - "description": "Not allowed." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_0", + "displayName": "Disabled", + "description": null }, { - "id": "user_vendor_msft_policy_config_experience_allowtailoredexperienceswithdiagnosticdata_1", - "displayName": "Allow", - "description": "Allowed." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_experience_allowthirdpartysuggestionsinwindowsspotlight", - "displayName": "Allow Third Party Suggestions In Windows Spotlight (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_iz_partname1604", + "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_experience_allowthirdpartysuggestionsinwindowsspotlight_0", - "displayName": "Block", - "description": "Third-party suggestions not allowed." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_iz_partname1604_0", + "displayName": "Enable", + "description": null }, { - "id": "user_vendor_msft_policy_config_experience_allowthirdpartysuggestionsinwindowsspotlight_1", - "displayName": "Allow", - "description": "Third-party suggestions allowed." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_iz_partname1604_3", + "displayName": "Disable", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_iz_partname1604_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlight", - "displayName": "Allow Windows Spotlight (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlight_0", - "displayName": "Block", - "description": "Not allowed." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_0", + "displayName": "Disabled", + "description": null }, { - "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlight_1", - "displayName": "Allow", - "description": "Allowed." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightonactioncenter", - "displayName": "Allow Windows Spotlight On Action Center (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_iz_partname2101", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightonactioncenter_0", - "displayName": "Block", - "description": "Not allowed." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_iz_partname2101_0", + "displayName": "Enable", + "description": null }, { - "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightonactioncenter_1", - "displayName": "Allow", - "description": "Allowed." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_iz_partname2101_3", + "displayName": "Disable", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_iz_partname2101_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightonsettings", - "displayName": "Allow Windows Spotlight On Settings (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles", + "displayName": "Allow loading of XAML files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightonsettings_0", - "displayName": "Block", - "description": "Not allowed." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_0", + "displayName": "Disabled", + "description": null }, { - "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightonsettings_1", - "displayName": "Allow", - "description": "Allowed." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightwindowswelcomeexperience", - "displayName": "Allow Windows Spotlight Windows Welcome Experience (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_iz_partname2402", + "displayName": "XAML Files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightwindowswelcomeexperience_0", - "displayName": "Block", - "description": "Not allowed." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_iz_partname2402_0", + "displayName": "Enable", + "description": null }, { - "id": "user_vendor_msft_policy_config_experience_allowwindowsspotlightwindowswelcomeexperience_1", - "displayName": "Allow", - "description": "Allowed." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_iz_partname2402_3", + "displayName": "Disable", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_iz_partname2402_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_experience_configurewindowsspotlightonlockscreen", - "displayName": "Configure Windows Spotlight On Lock Screen (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_experience_configurewindowsspotlightonlockscreen_0", - "displayName": "Windows spotlight disabled.", - "description": "Windows spotlight disabled." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_0", + "displayName": "Disabled", + "description": null }, { - "id": "user_vendor_msft_policy_config_experience_configurewindowsspotlightonlockscreen_1", - "displayName": "Windows spotlight enabled.", - "description": "Windows spotlight enabled." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_iz_partname2004", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_iz_partname2004_0", + "displayName": "Enable", + "description": null }, { - "id": "user_vendor_msft_policy_config_experience_configurewindowsspotlightonlockscreen_2", - "displayName": "Windows spotlight is always enabled, the user cannot disable it", - "description": "Windows spotlight is always enabled, the user cannot disable it" + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_iz_partname2004_3", + "displayName": "Disable", + "description": null }, { - "id": "user_vendor_msft_policy_config_experience_configurewindowsspotlightonlockscreen_3", - "displayName": "Windows spotlight is always enabled, the user cannot disable it. For special configurations only", - "description": "Windows spotlight is always enabled, the user cannot disable it. For special configurations only" + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_iz_partname2004_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_experience_enableorganizationalmessages", - "displayName": "Enable delivery of organizational messages (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols", + "displayName": "Allow only approved domains to use ActiveX controls without prompt (User)", "options": [ { - "id": "user_vendor_msft_policy_config_experience_enableorganizationalmessages_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_0", "displayName": "Disabled", - "description": "Disabled" + "description": null }, { - "id": "user_vendor_msft_policy_config_experience_enableorganizationalmessages_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_1", "displayName": "Enabled", - "description": "Enabled" + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_fileexplorer_allowoptiontoshownetwork", - "displayName": "Allow Option To Show Network (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b", + "displayName": "Only allow approved domains to use ActiveX controls without prompt (User)", "options": [ { - "id": "user_vendor_msft_policy_config_fileexplorer_allowoptiontoshownetwork_0", - "displayName": "Not Allowed.", - "description": "Not Allowed." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b_3", + "displayName": "Enable", + "description": null }, { - "id": "user_vendor_msft_policy_config_fileexplorer_allowoptiontoshownetwork_1", - "displayName": "Allowed.", - "description": "Allowed." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b_0", + "displayName": "Disable", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_fileexplorer_allowoptiontoshowthispc", - "displayName": "Allow Option To Show This PC (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol", + "displayName": "Allow only approved domains to use the TDC ActiveX control (User)", "options": [ { - "id": "user_vendor_msft_policy_config_fileexplorer_allowoptiontoshowthispc_0", - "displayName": "Not Allowed.", - "description": "Not Allowed." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_0", + "displayName": "Disabled", + "description": null }, { - "id": "user_vendor_msft_policy_config_fileexplorer_allowoptiontoshowthispc_1", - "displayName": "Allowed.", - "description": "Allowed." + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations", - "displayName": "Set Allowed Folder Locations (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c", + "displayName": "Only allow approved domains to use the TDC ActiveX control (User)", "options": [ { - "id": "user_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_0", - "displayName": "Access to all folder locations.", - "description": "Access to all folder locations." - }, - { - "id": "user_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_13", - "displayName": "Documents, Pictures, Downloads", - "description": "Documents, Pictures, Downloads" - }, - { - "id": "user_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_15", - "displayName": "Desktop, Documents, Pictures, Downloads", - "description": "Desktop, Documents, Pictures, Downloads" - }, - { - "id": "user_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_31", - "displayName": "Desktop, Documents, Pictures, Downloads, Network", - "description": "Desktop, Documents, Pictures, Downloads, Network" - }, - { - "id": "user_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_47", - "displayName": "This PC, Desktop, Documents, Pictures, Downloads", - "description": "This PC, Desktop, Documents, Pictures, Downloads" + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c_3", + "displayName": "Enable", + "description": null }, { - "id": "user_vendor_msft_policy_config_fileexplorer_setallowedfolderlocations_63", - "displayName": "This PC, Desktop, Documents, Pictures, Downloads, Network", - "description": "This PC, Desktop, Documents, Pictures, Downloads, Network" + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c_0", + "displayName": "Disable", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations", - "displayName": "Set Allowed Storage Locations (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols", + "displayName": "Allow scripting of Internet Explorer WebBrowser controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_0", - "displayName": "Access to all storage locations.", - "description": "Access to all storage locations." - }, - { - "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_1", - "displayName": "Removable Drives", - "description": "Removable Drives" - }, - { - "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_2", - "displayName": "Sync roots", - "description": "Sync roots" - }, - { - "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_3", - "displayName": "Removable Drives, Sync roots", - "description": "Removable Drives, Sync roots" - }, - { - "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_4", - "displayName": "Local Drives", - "description": "Local Drives" + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_0", + "displayName": "Disabled", + "description": null }, { - "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_5", - "displayName": "Removable Drives, Local Drives", - "description": "Removable Drives, Local Drives" - }, + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206", + "displayName": "Internet Explorer web browser control (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_6", - "displayName": "Sync Roots, Local Drives", - "description": "Sync Roots, Local Drives" + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206_0", + "displayName": "Enable", + "description": null }, { - "id": "user_vendor_msft_policy_config_fileexplorer_setallowedstoragelocations_7", - "displayName": "Removable Drives, Sync Roots, Local Drives", - "description": "Removable Drives, Sync Roots, Local Drives" + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206_3", + "displayName": "Disable", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_addsearchprovider", - "displayName": "Add a specific list of search providers to the user's list of search providers (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows", + "displayName": "Allow script-initiated windows without size or position constraints (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_addsearchprovider_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_addsearchprovider_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowactivexfiltering", - "displayName": "Turn on ActiveX Filtering (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_iz_partname2102", + "displayName": "Allow script-initiated windows without size or position constraints (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowactivexfiltering_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_iz_partname2102_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowactivexfiltering_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_iz_partname2102_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowaddonlist", - "displayName": "Add-on List (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets", + "displayName": "Allow scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowaddonlist_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowaddonlist_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowaddonlist_addonlist", - "displayName": "Add-on List (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_allowaddonlist_addonlist_key", - "displayName": "Name", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_allowaddonlist_addonlist_value", - "displayName": "Value", - "options": null + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_iz_partname1209", + "displayName": "Scriptlets (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_iz_partname1209_0", + "displayName": "Enable", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_iz_partname1209_3", + "displayName": "Disable", + "description": null + } + ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowautocomplete", - "displayName": "Turn on the auto-complete feature for user names and passwords on forms (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie", + "displayName": "Turn on SmartScreen Filter scan (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowautocomplete_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowautocomplete_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowautocomplete_chkbox_passwordask", - "displayName": "Prompt me to save passwords (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_iz_partname2301", + "displayName": "Use SmartScreen Filter (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowautocomplete_chkbox_passwordask_0", - "displayName": "False", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_iz_partname2301_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowautocomplete_chkbox_passwordask_1", - "displayName": "True", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_iz_partname2301_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowcertificateaddressmismatchwarning", - "displayName": "Turn on certificate address mismatch warning (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript", + "displayName": "Allow updates to status bar via script (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowcertificateaddressmismatchwarning_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowcertificateaddressmismatchwarning_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowdeletingbrowsinghistoryonexit", - "displayName": "Allow deleting browsing history on exit (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_iz_partname2103", + "displayName": "Status bar updates via script (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowdeletingbrowsinghistoryonexit_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_iz_partname2103_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowdeletingbrowsinghistoryonexit_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_iz_partname2103_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowenhancedprotectedmode", - "displayName": "Turn on Enhanced Protected Mode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence", + "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowenhancedprotectedmode_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowenhancedprotectedmode_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowenhancedsuggestionsinaddressbar", - "displayName": "Allow Microsoft services to provide enhanced suggestions as the user types in the Address bar (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_iz_partname1606", + "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowenhancedsuggestionsinaddressbar_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_iz_partname1606_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowenhancedsuggestionsinaddressbar_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_iz_partname1606_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowenterprisemodefromtoolsmenu", - "displayName": "Let users turn on and use Enterprise Mode from the Tools menu (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer", + "displayName": "Allow VBScript to run in Internet Explorer (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowenterprisemodefromtoolsmenu_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowenterprisemodefromtoolsmenu_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowenterprisemodefromtoolsmenu_enterreportbackprompt", - "displayName": "Type the location (URL) of where to receive reports about the websites for which users turn on and use Enterprise Mode (User)", - "options": null + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_iz_partname140c", + "displayName": "Allow VBScript to run in Internet Explorer (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_iz_partname140c_0", + "displayName": "Enable", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_iz_partname140c_3", + "displayName": "Disable", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_iz_partname140c_1", + "displayName": "Prompt", + "description": null + } + ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowenterprisemodesitelist", - "displayName": "Use the Enterprise Mode IE website list (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols", + "displayName": "Don't run antimalware programs against ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowenterprisemodesitelist_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowenterprisemodesitelist_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowenterprisemodesitelist_entersitelistprompt", - "displayName": "Type the location (URL) of your Enterprise Mode IE website list (User)", - "options": null + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", + "displayName": "Don't run antimalware programs against ActiveX controls (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", + "displayName": "Enable", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", + "displayName": "Disable", + "description": null + } + ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetexplorer7policylist", - "displayName": "Use Policy List of Internet Explorer 7 sites (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols", + "displayName": "Download signed ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetexplorer7policylist_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetexplorer7policylist_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetexplorer7policylist_compatview_sitelist", - "displayName": "List of sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetexplorerstandardsmode", - "displayName": "Turn on Internet Explorer Standards Mode for local intranet (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_iz_partname1001", + "displayName": "Download signed ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetexplorerstandardsmode_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_iz_partname1001_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetexplorerstandardsmode_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_iz_partname1001_3", + "displayName": "Disable", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_iz_partname1001_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate", - "displayName": "Internet Zone Template (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols", + "displayName": "Download unsigned ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate", - "displayName": "Internet (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_iz_partname1004", + "displayName": "Download unsigned ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_1", - "displayName": "Low", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_iz_partname1004_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_2", - "displayName": "Medium Low", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_iz_partname1004_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_3", - "displayName": "Medium", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_iz_partname1004_1", + "displayName": "Prompt", + "description": null + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter", + "displayName": "Turn on Cross-Site Scripting Filter (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_5", - "displayName": "Medium High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_iz_partname1409", + "displayName": "Turn on Cross-Site Scripting (XSS) Filter (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_iz_partname1409_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowinternetzonetemplate_iz_partnameinternetzonetemplate_4", - "displayName": "High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_iz_partname1409_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate", - "displayName": "Intranet Zone Template (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows", + "displayName": "Enable dragging of content from different domains across windows (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate", - "displayName": "Intranet (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709", + "displayName": "Enable dragging of content from different domains across windows (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_1", - "displayName": "Low", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_2", - "displayName": "Medium Low", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709_3", + "displayName": "Disable", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows", + "displayName": "Enable dragging of content from different domains within a window (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_3", - "displayName": "Medium", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_5", - "displayName": "Medium High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708", + "displayName": "Enable dragging of content from different domains within a window (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowintranetzonetemplate_iz_partnameintranetzonetemplate_4", - "displayName": "High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate", - "displayName": "Local Machine Zone Template (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing", + "displayName": "Enable MIME Sniffing (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate", - "displayName": "Local Machine Zone (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_iz_partname2100", + "displayName": "Enable MIME Sniffing (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_1", - "displayName": "Low", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_iz_partname2100_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_2", - "displayName": "Medium Low", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_iz_partname2100_3", + "displayName": "Disable", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode", + "displayName": "Turn on Protected Mode (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_3", - "displayName": "Medium", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_5", - "displayName": "Medium High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_iz_partname2500", + "displayName": "Protected Mode (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_iz_partname2500_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlocalmachinezonetemplate_iz_partnamelocalmachinezonetemplate_4", - "displayName": "High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_iz_partname2500_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate", - "displayName": "Locked-Down Internet Zone Template (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver", + "displayName": "Include local path when user is uploading files to a server (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate", - "displayName": "Locked-Down Internet (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a", + "displayName": "Include local directory path when uploading files to a server (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_1", - "displayName": "Low", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_2", - "displayName": "Medium Low", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_3", - "displayName": "Medium", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_5", - "displayName": "Medium High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddowninternetzonetemplate_iz_partnameinternetzonelockdowntemplate_4", - "displayName": "High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate", - "displayName": "Locked-Down Intranet Zone Template (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols", + "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate", - "displayName": "Locked-Down Intranet (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_iz_partname1201", + "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_1", - "displayName": "Low", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_2", - "displayName": "Medium Low", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_3", - "displayName": "Medium", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_5", - "displayName": "Medium High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownintranetzonetemplate_iz_partnameintranetzonelockdowntemplate_4", - "displayName": "High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate", - "displayName": "Locked-Down Local Machine Zone Template (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions", + "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate", - "displayName": "Locked-Down Local Machine Zone (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00", + "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_1", - "displayName": "Low", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_65536", + "displayName": "High safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_2", - "displayName": "Medium Low", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_131072", + "displayName": "Medium safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_3", - "displayName": "Medium", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_196608", + "displayName": "Low safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_5", - "displayName": "Medium High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_8388608", + "displayName": "Custom", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownlocalmachinezonetemplate_iz_partnamelocalmachinezonelockdowntemplate_4", - "displayName": "High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_0", + "displayName": "Disable Java", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate", - "displayName": "Locked-Down Restricted Sites Zone Template (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe", + "displayName": "Launching applications and files in an IFRAME (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate", - "displayName": "Locked-Down Restricted Sites (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_iz_partname1804", + "displayName": "Launching applications and files in an IFRAME (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_1", - "displayName": "Low", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_2", - "displayName": "Medium Low", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_3", - "displayName": "Medium", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_iz_partname1804_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_5", - "displayName": "Medium High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_iz_partname1804_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowlockeddownrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonelockdowntemplate_4", - "displayName": "High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_iz_partname1804_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowonewordentry", - "displayName": "Go to an intranet site for a one-word entry in the Address bar (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions", + "displayName": "Logon options (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowonewordentry_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowonewordentry_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsavetargetasiniemode", - "displayName": "Allow \"Save Target As\" in Internet Explorer mode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00", + "displayName": "Logon options (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsavetargetasiniemode_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00_196608", + "displayName": "Anonymous logon", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsavetargetasiniemode_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00_131072", + "displayName": "Automatic logon only in Intranet zone", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist", - "displayName": "Site to Zone Assignment List (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00_0", + "displayName": "Automatic logon with current username and password", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00_65536", + "displayName": "Prompt for user name and password", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_iz_zonemapprompt", - "displayName": "Enter the zone assignments here. (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_iz_zonemapprompt_key", - "displayName": "Name", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsitetozoneassignmentlist_iz_zonemapprompt_value", - "displayName": "Value", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate", - "displayName": "Locked-Down Trusted Sites Zone Template (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate", - "displayName": "Locked-Down Trusted Sites (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_1", - "displayName": "Low", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_2", - "displayName": "Medium Low", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_3", - "displayName": "Medium", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_iz_partname1607_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_5", - "displayName": "Medium High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_iz_partname1607_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowslockeddowntrustedsiteszonetemplate_iz_partnametrustedsiteszonelockdowntemplate_4", - "displayName": "High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_iz_partname1607_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsoftwarewhensignatureisinvalid", - "displayName": "Allow software to run or install even if the signature is invalid (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode", + "displayName": "Run .NET Framework-reliant components signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsoftwarewhensignatureisinvalid_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsoftwarewhensignatureisinvalid_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate", - "displayName": "Restricted Sites Zone Template (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001", + "displayName": "Run .NET Framework-reliant components signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_3", + "displayName": "Disable", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate", - "displayName": "Restricted Sites (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles", + "displayName": "Show security warning for potentially unsafe files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_1", - "displayName": "Low", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_2", - "displayName": "Medium Low", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806", + "displayName": "Launching programs and unsafe files (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_3", - "displayName": "Medium", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_5", - "displayName": "Medium High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsrestrictedsiteszonetemplate_iz_partnamerestrictedsiteszonetemplate_4", - "displayName": "High", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsuggestedsites", - "displayName": "Turn on Suggested Sites (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker", + "displayName": "Use Pop-up Blocker (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsuggestedsites_0", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowsuggestedsites_1", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate", - "displayName": "Trusted Sites Zone Template (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_iz_partname1809", + "displayName": "Use Pop-up Blocker (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_iz_partname1809_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_iz_partname1809_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate", - "displayName": "Trusted Sites (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources", + "displayName": "Access data sources across domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_1", - "displayName": "Low", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_2", - "displayName": "Medium Low", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_iz_partname1406", + "displayName": "Access data sources across domains (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_3", - "displayName": "Medium", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_iz_partname1406_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_5", - "displayName": "Medium High", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_iz_partname1406_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_allowtrustedsiteszonetemplate_iz_partnametrustedsiteszonetemplate_4", - "displayName": "High", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_iz_partname1406_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_checkservercertificaterevocation", - "displayName": "Check for server certificate revocation (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols", + "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_checkservercertificaterevocation_0", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_checkservercertificaterevocation_1", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_checksignaturesondownloadedprograms", - "displayName": "Check for signatures on downloaded programs (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_checksignaturesondownloadedprograms_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_checksignaturesondownloadedprograms_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel", - "displayName": "Configure which channel of Microsoft Edge to use for opening redirected sites (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads", + "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_0", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_1", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser", - "displayName": "First choice (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_", - "displayName": "", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_1", - "displayName": "Microsoft Edge Stable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_2", - "displayName": "Microsoft Edge Beta version 77 or later", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_3", - "displayName": "Microsoft Edge Dev version 77 or later", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_4", - "displayName": "Microsoft Edge Canary version 77 or later", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser_0", - "displayName": "Microsoft Edge version 45 or earlier", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2", - "displayName": "Second choice (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads", + "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_", - "displayName": "", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_1", - "displayName": "Microsoft Edge Stable", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_2", - "displayName": "Microsoft Edge Beta version 77 or later", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_iz_partname1604", + "displayName": "Allow font downloads (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_3", - "displayName": "Microsoft Edge Dev version 77 or later", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_iz_partname1604_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_4", - "displayName": "Microsoft Edge Canary version 77 or later", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_iz_partname1604_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser2_0", - "displayName": "Microsoft Edge version 45 or earlier", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_iz_partname1604_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3", - "displayName": "Third choice (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_", - "displayName": "", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_1", - "displayName": "Microsoft Edge Stable", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_2", - "displayName": "Microsoft Edge Beta version 77 or later", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_iz_partname2101", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_3", - "displayName": "Microsoft Edge Dev version 77 or later", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_iz_partname2101_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_4", - "displayName": "Microsoft Edge Canary version 77 or later", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_iz_partname2101_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_configureedgeredirectchannel_neededgebrowser3_0", - "displayName": "Microsoft Edge version 45 or earlier", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_iz_partname2101_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_consistentmimehandlinginternetexplorerprocesses", - "displayName": "Internet Explorer Processes (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_consistentmimehandlinginternetexplorerprocesses_0", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_consistentmimehandlinginternetexplorerprocesses_1", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableactivexversionlistautodownload", - "displayName": "Turn off automatic download of the ActiveX VersionList (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_iz_partname2004", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableactivexversionlistautodownload_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_iz_partname2004_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableactivexversionlistautodownload_1", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_disableadobeflash", - "displayName": "Turn off Adobe Flash in Internet Explorer and prevent applications from using Internet Explorer technology to instantiate Flash objects (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_disableadobeflash_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_iz_partname2004_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableadobeflash_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_iz_partname2004_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarnings", - "displayName": "Prevent bypassing SmartScreen Filter warnings (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets", + "displayName": "Allow scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarnings_0", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarnings_1", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarningsaboutuncommonfiles", - "displayName": "Prevent bypassing SmartScreen Filter warnings about files that are not commonly downloaded from the Internet (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_iz_partname1209", + "displayName": "Scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarningsaboutuncommonfiles_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_iz_partname1209_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablebypassofsmartscreenwarningsaboutuncommonfiles_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_iz_partname1209_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablecompatview", - "displayName": "Turn off Compatibility View (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie", + "displayName": "Turn on SmartScreen Filter scan (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disablecompatview_0", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablecompatview_1", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableconfiguringhistory", - "displayName": "Disable \"Configuring History\" (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_iz_partname2301", + "displayName": "Use SmartScreen Filter (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableconfiguringhistory_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_iz_partname2301_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableconfiguringhistory_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_iz_partname2301_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableconfiguringhistory_daystokeep_prompt", - "displayName": "Days to keep pages in History (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_disablecrashdetection", - "displayName": "Turn off Crash Detection (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence", + "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disablecrashdetection_0", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablecrashdetection_1", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablecustomerexperienceimprovementprogramparticipation", - "displayName": "Prevent participation in the Customer Experience Improvement Program (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_iz_partname1606", + "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disablecustomerexperienceimprovementprogramparticipation_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_iz_partname1606_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablecustomerexperienceimprovementprogramparticipation_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_iz_partname1606_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disabledeletinguservisitedwebsites", - "displayName": "Prevent deleting websites that the user has visited (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols", + "displayName": "Don't run antimalware programs against ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disabledeletinguservisitedwebsites_0", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disabledeletinguservisitedwebsites_1", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableenclosuredownloading", - "displayName": "Prevent downloading of enclosures (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", + "displayName": "Don't run antimalware programs against ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableenclosuredownloading_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableenclosuredownloading_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport", - "displayName": "Turn off encryption support (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols", + "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_0", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_1", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions", - "displayName": "Secure Protocol combinations (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_iz_partname1201", + "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_0", - "displayName": "Use no secure protocols", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_8", - "displayName": "Only use SSL 2.0", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_32", - "displayName": "Only use SSL 3.0", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_40", - "displayName": "Use SSL 2.0 and SSL 3.0", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_128", - "displayName": "Only use TLS 1.0", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_136", - "displayName": "Use SSL 2.0 and TLS 1.0", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_160", - "displayName": "Use SSL 3.0 and TLS 1.0", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_168", - "displayName": "Use SSL 2.0, SSL 3.0, and TLS 1.0", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "displayName": "Prompt", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions", + "displayName": "Java permissions (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_512", - "displayName": "Only use TLS 1.1", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_520", - "displayName": "Use SSL 2.0 and TLS 1.1", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00", + "displayName": "Java permissions (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_544", - "displayName": "Use SSL 3.0 and TLS 1.1", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_65536", + "displayName": "High safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_552", - "displayName": "Use SSL 2.0, SSL 3.0, and TLS 1.1", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_131072", + "displayName": "Medium safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_640", - "displayName": "Use TLS 1.0 and TLS 1.1", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_196608", + "displayName": "Low safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_648", - "displayName": "Use SSL 2.0, TLS 1.0, and TLS 1.1", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_8388608", + "displayName": "Custom", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_672", - "displayName": "Use SSL 3.0, TLS 1.0, and TLS 1.1", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_0", + "displayName": "Disable Java", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonelogonoptions", + "displayName": "Logon options (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_680", - "displayName": "Use SSL 2.0, SSL 3.0, TLS 1.0, and TLS 1.1", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonelogonoptions_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2048", - "displayName": "Only use TLS 1.2", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonelogonoptions_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonelogonoptions_iz_partname1a00", + "displayName": "Logon options (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2056", - "displayName": "Use SSL 2.0 and TLS 1.2", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonelogonoptions_iz_partname1a00_196608", + "displayName": "Anonymous logon", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2080", - "displayName": "Use SSL 3.0 and TLS 1.2", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonelogonoptions_iz_partname1a00_131072", + "displayName": "Automatic logon only in Intranet zone", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2088", - "displayName": "Use SSL 2.0, SSL 3.0, and TLS 1.2", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonelogonoptions_iz_partname1a00_0", + "displayName": "Automatic logon with current username and password", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2176", - "displayName": "Use TLS 1.0 and TLS 1.2", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonelogonoptions_iz_partname1a00_65536", + "displayName": "Prompt for user name and password", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2184", - "displayName": "Use SSL 2.0, TLS 1.0, and TLS 1.2", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2208", - "displayName": "Use SSL 3.0, TLS 1.0, and TLS 1.2", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2216", - "displayName": "Use SSL 2.0, SSL 3.0, TLS 1.0, and TLS 1.2", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_iz_partname1607_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2560", - "displayName": "Use TLS 1.1 and TLS 1.2", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_iz_partname1607_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2568", - "displayName": "Use SSL 2.0, TLS 1.1, and TLS 1.2", + "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_iz_partname1607_1", + "displayName": "Prompt", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_jscriptreplacement", + "displayName": "Replace JScript by loading JScript9Legacy in place of JScript. (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2592", - "displayName": "Use SSL 3.0, TLS 1.1, and TLS 1.2", + "id": "user_vendor_msft_policy_config_internetexplorer_jscriptreplacement_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2600", - "displayName": "Use SSL 2.0, SSL 3.0, TLS 1.1, and TLS 1.2", + "id": "user_vendor_msft_policy_config_internetexplorer_jscriptreplacement_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_keepintranetsitesininternetexplorer", + "displayName": "Keep all intranet sites in Internet Explorer (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2688", - "displayName": "Use TLS 1.0, TLS 1.1, and TLS 1.2", + "id": "user_vendor_msft_policy_config_internetexplorer_keepintranetsitesininternetexplorer_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2696", - "displayName": "Use SSL 2.0, TLS 1.0, TLS 1.1, and TLS 1.2", + "id": "user_vendor_msft_policy_config_internetexplorer_keepintranetsitesininternetexplorer_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources", + "displayName": "Access data sources across domains (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2720", - "displayName": "Use SSL 3.0, TLS 1.0, TLS 1.1, and TLS 1.2", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_2728", - "displayName": "Use SSL 2.0, SSL 3.0, TLS 1.0, TLS 1.1, and TLS 1.2", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_iz_partname1406", + "displayName": "Access data sources across domains (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_8192", - "displayName": "Only use TLS 1.3", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_iz_partname1406_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_10240", - "displayName": "Use TLS 1.2 and TLS 1.3", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_iz_partname1406_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_10752", - "displayName": "Use TLS 1.1, TLS 1.2, and TLS 1.3", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_iz_partname1406_1", + "displayName": "Prompt", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols", + "displayName": "Automatic prompting for ActiveX controls (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_10880", - "displayName": "Use TLS 1.0, TLS 1.1, TLS 1.2, and TLS 1.3", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableencryptionsupport_advanced_wininetprotocoloptions_10912", - "displayName": "Use SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2, and TLS 1.3", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablefeedsbackgroundsync", - "displayName": "Turn off background synchronization for feeds and Web Slices (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disablefeedsbackgroundsync_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablefeedsbackgroundsync_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard", - "displayName": "Prevent running First Run wizard (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads", + "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_0", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_1", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_firstrunoptions", - "displayName": "Select your choice (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_firstrunoptions_1", - "displayName": "Go directly to home page", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablefirstrunwizard_firstrunoptions_2", - "displayName": "Go directly to \"Welcome To IE\" page", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableflipaheadfeature", - "displayName": "Turn off the flip ahead with page prediction feature (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads", + "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableflipaheadfeature_0", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableflipaheadfeature_1", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablegeolocation", - "displayName": "Turn off browser geolocation (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_iz_partname1604", + "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disablegeolocation_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_iz_partname1604_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablegeolocation_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_iz_partname1604_3", + "displayName": "Disable", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_iz_partname1604_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablehomepagechange", - "displayName": "Disable changing home page settings (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disablehomepagechange_0", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablehomepagechange_1", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablehomepagechange_enterhomepageprompt", - "displayName": "Home Page (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_disablehtmlapplication", - "displayName": "Disable HTML Application (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_iz_partname2101", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disablehtmlapplication_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_iz_partname2101_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablehtmlapplication_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_iz_partname2101_3", + "displayName": "Disable", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_iz_partname2101_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableignoringcertificateerrors", - "displayName": "Prevent ignoring certificate errors (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableignoringcertificateerrors_0", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableignoringcertificateerrors_1", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableinprivatebrowsing", - "displayName": "Turn off InPrivate Browsing (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_iz_partname2004", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableinprivatebrowsing_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_iz_partname2004_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableinprivatebrowsing_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_iz_partname2004_3", + "displayName": "Disable", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_iz_partname2004_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp", - "displayName": "[Deprecated] Disable Internet Explorer 11 as a standalone browser (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets", + "displayName": "Allow scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_0", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_1", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2", - "displayName": "Disable Internet Explorer 11 as a standalone browser (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_iz_partname1209", + "displayName": "Scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_iz_partname1209_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_iz_partname1209_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_notifydisableieoptions", - "displayName": "Notify that Internet Explorer 11 browser is disabled (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie", + "displayName": "Turn on SmartScreen Filter scan (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_notifydisableieoptions_0", - "displayName": "Never", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_notifydisableieoptions_1", - "displayName": "Always", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableinternetexplorerapp_v2_notifydisableieoptions_2", - "displayName": "Once per user", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableprocessesinenhancedprotectedmode", - "displayName": "Turn on 64-bit tab processes when running in Enhanced Protected Mode on 64-bit versions of Windows (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_iz_partname2301", + "displayName": "Use SmartScreen Filter (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableprocessesinenhancedprotectedmode_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_iz_partname2301_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableprocessesinenhancedprotectedmode_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_iz_partname2301_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableproxychange", - "displayName": "Prevent changing proxy settings (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence", + "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disableproxychange_0", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disableproxychange_1", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablesearchproviderchange", - "displayName": "Prevent changing the default search provider (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_iz_partname1606", + "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disablesearchproviderchange_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_iz_partname1606_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablesearchproviderchange_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_iz_partname1606_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablesecondaryhomepagechange", - "displayName": "Disable changing secondary home page settings (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols", + "displayName": "Don't run antimalware programs against ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disablesecondaryhomepagechange_0", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablesecondaryhomepagechange_1", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablesecondaryhomepagechange_secondaryhomepageslist", - "displayName": "Secondary home pages (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_disablesecuritysettingscheck", - "displayName": "Turn off the Security Settings Check feature (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", + "displayName": "Don't run antimalware programs against ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disablesecuritysettingscheck_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablesecuritysettingscheck_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablewebaddressautocomplete", - "displayName": "Turn off the auto-complete feature for web addresses (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols", + "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_disablewebaddressautocomplete_0", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_disablewebaddressautocomplete_1", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_donotallowactivexcontrolsinprotectedmode", - "displayName": "Do not allow ActiveX controls to run in Protected Mode when Enhanced Protected Mode is enabled (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_iz_partname1201", + "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_donotallowactivexcontrolsinprotectedmode_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_donotallowactivexcontrolsinprotectedmode_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "displayName": "Disable", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrols", - "displayName": "Turn off blocking of outdated ActiveX controls for Internet Explorer (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions", + "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrolsonspecificdomains", - "displayName": "Turn off blocking of outdated ActiveX controls for Internet Explorer on specific domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00", + "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrolsonspecificdomains_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_65536", + "displayName": "High safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrolsonspecificdomains_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_131072", + "displayName": "Medium safety", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_196608", + "displayName": "Low safety", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_8388608", + "displayName": "Custom", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_0", + "displayName": "Disable Java", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_donotblockoutdatedactivexcontrolsonspecificdomains_domainlist", - "displayName": "Domain allow list (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_enableextendediemodehotkeys", - "displayName": "Enable extended hot keys in Internet Explorer mode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonelogonoptions", + "displayName": "Logon options (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_enableextendediemodehotkeys_0", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonelogonoptions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_enableextendediemodehotkeys_1", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonelogonoptions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_enableglobalwindowlistiniemode", - "displayName": "Enable global window list in Internet Explorer mode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonelogonoptions_iz_partname1a00", + "displayName": "Logon options (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_enableglobalwindowlistiniemode_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonelogonoptions_iz_partname1a00_196608", + "displayName": "Anonymous logon", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_enableglobalwindowlistiniemode_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonelogonoptions_iz_partname1a00_131072", + "displayName": "Automatic logon only in Intranet zone", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonelogonoptions_iz_partname1a00_0", + "displayName": "Automatic logon with current username and password", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonelogonoptions_iz_partname1a00_65536", + "displayName": "Prompt for user name and password", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_includealllocalsites", - "displayName": "Intranet Sites: Include all local (intranet) sites not listed in other zones (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_includealllocalsites_0", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_includealllocalsites_1", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_includeallnetworkpaths", - "displayName": "Intranet Sites: Include all network paths (UNCs) (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_includeallnetworkpaths_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_iz_partname1607_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_includeallnetworkpaths_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_iz_partname1607_3", + "displayName": "Disable", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_iz_partname1607_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources", "displayName": "Access data sources across domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_iz_partname1406", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_iz_partname1406", "displayName": "Access data sources across domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_iz_partname1406_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_iz_partname1406_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_iz_partname1406_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_iz_partname1406_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowaccesstodatasources_iz_partname1406_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_iz_partname1406_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols", "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201", "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads", "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_iz_partname2200", "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript", - "displayName": "Allow cut, copy or paste operations from the clipboard via script (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads", + "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_iz_partname1407", - "displayName": "Allow paste operations via script (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_iz_partname1604", + "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_iz_partname1407_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_iz_partname1604_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_iz_partname1407_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_iz_partname1604_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowcopypasteviascript_iz_partname1407_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_iz_partname1604_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles", - "displayName": "Allow drag and drop or copy and paste files (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_iz_partname1802", - "displayName": "Allow drag and drop or copy and paste files (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_iz_partname2101", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_iz_partname1802_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_iz_partname2101_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_iz_partname1802_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_iz_partname2101_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowdraganddropcopyandpastefiles_iz_partname1802_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_iz_partname2101_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads", - "displayName": "Allow font downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_iz_partname1604", - "displayName": "Allow font downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_iz_partname2004", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_iz_partname1604_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_iz_partname2004_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_iz_partname1604_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_iz_partname2004_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowfontdownloads_iz_partname1604_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_iz_partname2004_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets", + "displayName": "Allow scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_iz_partname2101", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_iz_partname1209", + "displayName": "Scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_iz_partname2101_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_iz_partname1209_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_iz_partname2101_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_iz_partname1209_3", "displayName": "Disable", "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowlessprivilegedsites_iz_partname2101_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles", - "displayName": "Allow loading of XAML files (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie", + "displayName": "Turn on SmartScreen Filter scan (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_iz_partname2402", - "displayName": "XAML Files (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_iz_partname2301", + "displayName": "Use SmartScreen Filter (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_iz_partname2402_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_iz_partname2301_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_iz_partname2402_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_iz_partname2301_3", "displayName": "Disable", "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowloadingofxamlfiles_iz_partname2402_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence", + "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_iz_partname2004", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_iz_partname1606", + "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_iz_partname2004_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_iz_partname1606_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_iz_partname2004_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_iz_partname1606_3", "displayName": "Disable", "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallownetframeworkreliantcomponents_iz_partname2004_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols", - "displayName": "Allow only approved domains to use ActiveX controls without prompt (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols", + "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b", - "displayName": "Only allow approved domains to use ActiveX controls without prompt (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_iz_partname1201", + "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_iz_partname1201_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_iz_partname1201_3", "displayName": "Disable", "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol", - "displayName": "Allow only approved domains to use the TDC ActiveX control (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions", + "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c", - "displayName": "Only allow approved domains to use the TDC ActiveX control (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00", + "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c_3", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_65536", + "displayName": "High safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c_0", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_131072", + "displayName": "Medium safety", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_196608", + "displayName": "Low safety", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_8388608", + "displayName": "Custom", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_0", + "displayName": "Disable Java", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols", - "displayName": "Allow scripting of Internet Explorer WebBrowser controls (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206", - "displayName": "Internet Explorer web browser control (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_iz_partname1607_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_iz_partname1607_3", "displayName": "Disable", "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_iz_partname1607_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows", - "displayName": "Allow script-initiated windows without size or position constraints (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions", + "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_iz_partname2102", - "displayName": "Allow script-initiated windows without size or position constraints (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00", + "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_iz_partname2102_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_65536", + "displayName": "High safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptinitiatedwindows_iz_partname2102_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_131072", + "displayName": "Medium safety", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_196608", + "displayName": "Low safety", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_8388608", + "displayName": "Custom", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_0", + "displayName": "Disable Java", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets", - "displayName": "Allow scriptlets (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources", + "displayName": "Access data sources across domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_iz_partname1209", - "displayName": "Scriptlets (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_iz_partname1406", + "displayName": "Access data sources across domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_iz_partname1209_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_iz_partname1406_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowscriptlets_iz_partname1209_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_iz_partname1406_3", "displayName": "Disable", "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_iz_partname1406_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie", - "displayName": "Turn on SmartScreen Filter scan (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols", + "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_iz_partname2301", - "displayName": "Use SmartScreen Filter (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_iz_partname2301_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowsmartscreenie_iz_partname2301_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript", - "displayName": "Allow updates to status bar via script (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads", + "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_iz_partname2103", - "displayName": "Status bar updates via script (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_iz_partname2103_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowupdatestostatusbarviascript_iz_partname2103_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence", - "displayName": "Userdata persistence (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads", + "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_iz_partname1606", - "displayName": "Userdata persistence (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_iz_partname1604", + "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_iz_partname1606_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_iz_partname1604_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowuserdatapersistence_iz_partname1606_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_iz_partname1604_3", "displayName": "Disable", "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_iz_partname1604_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer", - "displayName": "Allow VBScript to run in Internet Explorer (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_iz_partname140c", - "displayName": "Allow VBScript to run in Internet Explorer (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_iz_partname2101", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_iz_partname140c_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_iz_partname2101_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_iz_partname140c_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_iz_partname2101_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneallowvbscripttorunininternetexplorer_iz_partname140c_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_iz_partname2101_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols", - "displayName": "Don't run antimalware programs against ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", - "displayName": "Don't run antimalware programs against ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_iz_partname2004", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_iz_partname2004_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_iz_partname2004_3", "displayName": "Disable", "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_iz_partname2004_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols", - "displayName": "Download signed ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets", + "displayName": "Allow scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_iz_partname1001", - "displayName": "Download signed ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_iz_partname1209", + "displayName": "Scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_iz_partname1001_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_iz_partname1209_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_iz_partname1001_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_iz_partname1209_3", "displayName": "Disable", "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadsignedactivexcontrols_iz_partname1001_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols", - "displayName": "Download unsigned ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie", + "displayName": "Turn on SmartScreen Filter scan (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_iz_partname1004", - "displayName": "Download unsigned ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_iz_partname2301", + "displayName": "Use SmartScreen Filter (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_iz_partname1004_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_iz_partname2301_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_iz_partname1004_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_iz_partname2301_3", "displayName": "Disable", "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonedownloadunsignedactivexcontrols_iz_partname1004_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter", - "displayName": "Turn on Cross-Site Scripting Filter (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence", + "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_iz_partname1409", - "displayName": "Turn on Cross-Site Scripting (XSS) Filter (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_iz_partname1606", + "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_iz_partname1409_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_iz_partname1606_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablecrosssitescriptingfilter_iz_partname1409_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_iz_partname1606_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows", - "displayName": "Enable dragging of content from different domains across windows (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols", + "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709", - "displayName": "Enable dragging of content from different domains across windows (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_iz_partname1201", + "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_iz_partname1201_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_iz_partname1201_3", "displayName": "Disable", "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows", - "displayName": "Enable dragging of content from different domains within a window (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708", - "displayName": "Enable dragging of content from different domains within a window (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_iz_partname1607_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_iz_partname1607_3", "displayName": "Disable", "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_iz_partname1607_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing", - "displayName": "Enable MIME Sniffing (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources", + "displayName": "Access data sources across domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_iz_partname2100", - "displayName": "Enable MIME Sniffing (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_iz_partname1406", + "displayName": "Access data sources across domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_iz_partname2100_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_iz_partname1406_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenablemimesniffing_iz_partname2100_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_iz_partname1406_3", "displayName": "Disable", "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_iz_partname1406_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode", - "displayName": "Turn on Protected Mode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols", + "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_iz_partname2500", - "displayName": "Protected Mode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_iz_partname2500_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneenableprotectedmode_iz_partname2500_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver", - "displayName": "Include local path when user is uploading files to a server (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads", + "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a", - "displayName": "Include local directory path when uploading files to a server (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols", - "displayName": "Initialize and script ActiveX controls not marked as safe (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads", + "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_iz_partname1201", - "displayName": "Initialize and script ActiveX controls not marked as safe (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_iz_partname1604", + "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_iz_partname1604_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_iz_partname1604_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_iz_partname1604_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions", - "displayName": "Java permissions (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00", - "displayName": "Java permissions (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_iz_partname2101", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_65536", - "displayName": "High safety", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_131072", - "displayName": "Medium safety", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_196608", - "displayName": "Low safety", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_iz_partname2101_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_8388608", - "displayName": "Custom", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_iz_partname2101_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonejavapermissions_iz_partname1c00_0", - "displayName": "Disable Java", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_iz_partname2101_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe", - "displayName": "Launching applications and files in an IFRAME (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_iz_partname1804", - "displayName": "Launching applications and files in an IFRAME (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_iz_partname2004", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_iz_partname1804_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_iz_partname2004_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_iz_partname1804_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_iz_partname2004_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelaunchingapplicationsandfilesiniframe_iz_partname1804_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_iz_partname2004_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions", - "displayName": "Logon options (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets", + "displayName": "Allow scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00", - "displayName": "Logon options (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_iz_partname1209", + "displayName": "Scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00_196608", - "displayName": "Anonymous logon", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_iz_partname1209_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00_131072", - "displayName": "Automatic logon only in Intranet zone", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_iz_partname1209_3", + "displayName": "Disable", + "description": null + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie", + "displayName": "Turn on SmartScreen Filter scan (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00_0", - "displayName": "Automatic logon with current username and password", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_iz_partname2301", + "displayName": "Use SmartScreen Filter (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_iz_partname2301_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonelogonoptions_iz_partname1a00_65536", - "displayName": "Prompt for user name and password", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_iz_partname2301_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence", + "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_iz_partname1606", + "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_iz_partname1607_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_iz_partname1606_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_iz_partname1607_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_iz_partname1606_3", "displayName": "Disable", "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonenavigatewindowsandframes_iz_partname1607_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode", - "displayName": "Run .NET Framework-reliant components signed with Authenticode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols", + "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001", - "displayName": "Run .NET Framework-reliant components signed with Authenticode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_iz_partname1201", + "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles", - "displayName": "Show security warning for potentially unsafe files (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions", + "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806", - "displayName": "Launching programs and unsafe files (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00", + "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_65536", + "displayName": "High safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_131072", + "displayName": "Medium safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_196608", + "displayName": "Low safety", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_8388608", + "displayName": "Custom", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_0", + "displayName": "Disable Java", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker", - "displayName": "Use Pop-up Blocker (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_iz_partname1809", - "displayName": "Use Pop-up Blocker (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_iz_partname1809_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_iz_partname1607_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_internetzoneusepopupblocker_iz_partname1809_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_iz_partname1607_3", "displayName": "Disable", "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_iz_partname1607_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources", "displayName": "Access data sources across domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_iz_partname1406", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_iz_partname1406", "displayName": "Access data sources across domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_iz_partname1406_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_iz_partname1406_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_iz_partname1406_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_iz_partname1406_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowaccesstodatasources_iz_partname1406_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_iz_partname1406_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols", "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201", "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads", "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200", "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads", "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_iz_partname1604", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_iz_partname1604", "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_iz_partname1604_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_iz_partname1604_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_iz_partname1604_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_iz_partname1604_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowfontdownloads_iz_partname1604_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_iz_partname1604_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites", "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_iz_partname2101", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_iz_partname2101", "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_iz_partname2101_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_iz_partname2101_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_iz_partname2101_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_iz_partname2101_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowlessprivilegedsites_iz_partname2101_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_iz_partname2101_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents", "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_iz_partname2004", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004", "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_iz_partname2004_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_iz_partname2004_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallownetframeworkreliantcomponents_iz_partname2004_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets", "displayName": "Allow scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_iz_partname1209", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_iz_partname1209", "displayName": "Scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_iz_partname1209_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_iz_partname1209_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowscriptlets_iz_partname1209_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_iz_partname1209_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie", "displayName": "Turn on SmartScreen Filter scan (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_iz_partname2301", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_iz_partname2301", "displayName": "Use SmartScreen Filter (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_iz_partname2301_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_iz_partname2301_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowsmartscreenie_iz_partname2301_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_iz_partname2301_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence", "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_iz_partname1606", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_iz_partname1606", "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_iz_partname1606_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneallowuserdatapersistence_iz_partname1606_3", - "displayName": "Disable", - "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols", - "displayName": "Don't run antimalware programs against ActiveX controls (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_1", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", - "displayName": "Don't run antimalware programs against ActiveX controls (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_iz_partname1606_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_iz_partname1606_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols", "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_iz_partname1201", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201", "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions", "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00", "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_65536", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_65536", "displayName": "High safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_131072", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_131072", "displayName": "Medium safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_196608", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_196608", "displayName": "Low safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_8388608", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_8388608", "displayName": "Custom", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonejavapermissions_iz_partname1c00_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_0", "displayName": "Disable Java", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes", "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_iz_partname1607", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_iz_partname1607", "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_iz_partname1607_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_iz_partname1607_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_iz_partname1607_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_iz_partname1607_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_intranetzonenavigatewindowsandframes_iz_partname1607_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_iz_partname1607_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_jscriptreplacement", - "displayName": "Replace JScript by loading JScript9Legacy in place of JScript via MSHTML/WebOC. (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_jscriptreplacement_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_jscriptreplacement_1", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_keepintranetsitesininternetexplorer", - "displayName": "Keep all intranet sites in Internet Explorer (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_keepintranetsitesininternetexplorer_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_keepintranetsitesininternetexplorer_1", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources", "displayName": "Access data sources across domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_iz_partname1406", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_iz_partname1406", "displayName": "Access data sources across domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_iz_partname1406_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_iz_partname1406_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_iz_partname1406_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_iz_partname1406_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowaccesstodatasources_iz_partname1406_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_iz_partname1406_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols", "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201", "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads", "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200", "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads", "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_iz_partname1604", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_iz_partname1604", "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_iz_partname1604_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_iz_partname1604_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_iz_partname1604_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_iz_partname1604_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowfontdownloads_iz_partname1604_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_iz_partname1604_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites", "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_iz_partname2101", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_iz_partname2101", "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_iz_partname2101_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_iz_partname2101_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_iz_partname2101_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_iz_partname2101_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowlessprivilegedsites_iz_partname2101_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_iz_partname2101_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents", "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_iz_partname2004", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004", "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_iz_partname2004_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_iz_partname2004_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallownetframeworkreliantcomponents_iz_partname2004_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets", "displayName": "Allow scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_iz_partname1209", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_iz_partname1209", "displayName": "Scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_iz_partname1209_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_iz_partname1209_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowscriptlets_iz_partname1209_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_iz_partname1209_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie", "displayName": "Turn on SmartScreen Filter scan (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_iz_partname2301", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_iz_partname2301", "displayName": "Use SmartScreen Filter (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_iz_partname2301_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_iz_partname2301_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowsmartscreenie_iz_partname2301_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_iz_partname2301_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence", "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_iz_partname1606", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_iz_partname1606", "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_iz_partname1606_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneallowuserdatapersistence_iz_partname1606_3", - "displayName": "Disable", - "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols", - "displayName": "Don't run antimalware programs against ActiveX controls (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_1", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", - "displayName": "Don't run antimalware programs against ActiveX controls (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_iz_partname1606_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_iz_partname1606_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols", "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_iz_partname1201", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201", "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions", "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00", "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_65536", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_65536", "displayName": "High safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_131072", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_131072", "displayName": "Medium safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_196608", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_196608", "displayName": "Low safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_8388608", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_8388608", "displayName": "Custom", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonejavapermissions_iz_partname1c00_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_0", "displayName": "Disable Java", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes", "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_iz_partname1607", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_iz_partname1607", "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_iz_partname1607_0", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_iz_partname1607_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_iz_partname1607_3", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_iz_partname1607_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_localmachinezonenavigatewindowsandframes_iz_partname1607_1", + "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_iz_partname1607_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources", - "displayName": "Access data sources across domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_mimesniffingsafetyfeatureinternetexplorerprocesses", + "displayName": "Internet Explorer Processes (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_0", + "id": "user_vendor_msft_policy_config_internetexplorer_mimesniffingsafetyfeatureinternetexplorerprocesses_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_1", + "id": "user_vendor_msft_policy_config_internetexplorer_mimesniffingsafetyfeatureinternetexplorerprocesses_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_iz_partname1406", - "displayName": "Access data sources across domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_mkprotocolsecurityrestrictioninternetexplorerprocesses", + "displayName": "Internet Explorer Processes (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_iz_partname1406_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_internetexplorer_mkprotocolsecurityrestrictioninternetexplorerprocesses_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_iz_partname1406_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_internetexplorer_mkprotocolsecurityrestrictioninternetexplorerprocesses_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_newtabdefaultpage", + "displayName": "Specify default behavior for a new tab (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowaccesstodatasources_iz_partname1406_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols", - "displayName": "Automatic prompting for ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions", + "displayName": "New tab behavior (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions_3", + "displayName": "New tab page with my news feed", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions_0", + "displayName": "about:blank", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions_2", + "displayName": "New tab page", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions_1", + "displayName": "Home page", + "description": null + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_notificationbarinternetexplorerprocesses", + "displayName": "Internet Explorer Processes (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_internetexplorer_notificationbarinternetexplorerprocesses_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_notificationbarinternetexplorerprocesses_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201", - "displayName": "Automatic prompting for ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter", + "displayName": "Prevent managing SmartScreen Filter (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads", - "displayName": "Automatic prompting for file downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_ie9safetyfilteroptions", + "displayName": "Select SmartScreen Filter mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_0", + "id": "user_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_ie9safetyfilteroptions_0", + "displayName": "Off", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_ie9safetyfilteroptions_1", + "displayName": "On", + "description": null + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_preventperuserinstallationofactivexcontrols", + "displayName": "Prevent per-user installation of ActiveX controls (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_internetexplorer_preventperuserinstallationofactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_1", + "id": "user_vendor_msft_policy_config_internetexplorer_preventperuserinstallationofactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_iz_partname2200", - "displayName": "Automatic prompting for file downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_protectionfromzoneelevationinternetexplorerprocesses", + "displayName": "Internet Explorer Processes (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_internetexplorer_protectionfromzoneelevationinternetexplorerprocesses_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_internetexplorer_protectionfromzoneelevationinternetexplorerprocesses_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads", - "displayName": "Allow font downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_removerunthistimebuttonforoutdatedactivexcontrols", + "displayName": "Remove \"Run this time\" button for outdated ActiveX controls in Internet Explorer (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_0", + "id": "user_vendor_msft_policy_config_internetexplorer_removerunthistimebuttonforoutdatedactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_1", + "id": "user_vendor_msft_policy_config_internetexplorer_removerunthistimebuttonforoutdatedactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_iz_partname1604", - "displayName": "Allow font downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_resetzoomfordialoginiemode", + "displayName": "Reset zoom to default for HTML dialogs in Internet Explorer mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_iz_partname1604_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_internetexplorer_resetzoomfordialoginiemode_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_iz_partname1604_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_internetexplorer_resetzoomfordialoginiemode_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_restrictactivexinstallinternetexplorerprocesses", + "displayName": "Internet Explorer Processes (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_internetexplorer_restrictactivexinstallinternetexplorerprocesses_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowfontdownloads_iz_partname1604_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictactivexinstallinternetexplorerprocesses_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources", + "displayName": "Access data sources across domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_iz_partname2101", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_iz_partname1406", + "displayName": "Access data sources across domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_iz_partname2101_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_iz_partname1406_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_iz_partname2101_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_iz_partname1406_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowlessprivilegedsites_iz_partname2101_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_iz_partname1406_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting", + "displayName": "Allow active scripting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_iz_partname2004", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_iz_partname1400", + "displayName": "Allow active scripting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_iz_partname2004_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_iz_partname1400_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_iz_partname2004_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_iz_partname1400_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallownetframeworkreliantcomponents_iz_partname2004_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_iz_partname1400_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets", - "displayName": "Allow scriptlets (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols", + "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_iz_partname1209", - "displayName": "Scriptlets (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_iz_partname1209_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowscriptlets_iz_partname1209_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie", - "displayName": "Turn on SmartScreen Filter scan (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads", + "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_iz_partname2301", - "displayName": "Use SmartScreen Filter (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_iz_partname2301_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowsmartscreenie_iz_partname2301_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence", - "displayName": "Userdata persistence (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors", + "displayName": "Allow binary and script behaviors (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_iz_partname1606", - "displayName": "Userdata persistence (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_iz_partname2000", + "displayName": "Allow Binary and Script Behaviors (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_iz_partname1606_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_iz_partname2000_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneallowuserdatapersistence_iz_partname1606_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_iz_partname2000_65536", + "displayName": "Administrator approved", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_iz_partname2000_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols", - "displayName": "Initialize and script ActiveX controls not marked as safe (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript", + "displayName": "Allow cut, copy or paste operations from the clipboard via script (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_iz_partname1201", - "displayName": "Initialize and script ActiveX controls not marked as safe (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_iz_partname1407", + "displayName": "Allow paste operations via script (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_iz_partname1407_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_iz_partname1407_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_iz_partname1407_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions", - "displayName": "Java permissions (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles", + "displayName": "Allow drag and drop or copy and paste files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00", - "displayName": "Java permissions (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_iz_partname1802", + "displayName": "Allow drag and drop or copy and paste files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_65536", - "displayName": "High safety", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_iz_partname1802_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_131072", - "displayName": "Medium safety", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_iz_partname1802_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_196608", - "displayName": "Low safety", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_iz_partname1802_1", + "displayName": "Prompt", + "description": null + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads", + "displayName": "Allow file downloads (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_8388608", - "displayName": "Custom", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_1", + "displayName": "Enabled", + "description": null + } + ] + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_iz_partname1803", + "displayName": "Allow file downloads (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_iz_partname1803_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonejavapermissions_iz_partname1c00_0", - "displayName": "Disable Java", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_iz_partname1803_3", + "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads", + "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_iz_partname1604", + "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_iz_partname1607_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_iz_partname1604_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_iz_partname1607_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_iz_partname1604_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowninternetzonenavigatewindowsandframes_iz_partname1607_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_iz_partname1604_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions", - "displayName": "Java permissions (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00", - "displayName": "Java permissions (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_iz_partname2101", + "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_65536", - "displayName": "High safety", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_131072", - "displayName": "Medium safety", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_196608", - "displayName": "Low safety", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_iz_partname2101_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_8388608", - "displayName": "Custom", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_iz_partname2101_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetjavapermissions_iz_partname1c00_0", - "displayName": "Disable Java", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_iz_partname2101_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources", - "displayName": "Access data sources across domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles", + "displayName": "Allow loading of XAML files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_iz_partname1406", - "displayName": "Access data sources across domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_iz_partname2402", + "displayName": "XAML Files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_iz_partname1406_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_iz_partname2402_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_iz_partname1406_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_iz_partname2402_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowaccesstodatasources_iz_partname1406_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_iz_partname2402_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols", - "displayName": "Automatic prompting for ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh", + "displayName": "Allow META REFRESH (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201", - "displayName": "Automatic prompting for ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_iz_partname1608", + "displayName": "Allow META REFRESH (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_iz_partname1608_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_iz_partname1608_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads", - "displayName": "Automatic prompting for file downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200", - "displayName": "Automatic prompting for file downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004", + "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_3", "displayName": "Disable", "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads", - "displayName": "Allow font downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols", + "displayName": "Allow only approved domains to use ActiveX controls without prompt (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_iz_partname1604", - "displayName": "Allow font downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b", + "displayName": "Only allow approved domains to use ActiveX controls without prompt (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_iz_partname1604_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b_3", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_iz_partname1604_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b_0", "displayName": "Disable", "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowfontdownloads_iz_partname1604_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol", + "displayName": "Allow only approved domains to use the TDC ActiveX control (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_iz_partname2101", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c", + "displayName": "Only allow approved domains to use the TDC ActiveX control (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_iz_partname2101_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c_3", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_iz_partname2101_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c_0", "displayName": "Disable", "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowlessprivilegedsites_iz_partname2101_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols", + "displayName": "Allow scripting of Internet Explorer WebBrowser controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_iz_partname2004", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206", + "displayName": "Internet Explorer web browser control (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_iz_partname2004_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_iz_partname2004_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206_3", "displayName": "Disable", "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallownetframeworkreliantcomponents_iz_partname2004_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets", - "displayName": "Allow scriptlets (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows", + "displayName": "Allow script-initiated windows without size or position constraints (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_iz_partname1209", - "displayName": "Scriptlets (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_iz_partname2102", + "displayName": "Allow script-initiated windows without size or position constraints (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_iz_partname1209_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_iz_partname2102_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowscriptlets_iz_partname1209_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_iz_partname2102_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie", - "displayName": "Turn on SmartScreen Filter scan (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets", + "displayName": "Allow scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_iz_partname2301", - "displayName": "Use SmartScreen Filter (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_iz_partname1209", + "displayName": "Scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_iz_partname2301_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_iz_partname1209_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowsmartscreenie_iz_partname2301_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_iz_partname1209_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence", - "displayName": "Userdata persistence (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie", + "displayName": "Turn on SmartScreen Filter scan (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_iz_partname1606", - "displayName": "Userdata persistence (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_iz_partname2301", + "displayName": "Use SmartScreen Filter (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_iz_partname1606_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_iz_partname2301_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneallowuserdatapersistence_iz_partname1606_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_iz_partname2301_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols", - "displayName": "Initialize and script ActiveX controls not marked as safe (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript", + "displayName": "Allow updates to status bar via script (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_iz_partname1201", - "displayName": "Initialize and script ActiveX controls not marked as safe (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_iz_partname2103", + "displayName": "Status bar updates via script (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_iz_partname2103_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_iz_partname2103_3", "displayName": "Disable", "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzoneinitializeandscriptactivexcontrols_iz_partname1201_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence", + "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_iz_partname1606", + "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_iz_partname1607_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_iz_partname1606_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_iz_partname1607_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_iz_partname1606_3", "displayName": "Disable", "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownintranetzonenavigatewindowsandframes_iz_partname1607_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources", - "displayName": "Access data sources across domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer", + "displayName": "Allow VBScript to run in Internet Explorer (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_iz_partname1406", - "displayName": "Access data sources across domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_iz_partname140c", + "displayName": "Allow VBScript to run in Internet Explorer (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_iz_partname1406_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_iz_partname140c_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_iz_partname1406_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_iz_partname140c_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowaccesstodatasources_iz_partname1406_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_iz_partname140c_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols", - "displayName": "Automatic prompting for ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols", + "displayName": "Don't run antimalware programs against ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201", - "displayName": "Automatic prompting for ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", + "displayName": "Don't run antimalware programs against ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads", - "displayName": "Automatic prompting for file downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols", + "displayName": "Download signed ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200", - "displayName": "Automatic prompting for file downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_iz_partname1001", + "displayName": "Download signed ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_iz_partname1001_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_iz_partname1001_3", "displayName": "Disable", "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_iz_partname1001_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads", - "displayName": "Allow font downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols", + "displayName": "Download unsigned ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_iz_partname1604", - "displayName": "Allow font downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_iz_partname1004", + "displayName": "Download unsigned ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_iz_partname1604_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_iz_partname1004_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_iz_partname1604_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_iz_partname1004_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowfontdownloads_iz_partname1604_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_iz_partname1004_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter", + "displayName": "Turn on Cross-Site Scripting Filter (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_iz_partname2101", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_iz_partname1409", + "displayName": "Turn on Cross-Site Scripting (XSS) Filter (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_iz_partname2101_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_iz_partname1409_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_iz_partname2101_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_iz_partname1409_3", "displayName": "Disable", "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowlessprivilegedsites_iz_partname2101_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows", + "displayName": "Enable dragging of content from different domains across windows (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_iz_partname2004", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709", + "displayName": "Enable dragging of content from different domains across windows (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_iz_partname2004_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_iz_partname2004_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709_3", "displayName": "Disable", "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallownetframeworkreliantcomponents_iz_partname2004_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets", - "displayName": "Allow scriptlets (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows", + "displayName": "Enable dragging of content from different domains within a window (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_iz_partname1209", - "displayName": "Scriptlets (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708", + "displayName": "Enable dragging of content from different domains within a window (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_iz_partname1209_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowscriptlets_iz_partname1209_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie", - "displayName": "Turn on SmartScreen Filter scan (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing", + "displayName": "Enable MIME Sniffing (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_iz_partname2301", - "displayName": "Use SmartScreen Filter (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_iz_partname2100", + "displayName": "Enable MIME Sniffing (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_iz_partname2301_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_iz_partname2100_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowsmartscreenie_iz_partname2301_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_iz_partname2100_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence", - "displayName": "Userdata persistence (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver", + "displayName": "Include local path when user is uploading files to a server (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_iz_partname1606", - "displayName": "Userdata persistence (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a", + "displayName": "Include local directory path when uploading files to a server (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_iz_partname1606_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneallowuserdatapersistence_iz_partname1606_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols", "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_iz_partname1201", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201", "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions", "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00", "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_65536", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_65536", "displayName": "High safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_131072", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_131072", "displayName": "Medium safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_196608", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_196608", "displayName": "Low safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_8388608", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_8388608", "displayName": "Custom", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonejavapermissions_iz_partname1c00_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_0", "displayName": "Disable Java", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe", + "displayName": "Launching applications and files in an IFRAME (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_iz_partname1804", + "displayName": "Launching applications and files in an IFRAME (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_iz_partname1607_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_iz_partname1804_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_iz_partname1607_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_iz_partname1804_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownlocalmachinezonenavigatewindowsandframes_iz_partname1607_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_iz_partname1804_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources", - "displayName": "Access data sources across domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions", + "displayName": "Logon options (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_iz_partname1406", - "displayName": "Access data sources across domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00", + "displayName": "Logon options (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_iz_partname1406_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00_196608", + "displayName": "Anonymous logon", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_iz_partname1406_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00_131072", + "displayName": "Automatic logon only in Intranet zone", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowaccesstodatasources_iz_partname1406_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00_0", + "displayName": "Automatic logon with current username and password", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00_65536", + "displayName": "Prompt for user name and password", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols", - "displayName": "Automatic prompting for ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201", - "displayName": "Automatic prompting for ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_iz_partname1607_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_iz_partname1607_3", "displayName": "Disable", "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_iz_partname1607_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads", - "displayName": "Automatic prompting for file downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins", + "displayName": "Run ActiveX controls and plugins (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200", - "displayName": "Automatic prompting for file downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200", + "displayName": "Run ActiveX controls and plugins (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200_65536", + "displayName": "Administrator approved", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200_3", "displayName": "Disable", "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads", - "displayName": "Allow font downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode", + "displayName": "Run .NET Framework-reliant components signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_iz_partname1604", - "displayName": "Allow font downloads (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001", + "displayName": "Run .NET Framework-reliant components signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_iz_partname1604_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_iz_partname1604_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowfontdownloads_iz_partname1604_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting", + "displayName": "Script ActiveX controls marked safe for scripting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_iz_partname2101", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_iz_partname1405", + "displayName": "Script ActiveX controls marked safe for scripting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_iz_partname2101_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_iz_partname1405_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_iz_partname2101_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_iz_partname1405_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowlessprivilegedsites_iz_partname2101_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_iz_partname1405_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets", + "displayName": "Scripting of Java applets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_iz_partname1402", + "displayName": "Scripting of Java applets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_iz_partname1402_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_iz_partname1402_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_iz_partname1402_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets", - "displayName": "Allow scriptlets (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles", + "displayName": "Show security warning for potentially unsafe files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_iz_partname1209", - "displayName": "Scriptlets (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806", + "displayName": "Launching programs and unsafe files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_iz_partname1209_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowscriptlets_iz_partname1209_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_3", "displayName": "Disable", "description": null + }, + { + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_1", + "displayName": "Prompt", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie", - "displayName": "Turn on SmartScreen Filter scan (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode", + "displayName": "Turn on Protected Mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_iz_partname2301", - "displayName": "Use SmartScreen Filter (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_iz_partname2500", + "displayName": "Protected Mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_iz_partname2301_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_iz_partname2500_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowsmartscreenie_iz_partname2301_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_iz_partname2500_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence", - "displayName": "Userdata persistence (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker", + "displayName": "Use Pop-up Blocker (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_iz_partname1606", - "displayName": "Userdata persistence (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_iz_partname1809", + "displayName": "Use Pop-up Blocker (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_iz_partname1606_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_iz_partname1809_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneallowuserdatapersistence_iz_partname1606_3", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_iz_partname1809_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols", - "displayName": "Initialize and script ActiveX controls not marked as safe (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictfiledownloadinternetexplorerprocesses", + "displayName": "Internet Explorer Processes (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictfiledownloadinternetexplorerprocesses_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_restrictfiledownloadinternetexplorerprocesses_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201", - "displayName": "Initialize and script ActiveX controls not marked as safe (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_3", - "displayName": "Disable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_1", - "displayName": "Prompt", - "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions", - "displayName": "Java permissions (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_scriptedwindowsecurityrestrictionsinternetexplorerprocesses", + "displayName": "Internet Explorer Processes (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_0", + "id": "user_vendor_msft_policy_config_internetexplorer_scriptedwindowsecurityrestrictionsinternetexplorerprocesses_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_1", + "id": "user_vendor_msft_policy_config_internetexplorer_scriptedwindowsecurityrestrictionsinternetexplorerprocesses_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00", - "displayName": "Java permissions (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_searchproviderlist", + "displayName": "Restrict search providers to a specific list (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_65536", - "displayName": "High safety", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_131072", - "displayName": "Medium safety", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_196608", - "displayName": "Low safety", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_8388608", - "displayName": "Custom", + "id": "user_vendor_msft_policy_config_internetexplorer_searchproviderlist_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonejavapermissions_iz_partname1c00_0", - "displayName": "Disable Java", + "id": "user_vendor_msft_policy_config_internetexplorer_searchproviderlist_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_sendsitesnotinenterprisesitelisttoedge", + "displayName": "Send all sites not included in the Enterprise Mode Site List to Microsoft Edge. (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_0", + "id": "user_vendor_msft_policy_config_internetexplorer_sendsitesnotinenterprisesitelisttoedge_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_1", + "id": "user_vendor_msft_policy_config_internetexplorer_sendsitesnotinenterprisesitelisttoedge_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_specifyuseofactivexinstallerservice", + "displayName": "Specify use of ActiveX Installer Service for installation of ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_iz_partname1607_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_iz_partname1607_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_internetexplorer_specifyuseofactivexinstallerservice_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddownrestrictedsiteszonenavigatewindowsandframes_iz_partname1607_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_internetexplorer_specifyuseofactivexinstallerservice_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources", "displayName": "Access data sources across domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_iz_partname1406", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_iz_partname1406", "displayName": "Access data sources across domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_iz_partname1406_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_iz_partname1406_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_iz_partname1406_3", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_iz_partname1406_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowaccesstodatasources_iz_partname1406_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_iz_partname1406_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols", "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201", "displayName": "Automatic prompting for ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads", "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200", "displayName": "Automatic prompting for file downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads", "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_iz_partname1604", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_iz_partname1604", "displayName": "Allow font downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_iz_partname1604_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_iz_partname1604_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_iz_partname1604_3", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_iz_partname1604_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowfontdownloads_iz_partname1604_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_iz_partname1604_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites", "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_iz_partname2101", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_iz_partname2101", "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_iz_partname2101_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_iz_partname2101_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_iz_partname2101_3", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_iz_partname2101_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowlessprivilegedsites_iz_partname2101_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_iz_partname2101_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents", "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004", "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_3", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_3", "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_1", "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets", "displayName": "Allow scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_iz_partname1209", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_iz_partname1209", "displayName": "Scriptlets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_iz_partname1209_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_iz_partname1209_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowscriptlets_iz_partname1209_3", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_iz_partname1209_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie", "displayName": "Turn on SmartScreen Filter scan (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_iz_partname2301", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_iz_partname2301", "displayName": "Use SmartScreen Filter (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_iz_partname2301_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_iz_partname2301_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowsmartscreenie_iz_partname2301_3", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_iz_partname2301_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence", "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_iz_partname1606", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_iz_partname1606", "displayName": "Userdata persistence (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_iz_partname1606_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_iz_partname1606_0", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneallowuserdatapersistence_iz_partname1606_3", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_iz_partname1606_3", "displayName": "Disable", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols", - "displayName": "Initialize and script ActiveX controls not marked as safe (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols", + "displayName": "Don't run antimalware programs against ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201", - "displayName": "Initialize and script ActiveX controls not marked as safe (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", + "displayName": "Don't run antimalware programs against ActiveX controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", "displayName": "Disable", "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_1", - "displayName": "Prompt", - "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions", - "displayName": "Java permissions (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols", + "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00", - "displayName": "Java permissions (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201", + "displayName": "Initialize and script ActiveX controls not marked as safe (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_65536", - "displayName": "High safety", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_131072", - "displayName": "Medium safety", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_196608", - "displayName": "Low safety", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_8388608", - "displayName": "Custom", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonejavapermissions_iz_partname1c00_0", - "displayName": "Disable Java", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions", + "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00", + "displayName": "Java permissions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_iz_partname1607_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_65536", + "displayName": "High safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_iz_partname1607_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_131072", + "displayName": "Medium safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_lockeddowntrustedsiteszonenavigatewindowsandframes_iz_partname1607_1", - "displayName": "Prompt", - "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_mimesniffingsafetyfeatureinternetexplorerprocesses", - "displayName": "Internet Explorer Processes (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_mimesniffingsafetyfeatureinternetexplorerprocesses_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_196608", + "displayName": "Low safety", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_mimesniffingsafetyfeatureinternetexplorerprocesses_1", - "displayName": "Enabled", - "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_mkprotocolsecurityrestrictioninternetexplorerprocesses", - "displayName": "Internet Explorer Processes (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_mkprotocolsecurityrestrictioninternetexplorerprocesses_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_8388608", + "displayName": "Custom", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_mkprotocolsecurityrestrictioninternetexplorerprocesses_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_0", + "displayName": "Disable Java", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_newtabdefaultpage", - "displayName": "Specify default behavior for a new tab (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonelogonoptions", + "displayName": "Logon options (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonelogonoptions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonelogonoptions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions", - "displayName": "New tab behavior (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonelogonoptions_iz_partname1a00", + "displayName": "Logon options (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions_3", - "displayName": "New tab page with my news feed", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions_0", - "displayName": "about:blank", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonelogonoptions_iz_partname1a00_196608", + "displayName": "Anonymous logon", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions_2", - "displayName": "New tab page", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonelogonoptions_iz_partname1a00_131072", + "displayName": "Automatic logon only in Intranet zone", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_newtabdefaultpage_newtabactionoptions_1", - "displayName": "Home page", - "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_notificationbarinternetexplorerprocesses", - "displayName": "Internet Explorer Processes (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_notificationbarinternetexplorerprocesses_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonelogonoptions_iz_partname1a00_0", + "displayName": "Automatic logon with current username and password", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_notificationbarinternetexplorerprocesses_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonelogonoptions_iz_partname1a00_65536", + "displayName": "Prompt for user name and password", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter", - "displayName": "Prevent managing SmartScreen Filter (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes", + "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_0", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_1", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_ie9safetyfilteroptions", - "displayName": "Select SmartScreen Filter mode (User)", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_iz_partname1607", + "displayName": "Navigate windows and frames across different domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_ie9safetyfilteroptions_0", - "displayName": "Off", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_iz_partname1607_0", + "displayName": "Enable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_preventmanagingsmartscreenfilter_ie9safetyfilteroptions_1", - "displayName": "On", - "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_preventperuserinstallationofactivexcontrols", - "displayName": "Prevent per-user installation of ActiveX controls (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_preventperuserinstallationofactivexcontrols_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_iz_partname1607_3", + "displayName": "Disable", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_preventperuserinstallationofactivexcontrols_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_iz_partname1607_1", + "displayName": "Prompt", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_protectionfromzoneelevationinternetexplorerprocesses", - "displayName": "Internet Explorer Processes (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_protectionfromzoneelevationinternetexplorerprocesses_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_protectionfromzoneelevationinternetexplorerprocesses_1", - "displayName": "Enabled", - "description": null - } - ] + "id": "user_vendor_msft_policy_config_kioskbrowser_blockedurlexceptions", + "displayName": "Blocked Url Exceptions (User)", + "options": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_removerunthistimebuttonforoutdatedactivexcontrols", - "displayName": "Remove \"Run this time\" button for outdated ActiveX controls in Internet Explorer (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_removerunthistimebuttonforoutdatedactivexcontrols_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_removerunthistimebuttonforoutdatedactivexcontrols_1", - "displayName": "Enabled", - "description": null - } - ] + "id": "user_vendor_msft_policy_config_kioskbrowser_blockedurls", + "displayName": "Blocked Urls (User)", + "options": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_resetzoomfordialoginiemode", - "displayName": "Reset zoom to default for HTML dialogs in Internet Explorer mode (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_resetzoomfordialoginiemode_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_resetzoomfordialoginiemode_1", - "displayName": "Enabled", - "description": null - } - ] + "id": "user_vendor_msft_policy_config_kioskbrowser_defaulturl", + "displayName": "Default URL (User)", + "options": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictactivexinstallinternetexplorerprocesses", - "displayName": "Internet Explorer Processes (User)", + "id": "user_vendor_msft_policy_config_kioskbrowser_enableendsessionbutton", + "displayName": "Enable End Session Button (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictactivexinstallinternetexplorerprocesses_0", - "displayName": "Disabled", - "description": null + "id": "user_vendor_msft_policy_config_kioskbrowser_enableendsessionbutton_1", + "displayName": "Enable", + "description": "Enable" }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictactivexinstallinternetexplorerprocesses_1", - "displayName": "Enabled", - "description": null + "id": "user_vendor_msft_policy_config_kioskbrowser_enableendsessionbutton_0", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources", - "displayName": "Access data sources across domains (User)", + "id": "user_vendor_msft_policy_config_kioskbrowser_enablehomebutton", + "displayName": "Enable Home Button (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_0", - "displayName": "Disabled", - "description": null + "id": "user_vendor_msft_policy_config_kioskbrowser_enablehomebutton_1", + "displayName": "Enable", + "description": "Enable" }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_1", - "displayName": "Enabled", - "description": null + "id": "user_vendor_msft_policy_config_kioskbrowser_enablehomebutton_0", + "displayName": "Disable", + "description": "Disable" } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_iz_partname1406", - "displayName": "Access data sources across domains (User)", + "id": "user_vendor_msft_policy_config_kioskbrowser_enablenavigationbuttons", + "displayName": "Enable Navigation Buttons (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_iz_partname1406_0", + "id": "user_vendor_msft_policy_config_kioskbrowser_enablenavigationbuttons_1", "displayName": "Enable", - "description": null + "description": "Enable" }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_iz_partname1406_3", + "id": "user_vendor_msft_policy_config_kioskbrowser_enablenavigationbuttons_0", "displayName": "Disable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowaccesstodatasources_iz_partname1406_1", - "displayName": "Prompt", - "description": null + "description": "Disable" } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting", - "displayName": "Allow active scripting (User)", + "id": "user_vendor_msft_policy_config_kioskbrowser_restartonidletime", + "displayName": "Restart On Idle Time (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_1", + "displayName": "Specify server (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_0", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_1_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_1", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_1_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_iz_partname1400", - "displayName": "Allow active scripting (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_iz_partname1400_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_iz_partname1400_3", - "displayName": "Disable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowactivescripting_iz_partname1400_1", - "displayName": "Prompt", - "description": null - } - ] + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_1_l_serveraddressexternal_value", + "displayName": "DNS name of the external server (User)", + "options": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols", - "displayName": "Automatic prompting for ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_1_l_serveraddressinternal_value", + "displayName": "DNS name of the internal server (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfiguredservercheckvalues_1", + "displayName": "Additional server versions supported (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_0", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfiguredservercheckvalues_1_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_1", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfiguredservercheckvalues_1_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201", - "displayName": "Automatic prompting for ActiveX controls (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", - "displayName": "Disable", - "description": null - } - ] + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfiguredservercheckvalues_1_l_configuredservercheckvalues_value", + "displayName": "Server version names (semicolon separated list): (User)", + "options": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads", - "displayName": "Automatic prompting for file downloads (User)", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableautomaticsendtracing_1", + "displayName": "Disable automatic upload of sign-in failure logs (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_0", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableautomaticsendtracing_1_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_1", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableautomaticsendtracing_1_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200", - "displayName": "Automatic prompting for file downloads (User)", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablehttpconnect_1", + "displayName": "Disable HTTP fallback for SIP connection (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablehttpconnect_1_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablehttpconnect_1_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors", - "displayName": "Allow binary and script behaviors (User)", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablentcredentials_1", + "displayName": "Require logon credentials (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_0", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablentcredentials_1_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_1", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablentcredentials_1_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_iz_partname2000", - "displayName": "Allow Binary and Script Behaviors (User)", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableservercheck_1", + "displayName": "Disable server version check (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_iz_partname2000_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_iz_partname2000_65536", - "displayName": "Administrator approved", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableservercheck_1_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowbinaryandscriptbehaviors_iz_partname2000_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableservercheck_1_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript", - "displayName": "Allow cut, copy or paste operations from the clipboard via script (User)", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablebitsforgaldownload_1", + "displayName": "Enable using BITS to download Address Book Service files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_0", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablebitsforgaldownload_1_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_1", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablebitsforgaldownload_1_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_iz_partname1407", - "displayName": "Allow paste operations via script (User)", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablesiphighsecuritymode_1", + "displayName": "Configure SIP security mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_iz_partname1407_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_iz_partname1407_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablesiphighsecuritymode_1_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowcopypasteviascript_iz_partname1407_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablesiphighsecuritymode_1_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles", - "displayName": "Allow drag and drop or copy and paste files (User)", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policygaldownloadinitialdelay_1", + "displayName": "Global Address Book Download Initial Delay (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_0", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policygaldownloadinitialdelay_1_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_1", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policygaldownloadinitialdelay_1_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_iz_partname1802", - "displayName": "Allow drag and drop or copy and paste files (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_iz_partname1802_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_iz_partname1802_3", - "displayName": "Disable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowdraganddropcopyandpastefiles_iz_partname1802_1", - "displayName": "Prompt", - "description": null - } - ] + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policygaldownloadinitialdelay_1_l_galdownloadinitialdelay_value", + "displayName": "Maximum possible number of minutes to delay download: (User)", + "options": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads", - "displayName": "Allow file downloads (User)", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policypreventrun_1", + "displayName": "Prevent users from running Microsoft Lync (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_0", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policypreventrun_1_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_1", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policypreventrun_1_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_iz_partname1803", - "displayName": "Allow file downloads (User)", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysavepassword_1", + "displayName": "Allow storage of user passwords (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_iz_partname1803_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysavepassword_1_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfiledownloads_iz_partname1803_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysavepassword_1_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads", - "displayName": "Allow font downloads (User)", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1", + "displayName": "Configure SIP compression mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_0", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_1", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_iz_partname1604", - "displayName": "Allow font downloads (User)", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1_l_policysipcompression", + "displayName": "Configure SIP compression mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_iz_partname1604_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1_l_policysipcompression_0", + "displayName": "Always disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_iz_partname1604_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1_l_policysipcompression_1", + "displayName": "Always enabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowfontdownloads_iz_partname1604_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1_l_policysipcompression_2", + "displayName": "Based on adaptor speed (default)", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1_l_policysipcompression_3", + "displayName": "Based on ping round-trip time", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policytrustmodeldata_1", + "displayName": "Trusted Domain List (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_0", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policytrustmodeldata_1_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_1", + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policytrustmodeldata_1_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_iz_partname2101", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_iz_partname2101_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_iz_partname2101_3", - "displayName": "Disable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowlessprivilegedsites_iz_partname2101_1", - "displayName": "Prompt", - "description": null - } - ] + "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policytrustmodeldata_1_l_trustmodeldata_value", + "displayName": "Trusted Domains (comma separated list): (User)", + "options": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles", - "displayName": "Allow loading of XAML files (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder", + "displayName": "Configure the location of the browser executable folder (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_0", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_1", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_iz_partname2402", - "displayName": "XAML Files (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_iz_partname2402_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_iz_partname2402_3", - "displayName": "Disable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowloadingofxamlfiles_iz_partname2402_1", - "displayName": "Prompt", - "description": null - } - ] + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_browserexecutablefolderdesc", + "displayName": "Set value name to the Application User Model ID or the executable file name. You can use the \"*\" wildcard as value name to apply to all applications. (User)", + "options": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh", - "displayName": "Allow META REFRESH (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_browserexecutablefolderdesc_key", + "displayName": "Name", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_browserexecutablefolderdesc_value", + "displayName": "Value", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference", + "displayName": "Set the release channel search order preference (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_0", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_1", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_iz_partname1608", - "displayName": "Allow META REFRESH (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_iz_partname1608_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowmetarefresh_iz_partname1608_3", - "displayName": "Disable", - "description": null - } - ] + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_releasechannelpreferencedesc", + "displayName": "Set value name to the Application User Model ID or the executable file name. You can use the \"*\" wildcard as value name to apply to all applications. (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_releasechannelpreferencedesc_key", + "displayName": "Name", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_releasechannelpreferencedesc_value", + "displayName": "Value", + "options": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol", + "displayName": "Control communication with the Experimentation and Configuration Service (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_0", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_1", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol", + "displayName": "Control communication with the Experimentation and Configuration Service (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_2", + "displayName": "Retrieve configurations and experiments", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_1", + "displayName": "Retrieve configurations only", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_0", + "displayName": "Disable communication with the Experimentation and Configuration Service", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols", - "displayName": "Allow only approved domains to use ActiveX controls without prompt (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_forcepermissionpolicyunloaddefaultenabled", + "displayName": "Controls whether unload event handlers can be disabled. (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_0", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_forcepermissionpolicyunloaddefaultenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_1", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_forcepermissionpolicyunloaddefaultenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b", - "displayName": "Only allow approved domains to use ActiveX controls without prompt (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist", + "displayName": "HTTP Allowlist (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b_3", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstouseactivexcontrols_iz_partname120b_0", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol", - "displayName": "Allow only approved domains to use the TDC ActiveX control (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_httpallowlistdesc", + "displayName": "HTTP Allowlist (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_httpallowlistdesc_key", + "displayName": "Name", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_httpallowlistdesc_value", + "displayName": "Value", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newbaseurlinheritancebehaviorallowed", + "displayName": "Allows enabling the feature NewBaseUrlInheritanceBehavior (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_0", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newbaseurlinheritancebehaviorallowed_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_1", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newbaseurlinheritancebehaviorallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c", - "displayName": "Only allow approved domains to use the TDC ActiveX control (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list", + "displayName": "Enable built-in PDF reader powered by Adobe Acrobat for WebView2 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c_3", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowonlyapproveddomainstousetdcactivexcontrol_iz_partname120c_0", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols", - "displayName": "Allow scripting of Internet Explorer WebBrowser controls (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_newpdfreaderwebview2listdesc", + "displayName": "Set value name to the Application User Model ID or the executable file name. You can use the \"*\" wildcard as value name to apply to all applications. (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_newpdfreaderwebview2listdesc_key", + "displayName": "Name", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_newpdfreaderwebview2listdesc_value", + "displayName": "Value", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_rsakeyusageforlocalanchorsenabled", + "displayName": "Check RSA key usage for server certificates issued by local trust anchors (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_0", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_rsakeyusageforlocalanchorsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_1", + "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_rsakeyusageforlocalanchorsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206", - "displayName": "Internet Explorer web browser control (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowdeletingbrowserhistory", + "displayName": "Enable deleting browser and download history (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowdeletingbrowserhistory_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptingofinternetexplorerwebbrowsercontrols_iz_partname1206_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowdeletingbrowserhistory_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows", - "displayName": "Allow script-initiated windows without size or position constraints (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowfileselectiondialogs", + "displayName": "Allow file selection dialogs (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowfileselectiondialogs_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowfileselectiondialogs_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_iz_partname2102", - "displayName": "Allow script-initiated windows without size or position constraints (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_alwaysopenpdfexternally", + "displayName": "Always open PDF files externally (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_iz_partname2102_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_alwaysopenpdfexternally_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptinitiatedwindows_iz_partname2102_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_alwaysopenpdfexternally_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets", - "displayName": "Allow scriptlets (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_applicationlocalevalue", + "displayName": "Set application locale (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_applicationlocalevalue_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_applicationlocalevalue_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_iz_partname1209", - "displayName": "Scriptlets (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_applicationlocalevalue_applicationlocalevalue", + "displayName": "Application locale (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowed", + "displayName": "Allow or block audio capture (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_iz_partname1209_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowed_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowscriptlets_iz_partname1209_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowed_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie", - "displayName": "Turn on SmartScreen Filter scan (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowedurls", + "displayName": "Sites that can access audio capture devices without requesting permission (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowedurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowedurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_iz_partname2301", - "displayName": "Use SmartScreen Filter (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowedurls_audiocaptureallowedurlsdesc", + "displayName": "Sites that can access audio capture devices without requesting permission (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofilladdressenabled", + "displayName": "Enable AutoFill for addresses (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_iz_partname2301_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofilladdressenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowsmartscreenie_iz_partname2301_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofilladdressenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript", - "displayName": "Allow updates to status bar via script (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofillcreditcardenabled", + "displayName": "Enable AutoFill for payment instruments (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofillcreditcardenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofillcreditcardenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_iz_partname2103", - "displayName": "Status bar updates via script (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun", + "displayName": "Automatically import another browser's data and settings at first run (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_iz_partname2103_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowupdatestostatusbarviascript_iz_partname2103_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence", - "displayName": "Userdata persistence (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun", + "displayName": "Automatically import another browser's data and settings at first run (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_0", + "displayName": "Automatically imports all supported datatypes and settings from the default browser", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_1", + "displayName": "Automatically imports all supported datatypes and settings from Internet Explorer", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_2", + "displayName": "Automatically imports all supported datatypes and settings from Google Chrome", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_3", + "displayName": "Automatically imports all supported datatypes and settings from Safari", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_4", + "displayName": "Disables automatic import, and the import section of the first-run experience is skipped", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_iz_partname1606", - "displayName": "Userdata persistence (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_backgroundmodeenabled", + "displayName": "Continue running background apps after Microsoft Edge closes (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_iz_partname1606_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_backgroundmodeenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowuserdatapersistence_iz_partname1606_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_backgroundmodeenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer", - "displayName": "Allow VBScript to run in Internet Explorer (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_blockthirdpartycookies", + "displayName": "Block third party cookies (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_blockthirdpartycookies_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_blockthirdpartycookies_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_iz_partname140c", - "displayName": "Allow VBScript to run in Internet Explorer (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browseraddprofileenabled", + "displayName": "Enable profile creation from the Identity flyout menu or the Settings page (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_iz_partname140c_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_iz_partname140c_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browseraddprofileenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneallowvbscripttorunininternetexplorer_iz_partname140c_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browseraddprofileenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols", - "displayName": "Don't run antimalware programs against ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browserguestmodeenabled", + "displayName": "Enable guest mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browserguestmodeenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browserguestmodeenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", - "displayName": "Don't run antimalware programs against ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsernetworktimequeriesenabled", + "displayName": "Allow queries to a Browser Network Time service (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsernetworktimequeriesenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsernetworktimequeriesenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols", - "displayName": "Download signed ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin", + "displayName": "Browser sign-in settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_iz_partname1001", - "displayName": "Download signed ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_browsersignin", + "displayName": "Browser sign-in settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_iz_partname1001_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_browsersignin_0", + "displayName": "Disable browser sign-in", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_iz_partname1001_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_browsersignin_1", + "displayName": "Enable browser sign-in", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadsignedactivexcontrols_iz_partname1001_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_browsersignin_2", + "displayName": "Force users to sign-in to use the browser", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols", - "displayName": "Download unsigned ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_builtindnsclientenabled", + "displayName": "Use built-in DNS client (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_builtindnsclientenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_builtindnsclientenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_iz_partname1004", - "displayName": "Download unsigned ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforcas", + "displayName": "Disable Certificate Transparency enforcement for a list of subjectPublicKeyInfo hashes (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_iz_partname1004_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_iz_partname1004_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforcas_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonedownloadunsignedactivexcontrols_iz_partname1004_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforcas_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter", - "displayName": "Turn on Cross-Site Scripting Filter (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforcas_certificatetransparencyenforcementdisabledforcasdesc", + "displayName": "Disable Certificate Transparency enforcement for a list of subjectPublicKeyInfo hashes (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforlegacycas", + "displayName": "Disable Certificate Transparency enforcement for a list of legacy certificate authorities (obsolete) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforlegacycas_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforlegacycas_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_iz_partname1409", - "displayName": "Turn on Cross-Site Scripting (XSS) Filter (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforlegacycas_certificatetransparencyenforcementdisabledforlegacycasdesc", + "displayName": "Disable Certificate Transparency enforcement for a list of legacy certificate authorities (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforurls", + "displayName": "Disable Certificate Transparency enforcement for specific URLs (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_iz_partname1409_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforurls_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablecrosssitescriptingfilter_iz_partname1409_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforurls_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows", - "displayName": "Enable dragging of content from different domains across windows (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforurls_certificatetransparencyenforcementdisabledforurlsdesc", + "displayName": "Disable Certificate Transparency enforcement for specific URLs (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_componentupdatesenabled", + "displayName": "Enable component updates in Microsoft Edge (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_componentupdatesenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_componentupdatesenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709", - "displayName": "Enable dragging of content from different domains across windows (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configuredonottrack", + "displayName": "Configure Do Not Track (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configuredonottrack_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainsacrosswindows_iz_partname2709_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configuredonottrack_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows", - "displayName": "Enable dragging of content from different domains within a window (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configureonlinetexttospeech", + "displayName": "Configure Online Text To Speech (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configureonlinetexttospeech_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configureonlinetexttospeech_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708", - "displayName": "Enable dragging of content from different domains within a window (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability", + "displayName": "Control where developer tools can be used (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenabledraggingofcontentfromdifferentdomainswithinwindows_iz_partname2708_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing", - "displayName": "Enable MIME Sniffing (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_developertoolsavailability", + "displayName": "Control where developer tools can be used (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_developertoolsavailability_0", + "displayName": "Block the developer tools on extensions installed by enterprise policy, allow in other contexts", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_developertoolsavailability_1", + "displayName": "Allow using the developer tools", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_developertoolsavailability_2", + "displayName": "Don't allow using the developer tools", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_iz_partname2100", - "displayName": "Enable MIME Sniffing (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disable3dapis", + "displayName": "Disable support for 3D graphics APIs (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_iz_partname2100_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disable3dapis_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneenablemimesniffing_iz_partname2100_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disable3dapis_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver", - "displayName": "Include local path when user is uploading files to a server (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disablescreenshots", + "displayName": "Disable taking screenshots (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disablescreenshots_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disablescreenshots_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a", - "displayName": "Include local directory path when uploading files to a server (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachedir", + "displayName": "Set disk cache directory (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachedir_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneincludelocalpathwhenuploadingfilestoserver_iz_partname160a_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachedir_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols", - "displayName": "Initialize and script ActiveX controls not marked as safe (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachedir_diskcachedir", + "displayName": "Set disk cache directory (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachesize", + "displayName": "Set disk cache size, in bytes (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachesize_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachesize_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201", - "displayName": "Initialize and script ActiveX controls not marked as safe (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachesize_diskcachesize", + "displayName": "Set disk cache size: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloaddirectory", + "displayName": "Set download directory (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloaddirectory_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloaddirectory_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions", - "displayName": "Java permissions (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloaddirectory_downloaddirectory", + "displayName": "Set download directory (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions", + "displayName": "Allow download restrictions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00", - "displayName": "Java permissions (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions", + "displayName": "Download restrictions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_65536", - "displayName": "High safety", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_131072", - "displayName": "Medium safety", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_0", + "displayName": "No special restrictions", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_196608", - "displayName": "Low safety", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_1", + "displayName": "Block dangerous downloads", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_8388608", - "displayName": "Custom", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_2", + "displayName": "Block potentially dangerous downloads", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonejavapermissions_iz_partname1c00_0", - "displayName": "Disable Java", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_3", + "displayName": "Block all downloads", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe", - "displayName": "Launching applications and files in an IFRAME (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_editfavoritesenabled", + "displayName": "Allows users to edit favorites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_editfavoritesenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_editfavoritesenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_iz_partname1804", - "displayName": "Launching applications and files in an IFRAME (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledeprecatedwebplatformfeatures", + "displayName": "Re-enable deprecated web platform features for a limited time (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_iz_partname1804_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_iz_partname1804_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledeprecatedwebplatformfeatures_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelaunchingapplicationsandfilesiniframe_iz_partname1804_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledeprecatedwebplatformfeatures_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions", - "displayName": "Logon options (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledeprecatedwebplatformfeatures_enabledeprecatedwebplatformfeaturesdesc", + "displayName": "Re-enable deprecated web platform features for a limited time (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledomainactionsdownload", + "displayName": "Enable Domain Actions Download from Microsoft (deprecated) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledomainactionsdownload_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledomainactionsdownload_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00", - "displayName": "Logon options (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enableonlinerevocationchecks", + "displayName": "Enable online OCSP/CRL checks (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00_196608", - "displayName": "Anonymous logon", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00_131072", - "displayName": "Automatic logon only in Intranet zone", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00_0", - "displayName": "Automatic logon with current username and password", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enableonlinerevocationchecks_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonelogonoptions_iz_partname1a00_65536", - "displayName": "Prompt for user name and password", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enableonlinerevocationchecks_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol", + "displayName": "Control communication with the Experimentation and Configuration Service (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol", + "displayName": "Control communication with the Experimentation and Configuration Service (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_iz_partname1607_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_2", + "displayName": "Retrieve configurations and experiments", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_iz_partname1607_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_1", + "displayName": "Retrieve configurations only", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonenavigatewindowsandframes_iz_partname1607_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_0", + "displayName": "Disable communication with the Experimentation and Configuration Service", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins", - "displayName": "Run ActiveX controls and plugins (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_favoritesbarenabled", + "displayName": "Enable favorites bar (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_favoritesbarenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_favoritesbarenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200", - "displayName": "Run ActiveX controls and plugins (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200_65536", - "displayName": "Administrator approved", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200_3", - "displayName": "Disable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunactivexcontrolsandplugins_iz_partname1200_1", - "displayName": "Prompt", - "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode", - "displayName": "Run .NET Framework-reliant components signed with Authenticode (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch", + "displayName": "Enforce Bing SafeSearch (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001", - "displayName": "Run .NET Framework-reliant components signed with Authenticode (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_forcebingsafesearch", + "displayName": "Enforce Bing SafeSearch (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_forcebingsafesearch_0", + "displayName": "Don't configure search restrictions in Bing", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_forcebingsafesearch_1", + "displayName": "Configure moderate search restrictions in Bing", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonerunnetframeworkreliantcomponentssignedwithauthenticode_iz_partname2001_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_forcebingsafesearch_2", + "displayName": "Configure strict search restrictions in Bing", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting", - "displayName": "Script ActiveX controls marked safe for scripting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceephemeralprofiles", + "displayName": "Enable use of ephemeral profiles (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceephemeralprofiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceephemeralprofiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_iz_partname1405", - "displayName": "Script ActiveX controls marked safe for scripting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcegooglesafesearch", + "displayName": "Enforce Google SafeSearch (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_iz_partname1405_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_iz_partname1405_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcegooglesafesearch_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptactivexcontrolsmarkedsafeforscripting_iz_partname1405_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcegooglesafesearch_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets", - "displayName": "Scripting of Java applets (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict", + "displayName": "Force minimum YouTube Restricted Mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_iz_partname1402", - "displayName": "Scripting of Java applets (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_forceyoutuberestrict", + "displayName": "Force minimum YouTube Restricted Mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_iz_partname1402_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_forceyoutuberestrict_0", + "displayName": "Do not enforce Restricted Mode on YouTube", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_iz_partname1402_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_forceyoutuberestrict_1", + "displayName": "Enforce at least Moderate Restricted Mode on YouTube", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszonescriptingofjavaapplets_iz_partname1402_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_forceyoutuberestrict_2", + "displayName": "Enforce Strict Restricted Mode for YouTube", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles", - "displayName": "Show security warning for potentially unsafe files (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_fullscreenallowed", + "displayName": "Allow full screen mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_fullscreenallowed_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_fullscreenallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806", - "displayName": "Launching programs and unsafe files (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_hardwareaccelerationmodeenabled", + "displayName": "Use hardware acceleration when available (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_hardwareaccelerationmodeenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneshowsecuritywarningforpotentiallyunsafefiles_iz_partname1806_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_hardwareaccelerationmodeenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode", - "displayName": "Turn on Protected Mode (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importautofillformdata", + "displayName": "Allow importing of autofill form data (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importautofillformdata_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importautofillformdata_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_iz_partname2500", - "displayName": "Protected Mode (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importfavorites", + "displayName": "Allow importing of favorites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_iz_partname2500_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importfavorites_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneturnonprotectedmode_iz_partname2500_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importfavorites_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker", - "displayName": "Use Pop-up Blocker (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhistory", + "displayName": "Allow importing of browsing history (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhistory_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhistory_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_iz_partname1809", - "displayName": "Use Pop-up Blocker (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhomepage", + "displayName": "Allow importing of home page settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_iz_partname1809_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhomepage_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictedsiteszoneusepopupblocker_iz_partname1809_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhomepage_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictfiledownloadinternetexplorerprocesses", - "displayName": "Internet Explorer Processes (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importpaymentinfo", + "displayName": "Allow importing of payment info (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictfiledownloadinternetexplorerprocesses_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importpaymentinfo_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_restrictfiledownloadinternetexplorerprocesses_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importpaymentinfo_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_scriptedwindowsecurityrestrictionsinternetexplorerprocesses", - "displayName": "Internet Explorer Processes (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsavedpasswords", + "displayName": "Allow importing of saved passwords (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_scriptedwindowsecurityrestrictionsinternetexplorerprocesses_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsavedpasswords_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_scriptedwindowsecurityrestrictionsinternetexplorerprocesses_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsavedpasswords_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_searchproviderlist", - "displayName": "Restrict search providers to a specific list (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsearchengine", + "displayName": "Allow importing of search engine settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_searchproviderlist_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsearchengine_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_searchproviderlist_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsearchengine_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_sendsitesnotinenterprisesitelisttoedge", - "displayName": "Send all sites not included in the Enterprise Mode Site List to Microsoft Edge. (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability", + "displayName": "Configure InPrivate mode availability (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_sendsitesnotinenterprisesitelisttoedge_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_sendsitesnotinenterprisesitelisttoedge_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_specifyuseofactivexinstallerservice", - "displayName": "Specify use of ActiveX Installer Service for installation of ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_inprivatemodeavailability", + "displayName": "Configure InPrivate mode availability (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_specifyuseofactivexinstallerservice_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_inprivatemodeavailability_0", + "displayName": "InPrivate mode available", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_specifyuseofactivexinstallerservice_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_inprivatemodeavailability_1", + "displayName": "InPrivate mode disabled", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_inprivatemodeavailability_2", + "displayName": "InPrivate mode forced", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources", - "displayName": "Access data sources across domains (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel", + "displayName": "Configure Internet Explorer integration (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_iz_partname1406", - "displayName": "Access data sources across domains (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_internetexplorerintegrationlevel", + "displayName": "Configure Internet Explorer integration (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_iz_partname1406_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_iz_partname1406_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_internetexplorerintegrationlevel_1", + "displayName": "Internet Explorer mode", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowaccesstodatasources_iz_partname1406_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_internetexplorerintegrationlevel_2", + "displayName": "Internet Explorer 11", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols", - "displayName": "Automatic prompting for ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_isolateorigins", + "displayName": "Enable site isolation for specific origins (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_isolateorigins_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_isolateorigins_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201", - "displayName": "Automatic prompting for ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_isolateorigins_isolateorigins", + "displayName": "Enable site isolation for specific origins (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedfavorites", + "displayName": "Configure favorites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedfavorites_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforactivexcontrols_iz_partname2201_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedfavorites_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads", - "displayName": "Automatic prompting for file downloads (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedfavorites_managedfavorites", + "displayName": "Configure favorites (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedsearchengines", + "displayName": "Manage Search Engines (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedsearchengines_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedsearchengines_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200", - "displayName": "Automatic prompting for file downloads (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedsearchengines_managedsearchengines", + "displayName": "Manage Search Engines (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_maxconnectionsperproxy", + "displayName": "Maximum number of concurrent connections to the proxy server (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_maxconnectionsperproxy_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowautomaticpromptingforfiledownloads_iz_partname2200_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_maxconnectionsperproxy_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads", - "displayName": "Allow font downloads (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_maxconnectionsperproxy_maxconnectionsperproxy", + "displayName": "Maximum number of concurrent connections to the proxy server: (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_mediaroutercastallowallips", + "displayName": "Allow Google Cast to connect to Cast devices on all IP addresses (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_mediaroutercastallowallips_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_mediaroutercastallowallips_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_iz_partname1604", - "displayName": "Allow font downloads (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_metricsreportingenabled", + "displayName": "Enable usage and crash-related data reporting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_iz_partname1604_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_iz_partname1604_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_metricsreportingenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowfontdownloads_iz_partname1604_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_metricsreportingenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions", + "displayName": "Enable network prediction (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_iz_partname2101", - "displayName": "Web sites in less privileged Web content zones can navigate into this zone (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_networkpredictionoptions", + "displayName": "Enable network prediction (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_iz_partname2101_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_networkpredictionoptions_0", + "displayName": "Predict network actions on any network connection", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_iz_partname2101_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_networkpredictionoptions_1", + "displayName": "Predict network actions on any network that is not cellular.\r\n(Deprecated in 50, removed in 52. After 52, if value 1 is set, it will be treated as 0 - predict network actions on any network connection.)", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowlessprivilegedsites_iz_partname2101_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_networkpredictionoptions_2", + "displayName": "Don't predict network actions on any network connection", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_overridesecurityrestrictionsoninsecureorigin", + "displayName": "Control where security restrictions on insecure origins apply (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_overridesecurityrestrictionsoninsecureorigin_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_overridesecurityrestrictionsoninsecureorigin_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004", - "displayName": "Run .NET Framework-reliant components not signed with Authenticode (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_3", - "displayName": "Disable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallownetframeworkreliantcomponents_iz_partname2004_1", - "displayName": "Prompt", - "description": null - } - ] + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_overridesecurityrestrictionsoninsecureorigin_overridesecurityrestrictionsoninsecureorigindesc", + "displayName": "Control where security restrictions on insecure origins apply (User)", + "options": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets", - "displayName": "Allow scriptlets (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_proactiveauthenabled", + "displayName": "Enable Proactive Authentication (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_proactiveauthenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_proactiveauthenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_iz_partname1209", - "displayName": "Scriptlets (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promotionaltabsenabled", + "displayName": "Enable full-tab promotional content (deprecated) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_iz_partname1209_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promotionaltabsenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowscriptlets_iz_partname1209_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promotionaltabsenabled_1", + "displayName": "Enabled", "description": null } ] }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie", - "displayName": "Turn on SmartScreen Filter scan (User)", + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promptfordownloadlocation", + "displayName": "Ask where to save downloaded files (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promptfordownloadlocation_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promptfordownloadlocation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_iz_partname2301", - "displayName": "Use SmartScreen Filter (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_quicallowed", + "displayName": "Allow QUIC protocol (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_iz_partname2301_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_quicallowed_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowsmartscreenie_iz_partname2301_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_quicallowed_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence", - "displayName": "Userdata persistence (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_applicationlocalevalue_recommended", + "displayName": "Set application locale (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_applicationlocalevalue_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_applicationlocalevalue_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_iz_partname1606", - "displayName": "Userdata persistence (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_applicationlocalevalue_recommended_applicationlocalevalue", + "displayName": "Application locale (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofilladdressenabled_recommended", + "displayName": "Enable AutoFill for addresses (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_iz_partname1606_0", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofilladdressenabled_recommended_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneallowuserdatapersistence_iz_partname1606_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofilladdressenabled_recommended_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols", - "displayName": "Don't run antimalware programs against ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofillcreditcardenabled_recommended", + "displayName": "Enable AutoFill for credit cards (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofillcreditcardenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofillcreditcardenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c", - "displayName": "Don't run antimalware programs against ActiveX controls (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_backgroundmodeenabled_recommended", + "displayName": "Continue running background apps after Microsoft Edge closes (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_3", - "displayName": "Enable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_backgroundmodeenabled_recommended_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonedonotrunantimalwareagainstactivexcontrols_iz_partname270c_0", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_backgroundmodeenabled_recommended_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols", - "displayName": "Initialize and script ActiveX controls not marked as safe (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_blockthirdpartycookies_recommended", + "displayName": "Block third party cookies (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_blockthirdpartycookies_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_blockthirdpartycookies_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201", - "displayName": "Initialize and script ActiveX controls not marked as safe (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloaddirectory_recommended", + "displayName": "Set download directory (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloaddirectory_recommended_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszoneinitializeandscriptactivexcontrols_iz_partname1201_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloaddirectory_recommended_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions", - "displayName": "Java permissions (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloaddirectory_recommended_downloaddirectory", + "displayName": "Set download directory (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended", + "displayName": "Allow download restrictions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00", - "displayName": "Java permissions (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions", + "displayName": "Download restrictions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_65536", - "displayName": "High safety", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_131072", - "displayName": "Medium safety", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_0", + "displayName": "No special restrictions", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_196608", - "displayName": "Low safety", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_1", + "displayName": "Block dangerous downloads", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_8388608", - "displayName": "Custom", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_2", + "displayName": "Block potentially dangerous downloads", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonejavapermissions_iz_partname1c00_0", - "displayName": "Disable Java", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_3", + "displayName": "Block all downloads", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes", - "displayName": "Navigate windows and frames across different domains (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_favoritesbarenabled_recommended", + "displayName": "Enable favorites bar (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_favoritesbarenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_favoritesbarenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_iz_partname1607", - "displayName": "Navigate windows and frames across different domains (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importautofillformdata_recommended", + "displayName": "Allow importing of autofill form data (User)", "options": [ { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_iz_partname1607_0", - "displayName": "Enable", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_iz_partname1607_3", - "displayName": "Disable", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importautofillformdata_recommended_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_internetexplorer_trustedsiteszonenavigatewindowsandframes_iz_partname1607_1", - "displayName": "Prompt", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importautofillformdata_recommended_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_kioskbrowser_blockedurlexceptions", - "displayName": "Blocked Url Exceptions (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_kioskbrowser_blockedurls", - "displayName": "Blocked Urls (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_kioskbrowser_defaulturl", - "displayName": "Default URL (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_kioskbrowser_enableendsessionbutton", - "displayName": "Enable End Session Button (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importfavorites_recommended", + "displayName": "Allow importing of favorites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_kioskbrowser_enableendsessionbutton_1", - "displayName": "Enable", - "description": "Enable" + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importfavorites_recommended_0", + "displayName": "Disabled", + "description": null }, { - "id": "user_vendor_msft_policy_config_kioskbrowser_enableendsessionbutton_0", - "displayName": "Disable", - "description": "Disable" + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importfavorites_recommended_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_kioskbrowser_enablehomebutton", - "displayName": "Enable Home Button (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importhistory_recommended", + "displayName": "Allow importing of browsing history (User)", "options": [ { - "id": "user_vendor_msft_policy_config_kioskbrowser_enablehomebutton_1", - "displayName": "Enable", - "description": "Enable" + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importhistory_recommended_0", + "displayName": "Disabled", + "description": null }, { - "id": "user_vendor_msft_policy_config_kioskbrowser_enablehomebutton_0", - "displayName": "Disable", - "description": "Disable" + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importhistory_recommended_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_kioskbrowser_enablenavigationbuttons", - "displayName": "Enable Navigation Buttons (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importpaymentinfo_recommended", + "displayName": "Allow importing of payment info (User)", "options": [ { - "id": "user_vendor_msft_policy_config_kioskbrowser_enablenavigationbuttons_1", - "displayName": "Enable", - "description": "Enable" + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importpaymentinfo_recommended_0", + "displayName": "Disabled", + "description": null }, { - "id": "user_vendor_msft_policy_config_kioskbrowser_enablenavigationbuttons_0", - "displayName": "Disable", - "description": "Disable" + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importpaymentinfo_recommended_1", + "displayName": "Enabled", + "description": null } ] }, { - "id": "user_vendor_msft_policy_config_kioskbrowser_restartonidletime", - "displayName": "Restart On Idle Time (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_1", - "displayName": "Specify server (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsavedpasswords_recommended", + "displayName": "Allow importing of saved passwords (User)", "options": [ { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_1_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsavedpasswords_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_1_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsavedpasswords_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_1_l_serveraddressexternal_value", - "displayName": "DNS name of the external server (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfigurationmode_1_l_serveraddressinternal_value", - "displayName": "DNS name of the internal server (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfiguredservercheckvalues_1", - "displayName": "Additional server versions supported (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsearchengine_recommended", + "displayName": "Allow importing of search engine settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfiguredservercheckvalues_1_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsearchengine_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfiguredservercheckvalues_1_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsearchengine_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyconfiguredservercheckvalues_1_l_configuredservercheckvalues_value", - "displayName": "Server version names (semicolon separated list): (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableautomaticsendtracing_1", - "displayName": "Disable automatic upload of sign-in failure logs (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended", + "displayName": "Enable network prediction (User)", "options": [ { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableautomaticsendtracing_1_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableautomaticsendtracing_1_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablehttpconnect_1", - "displayName": "Disable HTTP fallback for SIP connection (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_networkpredictionoptions", + "displayName": "Enable network prediction (User)", "options": [ { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablehttpconnect_1_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_networkpredictionoptions_0", + "displayName": "Predict network actions on any network connection", "description": null }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablehttpconnect_1_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_networkpredictionoptions_1", + "displayName": "Predict network actions on any network that is not cellular.\r\n(Deprecated in 50, removed in 52. After 52, if value 1 is set, it will be treated as 0 - predict network actions on any network connection.)", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_networkpredictionoptions_2", + "displayName": "Don't predict network actions on any network connection", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablentcredentials_1", - "displayName": "Require logon credentials (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_resolvenavigationerrorsusewebservice_recommended", + "displayName": "Enable resolution of navigation errors using a web service (User)", "options": [ { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablentcredentials_1_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_resolvenavigationerrorsusewebservice_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisablentcredentials_1_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_resolvenavigationerrorsusewebservice_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableservercheck_1", - "displayName": "Disable server version check (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_searchsuggestenabled_recommended", + "displayName": "Enable search suggestions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableservercheck_1_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_searchsuggestenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policydisableservercheck_1_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_searchsuggestenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablebitsforgaldownload_1", - "displayName": "Enable using BITS to download Address Book Service files (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_syncdisabled_recommended", + "displayName": "Disable synchronization of data using Microsoft sync services (User)", "options": [ { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablebitsforgaldownload_1_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_syncdisabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablebitsforgaldownload_1_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_syncdisabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablesiphighsecuritymode_1", - "displayName": "Configure SIP security mode (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_translateenabled_recommended", + "displayName": "Enable Translate (User)", "options": [ { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablesiphighsecuritymode_1_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_translateenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policyenablesiphighsecuritymode_1_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_translateenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policygaldownloadinitialdelay_1", - "displayName": "Global Address Book Download Initial Delay (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~contentsettings_recommended_registeredprotocolhandlers_recommended", + "displayName": "Register protocol handlers (User)", "options": [ { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policygaldownloadinitialdelay_1_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~contentsettings_recommended_registeredprotocolhandlers_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policygaldownloadinitialdelay_1_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~contentsettings_recommended_registeredprotocolhandlers_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policygaldownloadinitialdelay_1_l_galdownloadinitialdelay_value", - "displayName": "Maximum possible number of minutes to delay download: (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~contentsettings_recommended_registeredprotocolhandlers_recommended_registeredprotocolhandlers", + "displayName": "Register protocol handlers (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policypreventrun_1", - "displayName": "Prevent users from running Microsoft Lync (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordmanagerenabled_recommended", + "displayName": "Enable saving passwords to the password manager (User)", "options": [ { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policypreventrun_1_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordmanagerenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policypreventrun_1_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordmanagerenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysavepassword_1", - "displayName": "Allow storage of user passwords (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printheaderfooter_recommended", + "displayName": "Print headers and footers (User)", "options": [ { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysavepassword_1_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printheaderfooter_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysavepassword_1_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printheaderfooter_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1", - "displayName": "Configure SIP compression mode (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printpreviewusesystemdefaultprinter_recommended", + "displayName": "Set the system default printer as the default printer (User)", "options": [ { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printpreviewusesystemdefaultprinter_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printpreviewusesystemdefaultprinter_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1_l_policysipcompression", - "displayName": "Configure SIP compression mode (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenenabled_recommended", + "displayName": "Configure Microsoft Defender SmartScreen (User)", "options": [ { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1_l_policysipcompression_0", - "displayName": "Always disabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenenabled_recommended_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1_l_policysipcompression_1", - "displayName": "Always enabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenenabled_recommended_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepageisnewtabpage_recommended", + "displayName": "Set the new tab page as the home page (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1_l_policysipcompression_2", - "displayName": "Based on adaptor speed (default)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepageisnewtabpage_recommended_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policysipcompression_1_l_policysipcompression_3", - "displayName": "Based on ping round-trip time", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepageisnewtabpage_recommended_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policytrustmodeldata_1", - "displayName": "Trusted Domain List (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepagelocation_recommended", + "displayName": "Configure the home page URL (User)", "options": [ { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policytrustmodeldata_1_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepagelocation_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policytrustmodeldata_1_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepagelocation_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_lync16v2~policy~l_lync~l_lyncconfiguration_l_policytrustmodeldata_1_l_trustmodeldata_value", - "displayName": "Trusted Domains (comma separated list): (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepagelocation_recommended_homepagelocation", + "displayName": "Home page URL (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder", - "displayName": "Configure the location of the browser executable folder (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_newtabpagelocation_recommended", + "displayName": "Configure the new tab page URL (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_newtabpagelocation_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_newtabpagelocation_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_browserexecutablefolderdesc", - "displayName": "Set value name to the Application User Model ID or the executable file name. You can use the \"*\" wildcard as value name to apply to all applications. (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_browserexecutablefolderdesc_key", - "displayName": "Name", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_browserexecutablefolder_browserexecutablefolderdesc_value", - "displayName": "Value", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_newtabpagelocation_recommended_newtabpagelocation", + "displayName": "New tab page URL (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference", - "displayName": "Set the release channel search order preference (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended", + "displayName": "Action to take on Microsoft Edge startup (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_releasechannelpreferencedesc", - "displayName": "Set value name to the Application User Model ID or the executable file name. You can use the \"*\" wildcard as value name to apply to all applications. (User)", - "options": null + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup", + "displayName": "Action to take on startup (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup_5", + "displayName": "Open a new tab", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup_1", + "displayName": "Restore the last session", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup_4", + "displayName": "Open a list of URLs", + "description": null + } + ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_releasechannelpreferencedesc_key", - "displayName": "Name", - "options": null + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartupurls_recommended", + "displayName": "Sites to open when the browser starts (User)", + "options": [ + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartupurls_recommended_0", + "displayName": "Disabled", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartupurls_recommended_1", + "displayName": "Enabled", + "description": null + } + ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v1~policy~microsoft_edge_webview2~webview2loaderoverridesettings_releasechannelpreference_releasechannelpreferencedesc_value", - "displayName": "Value", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartupurls_recommended_restoreonstartupurlsdesc", + "displayName": "Sites to open when the browser starts (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol", - "displayName": "Control communication with the Experimentation and Configuration Service (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_showhomebutton_recommended", + "displayName": "Show Home button on toolbar (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_showhomebutton_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_showhomebutton_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol", - "displayName": "Control communication with the Experimentation and Configuration Service (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification", + "displayName": "Notify a user that a browser restart is recommended or required for pending updates (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_2", - "displayName": "Retrieve configurations and experiments", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_1", - "displayName": "Retrieve configurations only", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_0", - "displayName": "Disable communication with the Experimentation and Configuration Service", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_forcepermissionpolicyunloaddefaultenabled", - "displayName": "Controls whether unload event handlers can be disabled. (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_relaunchnotification", + "displayName": "Notify a user that a browser restart is recommended or required for pending updates (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_forcepermissionpolicyunloaddefaultenabled_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_relaunchnotification_1", + "displayName": "Recommended - Show a recurring prompt to the user indicating that a restart is recommended", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_forcepermissionpolicyunloaddefaultenabled_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_relaunchnotification_2", + "displayName": "Required - Show a recurring prompt to the user indicating that a restart is required", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist", - "displayName": "HTTP Allowlist (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotificationperiod", + "displayName": "Set the time period for update notifications (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotificationperiod_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotificationperiod_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_httpallowlistdesc", - "displayName": "HTTP Allowlist (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_httpallowlistdesc_key", - "displayName": "Name", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_httpallowlist_httpallowlistdesc_value", - "displayName": "Value", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotificationperiod_relaunchnotificationperiod", + "displayName": "Set the time period for update notifications: (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newbaseurlinheritancebehaviorallowed", - "displayName": "Allows enabling the feature NewBaseUrlInheritanceBehavior (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_requireonlinerevocationchecksforlocalanchors", + "displayName": "Specify if online OCSP/CRL checks are required for local trust anchors (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newbaseurlinheritancebehaviorallowed_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_requireonlinerevocationchecksforlocalanchors_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newbaseurlinheritancebehaviorallowed_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_requireonlinerevocationchecksforlocalanchors_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list", - "displayName": "Enable built-in PDF reader powered by Adobe Acrobat for WebView2 (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_resolvenavigationerrorsusewebservice", + "displayName": "Enable resolution of navigation errors using a web service (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_resolvenavigationerrorsusewebservice_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_resolvenavigationerrorsusewebservice_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_newpdfreaderwebview2listdesc", - "displayName": "Set value name to the Application User Model ID or the executable file name. You can use the \"*\" wildcard as value name to apply to all applications. (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_newpdfreaderwebview2listdesc_key", - "displayName": "Name", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_newpdfreaderwebview2list_newpdfreaderwebview2listdesc_value", - "displayName": "Value", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_rsakeyusageforlocalanchorsenabled", - "displayName": "Check RSA key usage for server certificates issued by local trust anchors (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_restrictsignintopattern", + "displayName": "Restrict which accounts can be used to sign in to Microsoft Edge (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_rsakeyusageforlocalanchorsenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_restrictsignintopattern_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge_webview2v2~policy~microsoft_edge_webview2_rsakeyusageforlocalanchorsenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_restrictsignintopattern_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowdeletingbrowserhistory", - "displayName": "Enable deleting browser and download history (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_restrictsignintopattern_restrictsignintopattern", + "displayName": "Restrict which accounts can be used as Microsoft Edge primary accounts (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_runallflashinallowmode", + "displayName": "Extend Adobe Flash content setting to all content (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowdeletingbrowserhistory_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_runallflashinallowmode_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowdeletingbrowserhistory_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_runallflashinallowmode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowfileselectiondialogs", - "displayName": "Allow file selection dialogs (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_savingbrowserhistorydisabled", + "displayName": "Disable saving browser history (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowfileselectiondialogs_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_savingbrowserhistorydisabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_allowfileselectiondialogs_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_savingbrowserhistorydisabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_alwaysopenpdfexternally", - "displayName": "Always open PDF files externally (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_searchsuggestenabled", + "displayName": "Enable search suggestions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_alwaysopenpdfexternally_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_searchsuggestenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_alwaysopenpdfexternally_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_searchsuggestenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_applicationlocalevalue", - "displayName": "Set application locale (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_securitykeypermitattestation", + "displayName": "Websites or domains that don't need permission to use direct Security Key attestation (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_applicationlocalevalue_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_securitykeypermitattestation_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_applicationlocalevalue_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_securitykeypermitattestation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_applicationlocalevalue_applicationlocalevalue", - "displayName": "Application locale (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_securitykeypermitattestation_securitykeypermitattestationdesc", + "displayName": "Websites or domains that don't need permission to use direct Security Key attestation (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowed", - "displayName": "Allow or block audio capture (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendintranettointernetexplorer", + "displayName": "Send all intranet sites to Internet Explorer (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowed_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendintranettointernetexplorer_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowed_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendintranettointernetexplorer_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowedurls", - "displayName": "Sites that can access audio capture devices without requesting permission (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendsiteinfotoimproveservices", + "displayName": "Send site information to improve Microsoft services (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowedurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendsiteinfotoimproveservices_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowedurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendsiteinfotoimproveservices_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_audiocaptureallowedurls_audiocaptureallowedurlsdesc", - "displayName": "Sites that can access audio capture devices without requesting permission (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofilladdressenabled", - "displayName": "Enable AutoFill for addresses (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_showofficeshortcutinfavoritesbar", + "displayName": "Show Microsoft Office shortcut in favorites bar (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofilladdressenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_showofficeshortcutinfavoritesbar_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofilladdressenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_showofficeshortcutinfavoritesbar_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofillcreditcardenabled", - "displayName": "Enable AutoFill for payment instruments (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_siteperprocess", + "displayName": "Enable site isolation for every site (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofillcreditcardenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_siteperprocess_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autofillcreditcardenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_siteperprocess_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun", - "displayName": "Automatically import another browser's data and settings at first run (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellcheckenabled", + "displayName": "Enable spellcheck (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellcheckenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellcheckenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun", - "displayName": "Automatically import another browser's data and settings at first run (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellchecklanguage", + "displayName": "Enable specific spellcheck languages (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_0", - "displayName": "Automatically imports all supported datatypes and settings from the default browser", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_1", - "displayName": "Automatically imports all supported datatypes and settings from Internet Explorer", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellchecklanguage_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_2", - "displayName": "Automatically imports all supported datatypes and settings from Google Chrome", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellchecklanguage_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellchecklanguage_spellchecklanguagedesc", + "displayName": "Enable specific spellcheck languages (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslerroroverrideallowed", + "displayName": "Allow users to proceed from the HTTPS warning page (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_3", - "displayName": "Automatically imports all supported datatypes and settings from Safari", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslerroroverrideallowed_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_autoimportatfirstrun_autoimportatfirstrun_4", - "displayName": "Disables automatic import, and the import section of the first-run experience is skipped", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslerroroverrideallowed_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_backgroundmodeenabled", - "displayName": "Continue running background apps after Microsoft Edge closes (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin", + "displayName": "Minimum TLS version enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_backgroundmodeenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_backgroundmodeenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_blockthirdpartycookies", - "displayName": "Block third party cookies (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_sslversionmin", + "displayName": "Minimum SSL version enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_blockthirdpartycookies_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_sslversionmin_tls1", + "displayName": "TLS 1.0", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_blockthirdpartycookies_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_sslversionmin_tls1.1", + "displayName": "TLS 1.1", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_sslversionmin_tls1.2", + "displayName": "TLS 1.2", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browseraddprofileenabled", - "displayName": "Enable profile creation from the Identity flyout menu or the Settings page (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_suppressunsupportedoswarning", + "displayName": "Suppress the unsupported OS warning (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browseraddprofileenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_suppressunsupportedoswarning_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browseraddprofileenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_suppressunsupportedoswarning_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browserguestmodeenabled", - "displayName": "Enable guest mode (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_syncdisabled", + "displayName": "Disable synchronization of data using Microsoft sync services (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browserguestmodeenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_syncdisabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browserguestmodeenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_syncdisabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsernetworktimequeriesenabled", - "displayName": "Allow queries to a Browser Network Time service (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_tablifecyclesenabled", + "displayName": "Configure tab lifecycles (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsernetworktimequeriesenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_tablifecyclesenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsernetworktimequeriesenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_tablifecyclesenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin", - "displayName": "Browser sign-in settings (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_taskmanagerendprocessenabled", + "displayName": "Enable ending processes in the Browser task manager (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_taskmanagerendprocessenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_taskmanagerendprocessenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_browsersignin", - "displayName": "Browser sign-in settings (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_translateenabled", + "displayName": "Enable Translate (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_browsersignin_0", - "displayName": "Disable browser sign-in", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_browsersignin_1", - "displayName": "Enable browser sign-in", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_translateenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_browsersignin_browsersignin_2", - "displayName": "Force users to sign-in to use the browser", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_translateenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_builtindnsclientenabled", - "displayName": "Use built-in DNS client (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlallowlist", + "displayName": "Define a list of allowed URLs (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_builtindnsclientenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlallowlist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_builtindnsclientenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlallowlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforcas", - "displayName": "Disable Certificate Transparency enforcement for a list of subjectPublicKeyInfo hashes (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlallowlist_urlallowlistdesc", + "displayName": "Define a list of allowed URLs (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlblocklist", + "displayName": "Block access to a list of URLs (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforcas_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlblocklist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforcas_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlblocklist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforcas_certificatetransparencyenforcementdisabledforcasdesc", - "displayName": "Disable Certificate Transparency enforcement for a list of subjectPublicKeyInfo hashes (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlblocklist_urlblocklistdesc", + "displayName": "Block access to a list of URLs (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforlegacycas", - "displayName": "Disable Certificate Transparency enforcement for a list of legacy certificate authorities (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userdatadir", + "displayName": "Set the user data directory (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforlegacycas_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userdatadir_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforlegacycas_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userdatadir_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforlegacycas_certificatetransparencyenforcementdisabledforlegacycasdesc", - "displayName": "Disable Certificate Transparency enforcement for a list of legacy certificate authorities (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userdatadir_userdatadir", + "displayName": "Set the user data directory (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforurls", - "displayName": "Disable Certificate Transparency enforcement for specific URLs (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userfeedbackallowed", + "displayName": "Allow user feedback (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userfeedbackallowed_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userfeedbackallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_certificatetransparencyenforcementdisabledforurls_certificatetransparencyenforcementdisabledforurlsdesc", - "displayName": "Disable Certificate Transparency enforcement for specific URLs (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_componentupdatesenabled", - "displayName": "Enable component updates in Microsoft Edge (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowed", + "displayName": "Allow or block video capture (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_componentupdatesenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowed_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_componentupdatesenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configuredonottrack", - "displayName": "Configure Do Not Track (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowedurls", + "displayName": "Sites that can access video capture devices without requesting permission (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configuredonottrack_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowedurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configuredonottrack_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowedurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configureonlinetexttospeech", - "displayName": "Configure Online Text To Speech (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowedurls_videocaptureallowedurlsdesc", + "displayName": "Sites that can access video capture devices without requesting permission (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webdriveroverridesincompatiblepolicies", + "displayName": "Allow WebDriver to Override Incompatible Policies (deprecated) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configureonlinetexttospeech_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webdriveroverridesincompatiblepolicies_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_configureonlinetexttospeech_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webdriveroverridesincompatiblepolicies_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability", - "displayName": "Control where developer tools can be used (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling", + "displayName": "Restrict exposure of local IP address by WebRTC (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_developertoolsavailability", - "displayName": "Control where developer tools can be used (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling", + "displayName": "Restrict exposure of localhost IP address by WebRTC (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_developertoolsavailability_0", - "displayName": "Block the developer tools on extensions installed by enterprise policy, allow in other contexts", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling_default", + "displayName": "Allow all interfaces. This exposes the local IP address", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_developertoolsavailability_1", - "displayName": "Allow using the developer tools", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling_default_public_and_private_interfaces", + "displayName": "Allow public and private interfaces over http default route. This exposes the local IP address", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_developertoolsavailability_developertoolsavailability_2", - "displayName": "Don't allow using the developer tools", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling_default_public_interface_only", + "displayName": "Allow public interface over http default route. This doesn't expose the local IP address", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling_disable_non_proxied_udp", + "displayName": "Use TCP unless proxy server supports UDP. This doesn't expose the local IP address", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disable3dapis", - "displayName": "Disable support for 3D graphics APIs (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtcudpportrange", + "displayName": "Restrict the range of local UDP ports used by WebRTC (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disable3dapis_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtcudpportrange_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disable3dapis_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtcudpportrange_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disablescreenshots", - "displayName": "Disable taking screenshots (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtcudpportrange_webrtcudpportrange", + "displayName": "Restrict the range of local UDP ports used by WebRTC (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_wpadquickcheckenabled", + "displayName": "Set WPAD optimization (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disablescreenshots_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_wpadquickcheckenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_disablescreenshots_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_wpadquickcheckenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachedir", - "displayName": "Set disk cache directory (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_autoselectcertificateforurls", + "displayName": "Automatically select client certificates for these sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachedir_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_autoselectcertificateforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachedir_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_autoselectcertificateforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachedir_diskcachedir", - "displayName": "Set disk cache directory (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_autoselectcertificateforurls_autoselectcertificateforurlsdesc", + "displayName": "Automatically select client certificates for these sites (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachesize", - "displayName": "Set disk cache size, in bytes (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesallowedforurls", + "displayName": "Allow cookies on specific sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachesize_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesallowedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachesize_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesallowedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_diskcachesize_diskcachesize", - "displayName": "Set disk cache size: (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesallowedforurls_cookiesallowedforurlsdesc", + "displayName": "Allow cookies on specific sites (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloaddirectory", - "displayName": "Set download directory (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesblockedforurls", + "displayName": "Block cookies on specific sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloaddirectory_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloaddirectory_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloaddirectory_downloaddirectory", - "displayName": "Set download directory (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesblockedforurls_cookiesblockedforurlsdesc", + "displayName": "Block cookies on specific sites (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions", - "displayName": "Allow download restrictions (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiessessiononlyforurls", + "displayName": "Limit cookies from specific websites to the current session (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiessessiononlyforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiessessiononlyforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions", - "displayName": "Download restrictions (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiessessiononlyforurls_cookiessessiononlyforurlsdesc", + "displayName": "Limit cookies from specific websites to the current session (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting", + "displayName": "Configure cookies (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_0", - "displayName": "No special restrictions", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_1", - "displayName": "Block dangerous downloads", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_2", - "displayName": "Block potentially dangerous downloads", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_3", - "displayName": "Block all downloads", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_editfavoritesenabled", - "displayName": "Allows users to edit favorites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_defaultcookiessetting", + "displayName": "Configure cookies (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_editfavoritesenabled_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_defaultcookiessetting_1", + "displayName": "Let all sites create cookies", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_editfavoritesenabled_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_defaultcookiessetting_2", + "displayName": "Don't let any site create cookies", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_defaultcookiessetting_4", + "displayName": "Keep cookies for the duration of the session", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledeprecatedwebplatformfeatures", - "displayName": "Re-enable deprecated web platform features for a limited time (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting", + "displayName": "Default geolocation setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledeprecatedwebplatformfeatures_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledeprecatedwebplatformfeatures_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledeprecatedwebplatformfeatures_enabledeprecatedwebplatformfeaturesdesc", - "displayName": "Re-enable deprecated web platform features for a limited time (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledomainactionsdownload", - "displayName": "Enable Domain Actions Download from Microsoft (deprecated) (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_defaultgeolocationsetting", + "displayName": "Default geolocation setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledomainactionsdownload_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_defaultgeolocationsetting_1", + "displayName": "Allow sites to track users' physical location", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enabledomainactionsdownload_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_defaultgeolocationsetting_2", + "displayName": "Don't allow any site to track users' physical location", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_defaultgeolocationsetting_3", + "displayName": "Ask whenever a site wants to track users' physical location", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enableonlinerevocationchecks", - "displayName": "Enable online OCSP/CRL checks (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting", + "displayName": "Default images setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enableonlinerevocationchecks_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_enableonlinerevocationchecks_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol", - "displayName": "Control communication with the Experimentation and Configuration Service (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_defaultimagessetting", + "displayName": "Default images setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_defaultimagessetting_1", + "displayName": "Allow all sites to show all images", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_defaultimagessetting_2", + "displayName": "Don't allow any site to show images", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol", - "displayName": "Control communication with the Experimentation and Configuration Service (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting", + "displayName": "Default JavaScript setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_2", - "displayName": "Retrieve configurations and experiments", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_1", - "displayName": "Retrieve configurations only", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_experimentationandconfigurationservicecontrol_experimentationandconfigurationservicecontrol_0", - "displayName": "Disable communication with the Experimentation and Configuration Service", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_favoritesbarenabled", - "displayName": "Enable favorites bar (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_defaultjavascriptsetting", + "displayName": "Default JavaScript setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_favoritesbarenabled_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_defaultjavascriptsetting_1", + "displayName": "Allow all sites to run JavaScript", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_favoritesbarenabled_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_defaultjavascriptsetting_2", + "displayName": "Don't allow any site to run JavaScript", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch", - "displayName": "Enforce Bing SafeSearch (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting", + "displayName": "Default notification setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_forcebingsafesearch", - "displayName": "Enforce Bing SafeSearch (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_defaultnotificationssetting", + "displayName": "Default notification setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_forcebingsafesearch_0", - "displayName": "Don't configure search restrictions in Bing", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_defaultnotificationssetting_1", + "displayName": "Allow sites to show desktop notifications", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_forcebingsafesearch_1", - "displayName": "Configure moderate search restrictions in Bing", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_defaultnotificationssetting_2", + "displayName": "Don't allow any site to show desktop notifications", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcebingsafesearch_forcebingsafesearch_2", - "displayName": "Configure strict search restrictions in Bing", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_defaultnotificationssetting_3", + "displayName": "Ask every time a site wants to show desktop notifications", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceephemeralprofiles", - "displayName": "Enable use of ephemeral profiles (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting", + "displayName": "Default Adobe Flash setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceephemeralprofiles_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceephemeralprofiles_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcegooglesafesearch", - "displayName": "Enforce Google SafeSearch (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_defaultpluginssetting", + "displayName": "Default Adobe Flash setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcegooglesafesearch_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_defaultpluginssetting_2", + "displayName": "Block the Adobe Flash plugin", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forcegooglesafesearch_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_defaultpluginssetting_3", + "displayName": "Click to play", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict", - "displayName": "Force minimum YouTube Restricted Mode (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting", + "displayName": "Default pop-up window setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_forceyoutuberestrict", - "displayName": "Force minimum YouTube Restricted Mode (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_defaultpopupssetting", + "displayName": "Default pop-up window setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_forceyoutuberestrict_0", - "displayName": "Do not enforce Restricted Mode on YouTube", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_forceyoutuberestrict_1", - "displayName": "Enforce at least Moderate Restricted Mode on YouTube", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_defaultpopupssetting_1", + "displayName": "Allow all sites to show pop-ups", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_forceyoutuberestrict_forceyoutuberestrict_2", - "displayName": "Enforce Strict Restricted Mode for YouTube", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_defaultpopupssetting_2", + "displayName": "Do not allow any site to show popups", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_fullscreenallowed", - "displayName": "Allow full screen mode (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting", + "displayName": "Control use of the Web Bluetooth API (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_fullscreenallowed_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_fullscreenallowed_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_hardwareaccelerationmodeenabled", - "displayName": "Use hardware acceleration when available (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_defaultwebbluetoothguardsetting", + "displayName": "Control use of the Web Bluetooth API (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_hardwareaccelerationmodeenabled_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_defaultwebbluetoothguardsetting_2", + "displayName": "Do not allow any site to request access to Bluetooth devices via the Web Bluetooth API", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_hardwareaccelerationmodeenabled_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_defaultwebbluetoothguardsetting_3", + "displayName": "Allow sites to ask the user to grant access to a nearby Bluetooth device", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importautofillformdata", - "displayName": "Allow importing of autofill form data (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting", + "displayName": "Control use of the WebUSB API (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importautofillformdata_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importautofillformdata_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importfavorites", - "displayName": "Allow importing of favorites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_defaultwebusbguardsetting", + "displayName": "Control use of the WebUSB API (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importfavorites_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_defaultwebusbguardsetting_2", + "displayName": "Do not allow any site to request access to USB devices via the WebUSB API", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importfavorites_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_defaultwebusbguardsetting_3", + "displayName": "Allow sites to ask the user to grant access to a connected USB device", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhistory", - "displayName": "Allow importing of browsing history (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesallowedforurls", + "displayName": "Allow images on these sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhistory_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesallowedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhistory_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesallowedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhomepage", - "displayName": "Allow importing of home page settings (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesallowedforurls_imagesallowedforurlsdesc", + "displayName": "Allow images on these sites (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesblockedforurls", + "displayName": "Block images on specific sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhomepage_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importhomepage_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importpaymentinfo", - "displayName": "Allow importing of payment info (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesblockedforurls_imagesblockedforurlsdesc", + "displayName": "Block images on specific sites (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptallowedforurls", + "displayName": "Allow JavaScript on specific sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importpaymentinfo_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptallowedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importpaymentinfo_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptallowedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsavedpasswords", - "displayName": "Allow importing of saved passwords (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptallowedforurls_javascriptallowedforurlsdesc", + "displayName": "Allow JavaScript on specific sites (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptblockedforurls", + "displayName": "Block JavaScript on specific sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsavedpasswords_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsavedpasswords_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsearchengine", - "displayName": "Allow importing of search engine settings (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptblockedforurls_javascriptblockedforurlsdesc", + "displayName": "Block JavaScript on specific sites (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsallowedforurls", + "displayName": "Allow notifications on specific sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsearchengine_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsallowedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_importsearchengine_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsallowedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability", - "displayName": "Configure InPrivate mode availability (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsallowedforurls_notificationsallowedforurlsdesc", + "displayName": "Allow notifications on specific sites (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsblockedforurls", + "displayName": "Block notifications on specific sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_inprivatemodeavailability", - "displayName": "Configure InPrivate mode availability (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_inprivatemodeavailability_0", - "displayName": "InPrivate mode available", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_inprivatemodeavailability_1", - "displayName": "InPrivate mode disabled", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_inprivatemodeavailability_inprivatemodeavailability_2", - "displayName": "InPrivate mode forced", - "description": null - } - ] + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsblockedforurls_notificationsblockedforurlsdesc", + "displayName": "Block notifications on specific sites (User)", + "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel", - "displayName": "Configure Internet Explorer integration (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsallowedforurls", + "displayName": "Allow the Adobe Flash plug-in on specific sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsallowedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsallowedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_internetexplorerintegrationlevel", - "displayName": "Configure Internet Explorer integration (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsallowedforurls_pluginsallowedforurlsdesc", + "displayName": "Allow the Adobe Flash plug-in on specific sites (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsblockedforurls", + "displayName": "Block the Adobe Flash plug-in on specific sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_internetexplorerintegrationlevel_1", - "displayName": "Internet Explorer mode", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsblockedforurls_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_internetexplorerintegrationlevel_internetexplorerintegrationlevel_2", - "displayName": "Internet Explorer 11", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsblockedforurls_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_isolateorigins", - "displayName": "Enable site isolation for specific origins (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsblockedforurls_pluginsblockedforurlsdesc", + "displayName": "Block the Adobe Flash plug-in on specific sites (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsallowedforurls", + "displayName": "Allow pop-up windows on specific sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_isolateorigins_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsallowedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_isolateorigins_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsallowedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_isolateorigins_isolateorigins", - "displayName": "Enable site isolation for specific origins (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsallowedforurls_popupsallowedforurlsdesc", + "displayName": "Allow pop-up windows on specific sites (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedfavorites", - "displayName": "Configure favorites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsblockedforurls", + "displayName": "Block pop-up windows on specific sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedfavorites_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedfavorites_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedfavorites_managedfavorites", - "displayName": "Configure favorites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsblockedforurls_popupsblockedforurlsdesc", + "displayName": "Block pop-up windows on specific sites (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedsearchengines", - "displayName": "Manage Search Engines (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusballowdevicesforurls", + "displayName": "Grant access to specific sites to connect to specific USB devices (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedsearchengines_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusballowdevicesforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedsearchengines_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusballowdevicesforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_managedsearchengines_managedsearchengines", - "displayName": "Manage Search Engines (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusballowdevicesforurls_webusballowdevicesforurls", + "displayName": "Grant access to specific sites to connect to specific USB devices (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_maxconnectionsperproxy", - "displayName": "Maximum number of concurrent connections to the proxy server (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbaskforurls", + "displayName": "Allow WebUSB on specific sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_maxconnectionsperproxy_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbaskforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_maxconnectionsperproxy_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbaskforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_maxconnectionsperproxy_maxconnectionsperproxy", - "displayName": "Maximum number of concurrent connections to the proxy server: (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbaskforurls_webusbaskforurlsdesc", + "displayName": "Allow WebUSB on specific sites (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_mediaroutercastallowallips", - "displayName": "Allow Google Cast to connect to Cast devices on all IP addresses (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbblockedforurls", + "displayName": "Block WebUSB on specific sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_mediaroutercastallowallips_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_mediaroutercastallowallips_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_metricsreportingenabled", - "displayName": "Enable usage and crash-related data reporting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbblockedforurls_webusbblockedforurlsdesc", + "displayName": "Block WebUSB on specific sites (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderenabled", + "displayName": "Enable the default search provider (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_metricsreportingenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_metricsreportingenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions", - "displayName": "Enable network prediction (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderencodings", + "displayName": "Default search provider encodings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderencodings_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderencodings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_networkpredictionoptions", - "displayName": "Enable network prediction (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderencodings_defaultsearchproviderencodingsdesc", + "displayName": "Default search provider encodings (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurl", + "displayName": "Specifies the search-by-image feature for the default search provider (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_networkpredictionoptions_0", - "displayName": "Predict network actions on any network connection", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_networkpredictionoptions_1", - "displayName": "Predict network actions on any network that is not cellular.\r\n(Deprecated in 50, removed in 52. After 52, if value 1 is set, it will be treated as 0 - predict network actions on any network connection.)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurl_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_networkpredictionoptions_networkpredictionoptions_2", - "displayName": "Don't predict network actions on any network connection", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurl_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_overridesecurityrestrictionsoninsecureorigin", - "displayName": "Control where security restrictions on insecure origins apply (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurl_defaultsearchproviderimageurl", + "displayName": "Specifies the search-by-image feature for the default search provider (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurlpostparams", + "displayName": "Parameters for an image URL that uses POST (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_overridesecurityrestrictionsoninsecureorigin_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurlpostparams_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_overridesecurityrestrictionsoninsecureorigin_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurlpostparams_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_overridesecurityrestrictionsoninsecureorigin_overridesecurityrestrictionsoninsecureorigindesc", - "displayName": "Control where security restrictions on insecure origins apply (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurlpostparams_defaultsearchproviderimageurlpostparams", + "displayName": "Parameters for an image URL that uses POST (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_proactiveauthenabled", - "displayName": "Enable Proactive Authentication (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderkeyword", + "displayName": "Default search provider keyword (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_proactiveauthenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderkeyword_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_proactiveauthenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderkeyword_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promotionaltabsenabled", - "displayName": "Enable full-tab promotional content (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderkeyword_defaultsearchproviderkeyword", + "displayName": "Default search provider keyword (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidername", + "displayName": "Default search provider name (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promotionaltabsenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidername_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promotionaltabsenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidername_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promptfordownloadlocation", - "displayName": "Ask where to save downloaded files (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidername_defaultsearchprovidername", + "displayName": "Default search provider name (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersearchurl", + "displayName": "Default search provider search URL (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promptfordownloadlocation_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersearchurl_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_promptfordownloadlocation_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersearchurl_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_quicallowed", - "displayName": "Allow QUIC protocol (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersearchurl_defaultsearchprovidersearchurl", + "displayName": "Default search provider search URL (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersuggesturl", + "displayName": "Default search provider URL for suggestions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_quicallowed_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersuggesturl_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_quicallowed_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersuggesturl_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_applicationlocalevalue_recommended", - "displayName": "Set application locale (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersuggesturl_defaultsearchprovidersuggesturl", + "displayName": "Default search provider URL for suggestions (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionallowedtypes", + "displayName": "Configure allowed extension types (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_applicationlocalevalue_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionallowedtypes_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_applicationlocalevalue_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionallowedtypes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_applicationlocalevalue_recommended_applicationlocalevalue", - "displayName": "Application locale (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionallowedtypes_extensionallowedtypesdesc", + "displayName": "Types of extensions/apps that are allowed to be installed (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofilladdressenabled_recommended", - "displayName": "Enable AutoFill for addresses (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallallowlist", + "displayName": "Allow specific extensions to be installed (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofilladdressenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallallowlist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofilladdressenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallallowlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofillcreditcardenabled_recommended", - "displayName": "Enable AutoFill for credit cards (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallallowlist_extensioninstallallowlistdesc", + "displayName": "Extension IDs to exempt from the block list (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallblocklist", + "displayName": "Control which extensions cannot be installed (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofillcreditcardenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallblocklist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_autofillcreditcardenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallblocklist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_backgroundmodeenabled_recommended", - "displayName": "Continue running background apps after Microsoft Edge closes (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallblocklist_extensioninstallblocklistdesc", + "displayName": "Extension IDs the user should be prevented from installing (or * for all) (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallforcelist", + "displayName": "Control which extensions are installed silently (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_backgroundmodeenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallforcelist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_backgroundmodeenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallforcelist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_blockthirdpartycookies_recommended", - "displayName": "Block third party cookies (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallforcelist_extensioninstallforcelistdesc", + "displayName": "Extension/App IDs and update URLs to be silently installed (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallsources", + "displayName": "Configure extension and user script install sources (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_blockthirdpartycookies_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallsources_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_blockthirdpartycookies_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallsources_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloaddirectory_recommended", - "displayName": "Set download directory (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallsources_extensioninstallsourcesdesc", + "displayName": "URL patterns to allow extension, app, and user script installs from (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionsettings", + "displayName": "Configure extension management settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloaddirectory_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionsettings_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloaddirectory_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionsettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloaddirectory_recommended_downloaddirectory", - "displayName": "Set download directory (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionsettings_extensionsettings", + "displayName": "Configure extension management settings (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended", - "displayName": "Allow download restrictions (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_enablemediarouter", + "displayName": "Enable Google Cast (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_enablemediarouter_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_enablemediarouter_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions", - "displayName": "Download restrictions (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_showcasticonintoolbar", + "displayName": "Show the cast icon in the toolbar (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_0", - "displayName": "No special restrictions", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_1", - "displayName": "Block dangerous downloads", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_2", - "displayName": "Block potentially dangerous downloads", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_showcasticonintoolbar_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_3", - "displayName": "Block all downloads", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_showcasticonintoolbar_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_favoritesbarenabled_recommended", - "displayName": "Enable favorites bar (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_allowcrossoriginauthprompt", + "displayName": "Allow cross-origin HTTP Basic Auth prompts (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_favoritesbarenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_allowcrossoriginauthprompt_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_favoritesbarenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_allowcrossoriginauthprompt_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importautofillformdata_recommended", - "displayName": "Allow importing of autofill form data (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authnegotiatedelegateallowlist", + "displayName": "Specifies a list of servers that Microsoft Edge can delegate user credentials to (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importautofillformdata_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authnegotiatedelegateallowlist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importautofillformdata_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authnegotiatedelegateallowlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importfavorites_recommended", - "displayName": "Allow importing of favorites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authnegotiatedelegateallowlist_authnegotiatedelegateallowlist", + "displayName": "Specifies a list of servers that Microsoft Edge can delegate user credentials to (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authschemes", + "displayName": "Supported authentication schemes (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importfavorites_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authschemes_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importfavorites_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authschemes_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importhistory_recommended", - "displayName": "Allow importing of browsing history (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authschemes_authschemes", + "displayName": "Supported authentication schemes (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authserverallowlist", + "displayName": "Configure list of allowed authentication servers (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importhistory_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authserverallowlist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importhistory_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authserverallowlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importpaymentinfo_recommended", - "displayName": "Allow importing of payment info (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authserverallowlist_authserverallowlist", + "displayName": "Configure list of allowed authentication servers (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_disableauthnegotiatecnamelookup", + "displayName": "Disable CNAME lookup when negotiating Kerberos authentication (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importpaymentinfo_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_disableauthnegotiatecnamelookup_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importpaymentinfo_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_disableauthnegotiatecnamelookup_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsavedpasswords_recommended", - "displayName": "Allow importing of saved passwords (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_enableauthnegotiateport", + "displayName": "Include non-standard port in Kerberos SPN (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsavedpasswords_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_enableauthnegotiateport_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsavedpasswords_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_enableauthnegotiateport_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsearchengine_recommended", - "displayName": "Allow importing of search engine settings (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingallowlist", + "displayName": "Control which native messaging hosts users can use (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsearchengine_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingallowlist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_importsearchengine_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingallowlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended", - "displayName": "Enable network prediction (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingallowlist_nativemessagingallowlistdesc", + "displayName": "Names of the native messaging hosts to exempt from the block list (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingblocklist", + "displayName": "Configure native messaging block list (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingblocklist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingblocklist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_networkpredictionoptions", - "displayName": "Enable network prediction (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingblocklist_nativemessagingblocklistdesc", + "displayName": "Names of the forbidden native messaging hosts (or * for all) (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessaginguserlevelhosts", + "displayName": "Allow user-level native messaging hosts (installed without admin permissions) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_networkpredictionoptions_0", - "displayName": "Predict network actions on any network connection", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_networkpredictionoptions_1", - "displayName": "Predict network actions on any network that is not cellular.\r\n(Deprecated in 50, removed in 52. After 52, if value 1 is set, it will be treated as 0 - predict network actions on any network connection.)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessaginguserlevelhosts_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_networkpredictionoptions_recommended_networkpredictionoptions_2", - "displayName": "Don't predict network actions on any network connection", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessaginguserlevelhosts_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_resolvenavigationerrorsusewebservice_recommended", - "displayName": "Enable resolution of navigation errors using a web service (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordmanagerenabled", + "displayName": "Enable saving passwords to the password manager (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_resolvenavigationerrorsusewebservice_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordmanagerenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_resolvenavigationerrorsusewebservice_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordmanagerenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_searchsuggestenabled_recommended", - "displayName": "Enable search suggestions (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionchangepasswordurl", + "displayName": "Configure the change password URL (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_searchsuggestenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionchangepasswordurl_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_searchsuggestenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionchangepasswordurl_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_syncdisabled_recommended", - "displayName": "Disable synchronization of data using Microsoft sync services (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionchangepasswordurl_passwordprotectionchangepasswordurl", + "displayName": "Configure the change password URL (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionloginurls", + "displayName": "Configure the list of enterprise login URLs where password protection service should capture fingerprint of password (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_syncdisabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionloginurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_syncdisabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionloginurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_translateenabled_recommended", - "displayName": "Enable Translate (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionloginurls_passwordprotectionloginurlsdesc", + "displayName": "Configure the list of enterprise login URLs where password protection service should capture fingerprint of password (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger", + "displayName": "Configure password protection warning trigger (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_translateenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended_translateenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~contentsettings_recommended_registeredprotocolhandlers_recommended", - "displayName": "Register protocol handlers (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_passwordprotectionwarningtrigger", + "displayName": "Configure password protection warning trigger (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~contentsettings_recommended_registeredprotocolhandlers_recommended_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_passwordprotectionwarningtrigger_0", + "displayName": "Password protection warning is off", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~contentsettings_recommended_registeredprotocolhandlers_recommended_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_passwordprotectionwarningtrigger_1", + "displayName": "Password protection warning is triggered by password reuse", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~contentsettings_recommended_registeredprotocolhandlers_recommended_registeredprotocolhandlers", - "displayName": "Register protocol handlers (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordmanagerenabled_recommended", - "displayName": "Enable saving passwords to the password manager (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_defaultprinterselection", + "displayName": "Default printer selection rules (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordmanagerenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_defaultprinterselection_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~passwordmanager_recommended_passwordmanagerenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_defaultprinterselection_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printheaderfooter_recommended", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_defaultprinterselection_defaultprinterselection", + "displayName": "Default printer selection rules (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printheaderfooter", "displayName": "Print headers and footers (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printheaderfooter_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printheaderfooter_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printheaderfooter_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printheaderfooter_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printpreviewusesystemdefaultprinter_recommended", - "displayName": "Set the system default printer as the default printer (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printingenabled", + "displayName": "Enable printing (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printpreviewusesystemdefaultprinter_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printingenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~printing_recommended_printpreviewusesystemdefaultprinter_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printingenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenenabled_recommended", - "displayName": "Configure Microsoft Defender SmartScreen (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printpreviewusesystemdefaultprinter", + "displayName": "Set the system default printer as the default printer (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printpreviewusesystemdefaultprinter_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~smartscreen_recommended_smartscreenenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printpreviewusesystemdefaultprinter_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepageisnewtabpage_recommended", - "displayName": "Set the new tab page as the home page (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_usesystemprintdialog", + "displayName": "Print using system print dialog (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepageisnewtabpage_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_usesystemprintdialog_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepageisnewtabpage_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_usesystemprintdialog_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepagelocation_recommended", - "displayName": "Configure the home page URL (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxybypasslist", + "displayName": "Configure proxy bypass rules (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepagelocation_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxybypasslist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepagelocation_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxybypasslist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_homepagelocation_recommended_homepagelocation", - "displayName": "Home page URL (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxybypasslist_proxybypasslist", + "displayName": "Comma-separated list of proxy bypass rules (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_newtabpagelocation_recommended", - "displayName": "Configure the new tab page URL (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode", + "displayName": "Configure proxy server settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_newtabpagelocation_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_newtabpagelocation_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_newtabpagelocation_recommended_newtabpagelocation", - "displayName": "New tab page URL (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended", - "displayName": "Action to take on startup (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode", + "displayName": "Configure proxy server settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_direct", + "displayName": "Never use a proxy", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_auto_detect", + "displayName": "Auto detect proxy settings", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup", - "displayName": "Action to take on startup (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup_5", - "displayName": "Open a new tab", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_pac_script", + "displayName": "Use a .pac proxy script", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup_1", - "displayName": "Restore the last session", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_fixed_servers", + "displayName": "Use fixed proxy servers", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartup_recommended_restoreonstartup_4", - "displayName": "Open a list of URLs", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_system", + "displayName": "Use system proxy settings", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartupurls_recommended", - "displayName": "Sites to open when the browser starts (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxypacurl", + "displayName": "Set the proxy .pac file URL (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartupurls_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxypacurl_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartupurls_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxypacurl_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_restoreonstartupurls_recommended_restoreonstartupurlsdesc", - "displayName": "Sites to open when the browser starts (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxypacurl_proxypacurl", + "displayName": "Set the proxy .pac file URL (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_showhomebutton_recommended", - "displayName": "Show Home button on toolbar (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxyserver", + "displayName": "Configure address or URL of proxy server (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_showhomebutton_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxyserver_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_recommended~startup_recommended_showhomebutton_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxyserver_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification", - "displayName": "Notify a user that a browser restart is recommended or required for pending updates (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxyserver_proxyserver", + "displayName": "Configure address or URL of proxy server (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxysettings", + "displayName": "Proxy settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxysettings_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxysettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_relaunchnotification", - "displayName": "Notify a user that a browser restart is recommended or required for pending updates (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_relaunchnotification_1", - "displayName": "Recommended - Show a recurring prompt to the user indicating that a restart is recommended", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotification_relaunchnotification_2", - "displayName": "Required - Show a recurring prompt to the user indicating that a restart is required", - "description": null - } - ] + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxysettings_proxysettings", + "displayName": "Proxy settings (User)", + "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotificationperiod", - "displayName": "Set the time period for update notifications (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverride", + "displayName": "Prevent bypassing Microsoft Defender SmartScreen prompts for sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotificationperiod_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverride_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotificationperiod_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverride_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_relaunchnotificationperiod_relaunchnotificationperiod", - "displayName": "Set the time period for update notifications: (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_requireonlinerevocationchecksforlocalanchors", - "displayName": "Specify if online OCSP/CRL checks are required for local trust anchors (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverrideforfiles", + "displayName": "Prevent bypassing of Microsoft Defender SmartScreen warnings about downloads (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_requireonlinerevocationchecksforlocalanchors_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverrideforfiles_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_requireonlinerevocationchecksforlocalanchors_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverrideforfiles_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_resolvenavigationerrorsusewebservice", - "displayName": "Enable resolution of navigation errors using a web service (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenallowlistdomains", + "displayName": "Configure the list of domains for which Microsoft Defender SmartScreen won't trigger warnings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_resolvenavigationerrorsusewebservice_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenallowlistdomains_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_resolvenavigationerrorsusewebservice_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenallowlistdomains_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_restrictsignintopattern", - "displayName": "Restrict which accounts can be used to sign in to Microsoft Edge (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenallowlistdomains_smartscreenallowlistdomainsdesc", + "displayName": "Configure the list of domains for which SmartScreen won't trigger warnings (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenenabled", + "displayName": "Configure Microsoft Defender SmartScreen (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_restrictsignintopattern_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_restrictsignintopattern_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_restrictsignintopattern_restrictsignintopattern", - "displayName": "Restrict which accounts can be used as Microsoft Edge primary accounts (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_runallflashinallowmode", - "displayName": "Extend Adobe Flash content setting to all content (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepageisnewtabpage", + "displayName": "Set the new tab page as the home page (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_runallflashinallowmode_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepageisnewtabpage_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_runallflashinallowmode_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepageisnewtabpage_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_savingbrowserhistorydisabled", - "displayName": "Disable saving browser history (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepagelocation", + "displayName": "Configure the home page URL (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_savingbrowserhistorydisabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepagelocation_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_savingbrowserhistorydisabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepagelocation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_searchsuggestenabled", - "displayName": "Enable search suggestions (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepagelocation_homepagelocation", + "displayName": "Home page URL (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagehidedefaulttopsites", + "displayName": "Hide the default top sites from the new tab page (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_searchsuggestenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagehidedefaulttopsites_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_searchsuggestenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagehidedefaulttopsites_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_securitykeypermitattestation", - "displayName": "Websites or domains that don't need permission to use direct Security Key attestation (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagelocation", + "displayName": "Configure the new tab page URL (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_securitykeypermitattestation_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagelocation_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_securitykeypermitattestation_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagelocation_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_securitykeypermitattestation_securitykeypermitattestationdesc", - "displayName": "Websites or domains that don't need permission to use direct Security Key attestation (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagelocation_newtabpagelocation", + "displayName": "New tab page URL (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendintranettointernetexplorer", - "displayName": "Send all intranet sites to Internet Explorer (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup", + "displayName": "Action to take on Microsoft Edge startup (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendintranettointernetexplorer_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendintranettointernetexplorer_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendsiteinfotoimproveservices", - "displayName": "Send site information to improve Microsoft services (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup", + "displayName": "Action to take on startup (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendsiteinfotoimproveservices_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup_5", + "displayName": "Open a new tab", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sendsiteinfotoimproveservices_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup_1", + "displayName": "Restore the last session", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup_4", + "displayName": "Open a list of URLs", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_showofficeshortcutinfavoritesbar", - "displayName": "Show Microsoft Office shortcut in favorites bar (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartupurls", + "displayName": "Sites to open when the browser starts (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_showofficeshortcutinfavoritesbar_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartupurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_showofficeshortcutinfavoritesbar_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartupurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_siteperprocess", - "displayName": "Enable site isolation for every site (User)", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartupurls_restoreonstartupurlsdesc", + "displayName": "Sites to open when the browser starts (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_showhomebutton", + "displayName": "Show Home button on toolbar (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_siteperprocess_0", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_showhomebutton_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_siteperprocess_1", + "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_showhomebutton_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellcheckenabled", - "displayName": "Enable spellcheck (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions", + "displayName": "Allow download restrictions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellcheckenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellcheckenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellchecklanguage", - "displayName": "Enable specific spellcheck languages (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions", + "displayName": "Download restrictions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellchecklanguage_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_0", + "displayName": "No special restrictions", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellchecklanguage_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_1", + "displayName": "Block malicious downloads and dangerous file types", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_spellchecklanguage_spellchecklanguagedesc", - "displayName": "Enable specific spellcheck languages (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslerroroverrideallowed", - "displayName": "Allow users to proceed from the HTTPS warning page (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslerroroverrideallowed_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_2", + "displayName": "Block potentially dangerous or unwanted downloads and dangerous file types", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslerroroverrideallowed_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_3", + "displayName": "Block all downloads", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_4", + "displayName": "Block malicious downloads", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin", - "displayName": "Minimum TLS version enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended", + "displayName": "Allow download restrictions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_0", + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_1", + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_sslversionmin", - "displayName": "Minimum SSL version enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions", + "displayName": "Download restrictions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_sslversionmin_tls1", - "displayName": "TLS 1.0", + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_0", + "displayName": "No special restrictions", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_sslversionmin_tls1.1", - "displayName": "TLS 1.1", + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_1", + "displayName": "Block malicious downloads and dangerous file types", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_sslversionmin_sslversionmin_tls1.2", - "displayName": "TLS 1.2", + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_2", + "displayName": "Block potentially dangerous or unwanted downloads and dangerous file types", "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_suppressunsupportedoswarning", - "displayName": "Suppress the unsupported OS warning (User)", - "options": [ + }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_suppressunsupportedoswarning_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_3", + "displayName": "Block all downloads", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_suppressunsupportedoswarning_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_4", + "displayName": "Block malicious downloads", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_syncdisabled", - "displayName": "Disable synchronization of data using Microsoft sync services (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_adstransparencyenabled", + "displayName": "Configure if the ads transparency feature is enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_syncdisabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_adstransparencyenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_syncdisabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_adstransparencyenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_tablifecyclesenabled", - "displayName": "Configure tab lifecycles (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_hiderestoredialogenabled", + "displayName": "Hide restore pages dialog after browser crash (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_tablifecyclesenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_hiderestoredialogenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_tablifecyclesenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_hiderestoredialogenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_taskmanagerendprocessenabled", - "displayName": "Enable ending processes in the Browser task manager (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_pdfsecuremode", + "displayName": "Secure mode and Certificate-based Digital Signature validation in native PDF reader (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_taskmanagerendprocessenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_pdfsecuremode_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_taskmanagerendprocessenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_pdfsecuremode_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_translateenabled", - "displayName": "Enable Translate (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_promptonmultiplematchingcertificates", + "displayName": "Prompt the user to select a certificate when multiple certificates match (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_translateenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_promptonmultiplematchingcertificates_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_translateenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_promptonmultiplematchingcertificates_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlallowlist", - "displayName": "Define a list of allowed URLs (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting", + "displayName": "Control use of the WebHID API (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlallowlist_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlallowlist_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlallowlist_urlallowlistdesc", - "displayName": "Define a list of allowed URLs (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlblocklist", - "displayName": "Block access to a list of URLs (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_defaultwebhidguardsetting", + "displayName": "Control use of the WebHID API (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlblocklist_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_defaultwebhidguardsetting_2", + "displayName": "Do not allow any site to request access to HID devices via the WebHID API", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlblocklist_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_defaultwebhidguardsetting_3", + "displayName": "Allow sites to ask the user to grant access to a HID device", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_urlblocklist_urlblocklistdesc", - "displayName": "Block access to a list of URLs (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userdatadir", - "displayName": "Set the user data directory (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidaskforurls", + "displayName": "Allow the WebHID API on these sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userdatadir_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidaskforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userdatadir_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidaskforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userdatadir_userdatadir", - "displayName": "Set the user data directory (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidaskforurls_webhidaskforurlsdesc", + "displayName": "Allow the WebHID API on these sites (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userfeedbackallowed", - "displayName": "Allow user feedback (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidblockedforurls", + "displayName": "Block the WebHID API on these sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userfeedbackallowed_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_userfeedbackallowed_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowed", - "displayName": "Allow or block video capture (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowed_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowed_1", - "displayName": "Enabled", - "description": null - } - ] + "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidblockedforurls_webhidblockedforurlsdesc", + "displayName": "Block the WebHID API on these sites (User)", + "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowedurls", - "displayName": "Sites that can access video capture devices without requesting permission (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_configurekeyboardshortcuts", + "displayName": "Configure the list of commands for which to disable keyboard shortcuts (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowedurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_configurekeyboardshortcuts_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowedurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_configurekeyboardshortcuts_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_videocaptureallowedurls_videocaptureallowedurlsdesc", - "displayName": "Sites that can access video capture devices without requesting permission (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_configurekeyboardshortcuts_configurekeyboardshortcuts", + "displayName": "Configure the list of commands for which to disable keyboard shortcuts (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webdriveroverridesincompatiblepolicies", - "displayName": "Allow WebDriver to Override Incompatible Policies (deprecated) (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_edgeassetdeliveryserviceenabled", + "displayName": "Allow features to download assets from the Asset Delivery Service (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webdriveroverridesincompatiblepolicies_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_edgeassetdeliveryserviceenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webdriveroverridesincompatiblepolicies_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_edgeassetdeliveryserviceenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling", - "displayName": "Restrict exposure of local IP address by WebRTC (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_internetexplorermodeenablesavepageas", + "displayName": "Allow Save page as in Internet Explorer mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_internetexplorermodeenablesavepageas_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_internetexplorermodeenablesavepageas_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling", - "displayName": "Restrict exposure of localhost IP address by WebRTC (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_edgeassetdeliveryserviceenabled_recommended", + "displayName": "Allow features to download assets from the Asset Delivery Service (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling_default", - "displayName": "Allow all interfaces. This exposes the local IP address", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling_default_public_and_private_interfaces", - "displayName": "Allow public and private interfaces over http default route. This exposes the local IP address", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling_default_public_interface_only", - "displayName": "Allow public interface over http default route. This doesn't expose the local IP address", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_edgeassetdeliveryserviceenabled_recommended_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtclocalhostiphandling_webrtclocalhostiphandling_disable_non_proxied_udp", - "displayName": "Use TCP unless proxy server supports UDP. This doesn't expose the local IP address", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_edgeassetdeliveryserviceenabled_recommended_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtcudpportrange", - "displayName": "Restrict the range of local UDP ports used by WebRTC (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_sitesafetyservicesenabled_recommended", + "displayName": "Allow users to configure Site safety services (obsolete) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtcudpportrange_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_sitesafetyservicesenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtcudpportrange_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_sitesafetyservicesenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_webrtcudpportrange_webrtcudpportrange", - "displayName": "Restrict the range of local UDP ports used by WebRTC (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_wpadquickcheckenabled", - "displayName": "Set WPAD optimization (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended~extensions_recommended_controldefaultstateofallowextensionfromotherstoressettingenabled_recommended", + "displayName": "Configure default state of Allow extensions from other stores setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_wpadquickcheckenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended~extensions_recommended_controldefaultstateofallowextensionfromotherstoressettingenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge_wpadquickcheckenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended~extensions_recommended_controldefaultstateofallowextensionfromotherstoressettingenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_autoselectcertificateforurls", - "displayName": "Automatically select client certificates for these sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_sitesafetyservicesenabled", + "displayName": "Allow users to configure Site safety services (obsolete) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_autoselectcertificateforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_sitesafetyservicesenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_autoselectcertificateforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_sitesafetyservicesenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_autoselectcertificateforurls_autoselectcertificateforurlsdesc", - "displayName": "Automatically select client certificates for these sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesallowedforurls", - "displayName": "Allow cookies on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~identity_edgedefaultprofileenabled", + "displayName": "Default Profile Setting Enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesallowedforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~identity_edgedefaultprofileenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesallowedforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~identity_edgedefaultprofileenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesallowedforurls_cookiesallowedforurlsdesc", - "displayName": "Allow cookies on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~identity_edgedefaultprofileenabled_edgedefaultprofileenabled", + "displayName": "Default Profile Setting Enabled (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesblockedforurls", - "displayName": "Block cookies on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~kioskmode_kioskswipegesturesenabled", + "displayName": "Swipe gestures in Microsoft Edge kiosk mode enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesblockedforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~kioskmode_kioskswipegesturesenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesblockedforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~kioskmode_kioskswipegesturesenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiesblockedforurls_cookiesblockedforurlsdesc", - "displayName": "Block cookies on specific sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiessessiononlyforurls", - "displayName": "Limit cookies from specific websites to the current session (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_networkservicesandboxenabled", + "displayName": "Enable the network service sandbox (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiessessiononlyforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_networkservicesandboxenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiessessiononlyforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_networkservicesandboxenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_cookiessessiononlyforurls_cookiessessiononlyforurlsdesc", - "displayName": "Limit cookies from specific websites to the current session (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting", - "displayName": "Configure cookies (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_outlookhubmenuenabled", + "displayName": "Allow users to access the Outlook menu (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_outlookhubmenuenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_outlookhubmenuenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_defaultcookiessetting", - "displayName": "Configure cookies (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_recommended_outlookhubmenuenabled_recommended", + "displayName": "Allow users to access the Outlook menu (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_defaultcookiessetting_1", - "displayName": "Let all sites create cookies", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_defaultcookiessetting_2", - "displayName": "Don't let any site create cookies", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_recommended_outlookhubmenuenabled_recommended_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultcookiessetting_defaultcookiessetting_4", - "displayName": "Keep cookies for the duration of the session", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_recommended_outlookhubmenuenabled_recommended_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting", - "displayName": "Default geolocation setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_settimeoutwithout1msclampenabled", + "displayName": "Control Javascript setTimeout() function minimum timeout (deprecated) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_settimeoutwithout1msclampenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_settimeoutwithout1msclampenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_defaultgeolocationsetting", - "displayName": "Default geolocation setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_useragentclienthintsgreaseupdateenabled", + "displayName": "Control the User-Agent Client Hints GREASE Update feature (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_defaultgeolocationsetting_1", - "displayName": "Allow sites to track users' physical location", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_defaultgeolocationsetting_2", - "displayName": "Don't allow any site to track users' physical location", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_useragentclienthintsgreaseupdateenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultgeolocationsetting_defaultgeolocationsetting_3", - "displayName": "Ask whenever a site wants to track users' physical location", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_useragentclienthintsgreaseupdateenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting", - "displayName": "Default images setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge~httpauthentication_allhttpauthschemesallowedfororigins", + "displayName": "List of origins that allow all HTTP authentication (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge~httpauthentication_allhttpauthschemesallowedfororigins_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge~httpauthentication_allhttpauthschemesallowedfororigins_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_defaultimagessetting", - "displayName": "Default images setting (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_defaultimagessetting_1", - "displayName": "Allow all sites to show all images", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultimagessetting_defaultimagessetting_2", - "displayName": "Don't allow any site to show images", - "description": null - } - ] + "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge~httpauthentication_allhttpauthschemesallowedfororigins_allhttpauthschemesallowedfororiginsdesc", + "displayName": "List of origins that allow all HTTP authentication (User)", + "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting", - "displayName": "Default JavaScript setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_internetexplorerzoomdisplay", + "displayName": "Display zoom in IE Mode tabs with DPI Scale included like it is in Internet Explorer (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_internetexplorerzoomdisplay_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_internetexplorerzoomdisplay_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_defaultjavascriptsetting", - "displayName": "Default JavaScript setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_livecaptionsallowed", + "displayName": "Live captions allowed (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_defaultjavascriptsetting_1", - "displayName": "Allow all sites to run JavaScript", + "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_livecaptionsallowed_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultjavascriptsetting_defaultjavascriptsetting_2", - "displayName": "Don't allow any site to run JavaScript", + "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_livecaptionsallowed_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting", - "displayName": "Default notification setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_originagentclusterdefaultenabled", + "displayName": "Origin-keyed agent clustering enabled by default (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_originagentclusterdefaultenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_originagentclusterdefaultenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_defaultnotificationssetting", - "displayName": "Default notification setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge~identity_guidedswitchenabled", + "displayName": "Guided Switch Enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_defaultnotificationssetting_1", - "displayName": "Allow sites to show desktop notifications", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_defaultnotificationssetting_2", - "displayName": "Don't allow any site to show desktop notifications", + "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge~identity_guidedswitchenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultnotificationssetting_defaultnotificationssetting_3", - "displayName": "Ask every time a site wants to show desktop notifications", + "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge~identity_guidedswitchenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting", - "displayName": "Default Adobe Flash setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_alloweddomainsforapps", + "displayName": "Define domains allowed to access Google Workspace (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_alloweddomainsforapps_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_alloweddomainsforapps_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_defaultpluginssetting", - "displayName": "Default Adobe Flash setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_alloweddomainsforapps_alloweddomainsforapps", + "displayName": "Define domains allowed to access Google Workspace (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_askbeforecloseenabled", + "displayName": "Get user confirmation before closing a browser window with multiple tabs (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_defaultpluginssetting_2", - "displayName": "Block the Adobe Flash plugin", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_askbeforecloseenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpluginssetting_defaultpluginssetting_3", - "displayName": "Click to play", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_askbeforecloseenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting", - "displayName": "Default pop-up window setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting", + "displayName": "Configure browser process code integrity guard setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_defaultpopupssetting", - "displayName": "Default pop-up window setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_browsercodeintegritysetting", + "displayName": "Configure browser process code integrity guard setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_defaultpopupssetting_1", - "displayName": "Allow all sites to show pop-ups", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_browsercodeintegritysetting_0", + "displayName": "Do not enable code integrity guard in the browser process.", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultpopupssetting_defaultpopupssetting_2", - "displayName": "Do not allow any site to show popups", - "description": null - } - ] - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting", - "displayName": "Control use of the Web Bluetooth API (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_browsercodeintegritysetting_1", + "displayName": "Enable code integrity guard audit mode in the browser process.", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_browsercodeintegritysetting_2", + "displayName": "Enable code integrity guard enforcement in the browser process.", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_defaultwebbluetoothguardsetting", - "displayName": "Control use of the Web Bluetooth API (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_doubleclickclosetabenabled", + "displayName": "Double Click feature in Microsoft Edge enabled (only available in China) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_defaultwebbluetoothguardsetting_2", - "displayName": "Do not allow any site to request access to Bluetooth devices via the Web Bluetooth API", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_doubleclickclosetabenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebbluetoothguardsetting_defaultwebbluetoothguardsetting_3", - "displayName": "Allow sites to ask the user to grant access to a nearby Bluetooth device", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_doubleclickclosetabenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting", - "displayName": "Control use of the WebUSB API (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_edgeedropenabled", + "displayName": "Enable Drop feature in Microsoft Edge (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_edgeedropenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_edgeedropenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_defaultwebusbguardsetting", - "displayName": "Control use of the WebUSB API (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_importoneachlaunch", + "displayName": "Allow import of data from other browsers on each Microsoft Edge launch (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_defaultwebusbguardsetting_2", - "displayName": "Do not allow any site to request access to USB devices via the WebUSB API", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_importoneachlaunch_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_defaultwebusbguardsetting_defaultwebusbguardsetting_3", - "displayName": "Allow sites to ask the user to grant access to a connected USB device", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_importoneachlaunch_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesallowedforurls", - "displayName": "Allow images on these sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_pdfxfaenabled", + "displayName": "XFA support in native PDF reader enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesallowedforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_pdfxfaenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesallowedforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_pdfxfaenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesallowedforurls_imagesallowedforurlsdesc", - "displayName": "Allow images on these sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesblockedforurls", - "displayName": "Block images on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_quicksearchshowminimenu", + "displayName": "Enables Microsoft Edge mini menu (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesblockedforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_quicksearchshowminimenu_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesblockedforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_quicksearchshowminimenu_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_imagesblockedforurls_imagesblockedforurlsdesc", - "displayName": "Block images on specific sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptallowedforurls", - "displayName": "Allow JavaScript on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_askbeforecloseenabled_recommended", + "displayName": "Get user confirmation before closing a browser window with multiple tabs (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptallowedforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_askbeforecloseenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptallowedforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_askbeforecloseenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptallowedforurls_javascriptallowedforurlsdesc", - "displayName": "Allow JavaScript on specific sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptblockedforurls", - "displayName": "Block JavaScript on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_quicksearchshowminimenu_recommended", + "displayName": "Enables Microsoft Edge mini menu (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptblockedforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_quicksearchshowminimenu_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptblockedforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_quicksearchshowminimenu_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_javascriptblockedforurls_javascriptblockedforurlsdesc", - "displayName": "Block JavaScript on specific sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsallowedforurls", - "displayName": "Allow notifications on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_textpredictionenabled", + "displayName": "Text prediction enabled by default (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsallowedforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_textpredictionenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsallowedforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_textpredictionenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsallowedforurls_notificationsallowedforurlsdesc", - "displayName": "Allow notifications on specific sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsblockedforurls", - "displayName": "Block notifications on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge~passwordmanager_passwordmanagerrestrictlengthenabled", + "displayName": "Restrict the length of passwords that can be saved in the Password Manager (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsblockedforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge~passwordmanager_passwordmanagerrestrictlengthenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsblockedforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge~passwordmanager_passwordmanagerrestrictlengthenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_notificationsblockedforurls_notificationsblockedforurlsdesc", - "displayName": "Block notifications on specific sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsallowedforurls", - "displayName": "Allow the Adobe Flash plug-in on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_exemptfiletypedownloadwarnings", + "displayName": "Disable download file type extension-based warnings for specified file types on domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsallowedforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_exemptfiletypedownloadwarnings_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsallowedforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_exemptfiletypedownloadwarnings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsallowedforurls_pluginsallowedforurlsdesc", - "displayName": "Allow the Adobe Flash plug-in on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_exemptfiletypedownloadwarnings_exemptfiletypedownloadwarnings", + "displayName": "Disable download file type extension-based warnings for specified file types on domains (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsblockedforurls", - "displayName": "Block the Adobe Flash plug-in on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_internetexplorerintegrationalwayswaitforunload", + "displayName": "Wait for Internet Explorer mode tabs to completely unload before ending the browser session (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsblockedforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_internetexplorerintegrationalwayswaitforunload_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsblockedforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_internetexplorerintegrationalwayswaitforunload_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_pluginsblockedforurls_pluginsblockedforurlsdesc", - "displayName": "Block the Adobe Flash plug-in on specific sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsallowedforurls", - "displayName": "Allow pop-up windows on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorproofingenabled", + "displayName": "Spell checking provided by Microsoft Editor (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsallowedforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorproofingenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsallowedforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorproofingenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsallowedforurls_popupsallowedforurlsdesc", - "displayName": "Allow pop-up windows on specific sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsblockedforurls", - "displayName": "Block pop-up windows on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorsynonymsenabled", + "displayName": "Synonyms are provided when using Microsoft Editor spell checker (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsblockedforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorsynonymsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsblockedforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorsynonymsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_popupsblockedforurls_popupsblockedforurlsdesc", - "displayName": "Block pop-up windows on specific sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusballowdevicesforurls", - "displayName": "Grant access to specific sites to connect to specific USB devices (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended", + "displayName": "Configure the default paste format of URLs copied from Microsoft Edge, and determine if additional formats will be available to users (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusballowdevicesforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusballowdevicesforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusballowdevicesforurls_webusballowdevicesforurls", - "displayName": "Grant access to specific sites to connect to specific USB devices (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbaskforurls", - "displayName": "Allow WebUSB on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_configurefriendlyurlformat", + "displayName": "Configure the default paste format of URLs copied from Microsoft Edge, and determine if additional formats will be available to users (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbaskforurls_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_configurefriendlyurlformat_1", + "displayName": "The plain URL without any extra information, such as the page's title. This is the recommended option when this policy is configured. For more information, see the description.", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbaskforurls_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_configurefriendlyurlformat_3", + "displayName": "Titled Hyperlink: A hyperlink that points to the copied URL, but whose visible text is the title of the destination page. This is the Friendly URL format.", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_configurefriendlyurlformat_4", + "displayName": "Coming soon. If set, behaves the same as 'Plain URL'.", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbaskforurls_webusbaskforurlsdesc", - "displayName": "Allow WebUSB on specific sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbblockedforurls", - "displayName": "Block WebUSB on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_unthrottlednestedtimeoutenabled", + "displayName": "JavaScript setTimeout will not be clamped until a higher nesting threshold is set (deprecated) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbblockedforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_unthrottlednestedtimeoutenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbblockedforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_unthrottlednestedtimeoutenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~contentsettings_webusbblockedforurls_webusbblockedforurlsdesc", - "displayName": "Block WebUSB on specific sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderenabled", - "displayName": "Enable the default search provider (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_internetexplorerintegrationalwaysuseoscapture", + "displayName": "Always use the OS capture engine to avoid issues with capturing Internet Explorer mode tabs (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_internetexplorerintegrationalwaysuseoscapture_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_internetexplorerintegrationalwaysuseoscapture_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderencodings", - "displayName": "Default search provider encodings (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeenabled_recommended", + "displayName": "Efficiency mode enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderencodings_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderencodings_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderencodings_defaultsearchproviderencodingsdesc", - "displayName": "Default search provider encodings (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurl", - "displayName": "Specifies the search-by-image feature for the default search provider (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeonpowerenabled_recommended", + "displayName": "Enable efficiency mode when the device is connected to a power source (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurl_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeonpowerenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurl_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeonpowerenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurl_defaultsearchproviderimageurl", - "displayName": "Specifies the search-by-image feature for the default search provider (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurlpostparams", - "displayName": "Parameters for an image URL that uses POST (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeenabled", + "displayName": "Efficiency mode enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurlpostparams_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurlpostparams_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderimageurlpostparams_defaultsearchproviderimageurlpostparams", - "displayName": "Parameters for an image URL that uses POST (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderkeyword", - "displayName": "Default search provider keyword (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeonpowerenabled", + "displayName": "Enable efficiency mode when the device is connected to a power source (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderkeyword_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeonpowerenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderkeyword_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeonpowerenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchproviderkeyword_defaultsearchproviderkeyword", - "displayName": "Default search provider keyword (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidername", - "displayName": "Default search provider name (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~printing_printpdfasimagedefault", + "displayName": "Print PDF as Image Default (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidername_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~printing_printpdfasimagedefault_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidername_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~printing_printpdfasimagedefault_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidername_defaultsearchprovidername", - "displayName": "Default search provider name (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersearchurl", - "displayName": "Default search provider search URL (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_enhancesecuritymodebypassintranet", + "displayName": "Enhanced Security Mode configuration for Intranet zone sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersearchurl_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_enhancesecuritymodebypassintranet_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersearchurl_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_enhancesecuritymodebypassintranet_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersearchurl_defaultsearchprovidersearchurl", - "displayName": "Default search provider search URL (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersuggesturl", - "displayName": "Default search provider URL for suggestions (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_eventpathenabled", + "displayName": "Re-enable the Event.path API until Microsoft Edge version 115 (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersuggesturl_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_eventpathenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersuggesturl_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_eventpathenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~defaultsearchprovider_defaultsearchprovidersuggesturl_defaultsearchprovidersuggesturl", - "displayName": "Default search provider URL for suggestions (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionallowedtypes", - "displayName": "Configure allowed extension types (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_internetexplorerintegrationlocalmhtfileallowed", + "displayName": "Allow local MHTML files to open automatically in Internet Explorer mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionallowedtypes_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_internetexplorerintegrationlocalmhtfileallowed_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionallowedtypes_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_internetexplorerintegrationlocalmhtfileallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionallowedtypes_extensionallowedtypesdesc", - "displayName": "Types of extensions/apps that are allowed to be installed (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallallowlist", - "displayName": "Allow specific extensions to be installed (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_recommended~performance_recommended_performancedetectorenabled_recommended", + "displayName": "Performance Detector Enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallallowlist_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_recommended~performance_recommended_performancedetectorenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallallowlist_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_recommended~performance_recommended_performancedetectorenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallallowlist_extensioninstallallowlistdesc", - "displayName": "Extension IDs to exempt from the block list (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallblocklist", - "displayName": "Control which extensions cannot be installed (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_webselectenabled", + "displayName": "Web Select Enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallblocklist_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_webselectenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallblocklist_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_webselectenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallblocklist_extensioninstallblocklistdesc", - "displayName": "Extension IDs the user should be prevented from installing (or * for all) (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallforcelist", - "displayName": "Control which extensions are installed silently (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlaccess", + "displayName": "Force WebSQL to be enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallforcelist_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlaccess_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallforcelist_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlaccess_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallforcelist_extensioninstallforcelistdesc", - "displayName": "Extension/App IDs and update URLs to be silently installed (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallsources", - "displayName": "Configure extension and user script install sources (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlnonsecurecontextenabled", + "displayName": "Force WebSQL in non-secure contexts to be enabled (deprecated) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallsources_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlnonsecurecontextenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallsources_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlnonsecurecontextenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensioninstallsources_extensioninstallsourcesdesc", - "displayName": "URL patterns to allow extension, app, and user script installs from (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionsettings", - "displayName": "Configure extension management settings (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~edgeworkspaces_edgeworkspacesenabled", + "displayName": "Enable Workspaces (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionsettings_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~edgeworkspaces_edgeworkspacesenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionsettings_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~edgeworkspaces_edgeworkspacesenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~extensions_extensionsettings_extensionsettings", - "displayName": "Configure extension management settings (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_enablemediarouter", - "displayName": "Enable Google Cast (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~identity_linkedaccountenabled", + "displayName": "Enable the linked account feature (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_enablemediarouter_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~identity_linkedaccountenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_enablemediarouter_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~identity_linkedaccountenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_showcasticonintoolbar", - "displayName": "Show the cast icon in the toolbar (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~performance_performancedetectorenabled", + "displayName": "Performance Detector Enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_showcasticonintoolbar_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~performance_performancedetectorenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~googlecast_showcasticonintoolbar_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~performance_performancedetectorenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_allowcrossoriginauthprompt", - "displayName": "Allow cross-origin HTTP Basic Auth prompts (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~startup_restoreonstartupuserurlsenabled", + "displayName": "Allow users to add and remove their own sites during startup when the RestoreOnStartupURLs policy is configured (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_allowcrossoriginauthprompt_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~startup_restoreonstartupuserurlsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_allowcrossoriginauthprompt_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~startup_restoreonstartupuserurlsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authnegotiatedelegateallowlist", - "displayName": "Specifies a list of servers that Microsoft Edge can delegate user credentials to (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting", + "displayName": "Set the default \"share additional operating system region\" setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authnegotiatedelegateallowlist_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authnegotiatedelegateallowlist_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authnegotiatedelegateallowlist_authnegotiatedelegateallowlist", - "displayName": "Specifies a list of servers that Microsoft Edge can delegate user credentials to (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authschemes", - "displayName": "Supported authentication schemes (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_defaultshareadditionalosregionsetting", + "displayName": "'Set the default \"share additional operating system region\" setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authschemes_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_defaultshareadditionalosregionsetting_0", + "displayName": "Limited", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authschemes_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_defaultshareadditionalosregionsetting_1", + "displayName": "Always share the OS Regional format", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_defaultshareadditionalosregionsetting_2", + "displayName": "Never share the OS Regional format", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authschemes_authschemes", - "displayName": "Supported authentication schemes (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authserverallowlist", - "displayName": "Configure list of allowed authentication servers (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_encryptedclienthelloenabled", + "displayName": "TLS Encrypted ClientHello Enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authserverallowlist_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_encryptedclienthelloenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authserverallowlist_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_encryptedclienthelloenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_authserverallowlist_authserverallowlist", - "displayName": "Configure list of allowed authentication servers (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_disableauthnegotiatecnamelookup", - "displayName": "Disable CNAME lookup when negotiating Kerberos authentication (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended", + "displayName": "Set the default \"share additional operating system region\" setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_disableauthnegotiatecnamelookup_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_disableauthnegotiatecnamelookup_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_enableauthnegotiateport", - "displayName": "Include non-standard port in Kerberos SPN (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_defaultshareadditionalosregionsetting", + "displayName": "'Set the default \"share additional operating system region\" setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_enableauthnegotiateport_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_defaultshareadditionalosregionsetting_0", + "displayName": "Limited", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~httpauthentication_enableauthnegotiateport_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_defaultshareadditionalosregionsetting_1", + "displayName": "Always share the OS Regional format", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_defaultshareadditionalosregionsetting_2", + "displayName": "Never share the OS Regional format", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingallowlist", - "displayName": "Control which native messaging hosts users can use (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge~startup_newtabpageapplauncherenabled", + "displayName": "Hide App Launcher on Microsoft Edge new tab page (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingallowlist_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge~startup_newtabpageapplauncherenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingallowlist_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge~startup_newtabpageapplauncherenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingallowlist_nativemessagingallowlistdesc", - "displayName": "Names of the native messaging hosts to exempt from the block list (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingblocklist", - "displayName": "Configure native messaging block list (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardallowedforurls", + "displayName": "Allow clipboard use on specific sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingblocklist_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardallowedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingblocklist_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardallowedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessagingblocklist_nativemessagingblocklistdesc", - "displayName": "Names of the forbidden native messaging hosts (or * for all) (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardallowedforurls_clipboardallowedforurlsdesc", + "displayName": "Allow clipboard use on specific sites (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessaginguserlevelhosts", - "displayName": "Allow user-level native messaging hosts (installed without admin permissions) (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardblockedforurls", + "displayName": "Block clipboard use on specific sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessaginguserlevelhosts_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~nativemessaging_nativemessaginguserlevelhosts_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordmanagerenabled", - "displayName": "Enable saving passwords to the password manager (User)", - "options": [ - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordmanagerenabled_0", - "displayName": "Disabled", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordmanagerenabled_1", - "displayName": "Enabled", - "description": null - } - ] + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardblockedforurls_clipboardblockedforurlsdesc", + "displayName": "Block clipboard use on specific sites (User)", + "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionchangepasswordurl", - "displayName": "Configure the change password URL (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting", + "displayName": "Default clipboard site permission (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionchangepasswordurl_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionchangepasswordurl_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionchangepasswordurl_passwordprotectionchangepasswordurl", - "displayName": "Configure the change password URL (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionloginurls", - "displayName": "Configure the list of enterprise login URLs where password protection service should capture fingerprint of password (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_defaultclipboardsetting", + "displayName": "Default clipboard site permission (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionloginurls_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_defaultclipboardsetting_2", + "displayName": "Do not allow any site to use the clipboard site permission", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionloginurls_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_defaultclipboardsetting_3", + "displayName": "Allow sites to ask the user to grant the clipboard site permission", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionloginurls_passwordprotectionloginurlsdesc", - "displayName": "Configure the list of enterprise login URLs where password protection service should capture fingerprint of password (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger", - "displayName": "Configure password protection warning trigger (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_microsoftrootstoreenabled", + "displayName": "Determines whether the Microsoft Root Store and built-in certificate verifier will be used to verify server certificates (obsolete) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_microsoftrootstoreenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_microsoftrootstoreenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_passwordprotectionwarningtrigger", - "displayName": "Configure password protection warning trigger (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowalldevicesforurls", + "displayName": "Allow listed sites to connect to any HID device (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_passwordprotectionwarningtrigger_0", - "displayName": "Password protection warning is off", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowalldevicesforurls_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~passwordmanager_passwordprotectionwarningtrigger_passwordprotectionwarningtrigger_1", - "displayName": "Password protection warning is triggered by password reuse", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowalldevicesforurls_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_defaultprinterselection", - "displayName": "Default printer selection rules (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowalldevicesforurls_webhidallowalldevicesforurlsdesc", + "displayName": "Allow listed sites to connect to any HID device (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdevicesforurls", + "displayName": "Allow listed sites connect to specific HID devices (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_defaultprinterselection_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdevicesforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_defaultprinterselection_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdevicesforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_defaultprinterselection_defaultprinterselection", - "displayName": "Default printer selection rules (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdevicesforurls_webhidallowdevicesforurls", + "displayName": "Allow listed sites connect to specific HID devices (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printheaderfooter", - "displayName": "Print headers and footers (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdeviceswithhidusagesforurls", + "displayName": "Automatically grant permission to these sites to connect to HID devices containing top-level collections with the given HID usage (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printheaderfooter_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdeviceswithhidusagesforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printheaderfooter_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdeviceswithhidusagesforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printingenabled", - "displayName": "Enable printing (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdeviceswithhidusagesforurls_webhidallowdeviceswithhidusagesforurls", + "displayName": "Automatically grant permission to these sites to connect to HID devices containing top-level collections with the given HID usage (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_autofillmembershipsenabled", + "displayName": "Save and fill memberships (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printingenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_autofillmembershipsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printingenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_autofillmembershipsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printpreviewusesystemdefaultprinter", - "displayName": "Set the system default printer as the default printer (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_autofillmembershipsenabled_recommended", + "displayName": "Save and fill memberships (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printpreviewusesystemdefaultprinter_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_autofillmembershipsenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_printpreviewusesystemdefaultprinter_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_autofillmembershipsenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_usesystemprintdialog", - "displayName": "Print using system print dialog (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_searchfiltersenabled_recommended", + "displayName": "Search Filters Enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_usesystemprintdialog_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_searchfiltersenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~printing_usesystemprintdialog_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_searchfiltersenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxybypasslist", - "displayName": "Configure proxy bypass rules (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended~printing_recommended_printpreviewstickysettings_recommended", + "displayName": "Configure the sticky print preview settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxybypasslist_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended~printing_recommended_printpreviewstickysettings_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxybypasslist_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended~printing_recommended_printpreviewstickysettings_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxybypasslist_proxybypasslist", - "displayName": "Comma-separated list of proxy bypass rules (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended~printing_recommended_printpreviewstickysettings_recommended_printpreviewstickysettings", + "displayName": "Configure the sticky print preview settings (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode", - "displayName": "Configure proxy server settings (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchfiltersenabled", + "displayName": "Search Filters Enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchfiltersenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchfiltersenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode", - "displayName": "Configure proxy server settings (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled", + "displayName": "Search in Sidebar enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_direct", - "displayName": "Never use a proxy", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_auto_detect", - "displayName": "Auto detect proxy settings", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_pac_script", - "displayName": "Use a .pac proxy script", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_fixed_servers", - "displayName": "Use fixed proxy servers", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxymode_proxymode_system", - "displayName": "Use system proxy settings", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxypacurl", - "displayName": "Set the proxy .pac file URL (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_searchinsidebarenabled", + "displayName": "Search in Sidebar enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxypacurl_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_searchinsidebarenabled_0", + "displayName": "Enable search in sidebar", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxypacurl_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_searchinsidebarenabled_1", + "displayName": "Disable search in sidebar for Kids Mode", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_searchinsidebarenabled_2", + "displayName": "Disable search in sidebar", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxypacurl_proxypacurl", - "displayName": "Set the proxy .pac file URL (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxyserver", - "displayName": "Configure address or URL of proxy server (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsallowedforurls", + "displayName": "Allow multiple automatic downloads in quick succession on specific sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxyserver_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsallowedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxyserver_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsallowedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxyserver_proxyserver", - "displayName": "Configure address or URL of proxy server (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsallowedforurls_automaticdownloadsallowedforurlsdesc", + "displayName": "Allow multiple automatic downloads in quick succession on specific sites (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxysettings", - "displayName": "Proxy settings (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsblockedforurls", + "displayName": "Block multiple automatic downloads in quick succession on specific sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxysettings_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxysettings_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~proxy_proxysettings_proxysettings", - "displayName": "Proxy settings (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsblockedforurls_automaticdownloadsblockedforurlsdesc", + "displayName": "Block multiple automatic downloads in quick succession on specific sites (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverride", - "displayName": "Prevent bypassing Microsoft Defender SmartScreen prompts for sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting", + "displayName": "Default automatic downloads setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverride_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverride_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverrideforfiles", - "displayName": "Prevent bypassing of Microsoft Defender SmartScreen warnings about downloads (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_defaultautomaticdownloadssetting", + "displayName": "Default automatic downloads setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverrideforfiles_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_defaultautomaticdownloadssetting_1", + "displayName": "Allow all websites to perform automatic downloads", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_preventsmartscreenpromptoverrideforfiles_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_defaultautomaticdownloadssetting_2", + "displayName": "Don't allow any website to perform automatic downloads", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenallowlistdomains", - "displayName": "Configure the list of domains for which Microsoft Defender SmartScreen won't trigger warnings (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~edgeworkspaces_workspacesnavigationsettings", + "displayName": "Configure navigation settings per groups of URLs in Microsoft Edge Workspaces (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenallowlistdomains_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~edgeworkspaces_workspacesnavigationsettings_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenallowlistdomains_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~edgeworkspaces_workspacesnavigationsettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenallowlistdomains_smartscreenallowlistdomainsdesc", - "displayName": "Configure the list of domains for which SmartScreen won't trigger warnings (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~edgeworkspaces_workspacesnavigationsettings_workspacesnavigationsettings", + "displayName": "Configure navigation settings per groups of URLs in Microsoft Edge Workspaces (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenenabled", - "displayName": "Configure Microsoft Defender SmartScreen (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereadergrammartoolsenabled", + "displayName": "Enable Grammar Tools feature within Immersive Reader in Microsoft Edge (obsolete) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereadergrammartoolsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~smartscreen_smartscreenenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereadergrammartoolsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepageisnewtabpage", - "displayName": "Set the new tab page as the home page (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereaderpicturedictionaryenabled", + "displayName": "Enable Picture Dictionary feature within Immersive Reader in Microsoft Edge (obsolete) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepageisnewtabpage_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereaderpicturedictionaryenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepageisnewtabpage_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereaderpicturedictionaryenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepagelocation", - "displayName": "Configure the home page URL (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~printing_printpreviewstickysettings", + "displayName": "Configure the sticky print preview settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepagelocation_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~printing_printpreviewstickysettings_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepagelocation_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~printing_printpreviewstickysettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_homepagelocation_homepagelocation", - "displayName": "Home page URL (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~printing_printpreviewstickysettings_printpreviewstickysettings", + "displayName": "Configure the sticky print preview settings (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagehidedefaulttopsites", - "displayName": "Hide the default top sites from the new tab page (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_internetexplorermodecleardataonexitenabled", + "displayName": "Clear history for IE and IE mode every time you exit (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagehidedefaulttopsites_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_internetexplorermodecleardataonexitenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagehidedefaulttopsites_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_internetexplorermodecleardataonexitenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagelocation", - "displayName": "Configure the new tab page URL (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_newpdfreaderenabled", + "displayName": "Microsoft Edge built-in PDF reader powered by Adobe Acrobat enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagelocation_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_newpdfreaderenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagelocation_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_newpdfreaderenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_newtabpagelocation_newtabpagelocation", - "displayName": "New tab page URL (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup", - "displayName": "Action to take on startup (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_recommended_newpdfreaderenabled_recommended", + "displayName": "Microsoft Edge built-in PDF reader powered by Adobe Acrobat enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_recommended_newpdfreaderenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_recommended_newpdfreaderenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup", - "displayName": "Action to take on startup (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_sharedarraybufferunrestrictedaccessallowed", + "displayName": "Specifies whether SharedArrayBuffers can be used in a non cross-origin-isolated context (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup_5", - "displayName": "Open a new tab", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup_1", - "displayName": "Restore the last session", + "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_sharedarraybufferunrestrictedaccessallowed_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartup_restoreonstartup_4", - "displayName": "Open a list of URLs", + "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_sharedarraybufferunrestrictedaccessallowed_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartupurls", - "displayName": "Sites to open when the browser starts (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_showacrobatsubscriptionbutton", + "displayName": "Shows button on native PDF viewer in Microsoft Edge that allows users to sign up for Adobe Acrobat subscription (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartupurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_showacrobatsubscriptionbutton_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartupurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_showacrobatsubscriptionbutton_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_restoreonstartupurls_restoreonstartupurlsdesc", - "displayName": "Sites to open when the browser starts (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_showhomebutton", - "displayName": "Show Home button on toolbar (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_cryptowalletenabled", + "displayName": "Enable CryptoWallet feature (obsolete) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_showhomebutton_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_cryptowalletenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edge~policy~microsoft_edge~startup_showhomebutton_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_cryptowalletenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions", - "displayName": "Allow download restrictions (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_mousegestureenabled", + "displayName": "Mouse Gesture Enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_mousegestureenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_mousegestureenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions", - "displayName": "Download restrictions (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_readaloudenabled", + "displayName": "Enable Read Aloud feature in Microsoft Edge (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_0", - "displayName": "No special restrictions", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_1", - "displayName": "Block malicious downloads and dangerous file types", + "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_readaloudenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_2", - "displayName": "Block potentially dangerous or unwanted downloads and dangerous file types", + "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_readaloudenabled_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_restorepdfview", + "displayName": "Restore PDF view (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_3", - "displayName": "Block all downloads", + "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_restorepdfview_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_downloadrestrictions_downloadrestrictions_4", - "displayName": "Block malicious downloads", + "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_restorepdfview_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended", - "displayName": "Allow download restrictions (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_tabservicesenabled", + "displayName": "Enable tab organization suggestions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_tabservicesenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_tabservicesenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions", - "displayName": "Download restrictions (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_defaultbrowsersettingscampaignenabled", + "displayName": "Enables default browser settings campaigns (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_0", - "displayName": "No special restrictions", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_1", - "displayName": "Block malicious downloads and dangerous file types", + "id": "user_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_defaultbrowsersettingscampaignenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_2", - "displayName": "Block potentially dangerous or unwanted downloads and dangerous file types", + "id": "user_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_defaultbrowsersettingscampaignenabled_1", + "displayName": "Enabled", "description": null - }, + } + ] + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_discoverpagecontextenabled", + "displayName": "Enable Discover access to page contents for AAD profiles (obsolete) (User)", + "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_3", - "displayName": "Block all downloads", + "id": "user_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_discoverpagecontextenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgeupdates.2~policy~microsoft_edge_recommended_downloadrestrictions_recommended_downloadrestrictions_4", - "displayName": "Block malicious downloads", + "id": "user_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_discoverpagecontextenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_adstransparencyenabled", - "displayName": "Configure if the ads transparency feature is enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_enforcelocalanchorconstraintsenabled", + "displayName": "Determines whether the built-in certificate verifier will enforce constraints encoded into trust anchors loaded from the platform trust store (obsolete) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_adstransparencyenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_enforcelocalanchorconstraintsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_adstransparencyenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_enforcelocalanchorconstraintsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_hiderestoredialogenabled", - "displayName": "Hide restore pages dialog after browser crash (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_showdownloadstoolbarbutton", + "displayName": "Show Downloads button on the toolbar (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_hiderestoredialogenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_showdownloadstoolbarbutton_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_hiderestoredialogenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_showdownloadstoolbarbutton_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_pdfsecuremode", - "displayName": "Secure mode and Certificate-based Digital Signature validation in native PDF reader (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_standalonehubssidebarenabled", + "displayName": "Standalone Sidebar Enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_pdfsecuremode_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_standalonehubssidebarenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_pdfsecuremode_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_standalonehubssidebarenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_promptonmultiplematchingcertificates", - "displayName": "Prompt the user to select a certificate when multiple certificates match (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_composeinlineenabled", + "displayName": "Compose is enabled for writing on the web (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_promptonmultiplematchingcertificates_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_composeinlineenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge_promptonmultiplematchingcertificates_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_composeinlineenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting", - "displayName": "Control use of the WebHID API (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeindicatoruienabled", + "displayName": "Manage the indicator UI of the Enhanced Security Mode (ESM) feature in Microsoft Edge (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeindicatoruienabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeindicatoruienabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_defaultwebhidguardsetting", - "displayName": "Control use of the WebHID API (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeoptoutuxenabled", + "displayName": "Manage opt-out user experience for Enhanced Security Mode (ESM) in Microsoft Edge (deprecated) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_defaultwebhidguardsetting_2", - "displayName": "Do not allow any site to request access to HID devices via the WebHID API", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeoptoutuxenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_defaultwebhidguardsetting_defaultwebhidguardsetting_3", - "displayName": "Allow sites to ask the user to grant access to a HID device", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_enhancesecuritymodeoptoutuxenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidaskforurls", - "displayName": "Allow the WebHID API on these sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_recommended_walletdonationenabled_recommended", + "displayName": "Wallet Donation Enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidaskforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_recommended_walletdonationenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidaskforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_recommended_walletdonationenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidaskforurls_webhidaskforurlsdesc", - "displayName": "Allow the WebHID API on these sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidblockedforurls", - "displayName": "Block the WebHID API on these sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_searchforimageenabled", + "displayName": "Search for image enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidblockedforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_searchforimageenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidblockedforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_searchforimageenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev100~policy~microsoft_edge~contentsettings_webhidblockedforurls_webhidblockedforurlsdesc", - "displayName": "Block the WebHID API on these sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_configurekeyboardshortcuts", - "displayName": "Configure the list of commands for which to disable keyboard shortcuts (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_walletdonationenabled", + "displayName": "Wallet Donation Enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_configurekeyboardshortcuts_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_walletdonationenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_configurekeyboardshortcuts_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge_walletdonationenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_configurekeyboardshortcuts_configurekeyboardshortcuts", - "displayName": "Configure the list of commands for which to disable keyboard shortcuts (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_edgeassetdeliveryserviceenabled", - "displayName": "Allow features to download assets from the Asset Delivery Service (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenabled", + "displayName": "Microsoft Edge management enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_edgeassetdeliveryserviceenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_edgeassetdeliveryserviceenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_internetexplorermodeenablesavepageas", - "displayName": "Allow Save page as in Internet Explorer mode (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenrollmenttoken", + "displayName": "Microsoft Edge management enrollment token (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_internetexplorermodeenablesavepageas_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenrollmenttoken_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_internetexplorermodeenablesavepageas_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenrollmenttoken_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_edgeassetdeliveryserviceenabled_recommended", - "displayName": "Allow features to download assets from the Asset Delivery Service (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementenrollmenttoken_edgemanagementenrollmenttoken", + "displayName": "Microsoft Edge management enrollment token (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementextensionsfeedbackenabled", + "displayName": "Microsoft Edge management extensions feedback enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_edgeassetdeliveryserviceenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementextensionsfeedbackenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_edgeassetdeliveryserviceenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev115~policy~microsoft_edge~manageability_edgemanagementextensionsfeedbackenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_sitesafetyservicesenabled_recommended", - "displayName": "Allow users to configure Site safety services (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_recommended~performance_recommended_pinbrowseressentialstoolbarbutton_recommended", + "displayName": "Pin browser essentials toolbar button (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_sitesafetyservicesenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_recommended~performance_recommended_pinbrowseressentialstoolbarbutton_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended_sitesafetyservicesenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_recommended~performance_recommended_pinbrowseressentialstoolbarbutton_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended~extensions_recommended_controldefaultstateofallowextensionfromotherstoressettingenabled_recommended", - "displayName": "Configure default state of Allow extensions from other stores setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_throttlenonvisiblecrossoriginiframesallowed", + "displayName": "Allows enabling throttling of non-visible, cross-origin iframes (obsolete) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended~extensions_recommended_controldefaultstateofallowextensionfromotherstoressettingenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_throttlenonvisiblecrossoriginiframesallowed_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_recommended~extensions_recommended_controldefaultstateofallowextensionfromotherstoressettingenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge_throttlenonvisiblecrossoriginiframesallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_sitesafetyservicesenabled", - "displayName": "Allow users to configure Site safety services (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting", + "displayName": "Default setting for third-party storage partitioning (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_sitesafetyservicesenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge_sitesafetyservicesenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~identity_edgedefaultprofileenabled", - "displayName": "Default Profile Setting Enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting_defaultthirdpartystoragepartitioningsetting", + "displayName": "Default setting for third-party storage partitioning (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~identity_edgedefaultprofileenabled_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting_defaultthirdpartystoragepartitioningsetting_1", + "displayName": "Let third-party storage partitioning to be enabled.", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~identity_edgedefaultprofileenabled_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_defaultthirdpartystoragepartitioningsetting_defaultthirdpartystoragepartitioningsetting_2", + "displayName": "Block third-party storage partitioning from being enabled.", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~identity_edgedefaultprofileenabled_edgedefaultprofileenabled", - "displayName": "Default Profile Setting Enabled (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~kioskmode_kioskswipegesturesenabled", - "displayName": "Swipe gestures in Microsoft Edge kiosk mode enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_thirdpartystoragepartitioningblockedfororigins", + "displayName": "Disable third-party storage partitioning for specific top-level origins (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~kioskmode_kioskswipegesturesenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_thirdpartystoragepartitioningblockedfororigins_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev101~policy~microsoft_edge~kioskmode_kioskswipegesturesenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_thirdpartystoragepartitioningblockedfororigins_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_networkservicesandboxenabled", - "displayName": "Enable the network service sandbox (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~contentsettings_thirdpartystoragepartitioningblockedfororigins_thirdpartystoragepartitioningblockedfororiginsdesc", + "displayName": "Block third-party storage partitioning for these origins (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~performance_pinbrowseressentialstoolbarbutton", + "displayName": "Pin browser essentials toolbar button (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_networkservicesandboxenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~performance_pinbrowseressentialstoolbarbutton_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_networkservicesandboxenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev116~policy~microsoft_edge~performance_pinbrowseressentialstoolbarbutton_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_outlookhubmenuenabled", - "displayName": "Allow users to access the Outlook menu (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_allowsystemnotifications", + "displayName": "Allows system notifications (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_outlookhubmenuenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_allowsystemnotifications_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_outlookhubmenuenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_allowsystemnotifications_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_recommended_outlookhubmenuenabled_recommended", - "displayName": "Allow users to access the Outlook menu (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_edgewalletetreeenabled", + "displayName": "Edge Wallet E-Tree Enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_recommended_outlookhubmenuenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_edgewalletetreeenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_recommended_outlookhubmenuenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_edgewalletetreeenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_settimeoutwithout1msclampenabled", - "displayName": "Control Javascript setTimeout() function minimum timeout (deprecated) (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_internetexplorerintegrationzoneidentifiermhtfileallowed", + "displayName": "Automatically open downloaded MHT or MHTML files from the web in Internet Explorer mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_settimeoutwithout1msclampenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_internetexplorerintegrationzoneidentifiermhtfileallowed_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_settimeoutwithout1msclampenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_internetexplorerintegrationzoneidentifiermhtfileallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_useragentclienthintsgreaseupdateenabled", - "displayName": "Control the User-Agent Client Hints GREASE Update feature (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended_edgewalletetreeenabled_recommended", + "displayName": "Edge Wallet E-Tree Enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_useragentclienthintsgreaseupdateenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended_edgewalletetreeenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge_useragentclienthintsgreaseupdateenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended_edgewalletetreeenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge~httpauthentication_allhttpauthschemesallowedfororigins", - "displayName": "List of origins that allow all HTTP authentication (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended~edgegames_recommended_gamermodeenabled_recommended", + "displayName": "Enable Gamer Mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge~httpauthentication_allhttpauthschemesallowedfororigins_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended~edgegames_recommended_gamermodeenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge~httpauthentication_allhttpauthschemesallowedfororigins_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_recommended~edgegames_recommended_gamermodeenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev102~policy~microsoft_edge~httpauthentication_allhttpauthschemesallowedfororigins_allhttpauthschemesallowedfororiginsdesc", - "displayName": "List of origins that allow all HTTP authentication (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_internetexplorerzoomdisplay", - "displayName": "Display zoom in IE Mode tabs with DPI Scale included like it is in Internet Explorer (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarallowed", + "displayName": "Enable the Search bar (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_internetexplorerzoomdisplay_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarallowed_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_internetexplorerzoomdisplay_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_livecaptionsallowed", - "displayName": "Live captions allowed (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarisenabledonstartup", + "displayName": "Allow the Search bar at Windows startup (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_livecaptionsallowed_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarisenabledonstartup_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_livecaptionsallowed_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_searchbarisenabledonstartup_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_originagentclusterdefaultenabled", - "displayName": "Origin-keyed agent clustering enabled by default (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_showhistorythumbnails", + "displayName": "Show thumbnail images for browsing history (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_originagentclusterdefaultenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_showhistorythumbnails_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge_originagentclusterdefaultenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_showhistorythumbnails_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge~identity_guidedswitchenabled", - "displayName": "Guided Switch Enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_splitscreenenabled", + "displayName": "Enable split screen feature in Microsoft Edge (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge~identity_guidedswitchenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_splitscreenenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev103~policy~microsoft_edge~identity_guidedswitchenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_splitscreenenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_alloweddomainsforapps", - "displayName": "Define domains allowed to access Google Workspace (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_uploadfromphoneenabled", + "displayName": "Enable upload files from mobile in Microsoft Edge desktop (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_alloweddomainsforapps_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_uploadfromphoneenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_alloweddomainsforapps_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge_uploadfromphoneenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_alloweddomainsforapps_alloweddomainsforapps", - "displayName": "Define domains allowed to access Google Workspace (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_askbeforecloseenabled", - "displayName": "Get user confirmation before closing a browser window with multiple tabs (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge~edgegames_gamermodeenabled", + "displayName": "Enable Gamer Mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_askbeforecloseenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge~edgegames_gamermodeenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_askbeforecloseenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev117~policy~microsoft_edge~edgegames_gamermodeenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting", - "displayName": "Configure browser process code integrity guard setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_beforeunloadeventcancelbypreventdefaultenabled", + "displayName": "Control the behavior for the cancel dialog produced by the beforeunload event (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_beforeunloadeventcancelbypreventdefaultenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_beforeunloadeventcancelbypreventdefaultenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_browsercodeintegritysetting", - "displayName": "Configure browser process code integrity guard setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcebuiltinpushmessagingclient", + "displayName": "Forces Microsoft Edge to use its built-in WNS push client to connect to the Windows Push Notification Service. (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_browsercodeintegritysetting_0", - "displayName": "Do not enable code integrity guard in the browser process.", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_browsercodeintegritysetting_1", - "displayName": "Enable code integrity guard audit mode in the browser process.", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcebuiltinpushmessagingclient_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_browsercodeintegritysetting_browsercodeintegritysetting_2", - "displayName": "Enable code integrity guard enforcement in the browser process.", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcebuiltinpushmessagingclient_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_doubleclickclosetabenabled", - "displayName": "Double Click feature in Microsoft Edge enabled (only available in China) (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcepermissionpolicyunloaddefaultenabled", + "displayName": "Controls whether unload event handlers can be disabled. (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_doubleclickclosetabenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcepermissionpolicyunloaddefaultenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_doubleclickclosetabenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_forcepermissionpolicyunloaddefaultenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_edgeedropenabled", - "displayName": "Enable Drop feature in Microsoft Edge (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_pictureinpictureoverlayenabled", + "displayName": "Enable Picture in Picture overlay feature on supported webpages in Microsoft Edge (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_edgeedropenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_pictureinpictureoverlayenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_edgeedropenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_pictureinpictureoverlayenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_importoneachlaunch", - "displayName": "Allow import of data from other browsers on each Microsoft Edge launch (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_recommended~passwordmanager_recommended_passworddeleteonbrowsercloseenabled_recommended", + "displayName": "Prevent passwords from being deleted if any Edge settings is enabled to delete browsing data when Microsoft Edge closes (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_importoneachlaunch_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_recommended~passwordmanager_recommended_passworddeleteonbrowsercloseenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_importoneachlaunch_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_recommended~passwordmanager_recommended_passworddeleteonbrowsercloseenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_pdfxfaenabled", - "displayName": "XFA support in native PDF reader enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_sendmouseeventsdisabledformcontrolsenabled", + "displayName": "Control the new behavior for event dispatching on disabled form controls (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_pdfxfaenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_sendmouseeventsdisabledformcontrolsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_pdfxfaenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge_sendmouseeventsdisabledformcontrolsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_quicksearchshowminimenu", - "displayName": "Enables Microsoft Edge mini menu (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~contentsettings_dataurlinsvguseenabled", + "displayName": "Data URL support for SVGUseElement (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_quicksearchshowminimenu_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~contentsettings_dataurlinsvguseenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_quicksearchshowminimenu_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~contentsettings_dataurlinsvguseenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_askbeforecloseenabled_recommended", - "displayName": "Get user confirmation before closing a browser window with multiple tabs (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~network_compressiondictionarytransportenabled", + "displayName": "Enable compression dictionary transport support (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_askbeforecloseenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~network_compressiondictionarytransportenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_askbeforecloseenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~network_compressiondictionarytransportenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_quicksearchshowminimenu_recommended", - "displayName": "Enables Microsoft Edge mini menu (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~passwordmanager_passworddeleteonbrowsercloseenabled", + "displayName": "Prevent passwords from being deleted if any Edge settings is enabled to delete browsing data when Microsoft Edge closes (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_quicksearchshowminimenu_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~passwordmanager_passworddeleteonbrowsercloseenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_recommended_quicksearchshowminimenu_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~passwordmanager_passworddeleteonbrowsercloseenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_textpredictionenabled", - "displayName": "Text prediction enabled by default (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~smartscreen_exemptsmartscreendownloadwarnings", + "displayName": "Disable SmartScreen AppRep based warnings for specified file types on specified domains (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_textpredictionenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~smartscreen_exemptsmartscreendownloadwarnings_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge_textpredictionenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~smartscreen_exemptsmartscreendownloadwarnings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge~passwordmanager_passwordmanagerrestrictlengthenabled", - "displayName": "Restrict the length of passwords that can be saved in the Password Manager (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~smartscreen_exemptsmartscreendownloadwarnings_exemptsmartscreendownloadwarnings", + "displayName": "Disable SmartScreen AppRep based warnings for specified file types on specified domains (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagebingchatenabled", + "displayName": "Disable Bing chat entry-points on Microsoft Edge Enterprise new tab page (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge~passwordmanager_passwordmanagerrestrictlengthenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagebingchatenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev104~policy~microsoft_edge~passwordmanager_passwordmanagerrestrictlengthenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagebingchatenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_exemptfiletypedownloadwarnings", - "displayName": "Disable download file type extension-based warnings for specified file types on domains (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagecompanylogoenabled", + "displayName": "Hide the company logo on the Microsoft Edge new tab page (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_exemptfiletypedownloadwarnings_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagecompanylogoenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_exemptfiletypedownloadwarnings_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev118~policy~microsoft_edge~startup_newtabpagecompanylogoenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_exemptfiletypedownloadwarnings_exemptfiletypedownloadwarnings", - "displayName": "Disable download file type extension-based warnings for specified file types on domains (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_internetexplorerintegrationalwayswaitforunload", - "displayName": "Wait for Internet Explorer mode tabs to completely unload before ending the browser session (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge_recommended_organizationalbrandingonworkprofileuienabled_recommended", + "displayName": "Allow the use of your organization's branding assets from Microsoft Entra on the profile-related UI of a work profile (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_internetexplorerintegrationalwayswaitforunload_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge_recommended_organizationalbrandingonworkprofileuienabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_internetexplorerintegrationalwayswaitforunload_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge_recommended_organizationalbrandingonworkprofileuienabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorproofingenabled", - "displayName": "Spell checking provided by Microsoft Editor (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchintranetsitestoworkprofile", + "displayName": "Switch intranet sites to a work profile (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorproofingenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchintranetsitestoworkprofile_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorproofingenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchintranetsitestoworkprofile_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorsynonymsenabled", - "displayName": "Synonyms are provided when using Microsoft Editor spell checker (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchsitesoniemodesitelisttoworkprofile", + "displayName": "Switch sites on the IE mode site list to a work profile (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorsynonymsenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchsitesoniemodesitelisttoworkprofile_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_microsofteditorsynonymsenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~identity_switchsitesoniemodesitelisttoworkprofile_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended", - "displayName": "Configure the default paste format of URLs copied from Microsoft Edge, and determine if additional formats will be available to users (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementpolicyoverridesplatformpolicy", + "displayName": "Microsoft Edge management service policy overrides platform policy. (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementpolicyoverridesplatformpolicy_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementpolicyoverridesplatformpolicy_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_configurefriendlyurlformat", - "displayName": "Configure the default paste format of URLs copied from Microsoft Edge, and determine if additional formats will be available to users (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementuserpolicyoverridescloudmachinepolicy", + "displayName": "Allow cloud-based Microsoft Edge management service user policies to override local user policies. (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_configurefriendlyurlformat_1", - "displayName": "The plain URL without any extra information, such as the page's title. This is the recommended option when this policy is configured. For more information, see the description.", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_configurefriendlyurlformat_3", - "displayName": "Titled Hyperlink: A hyperlink that points to the copied URL, but whose visible text is the title of the destination page. This is the Friendly URL format.", + "id": "user_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementuserpolicyoverridescloudmachinepolicy_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_recommended_configurefriendlyurlformat_recommended_configurefriendlyurlformat_4", - "displayName": "Coming soon. If set, behaves the same as 'Plain URL'.", + "id": "user_vendor_msft_policy_config_microsoft_edgev119~policy~microsoft_edge~manageability_edgemanagementuserpolicyoverridescloudmachinepolicy_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_unthrottlednestedtimeoutenabled", - "displayName": "JavaScript setTimeout will not be clamped until a higher nesting threshold is set (deprecated) (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_edge3pserptelemetryenabled", + "displayName": "Edge 3P SERP Telemetry Enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_unthrottlednestedtimeoutenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_edge3pserptelemetryenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev105~policy~microsoft_edge_unthrottlednestedtimeoutenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_edge3pserptelemetryenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_internetexplorerintegrationalwaysuseoscapture", - "displayName": "Always use the OS capture engine to avoid issues with capturing Internet Explorer mode tabs (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_edge3pserptelemetryenabled_recommended", + "displayName": "Edge 3P SERP Telemetry Enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_internetexplorerintegrationalwaysuseoscapture_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_edge3pserptelemetryenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_internetexplorerintegrationalwaysuseoscapture_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_edge3pserptelemetryenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeenabled_recommended", - "displayName": "Efficiency mode enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_organizationlogooverlayonappiconenabled_recommended", + "displayName": "Allow your organization's logo from Microsoft Entra to be overlaid on the Microsoft Edge app icon of a work profile (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_organizationlogooverlayonappiconenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended_organizationlogooverlayonappiconenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeonpowerenabled_recommended", - "displayName": "Enable efficiency mode when the device is connected to a power source (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~identity_recommended_automaticprofileswitchingsitelist_recommended", + "displayName": "Configure the automatic profile switching site list (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeonpowerenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~identity_recommended_automaticprofileswitchingsitelist_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge_recommended~performance_recommended_efficiencymodeonpowerenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~identity_recommended_automaticprofileswitchingsitelist_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeenabled", - "displayName": "Efficiency mode enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~identity_recommended_automaticprofileswitchingsitelist_recommended_automaticprofileswitchingsitelist", + "displayName": "Configure the automatic profile switching site list (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~sleepingtabs_recommended_autodiscardsleepingtabsenabled_recommended", + "displayName": "Configure auto discard sleeping tabs (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~sleepingtabs_recommended_autodiscardsleepingtabsenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_recommended~sleepingtabs_recommended_autodiscardsleepingtabsenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeonpowerenabled", - "displayName": "Enable efficiency mode when the device is connected to a power source (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_webappsettings", + "displayName": "Web App management settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeonpowerenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_webappsettings_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~performance_efficiencymodeonpowerenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_webappsettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~printing_printpdfasimagedefault", - "displayName": "Print PDF as Image Default (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge_webappsettings_webappsettings", + "displayName": "Web App management settings (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~identity_automaticprofileswitchingsitelist", + "displayName": "Configure the automatic profile switching site list (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~printing_printpdfasimagedefault_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~identity_automaticprofileswitchingsitelist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev106~policy~microsoft_edge~printing_printpdfasimagedefault_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~identity_automaticprofileswitchingsitelist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_enhancesecuritymodebypassintranet", - "displayName": "Enhanced Security Mode configuration for Intranet zone sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~identity_automaticprofileswitchingsitelist_automaticprofileswitchingsitelist", + "displayName": "Configure the automatic profile switching site list (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~sleepingtabs_autodiscardsleepingtabsenabled", + "displayName": "Configure auto discard sleeping tabs (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_enhancesecuritymodebypassintranet_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~sleepingtabs_autodiscardsleepingtabsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_enhancesecuritymodebypassintranet_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev120~policy~microsoft_edge~sleepingtabs_autodiscardsleepingtabsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_eventpathenabled", - "displayName": "Re-enable the Event.path API until Microsoft Edge version 115 (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_nativehostsexecutableslaunchdirectly", + "displayName": "Force Windows executable Native Messaging hosts to launch directly (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_eventpathenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_nativehostsexecutableslaunchdirectly_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_eventpathenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_nativehostsexecutableslaunchdirectly_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_internetexplorerintegrationlocalmhtfileallowed", - "displayName": "Allow local MHTML files to open automatically in Internet Explorer mode (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_postquantumkeyagreementenabled", + "displayName": "Enable post-quantum key agreement for TLS (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_internetexplorerintegrationlocalmhtfileallowed_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_postquantumkeyagreementenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_internetexplorerintegrationlocalmhtfileallowed_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge_postquantumkeyagreementenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_recommended~performance_recommended_performancedetectorenabled_recommended", - "displayName": "Performance Detector Enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~googlecast_edgedisabledialprotocolforcastdiscovery", + "displayName": "Disable DIAL protocol for cast device discovery (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_recommended~performance_recommended_performancedetectorenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~googlecast_edgedisabledialprotocolforcastdiscovery_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_recommended~performance_recommended_performancedetectorenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~googlecast_edgedisabledialprotocolforcastdiscovery_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_webselectenabled", - "displayName": "Web Select Enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsenabled", + "displayName": "Enable Related Website Sets (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_webselectenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_webselectenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlaccess", - "displayName": "Force WebSQL to be enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsoverrides", + "displayName": "Override Related Website Sets. (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlaccess_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsoverrides_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlaccess_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsoverrides_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlnonsecurecontextenabled", - "displayName": "Force WebSQL in non-secure contexts to be enabled (deprecated) (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~relatedwebsitesets_relatedwebsitesetsoverrides_relatedwebsitesetsoverrides", + "displayName": "Override Related Website Sets. (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_preventtyposquattingpromptoverride", + "displayName": "Prevent bypassing Edge Website Typo Protection prompts for sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlnonsecurecontextenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_preventtyposquattingpromptoverride_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge_websqlnonsecurecontextenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_preventtyposquattingpromptoverride_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~edgeworkspaces_edgeworkspacesenabled", - "displayName": "Enable Workspaces (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_typosquattingallowlistdomains", + "displayName": "Configure the list of domains for which Edge Website Typo Protection won't trigger warnings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~edgeworkspaces_edgeworkspacesenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_typosquattingallowlistdomains_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~edgeworkspaces_edgeworkspacesenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_typosquattingallowlistdomains_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~identity_linkedaccountenabled", - "displayName": "Enable the linked account feature (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev121~policy~microsoft_edge~typosquattingchecker_typosquattingallowlistdomains_typosquattingallowlistdomainsdesc", + "displayName": "Configure the list of domains for which Edge Website Typo Protection won't trigger warnings (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_aigenthemesenabled", + "displayName": "Enables DALL-E themes generation (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~identity_linkedaccountenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_aigenthemesenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~identity_linkedaccountenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_aigenthemesenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~performance_performancedetectorenabled", - "displayName": "Performance Detector Enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_enhancesecuritymodeallowuserbypass", + "displayName": "Allow users to bypass Enhanced Security Mode (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~performance_performancedetectorenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_enhancesecuritymodeallowuserbypass_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~performance_performancedetectorenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_enhancesecuritymodeallowuserbypass_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~startup_restoreonstartupuserurlsenabled", - "displayName": "Allow users to add and remove their own sites during startup when the RestoreOnStartupURLs policy is configured (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_superdragdropenabled", + "displayName": "Super Drag Drop Enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~startup_restoreonstartupuserurlsenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_superdragdropenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev107~policy~microsoft_edge~startup_restoreonstartupuserurlsenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_superdragdropenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting", - "displayName": "Set the default \"share additional operating system region\" setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_urldiagnosticdataenabled", + "displayName": "URL reporting in Edge diagnostic data enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_urldiagnosticdataenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev122~policy~microsoft_edge_urldiagnosticdataenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_defaultshareadditionalosregionsetting", - "displayName": "'Set the default \"share additional operating system region\" setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_rsakeyusageforlocalanchorsenabled", + "displayName": "Check RSA key usage for server certificates issued by local trust anchors (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_defaultshareadditionalosregionsetting_0", - "displayName": "Limited", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_defaultshareadditionalosregionsetting_1", - "displayName": "Always share the OS Regional format", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_rsakeyusageforlocalanchorsenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_defaultshareadditionalosregionsetting_defaultshareadditionalosregionsetting_2", - "displayName": "Never share the OS Regional format", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_rsakeyusageforlocalanchorsenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_encryptedclienthelloenabled", - "displayName": "TLS Encrypted ClientHello Enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_screencapturewithoutgestureallowedfororigins", + "displayName": "Allow screen capture without prior user gesture (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_encryptedclienthelloenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_screencapturewithoutgestureallowedfororigins_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_encryptedclienthelloenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_screencapturewithoutgestureallowedfororigins_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended", - "displayName": "Set the default \"share additional operating system region\" setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge_screencapturewithoutgestureallowedfororigins_screencapturewithoutgestureallowedfororiginsdesc", + "displayName": "Allow screen capture without prior user gesture (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting", + "displayName": "Default Window Management permission setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_defaultshareadditionalosregionsetting", - "displayName": "'Set the default \"share additional operating system region\" setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting_defaultwindowmanagementsetting", + "displayName": "Default Window Management permission setting (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_defaultshareadditionalosregionsetting_0", - "displayName": "Limited", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_defaultshareadditionalosregionsetting_1", - "displayName": "Always share the OS Regional format", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting_defaultwindowmanagementsetting_2", + "displayName": "Denies the Window Management permission on all sites by default", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge_recommended_defaultshareadditionalosregionsetting_recommended_defaultshareadditionalosregionsetting_2", - "displayName": "Never share the OS Regional format", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_defaultwindowmanagementsetting_defaultwindowmanagementsetting_3", + "displayName": "Ask every time a site wants obtain the Window Management permission", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge~startup_newtabpageapplauncherenabled", - "displayName": "Hide App Launcher on Microsoft Edge new tab page (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementallowedforurls", + "displayName": "Allow Window Management permission on specified sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge~startup_newtabpageapplauncherenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementallowedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev108~policy~microsoft_edge~startup_newtabpageapplauncherenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementallowedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardallowedforurls", - "displayName": "Allow clipboard use on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementallowedforurls_windowmanagementallowedforurlsdesc", + "displayName": "Allow Window Management permission on specified sites (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementblockedforurls", + "displayName": "Block Window Management permission on specified sites (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardallowedforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementblockedforurls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardallowedforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementblockedforurls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardallowedforurls_clipboardallowedforurlsdesc", - "displayName": "Allow clipboard use on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~contentsettings_windowmanagementblockedforurls_windowmanagementblockedforurlsdesc", + "displayName": "Block Window Management permission on specified sites (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardblockedforurls", - "displayName": "Block clipboard use on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensioninstalltypeblocklist", + "displayName": "Blocklist for extension install types (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardblockedforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensioninstalltypeblocklist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardblockedforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensioninstalltypeblocklist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_clipboardblockedforurls_clipboardblockedforurlsdesc", - "displayName": "Block clipboard use on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensioninstalltypeblocklist_extensioninstalltypeblocklistdesc", + "displayName": "Blocklist for extension install types (User)", "options": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting", - "displayName": "Default clipboard site permission (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability", + "displayName": "Control Manifest v2 extension availability (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_defaultclipboardsetting", - "displayName": "Default clipboard site permission (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_extensionmanifestv2availability", + "displayName": "Control Manifest v2 extension availability (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_defaultclipboardsetting_2", - "displayName": "Do not allow any site to use the clipboard site permission", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_extensionmanifestv2availability_0", + "displayName": "Default browser behavior", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_defaultclipboardsetting_defaultclipboardsetting_3", - "displayName": "Allow sites to ask the user to grant the clipboard site permission", + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_extensionmanifestv2availability_1", + "displayName": "Manifest v2 is disabled", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_extensionmanifestv2availability_2", + "displayName": "Manifest v2 is enabled", + "description": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev123~policy~microsoft_edge~extensions_extensionmanifestv2availability_extensionmanifestv2availability_3", + "displayName": "Manifest v2 is enabled for forced extensions only", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_microsoftrootstoreenabled", - "displayName": "Determines whether the Microsoft Root Store and built-in certificate verifier will be used to verify server certificates (deprecated) (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotcdppagecontext", + "displayName": "Control Copilot with Commercial Data Protection access to page context for Microsoft Entra ID profiles (obsolete) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_microsoftrootstoreenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotcdppagecontext_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge_microsoftrootstoreenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotcdppagecontext_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowalldevicesforurls", - "displayName": "Allow listed sites to connect to any HID device (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotpagecontext", + "displayName": "Control Copilot access to page context for Microsoft Entra ID profiles (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowalldevicesforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotpagecontext_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowalldevicesforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_copilotpagecontext_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowalldevicesforurls_webhidallowalldevicesforurlsdesc", - "displayName": "Allow listed sites to connect to any HID device (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdevicesforurls", - "displayName": "Allow listed sites connect to specific HID devices (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_mutationeventsenabled", + "displayName": "Enable deprecated/removed Mutation Events (deprecated) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdevicesforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_mutationeventsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdevicesforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev124~policy~microsoft_edge_mutationeventsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdevicesforurls_webhidallowdevicesforurls", - "displayName": "Allow listed sites connect to specific HID devices (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdeviceswithhidusagesforurls", - "displayName": "Automatically grant permission to these sites to connect to HID devices containing top-level collections with the given HID usage (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_imageeditorserviceenabled", + "displayName": "Enable the Designer for Image Editor feature (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdeviceswithhidusagesforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_imageeditorserviceenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdeviceswithhidusagesforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_imageeditorserviceenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev109~policy~microsoft_edge~contentsettings_webhidallowdeviceswithhidusagesforurls_webhidallowdeviceswithhidusagesforurls", - "displayName": "Automatically grant permission to these sites to connect to HID devices containing top-level collections with the given HID usage (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_autofillmembershipsenabled", - "displayName": "Save and fill memberships (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_qrcodegeneratorenabled", + "displayName": "Enable QR Code Generator (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_autofillmembershipsenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_qrcodegeneratorenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_autofillmembershipsenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge_qrcodegeneratorenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_autofillmembershipsenabled_recommended", - "displayName": "Save and fill memberships (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge~network_zstdcontentencodingenabled", + "displayName": "Enable zstd content encoding support (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_autofillmembershipsenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge~network_zstdcontentencodingenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_autofillmembershipsenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev125~policy~microsoft_edge~network_zstdcontentencodingenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_searchfiltersenabled_recommended", - "displayName": "Search Filters Enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge_internetexplorersetforegroundwhenactive", + "displayName": "Keep the active Microsoft Edge window with an Internet Explorer mode tab always in the foreground. (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_searchfiltersenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge_internetexplorersetforegroundwhenactive_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended_searchfiltersenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge_internetexplorersetforegroundwhenactive_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended~printing_recommended_printpreviewstickysettings_recommended", - "displayName": "Configure the sticky print preview settings (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge~identity_proactiveauthworkflowenabled", + "displayName": "Enable proactive authentication (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended~printing_recommended_printpreviewstickysettings_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge~identity_proactiveauthworkflowenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended~printing_recommended_printpreviewstickysettings_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev126~policy~microsoft_edge~identity_proactiveauthworkflowenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_recommended~printing_recommended_printpreviewstickysettings_recommended_printpreviewstickysettings", - "displayName": "Configure the sticky print preview settings (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchfiltersenabled", - "displayName": "Search Filters Enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_csscustomstatedeprecatedsyntaxenabled", + "displayName": "Controls whether the deprecated :--foo syntax for CSS custom state is enabled (obsolete) (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchfiltersenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_csscustomstatedeprecatedsyntaxenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchfiltersenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_csscustomstatedeprecatedsyntaxenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled", - "displayName": "Search in Sidebar enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_edgesidebarappurlhostblocklist", + "displayName": "Control which apps cannot be opened in Microsoft Edge sidebar (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_edgesidebarappurlhostblocklist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_edgesidebarappurlhostblocklist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_searchinsidebarenabled", - "displayName": "Search in Sidebar enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev127~policy~microsoft_edge_edgesidebarappurlhostblocklist_edgesidebarappurlhostblocklistdesc", + "displayName": "Control which apps cannot be opened in Microsoft Edge sidebar (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev128.1~policy~microsoft_edge_applicationboundencryptionenabled", + "displayName": "Enable Application Bound Encryption (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_searchinsidebarenabled_0", - "displayName": "Enable search in sidebar", - "description": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_searchinsidebarenabled_1", - "displayName": "Disable search in sidebar for Kids Mode", + "id": "user_vendor_msft_policy_config_microsoft_edgev128.1~policy~microsoft_edge_applicationboundencryptionenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge_searchinsidebarenabled_searchinsidebarenabled_2", - "displayName": "Disable search in sidebar", + "id": "user_vendor_msft_policy_config_microsoft_edgev128.1~policy~microsoft_edge_applicationboundencryptionenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsallowedforurls", - "displayName": "Allow multiple automatic downloads in quick succession on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings", + "displayName": "Dynamic Code Settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsallowedforurls_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsallowedforurls_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsallowedforurls_automaticdownloadsallowedforurlsdesc", - "displayName": "Allow multiple automatic downloads in quick succession on specific sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsblockedforurls", - "displayName": "Block multiple automatic downloads in quick succession on specific sites (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings_dynamiccodesettings", + "displayName": "Dynamic Code Settings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsblockedforurls_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings_dynamiccodesettings_0", + "displayName": "Default dynamic code settings", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsblockedforurls_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_dynamiccodesettings_dynamiccodesettings_1", + "displayName": "Prevent the browser process from creating dynamic code", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_automaticdownloadsblockedforurls_automaticdownloadsblockedforurlsdesc", - "displayName": "Block multiple automatic downloads in quick succession on specific sites (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting", - "displayName": "Default automatic downloads setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgeopeninsidebarenabled", + "displayName": "Enable open in sidebar (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgeopeninsidebarenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgeopeninsidebarenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_defaultautomaticdownloadssetting", - "displayName": "Default automatic downloads setting (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgesidebarcustomizeenabled", + "displayName": "Enable sidebar customize (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_defaultautomaticdownloadssetting_1", - "displayName": "Allow all websites to perform automatic downloads", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgesidebarcustomizeenabled_0", + "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~contentsettings_defaultautomaticdownloadssetting_defaultautomaticdownloadssetting_2", - "displayName": "Don't allow any website to perform automatic downloads", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_edgesidebarcustomizeenabled_1", + "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~edgeworkspaces_workspacesnavigationsettings", - "displayName": "Configure navigation settings per groups of URLs in Microsoft Edge Workspaces (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_keyboardfocusablescrollersenabled", + "displayName": "Enable keyboard focusable scrollers (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~edgeworkspaces_workspacesnavigationsettings_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_keyboardfocusablescrollersenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~edgeworkspaces_workspacesnavigationsettings_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_keyboardfocusablescrollersenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~edgeworkspaces_workspacesnavigationsettings_workspacesnavigationsettings", - "displayName": "Configure navigation settings per groups of URLs in Microsoft Edge Workspaces (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereadergrammartoolsenabled", - "displayName": "Enable Grammar Tools feature within Immersive Reader in Microsoft Edge (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_recommended~downloads_recommended_showdownloadsinsecurewarningsenabled_recommended", + "displayName": "Enable insecure download warnings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereadergrammartoolsenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_recommended~downloads_recommended_showdownloadsinsecurewarningsenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereadergrammartoolsenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge_recommended~downloads_recommended_showdownloadsinsecurewarningsenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereaderpicturedictionaryenabled", - "displayName": "Enable Picture Dictionary feature within Immersive Reader in Microsoft Edge (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~downloads_showdownloadsinsecurewarningsenabled", + "displayName": "Enable insecure download warnings (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereaderpicturedictionaryenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~downloads_showdownloadsinsecurewarningsenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~immersivereader_immersivereaderpicturedictionaryenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~downloads_showdownloadsinsecurewarningsenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~printing_printpreviewstickysettings", - "displayName": "Configure the sticky print preview settings (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings", + "displayName": "Control the availability of developer mode on extensions page (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~printing_printpreviewstickysettings_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~printing_printpreviewstickysettings_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev110~policy~microsoft_edge~printing_printpreviewstickysettings_printpreviewstickysettings", - "displayName": "Configure the sticky print preview settings (User)", - "options": null - }, - { - "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_internetexplorermodecleardataonexitenabled", - "displayName": "Clear history for IE and IE mode every time you exit (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings_extensiondevelopermodesettings", + "displayName": "Control the availability of developer mode on extensions page (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_internetexplorermodecleardataonexitenabled_0", - "displayName": "Disabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings_extensiondevelopermodesettings_0", + "displayName": "Allow the usage of developer mode on extensions page", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_internetexplorermodecleardataonexitenabled_1", - "displayName": "Enabled", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensiondevelopermodesettings_extensiondevelopermodesettings_1", + "displayName": "Do not allow the usage of developer mode on extensions page", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_newpdfreaderenabled", - "displayName": "Microsoft Edge built-in PDF reader powered by Adobe Acrobat enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensionextendedbackgroundlifetimeforportconnectionstourls", + "displayName": "Configure a list of origins that grant an extended background lifetime to connecting extensions. (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_newpdfreaderenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensionextendedbackgroundlifetimeforportconnectionstourls_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_newpdfreaderenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensionextendedbackgroundlifetimeforportconnectionstourls_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_recommended_newpdfreaderenabled_recommended", - "displayName": "Microsoft Edge built-in PDF reader powered by Adobe Acrobat enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev128~policy~microsoft_edge~extensions_extensionextendedbackgroundlifetimeforportconnectionstourls_extensionextendedbackgroundlifetimeforportconnectionstourlsdesc", + "displayName": "Configure a list of origins that grant an extended background lifetime to connecting extensions. (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev129~policy~microsoft_edge~printing_printinglpacsandboxenabled", + "displayName": "Enable Printing LPAC Sandbox (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_recommended_newpdfreaderenabled_recommended_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev129~policy~microsoft_edge~printing_printinglpacsandboxenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_recommended_newpdfreaderenabled_recommended_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev129~policy~microsoft_edge~printing_printinglpacsandboxenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_sharedarraybufferunrestrictedaccessallowed", - "displayName": "Specifies whether SharedArrayBuffers can be used in a non cross-origin-isolated context (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev130~policy~microsoft_edge_edgeentracopilotpagecontext", + "displayName": "Control Copilot access to Microsoft Edge page content for Entra account user profiles when using Copilot in the Microsoft Edge sidepane (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_sharedarraybufferunrestrictedaccessallowed_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev130~policy~microsoft_edge_edgeentracopilotpagecontext_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_sharedarraybufferunrestrictedaccessallowed_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev130~policy~microsoft_edge_edgeentracopilotpagecontext_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_showacrobatsubscriptionbutton", - "displayName": "Shows button on native PDF viewer in Microsoft Edge that allows users to sign up for Adobe Acrobat subscription (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev130~policy~microsoft_edge~performance_extensionsperformancedetectorenabled", + "displayName": "Extensions Performance Detector enabled (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_showacrobatsubscriptionbutton_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev130~policy~microsoft_edge~performance_extensionsperformancedetectorenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev111~policy~microsoft_edge_showacrobatsubscriptionbutton_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev130~policy~microsoft_edge~performance_extensionsperformancedetectorenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_cryptowalletenabled", - "displayName": "Enable CryptoWallet feature (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev131~policy~microsoft_edge_edgesidebarappurlhostallowlist", + "displayName": "Allow specific apps to be opened in Microsoft Edge sidebar (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_cryptowalletenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev131~policy~microsoft_edge_edgesidebarappurlhostallowlist_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_cryptowalletenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev131~policy~microsoft_edge_edgesidebarappurlhostallowlist_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_mousegestureenabled", - "displayName": "Mouse Gesture Enabled (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev131~policy~microsoft_edge_edgesidebarappurlhostallowlist_edgesidebarappurlhostallowlistdesc", + "displayName": "Allow specific apps to be opened in Microsoft Edge sidebar (User)", + "options": null + }, + { + "id": "user_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_edgeautofillmlenabled", + "displayName": "Machine learning powered autofill suggestions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_mousegestureenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_edgeautofillmlenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev112~policy~microsoft_edge_mousegestureenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_edgeautofillmlenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_readaloudenabled", - "displayName": "Enable Read Aloud feature in Microsoft Edge (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_livetranslationallowed", + "displayName": "Live translation allowed (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_readaloudenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_livetranslationallowed_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_readaloudenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_livetranslationallowed_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_restorepdfview", - "displayName": "Restore PDF view (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_personalizetopsitesincustomizesidebarenabled", + "displayName": "Personalize my top sites in Customize Sidebar enabled by default (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_restorepdfview_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_personalizetopsitesincustomizesidebarenabled_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_restorepdfview_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_personalizetopsitesincustomizesidebarenabled_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_tabservicesenabled", - "displayName": "Enable tab organization suggestions (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_recommended_edgeautofillmlenabled_recommended", + "displayName": "Machine learning powered autofill suggestions (User)", "options": [ { - "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_tabservicesenabled_0", + "id": "user_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_recommended_edgeautofillmlenabled_recommended_0", "displayName": "Disabled", "description": null }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev113~policy~microsoft_edge_tabservicesenabled_1", + "id": "user_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_recommended_edgeautofillmlenabled_recommended_1", "displayName": "Enabled", "description": null } ] }, { - "id": "user_vendor_msft_policy_config_microsoft_edgev114~policy~microsoft_edge_defaultbrowsersettingscampaignenabled", - "displayName": "Enables default browser settings campaigns (User)", + "id": "user_vendor_msft_policy_config_microsoft_edgev132~policy~microsoft_edge_selectparserrelaxationenabled", + "displayName": "Controls whether the new HTML parser behavior for the { {scheduledBackup.isSuccess && scheduledBackup.data?.[0]?.Name !== "Automated CIPP Backup" && ( - <> - - + + )} + {scheduledBackup.isSuccess && + scheduledBackup.data?.[0]?.Name === "Automated CIPP Backup" && ( + )}
    @@ -258,6 +316,59 @@ const Page = () => { )} + + + + + + + + { + wizardDialog.handleClose(); + setValidationResult(null); + setSelectedBackupFile(null); + setSelectedBackupData(null); + setSelectedBackupName(null); + setWizardLoading(false); + }} + validationResult={validationResult} + backupFile={selectedBackupFile} + backupData={selectedBackupData} + backupName={selectedBackupName} + isLoading={wizardLoading} + /> ); }; diff --git a/src/pages/cipp/settings/features.js b/src/pages/cipp/settings/features.js new file mode 100644 index 000000000000..15b6fd3a111e --- /dev/null +++ b/src/pages/cipp/settings/features.js @@ -0,0 +1,72 @@ +import { Layout as DashboardLayout } from "../../../layouts/index.js"; +import { TabbedLayout } from "../../../layouts/TabbedLayout"; +import tabOptions from "./tabOptions"; +import { CippTablePage } from "../../../components/CippComponents/CippTablePage"; +import { CheckCircle, Cancel } from "@mui/icons-material"; + +const Page = () => { + const pageTitle = "Features"; + + const actions = [ + { + label: "Enable Feature", + type: "POST", + url: "/api/ExecFeatureFlag", + data: { + Action: "Set", + Id: "Id", + Enabled: true, + }, + confirmText: "Are you sure you want to enable this feature?", + condition: (item) => item.AllowUserToggle && !item.Enabled, + icon: , + }, + { + label: "Disable Feature", + type: "POST", + url: "/api/ExecFeatureFlag", + data: { + Action: "Set", + Id: "Id", + Enabled: false, + }, + confirmText: "Are you sure you want to disable this feature?", + condition: (item) => item.AllowUserToggle && item.Enabled, + icon: , + }, + ]; + + const offCanvas = { + extendedInfoFields: [ + "Name", + "Description", + "Enabled", + "AllowUserToggle", + "Timers", + "Endpoints", + "Pages", + ], + actions: actions, + }; + + const simpleColumns = ["Name", "Enabled", "Description"]; + + return ( + + ); +}; + +Page.getLayout = (page) => ( + + {page} + +); + +export default Page; diff --git a/src/pages/cipp/settings/global-variables.js b/src/pages/cipp/settings/global-variables.js deleted file mode 100644 index 96ffe712d0b3..000000000000 --- a/src/pages/cipp/settings/global-variables.js +++ /dev/null @@ -1,16 +0,0 @@ -import tabOptions from "./tabOptions"; -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippCustomVariables from "/src/components/CippComponents/CippCustomVariables.jsx"; - -const Page = () => { - return ; -}; - -Page.getLayout = (page) => ( - - {page} - -); - -export default Page; diff --git a/src/pages/cipp/settings/index.js b/src/pages/cipp/settings/index.js index 9aafb0e5523f..c845a7a32c6b 100644 --- a/src/pages/cipp/settings/index.js +++ b/src/pages/cipp/settings/index.js @@ -1,33 +1,49 @@ import { Container } from "@mui/material"; import { Grid } from "@mui/system"; -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { TabbedLayout } from "../../../layouts/TabbedLayout"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; import tabOptions from "./tabOptions"; -import CippVersionProperties from "/src/components/CippSettings/CippVersionProperties"; -import CippPasswordSettings from "/src/components/CippSettings/CippPasswordSettings"; -import CippDnsSettings from "/src/components/CippSettings/CippDnsSettings"; -import CippCacheSettings from "/src/components/CippSettings/CippCacheSettings"; -import CippBackupSettings from "/src/components/CippSettings/CippBackupSettings"; +import CippVersionProperties from "../../../components/CippSettings/CippVersionProperties"; +import CippPasswordSettings from "../../../components/CippSettings/CippPasswordSettings"; +import CippDnsSettings from "../../../components/CippSettings/CippDnsSettings"; +import CippCacheSettings from "../../../components/CippSettings/CippCacheSettings"; +import CippBackupSettings from "../../../components/CippSettings/CippBackupSettings"; +import CippBrandingSettings from "../../../components/CippSettings/CippBrandingSettings"; +import CippBackupRetentionSettings from "../../../components/CippSettings/CippBackupRetentionSettings"; +import CippLogRetentionSettings from "../../../components/CippSettings/CippLogRetentionSettings"; +import CippJitAdminSettings from "../../../components/CippSettings/CippJitAdminSettings"; const Page = () => { return ( - + - + - + - + - + + + + + + + + + + + + + ); diff --git a/src/pages/cipp/settings/licenses.js b/src/pages/cipp/settings/licenses.js index 7db7f6e0e70e..b5816cadde66 100644 --- a/src/pages/cipp/settings/licenses.js +++ b/src/pages/cipp/settings/licenses.js @@ -1,26 +1,26 @@ import tabOptions from "./tabOptions"; -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Button, SvgIcon } from "@mui/material"; +import { TabbedLayout } from "../../../layouts/TabbedLayout"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; +import { CippTablePage } from "../../../components/CippComponents/CippTablePage.jsx"; +import { Button, SvgIcon, Stack } from "@mui/material"; import { TrashIcon } from "@heroicons/react/24/outline"; -import { Add, Remove } from "@mui/icons-material"; +import { Add, RestartAlt } from "@mui/icons-material"; import { CippApiDialog } from "../../../components/CippComponents/CippApiDialog"; import { useDialog } from "../../../hooks/use-dialog"; const Page = () => { const pageTitle = "Excluded Licenses"; - const apiUrl = "/api/ExecExcludeLicenses"; - const apiData = { List: true }; + const apiUrl = "/api/ListExcludedLicenses"; const createDialog = useDialog(); + const resetDialog = useDialog(); const simpleColumns = ["Product_Display_Name", "GUID"]; const actions = [ { label: "Delete Exclusion", type: "POST", - url: "/api/ExecExcludeLicenses?RemoveExclusion=true", - data: { GUID: "GUID" }, + url: "/api/ExecExcludeLicenses", + data: { Action: "!RemoveExclusion", GUID: "GUID" }, confirmText: "Do you want to delete this exclusion?", color: "error", icon: ( @@ -31,21 +31,32 @@ const Page = () => { }, ]; - const AddExcludedLicense = () => { + const CardButtons = () => { return ( - + + + + ); }; @@ -60,9 +71,9 @@ const Page = () => { title={pageTitle} queryKey="ExcludedLicenses" apiUrl={apiUrl} - cardButton={} - apiData={apiData} + cardButton={} actions={actions} + apiDataKey="Results" offCanvas={offCanvas} simpleColumns={simpleColumns} tenantInTitle={false} @@ -75,23 +86,44 @@ const Page = () => { type: "textField", name: "GUID", label: "GUID", + disableVariables: true, }, { type: "textField", name: "SKUName", label: "SKU Name", + disableVariables: true, }, ]} api={{ - url: "/api/ExecExcludeLicenses?AddExclusion=true", + url: "/api/ExecExcludeLicenses", confirmText: "Add a license to the exclusion table, make sure to enter the correct GUID and SKU Name", type: "POST", - data: {}, + data: { Action: "!AddExclusion" }, replacementBehaviour: "removeNulls", relatedQueryKeys: ["ExcludedLicenses"], }} /> + ); }; diff --git a/src/pages/cipp/settings/notifications.js b/src/pages/cipp/settings/notifications.js index a65eb064a49c..99f2d9441bff 100644 --- a/src/pages/cipp/settings/notifications.js +++ b/src/pages/cipp/settings/notifications.js @@ -1,9 +1,8 @@ -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { TabbedLayout } from "../../../layouts/TabbedLayout"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; import tabOptions from "./tabOptions"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; +import CippFormPage from "../../../components/CippFormPages/CippFormPage"; import { useForm } from "react-hook-form"; -import { Button } from "@mui/material"; import { useDialog } from "../../../hooks/use-dialog"; import { CippNotificationForm } from "../../../components/CippComponents/CippNotificationForm"; @@ -18,18 +17,16 @@ const Page = () => { return ( {/* Use the reusable notification form component */} - + ); }; diff --git a/src/pages/cipp/settings/partner-webhooks.js b/src/pages/cipp/settings/partner-webhooks.js index 0cc6adeb8a53..f6771b76c49a 100644 --- a/src/pages/cipp/settings/partner-webhooks.js +++ b/src/pages/cipp/settings/partner-webhooks.js @@ -1,7 +1,7 @@ -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { TabbedLayout } from "../../../layouts/TabbedLayout"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; import tabOptions from "./tabOptions"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; +import CippFormPage from "../../../components/CippFormPages/CippFormPage"; import { useForm } from "react-hook-form"; import { Box, @@ -17,7 +17,7 @@ import { SvgIcon, } from "@mui/material"; import { Grid } from "@mui/system"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; +import CippFormComponent from "../../../components/CippComponents/CippFormComponent"; import { ApiGetCall, ApiPostCall } from "../../../api/ApiCall"; import { useEffect } from "react"; import { CippPropertyList } from "../../../components/CippComponents/CippPropertyList"; @@ -27,7 +27,7 @@ import { useState } from "react"; import { Close } from "@mui/icons-material"; const Page = () => { - const pageTitle = "Partner Webhooks"; + const pageTitle = "Automated Onboarding"; const [testRunning, setTestRunning] = useState(false); const [correlationId, setCorrelationId] = useState(null); const [validateRunning, setValidateRunning] = useState(false); @@ -106,6 +106,7 @@ const Page = () => { useEffect(() => { if (listSubscription.isSuccess && listEventTypes.isSuccess) { formControl.reset({ + enabled: listSubscription?.data?.Results?.enabled ?? false, EventType: listSubscription?.data?.Results?.webhookEvents?.map((eventType) => { var event = listEventTypes?.data?.Results?.find((event) => event === eventType); return { label: event, value: event }; @@ -118,6 +119,7 @@ const Page = () => { return ( { } > - + Subscribe to Microsoft Partner center webhooks to enable automatic tenant onboarding and alerting. Updating the settings will replace any existing webhook subscription with one @@ -147,11 +149,20 @@ const Page = () => { for more information on the webhook types. - + + ), + }, { label: "Webhook URL", value: , @@ -168,7 +179,15 @@ const Page = () => { showDivider={false} /> - + + + + { formControl={formControl} /> - + { /> {testRunning && ( - + { + const router = useRouter(); + const [config, setConfig] = useState(DEFAULT_CONFIG); + + const passwordSetting = ApiGetCall({ url: "/api/ExecPasswordConfig?list=true", queryKey: "PasswordSettings" }); + const passwordSave = ApiPostCall({ datafromUrl: true, relatedQueryKeys: "PasswordSettings" }); + + useEffect(() => { + if (passwordSetting.isSuccess && passwordSetting.data) { + const r = passwordSetting.data.Results; + const toBool = (v, def) => { + if (v === undefined || v === null) return def; + if (typeof v === 'boolean') return v; + if (typeof v === 'string') return v.toLowerCase() === 'true'; + if (typeof v === 'number') return v === 1; + return def; + }; + + setConfig({ + passwordType: r.passwordType || DEFAULT_CONFIG.passwordType, + charCount: String(parseInt(r.charCount, 10) || DEFAULT_CONFIG.charCount), + includeUppercase: toBool(r.includeUppercase, DEFAULT_CONFIG.includeUppercase), + includeLowercase: toBool(r.includeLowercase, DEFAULT_CONFIG.includeLowercase), + includeDigits: toBool(r.includeDigits, DEFAULT_CONFIG.includeDigits), + includeSpecialChars: toBool(r.includeSpecialChars, DEFAULT_CONFIG.includeSpecialChars), + specialCharSet: r.specialCharSet || DEFAULT_CONFIG.specialCharSet, + wordCount: String(parseInt(r.wordCount, 10) || DEFAULT_CONFIG.wordCount), + separator: r.separator !== undefined ? r.separator : DEFAULT_CONFIG.separator, + capitalizeWords: toBool(r.capitalizeWords, DEFAULT_CONFIG.capitalizeWords), + appendNumber: toBool(r.appendNumber, DEFAULT_CONFIG.appendNumber), + appendSpecialChar: toBool(r.appendSpecialChar, DEFAULT_CONFIG.appendSpecialChar), + }); + } + }, [passwordSetting.isSuccess, passwordSetting.data]); + + const set = useCallback((field, value) => { + setConfig((p) => ({ ...p, [field]: value })); + }, []); + + const isClassic = config.passwordType === PASSWORD_TYPES.CLASSIC; + + const handleSave = () => { + const normalizedConfig = normalizeConfigForBackend(config); + + passwordSave.mutate( + { + url: "/api/ExecPasswordConfig", + data: normalizedConfig, + queryKey: "PasswordSettingsPost", + } + ); + }; + + const handleBackToSettings = () => { + router.push("/cipp/settings"); + }; + + return ( + <> + + + + + +
    + Password Configuration + +
    +
    + + + + + + Type + + v && set("passwordType", v)} + size="small" + color="primary" + > + Classic + Passphrase + + + + + + {isClassic + ? "Random characters from the selected classes. Good for systems requiring specific character types. 16+ characters recommended for strong security." + : "Random dictionary words joined together. Easier to remember and typically stronger at equal length. 5+ words recommended for high security."} + + + + {isClassic ? ( + <> + + { + const value = e.target.value; + if (value === '' || /^\d+$/.test(value)) { + set("charCount", value); + } + }} + size="small" + sx={{ width: 120 }} + inputProps={{ + style: { height: "40px" }, + min: 8, + max: 256 + }} + error={config.charCount === ''} + helperText={config.charCount === '' ? "Length cannot be empty" : ""} + /> + + + + set("includeUppercase", e.target.checked)} />} + label={Uppercase (A-Z)} + /> + + + set("includeLowercase", e.target.checked)} />} + label={Lowercase (a-z)} + /> + + + set("includeDigits", e.target.checked)} />} + label={Digits (0-9)} + /> + + + set("includeSpecialChars", e.target.checked)} />} + label={Special Characters} + /> + + + {config.includeSpecialChars && ( + set("specialCharSet", e.target.value)} + size="small" + fullWidth + helperText="Allowed: !@#$%^&*()-_=+/" + /> + )} + + ) : ( + <> + + { + const value = e.target.value; + if (value === '' || /^\d+$/.test(value)) { + set("wordCount", value); + } + }} + size="small" + sx={{ width: 120, maxWidth: 160 }} + inputProps={{ + style: { height: "40px" }, + min: 2, + max: 10 + }} + error={config.wordCount === ''} + helperText={config.wordCount === '' ? "Word count cannot be empty" : ""} + /> + set("separator", e.target.value)} + size="small" + sx={{ maxWidth: 120 }} + /> + + Allowed: single space, empty, or !@#$%^&*()-_=+/ + + + + + set("capitalizeWords", e.target.checked)} />} + label={Capitalize words} + /> + + + set("appendNumber", e.target.checked)} />} + label={Append number} + /> + + + set("appendSpecialChar", e.target.checked)} />} + label={Append Special Character} + /> + + + {config.appendSpecialChar && ( + set("specialCharSet", e.target.value)} + size="small" + fullWidth + helperText="Allowed: !@#$%^&*()-_=+/" + /> + )} + + )} + + + + +
    +
    +
    + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/cipp/settings/permissions.js b/src/pages/cipp/settings/permissions.js index 674a6f6f049f..29f7ceb452e1 100644 --- a/src/pages/cipp/settings/permissions.js +++ b/src/pages/cipp/settings/permissions.js @@ -1,9 +1,9 @@ import { Container } from "@mui/material"; import { Grid } from "@mui/system"; -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { TabbedLayout } from "../../../layouts/TabbedLayout"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; import tabOptions from "./tabOptions"; -import CippPermissionCheck from "/src/components/CippSettings/CippPermissionCheck"; +import CippPermissionCheck from "../../../components/CippSettings/CippPermissionCheck"; import { CippPermissionReport } from "../../../components/CippSettings/CippPermissionReport"; import { useState } from "react"; @@ -13,16 +13,16 @@ const Page = () => { return ( - + - + - + - + diff --git a/src/pages/cipp/settings/siem.js b/src/pages/cipp/settings/siem.js new file mode 100644 index 000000000000..bc5e2e70fb42 --- /dev/null +++ b/src/pages/cipp/settings/siem.js @@ -0,0 +1,192 @@ +import { + Alert, + Card, + CardContent, + CardHeader, + Container, + Divider, + Link as MuiLink, + Typography, +} from "@mui/material"; +import { Grid } from "@mui/system"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; +import { TabbedLayout } from "../../../layouts/TabbedLayout"; +import tabOptions from "./tabOptions"; +import CippSiemSettings from "../../../components/CippSettings/CippSiemSettings"; +import { CippCopyToClipBoard } from "../../../components/CippComponents/CippCopyToClipboard"; + +const filterExamples = [ + { + label: "Specific day", + filter: "PartitionKey eq 'YYYYMMDD'", + note: "Replace YYYYMMDD with the current date, e.g. 20260312", + }, + { + label: "Date range (last 7 days)", + filter: "PartitionKey ge '20260305' and PartitionKey le '20260312'", + note: "Use ge/le to query a range of dates", + }, +]; + +const Page = () => { + return ( + + + + + + + + + + +
    + + How Logs are Stored + + + CIPP writes all log entries to an Azure Table Storage table called{" "} + CippLogs. Each row is partitioned by date using the format{" "} + YYYYMMDD as the PartitionKey, with a unique GUID as the{" "} + RowKey. + +
    + + + + Always include a PartitionKey filter in your queries. Azure Table + Storage performs a full table scan without one, which is slow and expensive on + large tables. Use eq for a single day or ge /{" "} + le for a date range.{" "} + The date partition is in UTC time, so you may need to use a date + range to account for timezone differences. + + + +
    + + Available Columns + + +
      +
    • + PartitionKey โ€” Date in YYYYMMDD format +
    • +
    • + RowKey โ€” Unique log entry ID (GUID) +
    • +
    • + Timestamp โ€” When the entry was written +
    • +
    • + Tenant โ€” Tenant domain name +
    • +
    • + Username โ€” User who triggered the action +
    • +
    • + API โ€” API endpoint or function name +
    • +
    • + Message โ€” Log message text +
    • +
    • + Severity โ€” Log level (Info, Warning, Error, Debug) +
    • +
    • + LogData โ€” Additional JSON data (if any) +
    • +
    • + TenantID โ€” Tenant GUID (when available) +
    • +
    • + IP โ€” Source IP address (when available) +
    • +
    +
    +
    + +
    + + Example $filter Queries + + + Append &$filter= to your SAS URL to filter results. Use{" "} + eq, ne, gt, lt,{" "} + ge, le, and combine with and /{" "} + or. + + {filterExamples.map((ex) => ( +
    + + {ex.label} + +
    + $filter={ex.filter} + +
    + {ex.note && ( + + {ex.note} + + )} +
    + ))} +
    + + + +
    + + Azure Tables Documentation + + +
      +
    • + + Querying Tables and Entities + + {" โ€” "}filter syntax, operators, and supported data types +
    • +
    • + + Query Timeout and Pagination + + {" โ€” "}handling continuation tokens for large result sets +
    • +
    +
    +
    +
    +
    +
    +
    +
    + ); +}; + +Page.getLayout = (page) => ( + + {page} + +); + +export default Page; diff --git a/src/pages/cipp/settings/tabOptions.json b/src/pages/cipp/settings/tabOptions.json index b68bec5eb43e..143f94ffbf49 100644 --- a/src/pages/cipp/settings/tabOptions.json +++ b/src/pages/cipp/settings/tabOptions.json @@ -20,7 +20,7 @@ "path": "/cipp/settings/notifications" }, { - "label": "Partner Webhooks", + "label": "Automated Onboarding", "path": "/cipp/settings/partner-webhooks" }, { @@ -28,7 +28,11 @@ "path": "/cipp/settings/licenses" }, { - "label": "Global Variables", - "path": "/cipp/settings/global-variables" + "label": "Features", + "path": "/cipp/settings/features" + }, + { + "label": "SIEM", + "path": "/cipp/settings/siem" } -] +] \ No newline at end of file diff --git a/src/pages/cipp/settings/tenants.js b/src/pages/cipp/settings/tenants.js index a5495b4b77e8..c6cd965fb2ac 100644 --- a/src/pages/cipp/settings/tenants.js +++ b/src/pages/cipp/settings/tenants.js @@ -1,12 +1,201 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { TabbedLayout } from "/src/layouts/TabbedLayout"; +import { Button, SvgIcon } from "@mui/material"; +import { CippTablePage } from "../../../components/CippComponents/CippTablePage.jsx"; +import { CippApiDialog } from "../../../components/CippComponents/CippApiDialog"; +import { useCippGDAPTrace } from "../../../components/CippSettings/CippGDAP/CippGDAPTrace"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; +import { TabbedLayout } from "../../../layouts/TabbedLayout"; import tabOptions from "./tabOptions"; -import { CippTenantTable } from "../../../components/CippWizard/CippTenantTable"; +import { useDialog } from "../../../hooks/use-dialog"; +import { + Sync, + Block, + PlayArrow, + RestartAlt, + Delete, + Add, + Refresh, +} from "@mui/icons-material"; +import cacheTypes from "../../../data/CIPPDBCacheTypes.json"; const Page = () => { const pageTitle = "Tenants - Backend"; + const createDialog = useDialog(); + const { ref: gdapRef, traceGdapAction, CippGDAPTrace } = useCippGDAPTrace(); - return ; + const actions = [ + { + label: "Exclude Tenants", + type: "POST", + url: "/api/ExecExcludeTenant?AddExclusion=true", + icon: , + data: { value: "customerId" }, + confirmText: "Are you sure you want to exclude [displayName]?", + multiPost: false, + condition: (row) => row.displayName !== "*Partner Tenant", + }, + { + label: "Include Tenants", + type: "POST", + url: "/api/ExecExcludeTenant?RemoveExclusion=true", + icon: , + data: { value: "customerId" }, + confirmText: "Are you sure you want to include [displayName]?", + multiPost: false, + condition: (row) => row.displayName !== "*Partner Tenant", + }, + { + label: "Refresh CPV Permissions", + type: "POST", + url: "/api/ExecCPVPermissions", + icon: , + data: { tenantFilter: "customerId" }, + confirmText: "Are you sure you want to refresh the CPV permissions for [displayName]?", + multiPost: false, + }, + { + label: "Reset CPV Permissions", + type: "POST", + url: "/api/ExecCPVPermissions?&ResetSP=true", + icon: , + data: { tenantFilter: "customerId" }, + confirmText: + "Are you sure you want to reset the CPV permissions for [displayName]? (This will delete the Service Principal and re-add it.)", + multiPost: false, + condition: (row) => + row.displayName !== "*Partner Tenant" && row.delegatedPrivilegeStatus !== "directTenant", + }, + { + label: "Remove Tenant", + type: "POST", + url: "/api/ExecRemoveTenant", + icon: , + data: { TenantID: "customerId" }, + confirmText: + "Are you sure you want to remove [displayName]? If this is a Direct Tenant, this will no longer be accessible until you add it via the Setup Wizard.", + multiPost: false, + condition: (row) => row.displayName !== "*Partner Tenant", + }, + { + label: "Refresh CIPPDB Cache", + type: "GET", + url: "/api/ExecCIPPDBCache", + icon: , + data: { Name: "Name", TenantFilter: "customerId" }, + confirmText: "Select the cache type to refresh for [displayName]:", + multiPost: false, + hideBulk: true, + fields: [ + { + type: "autoComplete", + name: "Name", + label: "Cache Type", + placeholder: "Select a cache type", + options: cacheTypes.map((cacheType) => ({ + label: cacheType.friendlyName, + value: cacheType.type, + description: cacheType.description, + })), + multiple: false, + creatable: false, + required: true, + }, + ], + customDataformatter: (rowData, actionData, formData) => { + const tenantFilter = rowData?.customerId || rowData?.defaultDomainName || ""; + const cacheTypeName = formData.Name?.value || formData.Name || ""; + return { + Name: cacheTypeName, + TenantFilter: tenantFilter, + }; + }, + }, + traceGdapAction, + ]; + + const offCanvas = { + extendedInfoFields: [ + "displayName", + "defaultDomainName", + "delegatedPrivilegeStatus", + "Excluded", + "ExcludeDate", + "ExcludeUser", + ], + actions: actions, + }; + + const simpleColumns = [ + "displayName", + "defaultDomainName", + "delegatedPrivilegeStatus", + "Excluded", + "ExcludeDate", + "ExcludeUser", + ]; + + const filters = [ + { + filterName: "Included tenants", + value: [{ id: "Excluded", value: "No" }], + type: "column", + }, + { + filterName: "Excluded tenants", + value: [{ id: "Excluded", value: "Yes" }], + type: "column", + }, + ]; + + return ( + <> + + + + + Force Refresh + + } + /> + + + + ); }; Page.getLayout = (page) => ( diff --git a/src/pages/cipp/statistics/index.js b/src/pages/cipp/statistics/index.js index 0fb2f0f9fae9..445f0ee704e2 100644 --- a/src/pages/cipp/statistics/index.js +++ b/src/pages/cipp/statistics/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; const Page = () => { const pageTitle = "Statistics"; diff --git a/src/pages/cipp/super-admin/cipp-roles/add.js b/src/pages/cipp/super-admin/cipp-roles/add.js index 1734bd047245..4f140837d2cd 100644 --- a/src/pages/cipp/super-admin/cipp-roles/add.js +++ b/src/pages/cipp/super-admin/cipp-roles/add.js @@ -1,6 +1,6 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippPageCard from "/src/components/CippCards/CippPageCard"; -import { CippRoleAddEdit } from "/src/components/CippSettings/CippRoleAddEdit"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippPageCard from "../../../../components/CippCards/CippPageCard"; +import { CippRoleAddEdit } from "../../../../components/CippSettings/CippRoleAddEdit"; import { CardContent, Stack, Alert } from "@mui/material"; const AddRolePage = () => { diff --git a/src/pages/cipp/super-admin/cipp-roles/edit.js b/src/pages/cipp/super-admin/cipp-roles/edit.js index 85a4b2e0c431..cfb95f8be947 100644 --- a/src/pages/cipp/super-admin/cipp-roles/edit.js +++ b/src/pages/cipp/super-admin/cipp-roles/edit.js @@ -1,7 +1,7 @@ import { useRouter } from "next/router"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippPageCard from "/src/components/CippCards/CippPageCard"; -import { CippRoleAddEdit } from "/src/components/CippSettings/CippRoleAddEdit"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippPageCard from "../../../../components/CippCards/CippPageCard"; +import { CippRoleAddEdit } from "../../../../components/CippSettings/CippRoleAddEdit"; import { CardContent, Stack, Alert } from "@mui/material"; const EditRolePage = () => { diff --git a/src/pages/cipp/super-admin/cipp-roles/index.js b/src/pages/cipp/super-admin/cipp-roles/index.js index 5f0585c956d6..594dc13be696 100644 --- a/src/pages/cipp/super-admin/cipp-roles/index.js +++ b/src/pages/cipp/super-admin/cipp-roles/index.js @@ -1,21 +1,21 @@ -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { TabbedLayout } from "../../../../layouts/TabbedLayout"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; import tabOptions from "../tabOptions"; -import CippPageCard from "/src/components/CippCards/CippPageCard"; -import CippRoles from "/src/components/CippSettings/CippRoles"; -import { Alert, CardContent, Stack, Typography } from "@mui/material"; -import { WarningAmberOutlined } from "@mui/icons-material"; +import CippPageCard from "../../../../components/CippCards/CippPageCard"; +import CippRoles from "../../../../components/CippSettings/CippRoles"; +import { CardContent, Stack, Alert } from "@mui/material"; const Page = () => { return ( - - CIPP roles can be used to restrict permissions for users with the 'editor' or 'readonly' - roles in CIPP. They can be limited to a subset of tenants and API permissions. To - restrict direct API access, create a role with the name 'CIPP-API'. - + + Custom roles can be used to restrict permissions for users with the 'editor' or + 'readonly' roles in CIPP. They can be limited to a subset of tenants and API + permissions. Built-in and custom roles can be assigned to Entra security groups for + granular access control. + diff --git a/src/pages/cipp/super-admin/function-offloading.js b/src/pages/cipp/super-admin/function-offloading.js index ed94497c8047..ee4ed7fa6d05 100644 --- a/src/pages/cipp/super-admin/function-offloading.js +++ b/src/pages/cipp/super-admin/function-offloading.js @@ -1,15 +1,15 @@ -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { TabbedLayout } from "../../../layouts/TabbedLayout"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; import tabOptions from "./tabOptions"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; +import CippFormPage from "../../../components/CippFormPages/CippFormPage"; import { useForm } from "react-hook-form"; -import { Alert, Typography, Link } from "@mui/material"; +import { Alert, Link } from "@mui/material"; import { Grid } from "@mui/system"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; +import CippFormComponent from "../../../components/CippComponents/CippFormComponent"; import { ApiGetCall, ApiPostCall } from "../../../api/ApiCall"; import { useEffect } from "react"; import NextLink from "next/link"; -import { CippDataTable } from "/src/components/CippTable/CippDataTable"; +import { CippDataTable } from "../../../components/CippTable/CippDataTable"; import { TrashIcon } from "@heroicons/react/24/outline"; const Page = () => { diff --git a/src/pages/cipp/super-admin/jit-admin-settings.js b/src/pages/cipp/super-admin/jit-admin-settings.js new file mode 100644 index 000000000000..c2f7766e670e --- /dev/null +++ b/src/pages/cipp/super-admin/jit-admin-settings.js @@ -0,0 +1,146 @@ +import { TabbedLayout } from "../../../layouts/TabbedLayout"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; +import tabOptions from "./tabOptions"; +import CippFormPage from "../../../components/CippFormPages/CippFormPage"; +import { useForm } from "react-hook-form"; +import { Typography, Alert } from "@mui/material"; +import { Grid } from "@mui/system"; +import CippFormComponent from "../../../components/CippComponents/CippFormComponent"; +import { ApiGetCall } from "../../../api/ApiCall"; +import { useEffect } from "react"; + +const Page = () => { + const pageTitle = "JIT Admin Settings"; + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + MaxDuration: "", + }, + }); + + const jitSettings = ApiGetCall({ + url: "/api/ExecJITAdminSettings?Action=Get", + queryKey: "jitAdminSettings", + }); + + useEffect(() => { + if (jitSettings.isSuccess && jitSettings.data) { + formControl.reset({ + MaxDuration: jitSettings.data?.MaxDuration || [], + }); + } + }, [jitSettings.isSuccess, jitSettings.data]); + + return ( + ({ + Action: "Set", + MaxDuration: values.MaxDuration || null, + })} + > + + + + Configure maximum allowed duration for Just-In-Time (JIT) admin accounts. This setting + helps enforce security policies by preventing technicians from creating JIT admin + accounts with excessively long lifespans. Validation is performed on the backend when + creating JIT admin accounts. + + + + + + Set the maximum duration in ISO 8601 format, or leave empty for no limit (default). The + backend will validate that the difference between the start and end dates of any JIT + admin account does not exceed the configured maximum duration. + + + + + { + // Allow empty value (no limit) + if (typeof value !== "string" || value.trim() === "") { + return true; + } + const iso8601Regex = /^P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)W)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?)?$/; + if (!iso8601Regex.test(value)) { + return "Invalid format. Use PT1H, P1D, P7D, P28D, etc."; + } + return true; + }, + }, + }} + formControl={formControl} + helperText="ISO 8601 format: PT1H (1 hour), P1D (1 day), P7D (1 week), P28D (4 weeks). Leave empty for no limit." + /> + + + + + + Important Notes: + + +
      +
    • Leave empty for no limit on JIT admin account duration (default behavior)
    • +
    • + The duration is calculated from the start date to the expiration date of the JIT + admin +
    • +
    • + If a technician attempts to exceed this limit, the backend will reject the + request with an error message +
    • +
    • This setting applies globally to all tenants and all JIT admin creations
    • +
    +
    +
    +
    + + + + Example: If maximum duration is set to P28D (4 weeks), and a + technician tries to create a JIT admin account lasting 1.5 months, the backend will + reject the request with an error: "Requested JIT Admin duration (56 days) exceeds the + maximum allowed duration of P28D (28 days)". + + +
    +
    + ); +}; + +Page.getLayout = (page) => ( + + {page} + +); + +export default Page; diff --git a/src/pages/cipp/super-admin/sam-app-permissions.js b/src/pages/cipp/super-admin/sam-app-permissions.js index f52b0a0711d5..90bb414701df 100644 --- a/src/pages/cipp/super-admin/sam-app-permissions.js +++ b/src/pages/cipp/super-admin/sam-app-permissions.js @@ -1,10 +1,10 @@ -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { TabbedLayout } from "../../../layouts/TabbedLayout"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; import tabOptions from "./tabOptions"; import { useForm } from "react-hook-form"; import { ApiGetCall, ApiPostCall } from "../../../api/ApiCall"; -import CippAppPermissionBuilder from "/src/components/CippComponents/CippAppPermissionBuilder"; -import CippPageCard from "/src/components/CippCards/CippPageCard"; +import CippAppPermissionBuilder from "../../../components/CippComponents/CippAppPermissionBuilder"; +import CippPageCard from "../../../components/CippCards/CippPageCard"; import { Alert, CardContent, Skeleton, Stack, Typography } from "@mui/material"; import { WarningAmberOutlined } from "@mui/icons-material"; diff --git a/src/pages/cipp/super-admin/sam-app-roles.js b/src/pages/cipp/super-admin/sam-app-roles.js index a5c0632206eb..b48efc3dcf9a 100644 --- a/src/pages/cipp/super-admin/sam-app-roles.js +++ b/src/pages/cipp/super-admin/sam-app-roles.js @@ -1,14 +1,14 @@ -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { TabbedLayout } from "../../../layouts/TabbedLayout"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; import tabOptions from "./tabOptions"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; +import CippFormPage from "../../../components/CippFormPages/CippFormPage"; import { Alert, CardContent, Stack, Typography } from "@mui/material"; import { WarningAmberOutlined } from "@mui/icons-material"; import { useForm } from "react-hook-form"; import { ApiGetCall, ApiGetCallWithPagination } from "../../../api/ApiCall"; import { useEffect } from "react"; import CippFormComponent from "../../../components/CippComponents/CippFormComponent"; -import GDAPRoles from "/src/data/GDAPRoles"; +import GDAPRoles from "../../../data/GDAPRoles"; import { CippFormTenantSelector } from "../../../components/CippComponents/CippFormTenantSelector"; const Page = () => { diff --git a/src/pages/cipp/super-admin/tabOptions.json b/src/pages/cipp/super-admin/tabOptions.json index 8697d8c2c5e2..aa8a260e614a 100644 --- a/src/pages/cipp/super-admin/tabOptions.json +++ b/src/pages/cipp/super-admin/tabOptions.json @@ -7,6 +7,10 @@ "label": "Function Offloading", "path": "/cipp/super-admin/function-offloading" }, + { + "label": "Time Settings", + "path": "/cipp/super-admin/time-settings" + }, { "label": "CIPP Roles", "path": "/cipp/super-admin/cipp-roles" diff --git a/src/pages/cipp/super-admin/tenant-mode.js b/src/pages/cipp/super-admin/tenant-mode.js index 61b2da589794..ea4468ce1ff5 100644 --- a/src/pages/cipp/super-admin/tenant-mode.js +++ b/src/pages/cipp/super-admin/tenant-mode.js @@ -1,11 +1,11 @@ -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { TabbedLayout } from "../../../layouts/TabbedLayout"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; import tabOptions from "./tabOptions"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; +import CippFormPage from "../../../components/CippFormPages/CippFormPage"; import { useForm } from "react-hook-form"; import { Typography } from "@mui/material"; import { Grid } from "@mui/system"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; +import CippFormComponent from "../../../components/CippComponents/CippFormComponent"; import { ApiGetCall } from "../../../api/ApiCall"; import { useEffect } from "react"; import Link from "next/link"; @@ -59,7 +59,7 @@ const Page = () => { queryKey={["execPartnerMode", "TenantSelector"]} > - + The configuration settings below should only be modified by a super admin. Super admins can configure what tenant mode CIPP operates in. See{" "} @@ -73,7 +73,7 @@ const Page = () => { for more information on how to configure these modes and what they mean. - + { + const pageTitle = "Time Settings"; + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + Timezone: { label: "UTC", value: "UTC" }, + BusinessHoursStart: { label: "09:00", value: "09:00" }, + }, + }); + + // Get timezone and backend info + const backendInfo = ApiGetCall({ + url: "/api/ExecBackendURLs", + queryKey: "backendInfo", + }); + + const { timezones, loading: timezonesLoading } = useTimezones(); + const isFlexConsumption = backendInfo.data?.Results?.SKU === "FlexConsumption"; + + // Generate business hours options (00:00 to 23:00 in hourly increments) + const businessHoursOptions = useMemo(() => { + const hours = []; + for (let i = 0; i < 24; i++) { + const hour = i.toString().padStart(2, "0"); + hours.push({ + label: `${hour}:00`, + value: `${hour}:00`, + }); + } + return hours; + }, []); + + useEffect(() => { + if (backendInfo.isSuccess && backendInfo.data) { + const tzStr = backendInfo.data?.Results?.Timezone || "UTC"; + const tzOption = (timezones || []).find( + (o) => o?.value === tzStr || o?.alternativeName === tzStr + ) || { + label: tzStr, + value: tzStr, + }; + + const startStr = backendInfo.data?.Results?.BusinessHoursStart || "09:00"; + const startOption = businessHoursOptions.find((o) => o.value === startStr) || { + label: startStr, + value: startStr, + }; + + formControl.reset({ + Timezone: tzOption, + BusinessHoursStart: startOption, + }); + } + }, [backendInfo.isSuccess, backendInfo.data, timezones, businessHoursOptions]); + + return ( + + + + + Configure the timezone for CIPP operations and scheduling. If you are using a Flex + Consumption App Service Plan, you can also configure business hours to optimize + performance and cost. + + + + {!backendInfo.isSuccess && ( + + Loading backend information... + + )} + + {timezonesLoading && ( + + Loading timezones... + + )} + + {backendInfo.isSuccess && ( + <> + + + + + {isFlexConsumption && ( + <> + + + + Flex Consumption Business Hours + + Business hours are used to optimize Flex Consumption instance scheduling. Set + the start time for your business hours. CIPP will maintain higher instance + availability during a 10-hour window from the start time for better performance. + Outside of this window, instances may scale down to reduce costs. + + + + + + + + )} + + {!isFlexConsumption && ( + + + + App Service Plan: {backendInfo.data?.SKU || "Unknown"} + + Business hours configuration is only available for Flex Consumption App Service + Plans. + + + )} + + )} + + + ); +}; + +Page.getLayout = (page) => ( + + {page} + +); + +export default Page; diff --git a/src/pages/dashboardv1.js b/src/pages/dashboardv1.js new file mode 100644 index 000000000000..a2054d962e5e --- /dev/null +++ b/src/pages/dashboardv1.js @@ -0,0 +1,457 @@ +import Head from "next/head"; +import { useEffect, useState } from "react"; +import { Box, Container, Button, Card, CardContent } from "@mui/material"; +import { Grid } from "@mui/system"; +import { CippInfoBar } from "../components/CippCards/CippInfoBar"; +import { CippChartCard } from "../components/CippCards/CippChartCard"; +import { CippPropertyListCard } from "../components/CippCards/CippPropertyListCard"; +import { Layout as DashboardLayout } from "../layouts/index.js"; +import { useSettings } from "../hooks/use-settings"; +import { getCippFormatting } from "../utils/get-cipp-formatting.js"; +import Portals from "../data/portals"; +import { BulkActionsMenu } from "../components/bulk-actions-menu.js"; +import { CippUniversalSearch } from "../components/CippCards/CippUniversalSearch.jsx"; +import { ApiGetCall } from "../api/ApiCall.jsx"; +import { CippCopyToClipBoard } from "../components/CippComponents/CippCopyToClipboard.jsx"; +import { ExecutiveReportButton } from "../components/ExecutiveReportButton.js"; + +const Page = () => { + const settings = useSettings(); + const { currentTenant } = settings; + const [domainVisible, setDomainVisible] = useState(false); + + const organization = ApiGetCall({ + url: "/api/ListOrg", + queryKey: `${currentTenant}-ListOrg`, + data: { tenantFilter: currentTenant }, + }); + + const dashboard = ApiGetCall({ + url: "/api/ListuserCounts", + data: { tenantFilter: currentTenant }, + queryKey: `${currentTenant}-ListuserCounts`, + }); + + const sharepoint = ApiGetCall({ + url: "/api/ListSharepointQuota", + queryKey: `${currentTenant}-ListSharepointQuota`, + data: { tenantFilter: currentTenant }, + }); + + const standards = ApiGetCall({ + url: "/api/ListStandardTemplates", + queryKey: `${currentTenant}-ListStandardTemplates`, + }); + + const driftApi = ApiGetCall({ + url: "/api/listTenantDrift", + data: { + TenantFilter: currentTenant, + }, + queryKey: `TenantDrift-${currentTenant}`, + }); + + const partners = ApiGetCall({ + url: "/api/ListGraphRequest", + queryKey: `${currentTenant}-ListPartners`, + data: { + Endpoint: "policies/crossTenantAccessPolicy/partners", + tenantFilter: currentTenant, + ReverseTenantLookup: true, + }, + }); + + const currentTenantInfo = ApiGetCall({ + url: "/api/ListTenants", + queryKey: `ListTenants`, + }); + + // Top bar data + const tenantInfo = [ + { name: "Tenant Name", data: organization.data?.displayName }, + { + name: "Tenant ID", + data: ( + <> + + + ), + }, + { + name: "Default Domain", + data: ( + <> + domain.isDefault === true)?.name + } + type="chip" + /> + + ), + }, + { + name: "AD Sync Enabled", + data: getCippFormatting(organization.data?.onPremisesSyncEnabled, "dirsync"), + }, + ]; + + // Process drift data for chart - filter by current tenant and aggregate + const processDriftDataForTenant = (driftData, currentTenant) => { + if (!driftData) { + return { + alignedCount: 0, + acceptedDeviationsCount: 0, + currentDeviationsCount: 0, + customerSpecificDeviations: 0, + hasData: false, + }; + } + + const rawDriftData = driftData || []; + const tenantDriftData = Array.isArray(rawDriftData) + ? rawDriftData.filter((item) => item.tenantFilter === currentTenant) + : []; + + const hasData = tenantDriftData.length > 0; + + // Aggregate data across all standards for this tenant + const aggregatedData = tenantDriftData.reduce( + (acc, item) => { + acc.acceptedDeviationsCount += item.acceptedDeviationsCount || 0; + acc.currentDeviationsCount += item.currentDeviationsCount || 0; + acc.alignedCount += item.alignedCount || 0; + acc.customerSpecificDeviations += item.customerSpecificDeviationsCount || 0; + return acc; + }, + { + acceptedDeviationsCount: 0, + currentDeviationsCount: 0, + alignedCount: 0, + customerSpecificDeviations: 0, + } + ); + + return { ...aggregatedData, hasData }; + }; + + function getActionCountsForTenant(standardsData, currentTenant) { + if (!standardsData) { + return { + remediateCount: 0, + alertCount: 0, + reportCount: 0, + total: 0, + }; + } + + const applicableTemplates = standardsData.filter((template) => { + const tenantFilterArr = Array.isArray(template?.tenantFilter) ? template.tenantFilter : []; + const excludedTenantsArr = Array.isArray(template?.excludedTenants) + ? template.excludedTenants + : []; + + const tenantInFilter = + tenantFilterArr.length > 0 && tenantFilterArr.some((tf) => tf.value === currentTenant); + + const allTenantsTemplate = + tenantFilterArr.some((tf) => tf.value === "AllTenants") && + (excludedTenantsArr.length === 0 || + !excludedTenantsArr.some((et) => et.value === currentTenant)); + + return tenantInFilter || allTenantsTemplate; + }); + + // Combine standards from all applicable templates: + let combinedStandards = {}; + for (const template of applicableTemplates) { + for (const [standardKey, standardValue] of Object.entries(template.standards)) { + combinedStandards[standardKey] = standardValue; + } + } + + // Count each action type: + let remediateCount = 0; + let alertCount = 0; + let reportCount = 0; + + for (const [, standard] of Object.entries(combinedStandards)) { + let actions = standard.action || []; + if (!Array.isArray(actions)) { + actions = [actions]; + } + actions.forEach((actionObj) => { + if (actionObj?.value === "Remediate") { + remediateCount++; + } else if (actionObj?.value === "Alert") { + alertCount++; + } else if (actionObj?.value === "Report") { + reportCount++; + } + }); + } + + const total = Object.keys(combinedStandards).length; + + return { remediateCount, alertCount, reportCount, total }; + } + + const driftData = processDriftDataForTenant(driftApi.data, currentTenant); + const { remediateCount, alertCount, reportCount, total } = getActionCountsForTenant( + standards.data, + currentTenant + ); + + const [PortalMenuItems, setPortalMenuItems] = useState([]); + const [partnersVisible, setPartnersVisible] = useState(false); + + const formatStorageSize = (sizeInMB) => { + if (sizeInMB >= 1024) { + return `${(sizeInMB / 1024).toFixed(2)}GB`; + } + return `${sizeInMB}MB`; + }; + + // Function to filter portals based on user preferences + const getFilteredPortals = () => { + const defaultLinks = { + M365_Portal: true, + Exchange_Portal: true, + Entra_Portal: true, + Teams_Portal: true, + Azure_Portal: true, + Intune_Portal: true, + SharePoint_Admin: true, + Security_Portal: true, + Compliance_Portal: true, + Power_Platform_Portal: true, + Power_BI_Portal: true, + }; + + let portalLinks; + if (settings.UserSpecificSettings?.portalLinks) { + portalLinks = { ...defaultLinks, ...settings.UserSpecificSettings.portalLinks }; + } else if (settings.portalLinks) { + portalLinks = { ...defaultLinks, ...settings.portalLinks }; + } else { + portalLinks = defaultLinks; + } + + // Filter the portals based on user settings + return Portals.filter((portal) => { + const settingKey = portal.name; + return settingKey ? portalLinks[settingKey] === true : true; + }); + }; + + useEffect(() => { + if (currentTenantInfo.isSuccess) { + const tenantLookup = currentTenantInfo.data?.find( + (tenant) => tenant.defaultDomainName === currentTenant + ); + + // Get filtered portals based on user preferences + const filteredPortals = getFilteredPortals(); + + const menuItems = filteredPortals.map((portal) => ({ + label: portal.label, + target: "_blank", + link: portal.url.replace(portal.variable, tenantLookup?.[portal.variable]), + icon: portal.icon, + })); + setPortalMenuItems(menuItems); + } + }, [ + currentTenantInfo.isSuccess, + currentTenant, + settings.portalLinks, + settings.UserSpecificSettings, + ]); + + return ( + <> + + Dashboard + + + + + + + + + + + {/* TODO: Remove Card from inside CippUniversalSearch to avoid double border */} + + + + + + + + + + + + + + + + + + + + + {/* Converted Domain Names to Property List */} + + ({ + label: "", + value: domain.name, + }))} + actionButton={ + organization.data?.verifiedDomains?.length > 3 && ( + + ) + } + /> + + + + ({ + label: partner.TenantInfo?.displayName, + value: partner.TenantInfo?.defaultDomainName, + }))} + actionButton={ + partners.data?.Results?.length > 3 && ( + + ) + } + /> + + + + + plan.capabilityStatus === "Enabled" && + ["exchange", "AADPremiumService", "WindowsDefenderATP"].includes( + plan.service + ) + ) + .reduce((uniqueServices, curr) => { + const serviceLabel = + curr.service === "exchange" + ? "Exchange" + : curr.service === "AADPremiumService" + ? "AAD Premium" + : curr.service === "Windows Defender" + ? "Windows Defender" + : curr.service; + + if (!uniqueServices.includes(serviceLabel)) { + uniqueServices.push(serviceLabel); + } + return uniqueServices; + }, []) + .join(", "), + }, + ]} + /> + + + + + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/dashboardv2/devices/index.js b/src/pages/dashboardv2/devices/index.js new file mode 100644 index 000000000000..b3766dcf6c4c --- /dev/null +++ b/src/pages/dashboardv2/devices/index.js @@ -0,0 +1,145 @@ +import React from "react"; +import { + Container, + Typography, + Card, + CardContent, + CardHeader, + Box, + Stack, + Chip, +} from "@mui/material"; +import { TabbedLayout } from "../../../layouts/TabbedLayout"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; +import tabOptions from "../tabOptions"; +import { useSettings } from "../../../hooks/use-settings"; +import { ApiGetCall } from "../../../api/ApiCall.jsx"; +import { CippDataTable } from "../../../components/CippTable/CippDataTable"; +import { CippTestDetailOffCanvas } from "../../../components/CippTestDetail/CippTestDetailOffCanvas"; +import { useRouter } from "next/router"; + +const Page = () => { + const settings = useSettings(); + const { currentTenant } = settings; + const router = useRouter(); + // Only use default if router is ready and reportId is still not present + const selectedReport = + router.isReady && !router.query.reportId ? "ztna" : router.query.reportId || "ztna"; + + const testsApi = ApiGetCall({ + url: "/api/ListTests", + data: { tenantFilter: currentTenant, reportId: selectedReport }, + queryKey: `${currentTenant}-ListTests-${selectedReport}`, + waiting: !!currentTenant && !!selectedReport, + }); + + const DevicesTests = + testsApi.data?.TestResults?.filter((test) => test.TestType === "Devices") || []; + + const getStatusColor = (status) => { + switch (status?.toLowerCase()) { + case "passed": + return "success"; + case "failed": + return "error"; + case "investigate": + return "warning"; + case "skipped": + return "default"; + default: + return "default"; + } + }; + + const getRiskColor = (risk) => { + switch (risk?.toLowerCase()) { + case "high": + return "error"; + case "medium": + return "warning"; + case "low": + return "info"; + default: + return "default"; + } + }; + + const getImpactColor = (impact) => { + switch (impact?.toLowerCase()) { + case "high": + return "error"; + case "medium": + return "warning"; + case "low": + return "info"; + default: + return "default"; + } + }; + + const offCanvas = { + size: "lg", + children: (row) => , + }; + + const filters = [ + { + filterName: "Passed", + value: [{ id: "Status", value: "Passed" }], + type: "column", + }, + { + filterName: "Failed", + value: [{ id: "Status", value: "Failed" }], + type: "column", + }, + { + filterName: "Investigate", + value: [{ id: "Status", value: "Investigate" }], + type: "column", + }, + { + filterName: "Skipped", + value: [{ id: "Status", value: "Skipped" }], + type: "column", + }, + { + filterName: "High Risk", + value: [{ id: "Risk", value: "High" }], + type: "column", + }, + { + filterName: "Medium Risk", + value: [{ id: "Risk", value: "Medium" }], + type: "column", + }, + { + filterName: "Low Risk", + value: [{ id: "Risk", value: "Low" }], + type: "column", + }, + ]; + + return ( + + + + ); +}; + +Page.getLayout = (page) => ( + + {page} + +); + +export default Page; diff --git a/src/pages/dashboardv2/identity/index.js b/src/pages/dashboardv2/identity/index.js new file mode 100644 index 000000000000..bdc4f0e8ddb4 --- /dev/null +++ b/src/pages/dashboardv2/identity/index.js @@ -0,0 +1,94 @@ +import { Container } from "@mui/material"; +import { TabbedLayout } from "../../../layouts/TabbedLayout"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; +import tabOptions from "../tabOptions"; +import { useSettings } from "../../../hooks/use-settings"; +import { ApiGetCall } from "../../../api/ApiCall.jsx"; +import { CippDataTable } from "../../../components/CippTable/CippDataTable"; +import { CippTestDetailOffCanvas } from "../../../components/CippTestDetail/CippTestDetailOffCanvas"; +import { useRouter } from "next/router"; + +const Page = () => { + const settings = useSettings(); + const { currentTenant } = settings; + const router = useRouter(); + // Only use default if router is ready and reportId is still not present + const selectedReport = + router.isReady && !router.query.reportId ? "ztna" : router.query.reportId || "ztna"; + + const testsApi = ApiGetCall({ + url: "/api/ListTests", + data: { tenantFilter: currentTenant, reportId: selectedReport }, + queryKey: `${currentTenant}-ListTests-${selectedReport}`, + waiting: !!currentTenant && !!selectedReport, + }); + + const identityTests = + testsApi.data?.TestResults?.filter((test) => test.TestType === "Identity") || []; + + const offCanvas = { + size: "lg", + children: (row) => , + }; + + const filters = [ + { + filterName: "Passed", + value: [{ id: "Status", value: "Passed" }], + type: "column", + }, + { + filterName: "Failed", + value: [{ id: "Status", value: "Failed" }], + type: "column", + }, + { + filterName: "Investigate", + value: [{ id: "Status", value: "Investigate" }], + type: "column", + }, + { + filterName: "Skipped", + value: [{ id: "Status", value: "Skipped" }], + type: "column", + }, + { + filterName: "High Risk", + value: [{ id: "Risk", value: "High" }], + type: "column", + }, + { + filterName: "Medium Risk", + value: [{ id: "Risk", value: "Medium" }], + type: "column", + }, + { + filterName: "Low Risk", + value: [{ id: "Risk", value: "Low" }], + type: "column", + }, + ]; + + return ( + + + + ); +}; + +Page.getLayout = (page) => ( + + {page} + +); + +export default Page; diff --git a/src/pages/dashboardv2/index.js b/src/pages/dashboardv2/index.js new file mode 100644 index 000000000000..fcb983b4e36d --- /dev/null +++ b/src/pages/dashboardv2/index.js @@ -0,0 +1,432 @@ +import { Box, Card, CardContent, Container, Button, Tooltip } from "@mui/material"; +import { useState, useEffect } from "react"; +import { useRouter } from "next/router"; +import { useForm, useWatch } from "react-hook-form"; +import { Grid } from "@mui/system"; +import { useSettings } from "../../hooks/use-settings"; +import { ApiGetCall } from "../../api/ApiCall.jsx"; +import Portals from "../../data/portals"; +import { BulkActionsMenu } from "../../components/bulk-actions-menu.js"; +import { ExecutiveReportButton } from "../../components/ExecutiveReportButton.js"; +import { CippUniversalSearchV2 } from "../../components/CippCards/CippUniversalSearchV2.jsx"; +import { TabbedLayout } from "../../layouts/TabbedLayout"; +import { Layout as DashboardLayout } from "../../layouts/index.js"; +import tabOptions from "./tabOptions"; +import { dashboardDemoData } from "../../data/dashboardv2-demo-data"; +import { SecureScoreCard } from "../../components/CippComponents/SecureScoreCard"; +import { MFACard } from "../../components/CippComponents/MFACard"; +import { AuthMethodCard } from "../../components/CippComponents/AuthMethodCard"; +import { LicenseCard } from "../../components/CippComponents/LicenseCard"; +import { TenantInfoCard } from "../../components/CippComponents/TenantInfoCard"; +import { TenantMetricsGrid } from "../../components/CippComponents/TenantMetricsGrid"; +import { AssessmentCard } from "../../components/CippComponents/AssessmentCard"; +import { CippApiDialog } from "../../components/CippComponents/CippApiDialog"; +import { CippAddTestReportDrawer } from "../../components/CippComponents/CippAddTestReportDrawer"; +import CippFormComponent from "../../components/CippComponents/CippFormComponent"; +import { + Devices as DevicesIcon, + CheckCircle as CheckCircleIcon, + Work as BriefcaseIcon, + Assessment as AssessmentIcon, + Refresh as RefreshIcon, +} from "@mui/icons-material"; + +const Page = () => { + const settings = useSettings(); + const router = useRouter(); + const { currentTenant } = settings; + const [portalMenuItems, setPortalMenuItems] = useState([]); + const [deleteDialog, setDeleteDialog] = useState({ open: false }); + const [refreshDialog, setRefreshDialog] = useState({ open: false }); + + // Get reportId from query params or default to "ztna" + // Only use default if router is ready and reportId is still not present + const selectedReport = + router.isReady && !router.query.reportId ? "ztna" : router.query.reportId || "ztna"; + + const formControl = useForm({ + mode: "onChange", + }); + + const reportIdValue = useWatch({ control: formControl.control }); + + // Fetch available reports + const reportsApi = ApiGetCall({ + url: "/api/ListTestReports", + queryKey: "ListTestReports", + }); + + const reports = reportsApi.data || []; + + // Update form when selectedReport changes (from URL) + useEffect(() => { + if (selectedReport && router.isReady && reports.length > 0) { + const matchingReport = reports.find((r) => r.id === selectedReport); + if (matchingReport) { + formControl.setValue("reportId", { + value: matchingReport.id, + label: matchingReport.name, + }); + } + } + }, [selectedReport, router.isReady, reports]); + + // Update URL when form value changes (e.g., user selects different report from dropdown) + useEffect(() => { + console.log("reportIdValue changed:", reportIdValue); + if (reportIdValue?.reportId?.value && reportIdValue.reportId.value !== selectedReport) { + router.push( + { + pathname: router.pathname, + query: { ...router.query, reportId: reportIdValue.reportId.value }, + }, + undefined, + { shallow: true }, + ); + } + }, [reportIdValue]); + + const organization = ApiGetCall({ + url: "/api/ListOrg", + queryKey: `${currentTenant}-ListOrg`, + data: { tenantFilter: currentTenant }, + }); + + const testsApi = ApiGetCall({ + url: "/api/ListTests", + data: { tenantFilter: currentTenant, reportId: selectedReport }, + queryKey: `${currentTenant}-ListTests-${selectedReport}`, + waiting: !!currentTenant && !!selectedReport, + }); + + const currentTenantInfo = ApiGetCall({ + url: "/api/listTenants", + data: { AllTenantSelector: true }, + queryKey: "TenantSelector", + refetchOnMount: false, + refetchOnReconnect: false, + keepPreviousData: true, + }); + + const reportData = + testsApi.isSuccess && testsApi.data?.TenantCounts + ? { + ExecutedAt: testsApi.data?.LatestReportTimeStamp || null, + TenantName: organization.data?.displayName || "", + Domain: currentTenant || "", + TestResultSummary: { + IdentityPassed: testsApi.data.TestCounts?.Identity?.Passed || 0, + IdentityTotal: testsApi.data.TestCounts?.Identity?.Total || 0, + DevicesPassed: testsApi.data.TestCounts?.Devices?.Passed || 0, + DevicesTotal: testsApi.data.TestCounts?.Devices?.Total || 0, + DataPassed: 0, + DataTotal: 0, + }, + SecureScore: testsApi.data.SecureScore || [], + TenantInfo: { + TenantOverview: { + UserCount: testsApi.data.TenantCounts.Users || 0, + GuestCount: testsApi.data.TenantCounts.Guests || 0, + GroupCount: testsApi.data.TenantCounts.Groups || 0, + ApplicationCount: testsApi.data.TenantCounts.ServicePrincipals || 0, + DeviceCount: testsApi.data.TenantCounts.Devices || 0, + ManagedDeviceCount: testsApi.data.TenantCounts.ManagedDevices || 0, + }, + MFAState: testsApi.data.MFAState, + OverviewCaDevicesAllUsers: dashboardDemoData.TenantInfo.OverviewCaDevicesAllUsers, + OverviewAuthMethodsPrivilegedUsers: + dashboardDemoData.TenantInfo.OverviewAuthMethodsPrivilegedUsers, + DeviceOverview: dashboardDemoData.TenantInfo.DeviceOverview, + }, + } + : dashboardDemoData; + + // Function to filter portals based on user preferences + const getFilteredPortals = () => { + const defaultLinks = { + M365_Portal: true, + Exchange_Portal: true, + Entra_Portal: true, + Teams_Portal: true, + Azure_Portal: true, + Intune_Portal: true, + SharePoint_Admin: true, + Security_Portal: true, + Compliance_Portal: true, + Power_Platform_Portal: true, + Power_BI_Portal: true, + }; + + let portalLinks; + if (settings.UserSpecificSettings?.portalLinks) { + portalLinks = { ...defaultLinks, ...settings.UserSpecificSettings.portalLinks }; + } else if (settings.portalLinks) { + portalLinks = { ...defaultLinks, ...settings.portalLinks }; + } else { + portalLinks = defaultLinks; + } + + // Filter the portals based on user settings + return Portals.filter((portal) => { + const settingKey = portal.name; + return settingKey ? portalLinks[settingKey] === true : true; + }); + }; + + useEffect(() => { + if (currentTenantInfo.isSuccess) { + const tenantLookup = currentTenantInfo.data?.find( + (tenant) => tenant.defaultDomainName === currentTenant, + ); + + // Get filtered portals based on user preferences + const filteredPortals = getFilteredPortals(); + + const menuItems = filteredPortals.map((portal) => ({ + label: portal.label, + target: "_blank", + link: portal.url.replace(portal.variable, tenantLookup?.[portal.variable]), + icon: portal.icon, + })); + setPortalMenuItems(menuItems); + } + }, [ + currentTenantInfo.isSuccess, + currentTenant, + settings.portalLinks, + settings.UserSpecificSettings, + ]); + + const formatNumber = (num) => { + if (!num && num !== 0) return "0"; + if (num >= 1000) { + return (num / 1000).toFixed(1) + "K"; + } + return num.toLocaleString(); + }; + + return ( + + + {/* Universal Search */} + + + + + + + + + + + + + + + + + + + + + + + + + ({ + label: r.name, + value: r.id, + description: r.description, + }))} + placeholder="Choose a report" + /> + + + + + + + + + + {/* Tenant Overview Section - 3 Column Layout */} + + {/* Column 1: Tenant Information */} + + + + + {/* Column 2: Tenant Metrics - 2x3 Grid */} + + + + + {/* Column 3: Assessment Results */} + + + + + + {/* Identity Section - 2 Column Grid */} + + + {/* Left Column */} + + + + + + + + + + + + {/* Right Column */} + + + + + + + + + + + + + + + {/* Delete Report Dialog */} + + + {/* Refresh Data Dialog */} + + + ); +}; + +Page.getLayout = (page) => ( + + {page} + +); + +export default Page; diff --git a/src/pages/dashboardv2/tabOptions.json b/src/pages/dashboardv2/tabOptions.json new file mode 100644 index 000000000000..952c392e5c89 --- /dev/null +++ b/src/pages/dashboardv2/tabOptions.json @@ -0,0 +1,18 @@ +[ + { + "label": "Overview", + "path": "/dashboardv2" + }, + { + "label": "Identity", + "path": "/dashboardv2/identity" + }, + { + "label": "Devices", + "path": "/dashboardv2/devices" + }, + { + "label": "Previous Dashboard Experience", + "path": "/dashboardv1" + } +] diff --git a/src/pages/domains.js b/src/pages/domains.js deleted file mode 100644 index c70d96f5364b..000000000000 --- a/src/pages/domains.js +++ /dev/null @@ -1,149 +0,0 @@ -import Head from "next/head"; -import { useRef } from "react"; -import { - Alert, - Box, - Button, - Card, - CircularProgress, - Container, - Dialog, - DialogActions, - DialogContent, - DialogTitle, - Divider, - Stack, - TextField, - Typography, -} from "@mui/material"; -import { useDialog } from "../hooks/use-dialog"; -import { Layout as DashboardLayout } from "../layouts/index.js"; -import { CippDataTable } from "../components/CippTable/CippDataTable"; -import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; -import { TrashIcon } from "@heroicons/react/24/outline"; -import { ApiPostCall } from "../api/ApiCall"; -import { useFormik } from "formik"; - -const Page = () => { - const ref = useRef(); - const createDialog = useDialog(); - const domainPostRequest = ApiPostCall({ - urlFromData: true, - relatedQueryKeys: "users", - }); - - const formik = useFormik({ - initialValues: { - domainName: "", - }, - onSubmit: async (values, helpers) => { - try { - domainPostRequest.mutate({ url: "/api/AddCustomDomain", ...values }); - helpers.resetForm(); - helpers.setStatus({ success: true }); - helpers.setSubmitting(false); - } catch (err) { - helpers.setStatus({ success: false }); - helpers.setErrors({ submit: err.message }); - helpers.setSubmitting(false); - } - }, - }); - - return ( - <> - - Devices - - - - - - - - - Add Domain} - actions={[ - { - label: "Delete domain", - type: "GET", - url: "api/DeleteCustomDomain", - data: { domain: "Domain" }, - icon: , - }, - ]} - simple={false} - api={{ url: "api/ListCustomDomains" }} - columns={[ - { - header: "Domain", - accessorKey: "Domain", - }, - { - header: "Status", - accessorKey: "Status", - }, - ]} - /> - - - - - -
    - Add Domain - - - To add a domain to your instance, set your preferred CNAME to your CIPP default - domain, then add the domain here. - - - - - - - {domainPostRequest.isPending && ( - - Adding domain... - - )} - {domainPostRequest.isError && ( - - Error adding domain: {domainPostRequest.error.response.data} - - )} - - - - - -
    -
    - - ); -}; - -Page.getLayout = (page) => {page}; - -export default Page; diff --git a/src/pages/email/administration/contacts-template/add.jsx b/src/pages/email/administration/contacts-template/add.jsx new file mode 100644 index 000000000000..b05da569e29e --- /dev/null +++ b/src/pages/email/administration/contacts-template/add.jsx @@ -0,0 +1,68 @@ +import { useForm } from "react-hook-form"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import ContactFormLayout from "../../../../components/CippFormPages/CippAddEditContact"; + +const AddContactTemplates = () => { + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + displayName: "", + firstName: "", + lastName: "", + email: "", + hidefromGAL: false, + streetAddress: "", + postalCode: "", + city: "", + state: "", + country: "", + companyName: "", + mobilePhone: "", + businessPhone: "", + jobTitle: "", + website: "", + mailTip: "", + }, + }); + + return ( + { + return { + DisplayName: values.displayName, + hidefromGAL: values.hidefromGAL, + email: values.email, + FirstName: values.firstName, + LastName: values.lastName, + Title: values.jobTitle, + StreetAddress: values.streetAddress, + PostalCode: values.postalCode, + City: values.city, + State: values.state, + CountryOrRegion: values.country?.value || values.country, + Company: values.companyName, + mobilePhone: values.mobilePhone, + phone: values.businessPhone, + website: values.website, + mailTip: values.mailTip, + }; + }} + > + + + ); +}; + +AddContactTemplates.getLayout = (page) => {page}; + +export default AddContactTemplates; diff --git a/src/pages/email/administration/contacts-template/edit.jsx b/src/pages/email/administration/contacts-template/edit.jsx new file mode 100644 index 000000000000..987e9f45a3bb --- /dev/null +++ b/src/pages/email/administration/contacts-template/edit.jsx @@ -0,0 +1,146 @@ +import { useEffect, useMemo, useCallback } from "react"; +import { useForm } from "react-hook-form"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormSkeleton from "../../../../components/CippFormPages/CippFormSkeleton"; +import ContactFormLayout from "../../../../components/CippFormPages/CippAddEditContact"; +import { ApiGetCall } from "../../../../api/ApiCall"; +import countryList from "../../../../data/countryList.json"; +import { useRouter } from "next/router"; + +const countryLookup = new Map(countryList.map((country) => [country.Name, country.Code])); + +const EditContactTemplate = () => { + const router = useRouter(); + const { id } = router.query; + + const contactTemplateInfo = ApiGetCall({ + url: `/api/ListContactTemplates?id=${id}`, + queryKey: `ListContactTemplates-${id}`, + waiting: !!id, + }); + + const defaultFormValues = useMemo( + () => ({ + displayName: "", + firstName: "", + lastName: "", + email: "", + hidefromGAL: false, + streetAddress: "", + postalCode: "", + city: "", + state: "", + country: "", + companyName: "", + mobilePhone: "", + businessPhone: "", + jobTitle: "", + website: "", + mailTip: "", + }), + [] + ); + + const formControl = useForm({ + mode: "onChange", + defaultValues: defaultFormValues, + }); + + // Memoize processed contact data + const processedContactData = useMemo(() => { + if (!contactTemplateInfo.isSuccess || !contactTemplateInfo.data) { + return null; + } + + // Handle both single object (when fetching by ID) and array responses + const contact = Array.isArray(contactTemplateInfo.data) + ? contactTemplateInfo.data[0] + : contactTemplateInfo.data; + const address = contact.addresses?.[0] || {}; + const phones = contact.phones || []; + + // Use Map for O(1) phone lookup + const phoneMap = new Map(phones.map((p) => [p.type, p.number])); + + return { + ContactTemplateID: id || "", + displayName: contact.displayName || "", + firstName: contact.givenName || "", + lastName: contact.surname || "", + email: contact.email || "", + hidefromGAL: contact.hidefromGAL || false, + streetAddress: address.street || "", + postalCode: address.postalCode || "", + city: address.city || "", + state: address.state || "", + country: address.countryOrRegion ? countryLookup.get(address.countryOrRegion) || "" : "", + companyName: contact.companyName || "", + mobilePhone: phoneMap.get("mobile") || "", + businessPhone: phoneMap.get("business") || "", + jobTitle: contact.jobTitle || "", + website: contact.website || "", + mailTip: contact.mailTip || "", + }; + }, [contactTemplateInfo.isSuccess, contactTemplateInfo.data]); + + // Use callback to prevent unnecessary re-renders + const resetForm = useCallback(() => { + if (processedContactData) { + formControl.reset(processedContactData); + } + }, [processedContactData, formControl]); + + useEffect(() => { + resetForm(); + }, [resetForm]); + + // Memoize custom data formatter + const customDataFormatter = useCallback((values) => { + return { + ContactTemplateID: id, + DisplayName: values.displayName, + hidefromGAL: values.hidefromGAL, + email: values.email, + FirstName: values.firstName, + LastName: values.lastName, + Title: values.jobTitle, + StreetAddress: values.streetAddress, + PostalCode: values.postalCode, + City: values.city, + State: values.state, + CountryOrRegion: values.country?.value || values.country, + Company: values.companyName, + mobilePhone: values.mobilePhone, + phone: values.businessPhone, + website: values.website, + mailTip: values.mailTip, + }; + }); + + const contactTemplate = Array.isArray(contactTemplateInfo.data) + ? contactTemplateInfo.data[0] + : contactTemplateInfo.data; + + return ( + + {contactTemplateInfo.isLoading && } + {!contactTemplateInfo.isLoading && ( + + )} + + ); +}; + +EditContactTemplate.getLayout = (page) => {page}; + +export default EditContactTemplate; diff --git a/src/pages/email/administration/contacts-template/index.jsx b/src/pages/email/administration/contacts-template/index.jsx new file mode 100644 index 000000000000..d24604c9a9af --- /dev/null +++ b/src/pages/email/administration/contacts-template/index.jsx @@ -0,0 +1,110 @@ +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { Button } from "@mui/material"; +import Link from "next/link"; +import { RocketLaunch } from "@mui/icons-material"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { TrashIcon } from "@heroicons/react/24/outline"; +import { GitHub, Edit } from "@mui/icons-material"; +import { ApiGetCall } from "../../../../api/ApiCall"; +import { CippDeployContactTemplateDrawer } from "../../../../components/CippComponents/CippDeployContactTemplateDrawer"; + +const Page = () => { + const pageTitle = "Contact Templates"; + const cardButtonPermissions = ["Exchange.Contact.ReadWrite"]; + const integrations = ApiGetCall({ + url: "/api/ListExtensionsConfig", + queryKey: "Integrations", + refetchOnMount: false, + refetchOnReconnect: false, + }); + const actions = [ + { + label: "Save to GitHub", + type: "POST", + url: "/api/ExecCommunityRepo", + icon: , + data: { + Action: "UploadTemplate", + GUID: "GUID", + }, + fields: [ + { + label: "Repository", + name: "FullName", + type: "select", + api: { + url: "/api/ListCommunityRepos", + data: { + WriteAccess: true, + }, + queryKey: "CommunityRepos-Write", + dataKey: "Results", + valueField: "FullName", + labelField: "FullName", + }, + multiple: false, + creatable: false, + required: true, + validators: { + required: { value: true, message: "This field is required" }, + }, + }, + { + label: "Commit Message", + placeholder: "Enter a commit message for adding this file to GitHub", + name: "Message", + type: "textField", + multiline: true, + required: true, + rows: 4, + }, + ], + confirmText: "Are you sure you want to save this template to the selected repository?", + condition: () => integrations.isSuccess && integrations?.data?.GitHub?.Enabled, + }, + { + label: "Delete Template", + type: "POST", + url: "/api/RemoveContactTemplates", + data: { + ID: "GUID", + }, + confirmText: "Do you want to delete the template?", + icon: , + color: "danger", + }, + { + label: "Edit Contact Template", + link: "/email/administration/contacts-template/edit?id=[GUID]", + icon: , + color: "success", + target: "_self", + }, + ]; + const simpleColumns = ["name", "contactTemplateName", "GUID"]; + + return ( + + + + + } + /> + ); +}; + +Page.getLayout = (page) => {page}; +export default Page; diff --git a/src/pages/email/administration/contacts/add.jsx b/src/pages/email/administration/contacts/add.jsx deleted file mode 100644 index 2feea32e286e..000000000000 --- a/src/pages/email/administration/contacts/add.jsx +++ /dev/null @@ -1,112 +0,0 @@ -import React from "react"; -import { Divider } from "@mui/material"; -import { Grid } from "@mui/system"; -import { useForm } from "react-hook-form"; -import { useSelector } from "react-redux"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { useSettings } from "../../../../hooks/use-settings"; - -const AddContact = () => { - const tenantDomain = useSettings().currentTenant; - - const formControl = useForm({ - mode: "onChange", - defaultValues: { - displayName: "", - firstName: "", - lastName: "", - email: "", - hidefromGAL: false, - }, - }); - - return ( - { - // Add tenantDomain to the payload - return { - tenantID: tenantDomain, - firstName: values.firstName, - lastName: values.lastName, - displayName: values.displayName, - email: values.email, - hidefromGAL: values.hidefromGAL, - }; - }} - > - - {/* Display Name */} - - - - - {/* First Name and Last Name */} - - - - - - - - - - {/* Email */} - - - - - {/* Hide from GAL */} - - - - - - - - ); -}; - -AddContact.getLayout = (page) => {page}; - -export default AddContact; diff --git a/src/pages/email/administration/contacts/edit.jsx b/src/pages/email/administration/contacts/edit.jsx index 887bd645a7ff..f47ef7c88d34 100644 --- a/src/pages/email/administration/contacts/edit.jsx +++ b/src/pages/email/administration/contacts/edit.jsx @@ -1,15 +1,17 @@ -import React, { useEffect } from "react"; +import { useEffect, useMemo, useCallback } from "react"; import { useRouter } from "next/router"; -import { Divider } from "@mui/material"; -import { Grid } from "@mui/system"; import { useForm } from "react-hook-form"; -import { useSelector } from "react-redux"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormSkeleton from "../../../../components/CippFormPages/CippFormSkeleton"; import { useSettings } from "../../../../hooks/use-settings"; import { ApiGetCall } from "../../../../api/ApiCall"; -import countryList from "/src/data/countryList.json"; +import countryList from "../../../../data/countryList.json"; +import { Grid } from "@mui/system"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { Divider } from "@mui/material"; + +const countryLookup = new Map(countryList.map((country) => [country.Name, country.Code])); const EditContact = () => { const tenantDomain = useSettings().currentTenant; @@ -19,18 +21,11 @@ const EditContact = () => { const contactInfo = ApiGetCall({ url: `/api/ListContacts?tenantFilter=${tenantDomain}&id=${id}`, queryKey: `ListContacts-${id}`, - waiting: false, + waiting: !!id, }); - useEffect(() => { - if (id) { - contactInfo.refetch(); - } - }, [router.query, id, tenantDomain]); - - const formControl = useForm({ - mode: "onChange", - defaultValues: { + const defaultFormValues = useMemo( + () => ({ displayName: "", firstName: "", lastName: "", @@ -39,214 +34,252 @@ const EditContact = () => { streetAddress: "", postalCode: "", city: "", + state: "", country: "", companyName: "", mobilePhone: "", businessPhone: "", jobTitle: "", - }, + website: "", + mailTip: "", + }), + [] + ); + + const formControl = useForm({ + mode: "onChange", + defaultValues: defaultFormValues, }); - useEffect(() => { - if (contactInfo.isSuccess && contactInfo.data?.[0]) { - const contact = contactInfo.data[0]; - // Get the address info from the first address entry - const address = contact.addresses?.[0] || {}; + // Memoize processed contact data + const processedContactData = useMemo(() => { + if (!contactInfo.isSuccess || !contactInfo.data) { + return null; + } + + const contact = contactInfo.data; + const address = contact.addresses?.[0] || {}; + const phones = contact.phones || []; - // Find phone numbers by type - const phones = contact.phones || []; - const mobilePhone = phones.find((p) => p.type === "mobile")?.number; - const businessPhone = phones.find((p) => p.type === "business")?.number; + // Use Map for O(1) phone lookup + const phoneMap = new Map(phones.map((p) => [p.type, p.number])); - formControl.reset({ - displayName: contact.displayName || "", - firstName: contact.givenName || "", - lastName: contact.surname || "", - email: contact.mail || "", - hidefromGAL: contact.hidefromGAL || false, - streetAddress: address.street || "", - postalCode: address.postalCode || "", - city: address.city || "", - country: address.countryOrRegion - ? countryList.find((c) => c.Name === address.countryOrRegion)?.Code || "" - : "", - companyName: contact.companyName || "", - mobilePhone: mobilePhone || "", - businessPhone: businessPhone || "", - jobTitle: contact.jobTitle || "", - }); + return { + displayName: contact.displayName || "", + firstName: contact.givenName || "", + lastName: contact.surname || "", + email: contact.mail || "", + hidefromGAL: contact.hidefromGAL || false, + streetAddress: address.street || "", + postalCode: address.postalCode || "", + city: address.city || "", + state: address.state || "", + country: address.countryOrRegion ? countryLookup.get(address.countryOrRegion) || "" : "", + companyName: contact.companyName || "", + mobilePhone: phoneMap.get("mobile") || "", + businessPhone: phoneMap.get("business") || "", + jobTitle: contact.jobTitle || "", + website: contact.website || "", + mailTip: contact.mailTip || "", + }; + }, [contactInfo.isSuccess, contactInfo.data]); + + // Use callback to prevent unnecessary re-renders + const resetForm = useCallback(() => { + if (processedContactData) { + formControl.reset(processedContactData); } - }, [contactInfo.isSuccess, contactInfo.data, contactInfo.isFetching]); + }, [processedContactData, formControl]); + + useEffect(() => { + resetForm(); + }, [resetForm]); - if (contactInfo.isLoading) { - return
    Loading...
    ; - } + // Memoize custom data formatter + const customDataFormatter = useCallback( + (values) => { + const contact = Array.isArray(contactInfo.data) ? contactInfo.data[0] : contactInfo.data; + return { + tenantID: tenantDomain, + ContactID: contact?.id, + DisplayName: values.displayName, + hidefromGAL: values.hidefromGAL, + email: values.email, + FirstName: values.firstName, + LastName: values.lastName, + Title: values.jobTitle, + StreetAddress: values.streetAddress, + PostalCode: values.postalCode, + City: values.city, + State: values.state, + CountryOrRegion: values.country?.value || values.country, + Company: values.companyName, + mobilePhone: values.mobilePhone, + phone: values.businessPhone, + website: values.website, + mailTip: values.mailTip, + }; + }, + [tenantDomain, contactInfo.data] + ); + + const contact = Array.isArray(contactInfo.data) ? contactInfo.data[0] : contactInfo.data; return ( { - return { - tenantID: tenantDomain, - ContactID: contactInfo.data?.[0]?.id, - DisplayName: values.displayName, - hidefromGAL: values.hidefromGAL, - email: values.email, - FirstName: values.firstName, - LastName: values.lastName, - Title: values.jobTitle, - StreetAddress: values.streetAddress, - PostalCode: values.postalCode, - City: values.city, - CountryOrRegion: values.country?.value || values.country, - Company: values.companyName, - mobilePhone: values.mobilePhone, - phone: values.businessPhone, - }; - }} + data={contact} + customDataformatter={customDataFormatter} > - - {/* Display Name */} - - - + {contactInfo.isLoading && } + {!contactInfo.isLoading && ( + + {/* Display Name */} + + + - {/* First Name and Last Name */} - - - - - - + {/* First Name and Last Name */} + + + + + + - + - {/* Email */} - - - + {/* Email */} + + + - {/* Hide from GAL */} - - - + {/* Hide from GAL */} + + + - + - {/* Company Information */} - - - - - - + {/* Company Information */} + + + + + + - + - {/* Address Information */} - - - - - - - - - - - ({ - label: Name, - value: Code, - }))} - formControl={formControl} - /> - + {/* Address Information */} + + + + + + + + + + + ({ + label: Name, + value: Code, + }))} + formControl={formControl} + /> + - + - {/* Phone Numbers */} - - - - - + {/* Phone Numbers */} + + + + + + - + )} ); }; diff --git a/src/pages/email/administration/contacts/index.js b/src/pages/email/administration/contacts/index.js index c9c590d80bf7..471a06aa7e85 100644 --- a/src/pages/email/administration/contacts/index.js +++ b/src/pages/email/administration/contacts/index.js @@ -1,41 +1,70 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Edit, PersonAdd } from "@mui/icons-material"; -import { Button } from "@mui/material"; -import Link from "next/link"; +import { useMemo } from "react"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { CloudSync, Edit } from "@mui/icons-material"; import TrashIcon from "@heroicons/react/24/outline/TrashIcon"; +import { CippAddContactDrawer } from "../../../../components/CippComponents/CippAddContactDrawer"; +import { CippDeployContactTemplateDrawer } from "../../../../components/CippComponents/CippDeployContactTemplateDrawer"; const Page = () => { const pageTitle = "Contacts"; - - const actions = [ - { - label: "Edit Contact", - link: "/email/administration/contacts/edit?id=[id]", - multiPost: false, - postEntireRow: true, - icon: , - color: "warning", - condition: (row) => !row.onPremisesSyncEnabled, - }, - { - label: "Remove Contact", - type: "POST", - url: "/api/RemoveContact", - data: { - GUID: "id", - mail: "mail", + const cardButtonPermissions = ["Exchange.Contact.ReadWrite"]; + const actions = useMemo( + () => [ + { + label: "Edit Contact", + link: "/email/administration/contacts/edit?id=[Guid]", + multiPost: false, + postEntireRow: true, + icon: , + color: "warning", + condition: (row) => !row.IsDirSynced, }, - confirmText: - "Are you sure you want to delete this contact? Remember this will not work if the contact is AD Synced.", - color: "danger", - icon: , - condition: (row) => !row.onPremisesSyncEnabled, - }, - ]; - - const simpleColumns = ["displayName", "mail", "companyName", "onPremisesSyncEnabled"]; + { + label: "Set Source of Authority", + type: "POST", + url: "/api/ExecSetCloudManaged", + icon: , + data: { + ID: "graphId", + displayName: "DisplayName", + type: "!Contact", + }, + fields: [ + { + type: "radio", + name: "isCloudManaged", + label: "Source of Authority", + options: [ + { label: "Cloud Managed", value: true }, + { label: "On-Premises Managed", value: false }, + ], + validators: { required: "Please select a source of authority" }, + }, + ], + confirmText: + "Are you sure you want to change the source of authority for '[DisplayName]'? Setting it to On-Premises Managed will take until the next sync cycle to show the change.", + multiPost: false, + }, + { + label: "Remove Contact", + type: "POST", + url: "/api/RemoveContact", + data: { + GUID: "Guid", + mail: "WindowsEmailAddress", + }, + confirmText: + "Are you sure you want to delete this contact? Remember this will not work if the contact is AD Synced.", + color: "danger", + icon: , + condition: (row) => !row.IsDirSynced, + }, + ], + [] + ); + const simpleColumns = ["DisplayName", "WindowsEmailAddress", "Company", "IsDirSynced"]; return ( { simpleColumns={simpleColumns} cardButton={ <> - + + } /> ); }; -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => {page}; export default Page; diff --git a/src/pages/email/administration/deleted-mailboxes/index.js b/src/pages/email/administration/deleted-mailboxes/index.js index d276a2ab998f..8b7841ddfedf 100644 --- a/src/pages/email/administration/deleted-mailboxes/index.js +++ b/src/pages/email/administration/deleted-mailboxes/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; const Page = () => { const pageTitle = "Deleted Mailboxes"; @@ -15,5 +15,5 @@ const Page = () => { ); }; -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => {page}; export default Page; diff --git a/src/pages/email/administration/exchange-retention/policies/index.js b/src/pages/email/administration/exchange-retention/policies/index.js new file mode 100644 index 000000000000..650e79e76ea6 --- /dev/null +++ b/src/pages/email/administration/exchange-retention/policies/index.js @@ -0,0 +1,80 @@ +import { useMemo } from "react"; +import { Layout as DashboardLayout } from "../../../../../layouts/index"; +import { CippTablePage } from "../../../../../components/CippComponents/CippTablePage"; +import { Policy, Edit } from "@mui/icons-material"; +import { Button } from "@mui/material"; +import Link from "next/link"; +import TrashIcon from "@heroicons/react/24/outline/TrashIcon"; +import { HeaderedTabbedLayout } from "../../../../../layouts/HeaderedTabbedLayout"; +import tabOptions from "../tabOptions"; +import { useSettings } from "../../../../../hooks/use-settings"; + +const Page = () => { + const pageTitle = "Retention Policy Management"; + const tenant = useSettings().currentTenant; + + const actions = useMemo( + () => [ + { + label: "Edit Policy", + link: "/email/administration/exchange-retention/policies/policy?name=[Name]", + multiPost: false, + postEntireRow: true, + icon: , + color: "warning", + }, + { + label: "Delete Policy", + type: "POST", + url: "/api/ExecManageRetentionPolicies", + confirmText: + "Are you sure you want to delete retention policy [Name]? This action cannot be undone.", + color: "danger", + icon: , + customDataformatter: (rows) => { + const policies = Array.isArray(rows) ? rows : [rows]; + return { + DeletePolicies: policies.map((policy) => policy.Name), + tenantFilter: tenant, + }; + }, + }, + ], + [tenant] + ); + + const simpleColumns = useMemo( + () => ["Name", "IsDefault", "IsDefaultArbitrationMailbox", "RetentionPolicyTagLinks"], + [] + ); + + const cardButton = useMemo( + () => ( + + ), + [] + ); + + return ( + + + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/email/administration/exchange-retention/policies/policy.jsx b/src/pages/email/administration/exchange-retention/policies/policy.jsx new file mode 100644 index 000000000000..5118fbd13160 --- /dev/null +++ b/src/pages/email/administration/exchange-retention/policies/policy.jsx @@ -0,0 +1,151 @@ +import { useForm } from "react-hook-form"; +import { useEffect, useMemo } from "react"; +import { useRouter } from "next/router"; +import { Layout as DashboardLayout } from "../../../../../layouts/index"; +import CippFormPage from "../../../../../components/CippFormPages/CippFormPage"; +import CippFormSkeleton from "../../../../../components/CippFormPages/CippFormSkeleton"; +import { useSettings } from "../../../../../hooks/use-settings"; +import { Grid } from "@mui/system"; +import { Divider } from "@mui/material"; +import CippFormComponent from "../../../../../components/CippComponents/CippFormComponent"; +import { ApiGetCall } from "../../../../../api/ApiCall"; + +const RetentionPolicy = () => { + const userSettingsDefaults = useSettings(); + const router = useRouter(); + const { name } = router.query; + const isEdit = !!name; + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + tenantFilter: userSettingsDefaults.currentTenant, + Name: "", + RetentionPolicyTagLinks: [], + }, + }); + + // Get existing policy data if editing + const existingPolicyRequest = ApiGetCall({ + url: `/api/ExecManageRetentionPolicies?tenantFilter=${userSettingsDefaults.currentTenant}${isEdit ? `&name=${encodeURIComponent(name)}` : ''}`, + queryKey: `RetentionPolicy-${name}-${userSettingsDefaults.currentTenant}`, + waiting: isEdit, + }); + + // Get available retention tags + const retentionTagsRequest = ApiGetCall({ + url: `/api/ExecManageRetentionTags?tenantFilter=${userSettingsDefaults.currentTenant}`, + queryKey: `RetentionTags-ForManagement${userSettingsDefaults.currentTenant}`, + }); + + const availableTags = useMemo(() => { + if (!retentionTagsRequest.isSuccess || !retentionTagsRequest.data) { + return []; + } + + return retentionTagsRequest.data.map(tag => ({ + label: `${tag.Name} (${tag.Type})`, + value: tag.Name, + })); + }, [retentionTagsRequest.isSuccess, retentionTagsRequest.data]); + + // Pre-fill form when editing + useEffect(() => { + if (isEdit && existingPolicyRequest.isSuccess && existingPolicyRequest.data && availableTags.length > 0) { + const policy = existingPolicyRequest.data; + + // Map tag names to tag objects for the form + const selectedTags = policy.RetentionPolicyTagLinks.map(tagName => + availableTags.find(tag => tag.value === tagName) + ).filter(Boolean); + + formControl.reset({ + tenantFilter: userSettingsDefaults.currentTenant, + Name: policy.Name, + RetentionPolicyTagLinks: selectedTags, + }); + } + }, [ + isEdit, + existingPolicyRequest.isSuccess, + existingPolicyRequest.data, + availableTags, + userSettingsDefaults.currentTenant, + formControl + ]); + + return ( + { + // Extract tag names from the selected tag objects + const tagNames = values.RetentionPolicyTagLinks?.map(tag => + typeof tag === 'string' ? tag : tag.value + ) || []; + + if (isEdit) { + return { + ModifyPolicies: [{ + Identity: name, + Name: values.Name, + RetentionPolicyTagLinks: tagNames, + }], + tenantFilter: values.tenantFilter, + }; + } else { + return { + CreatePolicies: [{ + Name: values.Name, + RetentionPolicyTagLinks: tagNames, + }], + tenantFilter: values.tenantFilter, + }; + } + }} + > + {((existingPolicyRequest.isLoading && isEdit) || retentionTagsRequest.isLoading) && ( + + )} + {(!isEdit || !existingPolicyRequest.isLoading) && !retentionTagsRequest.isLoading && ( + + {/* Policy Name */} + + + + + + + {/* Retention Tags */} + + + + + )} + + ); +}; + +RetentionPolicy.getLayout = (page) => {page}; + +export default RetentionPolicy; \ No newline at end of file diff --git a/src/pages/email/administration/exchange-retention/tabOptions.json b/src/pages/email/administration/exchange-retention/tabOptions.json new file mode 100644 index 000000000000..e6e203b5c611 --- /dev/null +++ b/src/pages/email/administration/exchange-retention/tabOptions.json @@ -0,0 +1,10 @@ +[ + { + "label": "Policies", + "path": "/email/administration/exchange-retention/policies" + }, + { + "label": "Tags", + "path": "/email/administration/exchange-retention/tags" + } +] diff --git a/src/pages/email/administration/exchange-retention/tags/index.js b/src/pages/email/administration/exchange-retention/tags/index.js new file mode 100644 index 000000000000..9749f8b62aa7 --- /dev/null +++ b/src/pages/email/administration/exchange-retention/tags/index.js @@ -0,0 +1,87 @@ +import { useMemo } from "react"; +import { Layout as DashboardLayout } from "../../../../../layouts/index"; +import { CippTablePage } from "../../../../../components/CippComponents/CippTablePage"; +import { Sell, Edit } from "@mui/icons-material"; +import { Button } from "@mui/material"; +import Link from "next/link"; +import TrashIcon from "@heroicons/react/24/outline/TrashIcon"; +import { HeaderedTabbedLayout } from "../../../../../layouts/HeaderedTabbedLayout"; +import tabOptions from "../tabOptions"; +import { useSettings } from "../../../../../hooks/use-settings"; + +const Page = () => { + const pageTitle = "Retention Tag Management"; + const tenant = useSettings().currentTenant; + + const actions = useMemo( + () => [ + { + label: "Edit Tag", + link: "/email/administration/exchange-retention/tags/tag?name=[Name]", + multiPost: false, + postEntireRow: true, + icon: , + color: "warning", + }, + { + label: "Delete Tag", + type: "POST", + url: "/api/ExecManageRetentionTags", + confirmText: + "Are you sure you want to delete retention tag [Name]? This action cannot be undone and may affect retention policies that use this tag.", + color: "danger", + icon: , + customDataformatter: (rows) => { + const tags = Array.isArray(rows) ? rows : [rows]; + return { + DeleteTags: tags.map((tag) => tag.Name), + tenantFilter: tenant, + }; + }, + }, + ], + [tenant] + ); + + const simpleColumns = useMemo( + () => [ + "Name", + "Type", + "RetentionAction", + "AgeLimitForRetention", + "RetentionEnabled", + "Comment", + ], + [] + ); + + const cardButton = useMemo( + () => ( + + ), + [] + ); + + return ( + + + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/email/administration/exchange-retention/tags/tag.jsx b/src/pages/email/administration/exchange-retention/tags/tag.jsx new file mode 100644 index 000000000000..40d6291257a1 --- /dev/null +++ b/src/pages/email/administration/exchange-retention/tags/tag.jsx @@ -0,0 +1,276 @@ +import { useForm } from "react-hook-form"; +import { useEffect } from "react"; +import { useRouter } from "next/router"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; +import CippFormPage from "../../../../../components/CippFormPages/CippFormPage"; +import CippFormSkeleton from "../../../../../components/CippFormPages/CippFormSkeleton"; +import { useSettings } from "../../../../../hooks/use-settings"; +import { Grid } from "@mui/system"; +import { Divider } from "@mui/material"; +import CippFormComponent from "../../../../../components/CippComponents/CippFormComponent"; +import { ApiGetCall } from "../../../../../api/ApiCall"; + +const RetentionTag = () => { + const userSettingsDefaults = useSettings(); + const router = useRouter(); + const { name } = router.query; + const isEdit = !!name; + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + tenantFilter: userSettingsDefaults.currentTenant, + Name: "", + Type: "", + Comment: "", + RetentionAction: "", + AgeLimitForRetention: "", + RetentionEnabled: true, + LocalizedComment: "", + LocalizedRetentionPolicyTagName: "", + }, + }); + + // Get existing tag data if editing + const existingTagRequest = ApiGetCall({ + url: `/api/ExecManageRetentionTags?tenantFilter=${userSettingsDefaults.currentTenant}${isEdit ? `&name=${encodeURIComponent(name)}` : ''}`, + queryKey: `RetentionTag-${name}-${userSettingsDefaults.currentTenant}`, + waiting: isEdit, + }); + + const tagTypes = [ + { label: 'All', value: 'All' }, + { label: 'Inbox', value: 'Inbox' }, + { label: 'Sent Items', value: 'SentItems' }, + { label: 'Deleted Items', value: 'DeletedItems' }, + { label: 'Drafts', value: 'Drafts' }, + { label: 'Outbox', value: 'Outbox' }, + { label: 'Junk Email', value: 'JunkEmail' }, + { label: 'Journal', value: 'Journal' }, + { label: 'Sync Issues', value: 'SyncIssues' }, + { label: 'Conversation History', value: 'ConversationHistory' }, + { label: 'Personal', value: 'Personal' }, + { label: 'Recoverable Items', value: 'RecoverableItems' }, + { label: 'Non IPM Root', value: 'NonIpmRoot' }, + { label: 'Legacy Archive Journals', value: 'LegacyArchiveJournals' }, + { label: 'Clutter', value: 'Clutter' }, + { label: 'Calendar', value: 'Calendar' }, + { label: 'Notes', value: 'Notes' }, + { label: 'Tasks', value: 'Tasks' }, + { label: 'Contacts', value: 'Contacts' }, + { label: 'RSS Subscriptions', value: 'RssSubscriptions' }, + { label: 'Managed Custom Folder', value: 'ManagedCustomFolder' } + ]; + + const retentionActions = [ + { label: 'Delete and Allow Recovery', value: 'DeleteAndAllowRecovery' }, + { label: 'Permanently Delete', value: 'PermanentlyDelete' }, + { label: 'Move to Archive', value: 'MoveToArchive' }, + { label: 'Mark as Past Retention Limit', value: 'MarkAsPastRetentionLimit' } + ]; + + // Parse AgeLimitForRetention from TimeSpan format "90.00:00:00" to just days "90" + const parseAgeLimitDays = (ageLimit) => { + if (!ageLimit) return ""; + const match = ageLimit.toString().match(/^(\d+)\./); + return match ? match[1] : ""; + }; + + // Pre-fill form when editing + useEffect(() => { + if (isEdit && existingTagRequest.isSuccess && existingTagRequest.data) { + const tag = existingTagRequest.data; + + // Find the matching options for dropdowns + const typeOption = tagTypes.find(option => option.value === tag.Type) || null; + const actionOption = retentionActions.find(option => option.value === tag.RetentionAction) || null; + + // Handle localized fields (arrays in API, strings in form) + const localizedComment = Array.isArray(tag.LocalizedComment) + ? tag.LocalizedComment[0] || "" + : tag.LocalizedComment || ""; + const localizedTagName = Array.isArray(tag.LocalizedRetentionPolicyTagName) + ? tag.LocalizedRetentionPolicyTagName[0] || "" + : tag.LocalizedRetentionPolicyTagName || ""; + + formControl.reset({ + tenantFilter: userSettingsDefaults.currentTenant, + Name: tag.Name || "", + Type: typeOption, + Comment: tag.Comment || "", + RetentionAction: actionOption, + AgeLimitForRetention: parseAgeLimitDays(tag.AgeLimitForRetention), + RetentionEnabled: tag.RetentionEnabled !== false, + LocalizedComment: localizedComment, + LocalizedRetentionPolicyTagName: localizedTagName, + }); + } + }, [isEdit, existingTagRequest.isSuccess, existingTagRequest.data, userSettingsDefaults.currentTenant, formControl]); + + return ( + { + const tagData = { + Name: values.Name, + Comment: values.Comment, + RetentionEnabled: values.RetentionEnabled, + }; + + // Extract .value from select objects and only include non-empty optional fields + if (values.RetentionAction) { + tagData.RetentionAction = typeof values.RetentionAction === 'string' + ? values.RetentionAction + : values.RetentionAction.value; + } + if (values.AgeLimitForRetention) { + tagData.AgeLimitForRetention = parseInt(values.AgeLimitForRetention); + } + if (values.LocalizedComment) { + tagData.LocalizedComment = values.LocalizedComment; + } + if (values.LocalizedRetentionPolicyTagName) { + tagData.LocalizedRetentionPolicyTagName = values.LocalizedRetentionPolicyTagName; + } + + if (isEdit) { + return { + ModifyTags: [{ + Identity: name, + ...tagData, + }], + tenantFilter: values.tenantFilter, + }; + } else { + return { + CreateTags: [{ + Type: typeof values.Type === 'string' ? values.Type : values.Type.value, + ...tagData, + }], + tenantFilter: values.tenantFilter, + }; + } + }} + > + {existingTagRequest.isLoading && isEdit && } + {(!isEdit || !existingTagRequest.isLoading) && ( + + {/* Tag Name */} + + + + + {/* Tag Type */} + + + + + + + {/* Retention Action */} + + + + + {/* Age Limit */} + + + + + {/* Retention Enabled */} + + + + + + + {/* Comment */} + + + + + {/* Localized Fields */} + + + + + + + + + + + + )} + + ); +}; + +RetentionTag.getLayout = (page) => {page}; + +export default RetentionTag; \ No newline at end of file diff --git a/src/pages/email/administration/mailbox-rules/index.js b/src/pages/email/administration/mailbox-rules/index.js index ba6a59439ea4..eb414aae760e 100644 --- a/src/pages/email/administration/mailbox-rules/index.js +++ b/src/pages/email/administration/mailbox-rules/index.js @@ -1,13 +1,33 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { TrashIcon } from "@heroicons/react/24/outline"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { getCippTranslation } from "../../../../utils/get-cipp-translation"; import { getCippFormatting } from "../../../../utils/get-cipp-formatting"; import { CippPropertyListCard } from "../../../../components/CippCards/CippPropertyListCard"; -import { Block, PlayArrow, DeleteForever } from "@mui/icons-material"; +import { Block, PlayArrow, DeleteForever, Sync, Info } from "@mui/icons-material"; +import { Button, SvgIcon, IconButton, Tooltip } from "@mui/material"; +import { Stack } from "@mui/system"; +import { useDialog } from "../../../../hooks/use-dialog"; +import { CippApiDialog } from "../../../../components/CippComponents/CippApiDialog"; +import { useSettings } from "../../../../hooks/use-settings"; +import { CippQueueTracker } from "../../../../components/CippTable/CippQueueTracker"; +import { useState } from "react"; const Page = () => { const pageTitle = "Mailbox Rules"; + const currentTenant = useSettings().currentTenant; + const syncDialog = useDialog(); + const [syncQueueId, setSyncQueueId] = useState(null); + + const isAllTenants = currentTenant === "AllTenants"; + + const apiData = { + UseReportDB: true, + }; + + const simpleColumns = isAllTenants + ? ["Tenant", "UserPrincipalName", "Name", "Priority", "Enabled", "From", "CacheTimestamp"] + : ["UserPrincipalName", "Name", "Priority", "Enabled", "From", "CacheTimestamp"]; + const actions = [ { label: "Enable Mailbox Rule", @@ -16,7 +36,7 @@ const Page = () => { url: "/api/ExecSetMailboxRule", data: { ruleId: "Identity", - userPrincipalName: "UserPrincipalName", + userPrincipalName: "OperationGuid", ruleName: "Name", Enable: true, }, @@ -31,7 +51,7 @@ const Page = () => { url: "/api/ExecSetMailboxRule", data: { ruleId: "Identity", - userPrincipalName: "UserPrincipalName", + userPrincipalName: "OperationGuid", ruleName: "Name", Disable: true, }, @@ -44,7 +64,7 @@ const Page = () => { type: "POST", icon: , url: "/api/ExecRemoveMailboxRule", - data: { ruleId: "Identity", userPrincipalName: "UserPrincipalName", ruleName: "Name" }, + data: { ruleId: "Identity", userPrincipalName: "OperationGuid", ruleName: "Name" }, confirmText: "Are you sure you want to remove this mailbox rule?", multiPost: false, }, @@ -53,7 +73,7 @@ const Page = () => { const offCanvas = { children: (data) => { const keys = Object.keys(data).filter( - (key) => !key.includes("@odata") && !key.includes("@data") + (key) => !key.includes("@odata") && !key.includes("@data"), ); const properties = []; keys.forEach((key) => { @@ -75,15 +95,66 @@ const Page = () => { ); }, }; + + const pageActions = [ + + + + + + + + + , + ]; + return ( - + <> + + { + if (result?.Metadata?.QueueId) { + setSyncQueueId(result.Metadata.QueueId); + } + }, + url: "/api/ExecCIPPDBCache", + confirmText: `Run mailbox rules cache sync for ${currentTenant}? This will update mailbox rules data immediately.`, + relatedQueryKeys: [`ListMailboxRules-${currentTenant}`], + data: { + Name: "Mailboxes", + Types: "Rules", + }, + }} + /> + ); }; diff --git a/src/pages/email/administration/mailboxes/addshared.jsx b/src/pages/email/administration/mailboxes/addshared.jsx index b14e962e435d..5992df015d1f 100644 --- a/src/pages/email/administration/mailboxes/addshared.jsx +++ b/src/pages/email/administration/mailboxes/addshared.jsx @@ -1,11 +1,9 @@ -import React from "react"; import { Divider } from "@mui/material"; import { Grid } from "@mui/system"; import { useForm } from "react-hook-form"; -import { useSelector } from "react-redux"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; import { useSettings } from "../../../../hooks/use-settings"; import { CippFormDomainSelector } from "../../../../components/CippComponents/CippFormDomainSelector"; @@ -30,6 +28,7 @@ const AddContact = () => { title="Shared Mailbox" backButtonTitle="Mailbox Overview" postUrl="/api/AddSharedMailbox" + resetForm={true} customDataformatter={(values) => { return { tenantID: tenantDomain, @@ -40,7 +39,7 @@ const AddContact = () => { }} > - + { {/* Email */} - + { formControl={formControl} /> - + diff --git a/src/pages/email/administration/mailboxes/index.js b/src/pages/email/administration/mailboxes/index.js index da5479b87fb4..65f190eff94f 100644 --- a/src/pages/email/administration/mailboxes/index.js +++ b/src/pages/email/administration/mailboxes/index.js @@ -1,12 +1,28 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import Link from "next/link"; -import { Button } from "@mui/material"; -import { Add } from "@mui/icons-material"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import CippExchangeActions from "../../../../components/CippComponents/CippExchangeActions"; +import { CippHVEUserDrawer } from "../../../../components/CippComponents/CippHVEUserDrawer.jsx"; +import { CippSharedMailboxDrawer } from "../../../../components/CippComponents/CippSharedMailboxDrawer.jsx"; +import { Sync, Info } from "@mui/icons-material"; +import { Button, SvgIcon, IconButton, Tooltip } from "@mui/material"; +import { useSettings } from "../../../../hooks/use-settings"; +import { Stack } from "@mui/system"; +import { useDialog } from "../../../../hooks/use-dialog"; +import { CippApiDialog } from "../../../../components/CippComponents/CippApiDialog"; +import { useState } from "react"; +import { CippQueueTracker } from "../../../../components/CippTable/CippQueueTracker"; const Page = () => { const pageTitle = "Mailboxes"; + const currentTenant = useSettings().currentTenant; + const syncDialog = useDialog(); + const [syncQueueId, setSyncQueueId] = useState(null); + + const isAllTenants = currentTenant === "AllTenants"; + + const apiData = { + UseReportDB: true, + }; // Define off-canvas details const offCanvas = { @@ -38,38 +54,88 @@ const Page = () => { ]; // Simplified columns for the table - const simpleColumns = [ - "displayName", // Display Name - "recipientTypeDetails", // Recipient Type Details - "UPN", // User Principal Name - "primarySmtpAddress", // Primary Email Address - "recipientType", // Recipient Type - "AdditionalEmailAddresses", // Additional Email Addresses - ]; + const simpleColumns = isAllTenants + ? [ + "Tenant", // Tenant + "displayName", // Display Name + "recipientTypeDetails", // Recipient Type Details + "UPN", // User Principal Name + "primarySmtpAddress", // Primary Email Address + "AdditionalEmailAddresses", // Additional Email Addresses + "CacheTimestamp", // Cache Timestamp + ] + : [ + "displayName", // Display Name + "recipientTypeDetails", // Recipient Type Details + "UPN", // User Principal Name + "primarySmtpAddress", // Primary Email Address + "AdditionalEmailAddresses", // Additional Email Addresses + "CacheTimestamp", // Cache Timestamp + ]; return ( - - - - } - /> + <> + + + + + + + + + + +
    + } + /> + { + if (response?.Metadata?.QueueId) { + setSyncQueueId(response.Metadata.QueueId); + } + }, + }} + /> + ); }; -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => {page}; export default Page; diff --git a/src/pages/email/administration/quarantine/index.js b/src/pages/email/administration/quarantine/index.js index e8eb9cf6603c..92aac9f435c0 100644 --- a/src/pages/email/administration/quarantine/index.js +++ b/src/pages/email/administration/quarantine/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { useEffect, useState } from "react"; import { Dialog, @@ -10,12 +10,12 @@ import { Typography, CircularProgress, } from "@mui/material"; -import { Block, Close, Done, DoneAll, Subject } from "@mui/icons-material"; -import { CippMessageViewer } from "/src/components/CippComponents/CippMessageViewer.jsx"; -import { ApiGetCall, ApiPostCall } from "/src/api/ApiCall"; -import { useSettings } from "/src/hooks/use-settings"; +import { Block, Close, Done, DoneAll } from "@mui/icons-material"; +import { CippMessageViewer } from "../../../../components/CippComponents/CippMessageViewer.jsx"; +import { ApiGetCall, ApiPostCall } from "../../../../api/ApiCall"; +import { useSettings } from "../../../../hooks/use-settings"; import { EyeIcon, DocumentTextIcon } from "@heroicons/react/24/outline"; -import { CippDataTable } from "/src/components/CippTable/CippDataTable"; +import { CippDataTable } from "../../../../components/CippTable/CippDataTable"; const simpleColumns = [ "ReceivedTime", @@ -154,16 +154,19 @@ const Page = () => { filterName: "Not Released", value: [{ id: "ReleaseStatus", value: "NOTRELEASED" }], type: "column", + filterType: "equal", }, { filterName: "Released", value: [{ id: "ReleaseStatus", value: "RELEASED" }], type: "column", + filterType: "equal", }, { filterName: "Requested", value: [{ id: "ReleaseStatus", value: "REQUESTED" }], type: "column", + filterType: "equal", }, ]; diff --git a/src/pages/email/administration/restricted-users/index.js b/src/pages/email/administration/restricted-users/index.js new file mode 100644 index 000000000000..8adf4ecdef57 --- /dev/null +++ b/src/pages/email/administration/restricted-users/index.js @@ -0,0 +1,96 @@ +๏ปฟimport { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Alert, Link, Typography, List, ListItem, ListItemText } from "@mui/material"; +import { Block as BlockIcon } from "@mui/icons-material"; + +const Page = () => { + const pageTitle = "Restricted Users"; + + const actions = [ + { + label: "Unblock User", + type: "POST", + icon: , + confirmText: + "Are you sure you want to unblock [SenderAddress]? Unblocking can take up to 1 hour. Make sure you have secured the account before proceeding.", + url: "/api/ExecRemoveRestrictedUser", + data: { SenderAddress: "SenderAddress" }, + color: "success", + }, + ]; + + const simpleColumns = [ + "SenderAddress", + "BlockType", + "CreatedDatetime", + "ChangedDatetime", + "TemporaryBlock", + "InternalCount", + "ExternalCount", + ]; + + return ( + <> + + + + Users in this list have been restricted from sending email due to exceeding outbound + spam limits. + + + + This typically indicates a compromised account.{" "} + + Before unblocking, ensure you have properly secured the account. + + + + Recommended actions include: + + + + + + + + + + + + + + + + + + + + + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/email/administration/tenant-allow-block-lists/add.jsx b/src/pages/email/administration/tenant-allow-block-lists/add.jsx deleted file mode 100644 index 1fecb155bd9f..000000000000 --- a/src/pages/email/administration/tenant-allow-block-lists/add.jsx +++ /dev/null @@ -1,300 +0,0 @@ -import { useEffect } from "react"; -import "@mui/material"; -import { Grid } from "@mui/system"; -import { useForm, useWatch } from "react-hook-form"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { useSettings } from "../../../../hooks/use-settings"; -import { getCippValidator } from "/src/utils/get-cipp-validator"; - -const AddTenantAllowBlockList = () => { - const tenantDomain = useSettings().currentTenant; - - const formControl = useForm({ - mode: "onChange", - defaultValues: { - entries: "", - notes: "", - listType: null, - listMethod: null, - NoExpiration: false, - RemoveAfter: false, - }, - }); - - const noExpiration = useWatch({ control: formControl.control, name: "NoExpiration" }); - const removeAfter = useWatch({ control: formControl.control, name: "RemoveAfter" }); - const listMethod = useWatch({ control: formControl.control, name: "listMethod" }); - const listType = useWatch({ control: formControl.control, name: "listType" }); - - const isListMethodBlock = listMethod?.value === "Block"; - const isListTypeFileHash = listType?.value === "FileHash"; - const isListTypeSenderUrlOrFileHash = ["Sender", "Url", "FileHash"].includes(listType?.value); - const isNoExpirationCompatible = isListMethodBlock || - (listMethod?.value === "Allow" && (listType?.value === "Url" || listType?.value === "IP")); - - useEffect(() => { - if (noExpiration) { - formControl.setValue("RemoveAfter", false); - } - - if (removeAfter) { - formControl.setValue("NoExpiration", false); - } - - if (isListMethodBlock) { - formControl.setValue("RemoveAfter", false); - } - - if (listType && !isListTypeSenderUrlOrFileHash) { - formControl.setValue("RemoveAfter", false); - } - - if (isListTypeFileHash) { - formControl.setValue("listMethod", { label: "Block", value: "Block" }); - } - - if (listMethod || listType) { - if (!isNoExpirationCompatible && noExpiration) { - formControl.setValue("NoExpiration", false); - } - } - }, [ - noExpiration, - removeAfter, - isListMethodBlock, - listType, - isListTypeSenderUrlOrFileHash, - isListTypeFileHash, - isNoExpirationCompatible, - formControl - ]); - - const validateEntries = (value) => { - if (!value) return true; - - const entries = value.split(/[,;]/).map(e => e.trim()); - const currentListType = listType?.value; - - if (currentListType === "FileHash") { - for (const entry of entries) { - if (entry.length !== 64) - return "File hash entries must be exactly 64 characters"; - - const hashResult = getCippValidator(entry, "sha256"); - if (hashResult !== true) - return hashResult; - } - } else if (currentListType === "IP") { - for (const entry of entries) { - const ipv6Result = getCippValidator(entry, "ipv6"); - const ipv6CidrResult = getCippValidator(entry, "ipv6cidr"); - - if (ipv6Result !== true && ipv6CidrResult !== true) - return "Invalid IPv6 address format. Use colon-hexadecimal or CIDR notation"; - } - } else if (currentListType === "Url") { - for (const entry of entries) { - if (entry.length > 250) - return "URL entries must be 250 characters or less"; - - // For entries with wildcards, use the improved wildcard validators - if (entry.includes('*') || entry.includes('~')) { - // Try both wildcard validators - const wildcardUrlResult = getCippValidator(entry, "wildcardUrl"); - const wildcardDomainResult = getCippValidator(entry, "wildcardDomain"); - - if (wildcardUrlResult !== true && wildcardDomainResult !== true) { - // If basic pattern check fails too, give a more specific message - if (!/^[a-zA-Z0-9\.\-\*\~\/]+$/.test(entry)) { - return "Invalid wildcard pattern. Use only letters, numbers, dots, hyphens, slashes, and wildcards (* or ~)"; - } - - // If it has basic valid characters but doesn't match our patterns - return "Invalid wildcard format. Common formats are *.domain.com or domain.*"; - } - continue; - } - - // For non-wildcard entries, use standard validators - const ipv4Result = getCippValidator(entry, "ip"); - const ipv4CidrResult = getCippValidator(entry, "ipv4cidr"); - const ipv6Result = getCippValidator(entry, "ipv6"); - const ipv6CidrResult = getCippValidator(entry, "ipv6cidr"); - const hostnameResult = getCippValidator(entry, "hostname"); - const urlResult = getCippValidator(entry, "url"); - - // If none of the validators pass - if (ipv4Result !== true && - ipv4CidrResult !== true && - ipv6Result !== true && - ipv6CidrResult !== true && - hostnameResult !== true && - urlResult !== true) { - return "Invalid URL format. Enter hostnames, IPv4, or IPv6 addresses"; - } - } - } else if (currentListType === "Sender") { - for (const entry of entries) { - // Check for wildcards first - if (entry.includes('*') || entry.includes('~')) { - const wildcardDomainResult = getCippValidator(entry, "wildcardDomain"); - - if (wildcardDomainResult !== true) { - return "Invalid sender wildcard pattern. Common format is *.domain.com"; - } - continue; - } - - // For non-wildcard entries, use senderEntry validator - const senderResult = getCippValidator(entry, "senderEntry"); - - if (senderResult !== true) { - return senderResult; - } - } - } - - return true; - }; - - return ( - { - return { - tenantID: tenantDomain, - entries: values.entries, - listType: values.listType?.value, - notes: values.notes, - listMethod: values.listMethod?.value, - NoExpiration: values.NoExpiration, - RemoveAfter: values.RemoveAfter - }; - }} - > - - {/* Entries */} - - - - {/* Notes & List Type */} - - - - - - - - {/* List Method */} - - - - - {/* No Expiration */} - - - - - {/* Remove After */} - - - - - - ); -}; - -AddTenantAllowBlockList.getLayout = (page) => {page}; - -export default AddTenantAllowBlockList; diff --git a/src/pages/email/administration/tenant-allow-block-lists/index.js b/src/pages/email/administration/tenant-allow-block-lists/index.js index 4770163895fa..00b5c690792e 100644 --- a/src/pages/email/administration/tenant-allow-block-lists/index.js +++ b/src/pages/email/administration/tenant-allow-block-lists/index.js @@ -1,12 +1,11 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Button } from "@mui/material"; -import Link from "next/link"; -import TrashIcon from "@heroicons/react/24/outline/TrashIcon"; -import { PlaylistAdd } from "@mui/icons-material"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Delete } from "@mui/icons-material"; +import { CippAddTenantAllowBlockListDrawer } from "../../../../components/CippComponents/CippAddTenantAllowBlockListDrawer.jsx"; const Page = () => { const pageTitle = "Tenant Allow/Block Lists"; + const cardButtonPermissions = ["Exchange.SpamFilter.ReadWrite"]; const actions = [ { @@ -19,7 +18,7 @@ const Page = () => { }, confirmText: "Are you sure you want to delete this entry?", color: "danger", - icon: , + icon: , }, ]; @@ -39,21 +38,8 @@ const Page = () => { apiUrl="/api/ListTenantAllowBlockList" actions={actions} simpleColumns={simpleColumns} - titleButton={{ - label: "Add", - href: "/email/administration/tenant-allow-block-list/add", - }} - cardButton={ - <> - - - } + apiDataKey="Results" + cardButton={} /> ); }; diff --git a/src/pages/email/reports/SharedMailboxEnabledAccount/index.js b/src/pages/email/reports/SharedMailboxEnabledAccount/index.js index dbd167e86105..3dd3d08c5398 100644 --- a/src/pages/email/reports/SharedMailboxEnabledAccount/index.js +++ b/src/pages/email/reports/SharedMailboxEnabledAccount/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { Block } from "@mui/icons-material"; const Page = () => { @@ -37,13 +37,13 @@ const Page = () => { filters={[ { id: "accountEnabled", - value: "Yes" - } + value: "Yes", + }, ]} /> ); }; -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => {page}; export default Page; diff --git a/src/pages/email/reports/antiphishing-filters/index.js b/src/pages/email/reports/antiphishing-filters/index.js index 23cee4f3b5dd..d23dea441539 100644 --- a/src/pages/email/reports/antiphishing-filters/index.js +++ b/src/pages/email/reports/antiphishing-filters/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { Block, Check } from "@mui/icons-material"; const Page = () => { @@ -98,6 +98,6 @@ const Page = () => { }; // Layout configuration: ensure page uses DashboardLayout -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => {page}; export default Page; diff --git a/src/pages/email/reports/calendar-permissions/index.js b/src/pages/email/reports/calendar-permissions/index.js new file mode 100644 index 000000000000..165c7159f06e --- /dev/null +++ b/src/pages/email/reports/calendar-permissions/index.js @@ -0,0 +1,130 @@ +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { useState } from "react"; +import { + Button, + FormControlLabel, + Switch, + Alert, + SvgIcon, + IconButton, + Tooltip, +} from "@mui/material"; +import { useSettings } from "../../../../hooks/use-settings"; +import { Stack } from "@mui/system"; +import { Sync, Info } from "@mui/icons-material"; +import { useDialog } from "../../../../hooks/use-dialog"; +import { CippApiDialog } from "../../../../components/CippComponents/CippApiDialog"; +import { CippQueueTracker } from "../../../../components/CippTable/CippQueueTracker"; + +const Page = () => { + const [byUser, setByUser] = useState(true); + const currentTenant = useSettings().currentTenant; + const syncDialog = useDialog(); + const [syncQueueId, setSyncQueueId] = useState(null); + + const isAllTenants = currentTenant === "AllTenants"; + + const columns = byUser + ? [ + ...(isAllTenants ? ["Tenant"] : []), + "User", + "UserMailboxType", + "Permissions", + "MailboxCacheTimestamp", + "PermissionCacheTimestamp", + ] + : [ + ...(isAllTenants ? ["Tenant"] : []), + "CalendarUPN", + "CalendarDisplayName", + "CalendarType", + "Permissions", + "MailboxCacheTimestamp", + "PermissionCacheTimestamp", + ]; + + // Compute apiData based on byUser directly (no useState needed) + const apiData = { + UseReportDB: true, + ByUser: byUser, + }; + + const pageActions = [ + + + + + + + + + setByUser(e.target.checked)} color="primary" /> + } + label="Group by User" + labelPlacement="start" + /> + , + ]; + + return ( + <> + {currentTenant && currentTenant !== "" ? ( + + ) : ( + Please select a tenant to view calendar permissions. + )} + { + if (result?.Metadata?.QueueId) { + setSyncQueueId(result.Metadata.QueueId); + } + }, + }} + /> + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/email/reports/global-address-list/index.js b/src/pages/email/reports/global-address-list/index.js index 314fb23f66f0..adbe3ae6b86d 100644 --- a/src/pages/email/reports/global-address-list/index.js +++ b/src/pages/email/reports/global-address-list/index.js @@ -1,5 +1,5 @@ -๏ปฟimport { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +๏ปฟimport { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { Visibility, VisibilityOff } from "@mui/icons-material"; const Page = () => { @@ -81,6 +81,6 @@ const Page = () => { ); }; -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => {page}; export default Page; diff --git a/src/pages/email/reports/mailbox-activity/index.js b/src/pages/email/reports/mailbox-activity/index.js new file mode 100644 index 000000000000..6010951bd406 --- /dev/null +++ b/src/pages/email/reports/mailbox-activity/index.js @@ -0,0 +1,152 @@ +import { useState } from "react"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { + Button, + Accordion, + AccordionSummary, + AccordionDetails, + Typography, + SvgIcon, + Stack, +} from "@mui/material"; +import { Grid } from "@mui/system"; +import { ExpandMore, Sort } from "@mui/icons-material"; +import { FunnelIcon, XMarkIcon } from "@heroicons/react/24/outline"; +import { useForm } from "react-hook-form"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; + +const Page = () => { + const formControl = useForm({ + defaultValues: { + period: { value: "D30", label: "30 days" }, + }, + }); + + const [expanded, setExpanded] = useState(false); + const [selectedPeriod, setSelectedPeriod] = useState("D30"); + const [selectedPeriodLabel, setSelectedPeriodLabel] = useState("30 days"); + + const periodOptions = [ + { value: "D7", label: "7 days" }, + { value: "D30", label: "30 days" }, + { value: "D90", label: "90 days" }, + { value: "D180", label: "180 days" }, + ]; + + const onSubmit = (data) => { + const periodValue = + typeof data.period === "object" && data.period?.value ? data.period.value : data.period; + const periodLabel = + typeof data.period === "object" && data.period?.label ? data.period.label : data.period; + + setSelectedPeriod(periodValue); + setSelectedPeriodLabel(periodLabel); + setExpanded(false); + }; + + const clearFilters = () => { + formControl.reset({ + period: { value: "D30", label: "30 days" }, + }); + setSelectedPeriod("D30"); + setSelectedPeriodLabel("30 days"); + setExpanded(false); + }; + + const tableFilter = ( + setExpanded(!expanded)}> + }> + + + + + + Report Period + + (Period: {selectedPeriodLabel}) + + + + + +
    + + + + + + + + + + + + +
    +
    +
    + ); + + return ( + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/email/reports/mailbox-cas-settings/index.js b/src/pages/email/reports/mailbox-cas-settings/index.js index 9d7eaccd5f57..1058c83e93b2 100644 --- a/src/pages/email/reports/mailbox-cas-settings/index.js +++ b/src/pages/email/reports/mailbox-cas-settings/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; const Page = () => { return ( @@ -24,6 +24,6 @@ const Page = () => { // No actions were specified in the original code, so no actions are added here. // No off-canvas configuration was provided or specified in the original code. -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => {page}; export default Page; diff --git a/src/pages/email/reports/mailbox-forwarding/index.js b/src/pages/email/reports/mailbox-forwarding/index.js new file mode 100644 index 000000000000..008637df1a97 --- /dev/null +++ b/src/pages/email/reports/mailbox-forwarding/index.js @@ -0,0 +1,116 @@ +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { useState } from "react"; +import { Button, Alert, SvgIcon, IconButton, Tooltip } from "@mui/material"; +import { useSettings } from "../../../../hooks/use-settings"; +import { Stack } from "@mui/system"; +import { Sync, Info } from "@mui/icons-material"; +import { useDialog } from "../../../../hooks/use-dialog"; +import { CippApiDialog } from "../../../../components/CippComponents/CippApiDialog"; +import { CippQueueTracker } from "../../../../components/CippTable/CippQueueTracker"; + +const Page = () => { + const currentTenant = useSettings().currentTenant; + const syncDialog = useDialog(); + const [syncQueueId, setSyncQueueId] = useState(null); + + const isAllTenants = currentTenant === "AllTenants"; + + const columns = [ + ...(isAllTenants ? ["Tenant"] : []), + "UPN", + "DisplayName", + "RecipientTypeDetails", + "ForwardingType", + "ForwardTo", + "DeliverToMailboxAndForward", + "CacheTimestamp", + ]; + + const apiData = { + UseReportDB: true, + }; + + const filters = [ + { + filterName: "External Forwarding", + value: [{ id: "ForwardingType", value: "External" }], + type: "column", + }, + { + filterName: "Internal Forwarding", + value: [{ id: "ForwardingType", value: "Internal" }], + type: "column", + }, + ]; + + const pageActions = [ + + + + + + + + + , + ]; + + return ( + <> + {currentTenant && currentTenant !== "" ? ( + + ) : ( + Please select a tenant to view mailbox forwarding settings. + )} + { + if (result?.Metadata?.QueueId) { + setSyncQueueId(result.Metadata.QueueId); + } + }, + }} + /> + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/email/reports/mailbox-permissions/index.js b/src/pages/email/reports/mailbox-permissions/index.js new file mode 100644 index 000000000000..12dff106c276 --- /dev/null +++ b/src/pages/email/reports/mailbox-permissions/index.js @@ -0,0 +1,130 @@ +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { useState } from "react"; +import { + Button, + FormControlLabel, + Switch, + Alert, + SvgIcon, + IconButton, + Tooltip, +} from "@mui/material"; +import { useSettings } from "../../../../hooks/use-settings"; +import { Stack } from "@mui/system"; +import { Sync, Info } from "@mui/icons-material"; +import { useDialog } from "../../../../hooks/use-dialog"; +import { CippApiDialog } from "../../../../components/CippComponents/CippApiDialog"; +import { CippQueueTracker } from "../../../../components/CippTable/CippQueueTracker"; + +const Page = () => { + const [byUser, setByUser] = useState(true); + const currentTenant = useSettings().currentTenant; + const syncDialog = useDialog(); + const [syncQueueId, setSyncQueueId] = useState(null); + + const isAllTenants = currentTenant === "AllTenants"; + + const columns = byUser + ? [ + ...(isAllTenants ? ["Tenant"] : []), + "User", + "UserMailboxType", + "Permissions", + "MailboxCacheTimestamp", + "PermissionCacheTimestamp", + ] + : [ + ...(isAllTenants ? ["Tenant"] : []), + "MailboxUPN", + "MailboxDisplayName", + "MailboxType", + "Permissions", + "MailboxCacheTimestamp", + "PermissionCacheTimestamp", + ]; + + // Compute apiData based on byUser directly (no useState needed) + const apiData = { + UseReportDB: true, + ByUser: byUser, + }; + + const pageActions = [ + + + + + + + + + setByUser(e.target.checked)} color="primary" /> + } + label="Group by User" + labelPlacement="start" + /> + , + ]; + + return ( + <> + {currentTenant && currentTenant !== "" ? ( + + ) : ( + Please select a tenant to view mailbox permissions. + )} + { + if (result?.Metadata?.QueueId) { + setSyncQueueId(result.Metadata.QueueId); + } + }, + }} + /> + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/email/reports/mailbox-statistics/index.js b/src/pages/email/reports/mailbox-statistics/index.js index 9291843bab97..18167383ee6f 100644 --- a/src/pages/email/reports/mailbox-statistics/index.js +++ b/src/pages/email/reports/mailbox-statistics/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; const Page = () => { return ( diff --git a/src/pages/email/reports/malware-filters/index.js b/src/pages/email/reports/malware-filters/index.js index 4e0c638e0f8a..b049cef12444 100644 --- a/src/pages/email/reports/malware-filters/index.js +++ b/src/pages/email/reports/malware-filters/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { Block, Check } from "@mui/icons-material"; const Page = () => { @@ -89,6 +89,6 @@ const Page = () => { - Additional action for "Delete Rule" is commented for developer convenience, pending further instruction. */ -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => {page}; export default Page; diff --git a/src/pages/email/reports/safeattachments-filters/index.js b/src/pages/email/reports/safeattachments-filters/index.js index 3821410fe6e0..b8212f38cc74 100644 --- a/src/pages/email/reports/safeattachments-filters/index.js +++ b/src/pages/email/reports/safeattachments-filters/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { Block, Check } from "@mui/icons-material"; const Page = () => { @@ -88,6 +88,6 @@ const Page = () => { ); }; -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => {page}; export default Page; diff --git a/src/pages/email/reports/safelinks-filters/index.js b/src/pages/email/reports/safelinks-filters/index.js deleted file mode 100644 index e1e694125e6e..000000000000 --- a/src/pages/email/reports/safelinks-filters/index.js +++ /dev/null @@ -1,92 +0,0 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Block, Check } from "@mui/icons-material"; - -/* Note: Tenant information is passed directly in apiData instead of using Redux (e.g., useSelector) */ -/* Original file included a "Delete Rule" action. If needed, add back by following other action formats. */ -/* Columns have been converted to simpleColumns matching the original column names exactly. */ -/* Removed custom formatters and FontAwesome imports, as table formatting is handled by CippTablePage */ - -const Page = () => { - const pageTitle = "List of Safe Link Filters"; - const apiUrl = "/api/ListSafeLinksFilters"; - - const actions = [ - { - label: "Enable Rule", - type: "POST", - icon: , - url: "/api/EditSafeLinksFilter", - data: { - State: "Enable", - RuleName: "RuleName", - }, - confirmText: "Are you sure you want to enable this rule?", - color: "info", - condition: (row) => row.State === "Disabled", - }, - { - label: "Disable Rule", - type: "POST", - icon: , - url: "/api/EditSafeLinksFilter", - data: { - State: "Disable", - RuleName: "RuleName", - }, - confirmText: "Are you sure you want to disable this rule?", - color: "info", - condition: (row) => row.State === "Enabled", - }, - /* TODO: implement Delete Rule action - { - label: "Delete Rule", - type: "GET", - url: "/api/EditSafeLinksFilter", - data: { - RuleName: "RuleName", - }, - confirmText: "Are you sure you want to delete this rule?", - color: "danger", - }, - */ - ]; - - const offCanvas = { - extendedInfoFields: ["RuleName", "Name", "State", "WhenCreated", "WhenChanged"], - actions: actions, // Attaching actions to offCanvas per original design - }; - - const simpleColumns = [ - "RuleName", - "Name", - "State", - "Priority", - "RecipientDomainIs", - "EnableSafeLinksForEmail", - "EnableSafeLinksForTeams", - "EnableSafeLinksForOffice", - "TrackClicks", - "ScanUrls", - "EnableForInternalSenders", - "DeliverMessageAfterScan", - "AllowClickThrough", - "DisableUrlRewrite", - "EnableOrganizationBranding", - "WhenCreated", - "WhenChanged", - ]; - - return ( - - ); -}; - -Page.getLayout = (page) => {page}; -export default Page; diff --git a/src/pages/email/resources/management/equipment/edit.jsx b/src/pages/email/resources/management/equipment/edit.jsx new file mode 100644 index 000000000000..1e6cd1f2a5e6 --- /dev/null +++ b/src/pages/email/resources/management/equipment/edit.jsx @@ -0,0 +1,452 @@ +import React, { useEffect } from "react"; +import { Divider, Typography } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm } from "react-hook-form"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; +import CippFormPage from "../../../../../components/CippFormPages/CippFormPage"; +import CippFormComponent from "../../../../../components/CippComponents/CippFormComponent"; +import CippFormSkeleton from "../../../../../components/CippFormPages/CippFormSkeleton"; +import { useSettings } from "../../../../../hooks/use-settings"; +import { useRouter } from "next/router"; +import { ApiGetCall } from "../../../../../api/ApiCall"; +import countryList from "../../../../../data/countryList.json"; +import timezoneList from "../../../../../data/timezoneList.json"; + +// Work days options +const workDaysOptions = [ + { value: "Sunday", label: "Sunday" }, + { value: "Monday", label: "Monday" }, + { value: "Tuesday", label: "Tuesday" }, + { value: "Wednesday", label: "Wednesday" }, + { value: "Thursday", label: "Thursday" }, + { value: "Friday", label: "Friday" }, + { value: "Saturday", label: "Saturday" }, + { value: "WeekDay", label: "Weekdays (Monday-Friday)" }, + { value: "WeekendDay", label: "Weekend (Saturday-Sunday)" }, + { value: "AllDays", label: "All Days" }, +]; + +// Automation Processing Options +const automateProcessingOptions = [ + { value: "None", label: "None - No processing" }, + { value: "AutoUpdate", label: "AutoUpdate - Accept/Decline but not delete" }, + { value: "AutoAccept", label: "AutoAccept - Accept and delete" }, +]; + +const EditEquipmentMailbox = () => { + const router = useRouter(); + const { equipmentId } = router.query; + const tenantDomain = useSettings().currentTenant; + const formControl = useForm({ + mode: "onChange", + }); + + const equipmentInfo = ApiGetCall({ + url: `/api/ListEquipment?EquipmentId=${equipmentId}&tenantFilter=${tenantDomain}`, + queryKey: `Equipment-${equipmentId}`, + waiting: false, + }); + + useEffect(() => { + if (equipmentInfo.isSuccess && equipmentInfo.data?.[0]) { + const equipment = equipmentInfo.data[0]; + formControl.reset({ + // Core Properties + displayName: equipment.displayName, + hiddenFromAddressListsEnabled: equipment.hiddenFromAddressListsEnabled, + + // Equipment Details + department: equipment.department, + company: equipment.company, + + // Location Information + streetAddress: equipment.streetAddress, + city: equipment.city, + stateOrProvince: equipment.stateOrProvince, + postalCode: equipment.postalCode, + countryOrRegion: equipment.countryOrRegion + ? countryList.find((c) => c.Name === equipment.countryOrRegion)?.Code || "" + : "", + phone: equipment.phone, + tags: equipment.tags?.map((tag) => ({ label: tag, value: tag })) || [], + + // Booking Information + allowConflicts: equipment.allowConflicts, + allowRecurringMeetings: equipment.allowRecurringMeetings, + bookingWindowInDays: equipment.bookingWindowInDays, + maximumDurationInMinutes: equipment.maximumDurationInMinutes, + processExternalMeetingMessages: equipment.processExternalMeetingMessages, + forwardRequestsToDelegates: equipment.forwardRequestsToDelegates, + scheduleOnlyDuringWorkHours: equipment.scheduleOnlyDuringWorkHours, + automateProcessing: equipment.automateProcessing, + + // Calendar Configuration + workDays: + equipment.workDays?.split(",")?.map((day) => ({ + label: day.trim(), + value: day.trim(), + })) || [], + workHoursStartTime: equipment.workHoursStartTime, + workHoursEndTime: equipment.workHoursEndTime, + workingHoursTimeZone: equipment.workingHoursTimeZone + ? { + value: equipment.workingHoursTimeZone, + label: timezoneList.find((tz) => tz.standardTime === equipment.workingHoursTimeZone) + ? `${equipment.workingHoursTimeZone} - ${ + timezoneList.find((tz) => tz.standardTime === equipment.workingHoursTimeZone) + ?.timezone + }` + : equipment.workingHoursTimeZone, + } + : null, + }); + } + }, [equipmentInfo.isSuccess, equipmentInfo.data]); + + useEffect(() => { + if (equipmentId) { + equipmentInfo.refetch(); + } + }, [router.query, equipmentId, tenantDomain]); + + return ( + ({ + tenantID: tenantDomain, + equipmentId: equipmentId, + displayName: values.displayName?.trim(), + hiddenFromAddressListsEnabled: values.hiddenFromAddressListsEnabled, + + // Equipment Details + department: values.department?.trim(), + company: values.company?.trim(), + + // Location Information + streetAddress: values.streetAddress?.trim(), + city: values.city?.trim(), + stateOrProvince: values.stateOrProvince?.trim(), + postalCode: values.postalCode?.trim(), + countryOrRegion: values.countryOrRegion?.value || values.countryOrRegion || null, + phone: values.phone?.trim(), + tags: values.tags?.map((tag) => tag.value), + + // Booking Information + allowConflicts: values.allowConflicts, + allowRecurringMeetings: values.allowRecurringMeetings, + bookingWindowInDays: values.bookingWindowInDays, + maximumDurationInMinutes: values.maximumDurationInMinutes, + processExternalMeetingMessages: values.processExternalMeetingMessages, + forwardRequestsToDelegates: values.forwardRequestsToDelegates, + scheduleOnlyDuringWorkHours: values.scheduleOnlyDuringWorkHours, + automateProcessing: values.automateProcessing?.value || values.automateProcessing, + + // Calendar Configuration + workDays: values.workDays?.map((day) => day.value).join(","), + workHoursStartTime: values.workHoursStartTime, + workHoursEndTime: values.workHoursEndTime, + workingHoursTimeZone: values.workingHoursTimeZone?.value || values.workingHoursTimeZone, + })} + > + {equipmentInfo.isLoading && ( + + )} + {equipmentInfo.isSuccess && ( + + {/* Basic Information */} + + + Basic Information + + + + + + + + + + + + + + {/* Booking Information */} + + + Booking Information + + + + + {/* MaximumDurationInMinutes: 0 = Unlimited, 0..2147483647 (default 1440) per Exchange/EXO spec */} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {/* Working Hours */} + + + Working Hours + + + + + + + + + + + + + ({ + value: tz.standardTime, + label: `${tz.standardTime} - ${tz.timezone}`, + }))} + multiple={false} + creatable={false} + formControl={formControl} + /> + + + + + + + + + + + + + {/* Equipment & Location Details */} + + + Equipment & Location Details + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ({ + label: Name, + value: Code, + }))} + formControl={formControl} + /> + + + + + + + + + )} + + ); +}; + +EditEquipmentMailbox.getLayout = (page) => {page}; + +export default EditEquipmentMailbox; diff --git a/src/pages/email/resources/management/equipment/index.js b/src/pages/email/resources/management/equipment/index.js new file mode 100644 index 000000000000..4a1b45a30413 --- /dev/null +++ b/src/pages/email/resources/management/equipment/index.js @@ -0,0 +1,77 @@ +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; +import { CippTablePage } from "../../../../../components/CippComponents/CippTablePage.jsx"; +import { Edit, Block, LockOpen, Key } from "@mui/icons-material"; +import { TrashIcon } from "@heroicons/react/24/outline"; +import { CippAddEquipmentDrawer } from "../../../../../components/CippComponents/CippAddEquipmentDrawer"; + +const Page = () => { + const pageTitle = "Equipment"; + const cardButtonPermissions = ["Exchange.Equipment.ReadWrite"]; + + const actions = [ + { + label: "Edit Equipment", + link: `/email/resources/management/equipment/edit?equipmentId=[ExternalDirectoryObjectId]`, + icon: , + color: "info", + condition: (row) => !row.isDirSynced, + }, + { + label: "Edit permissions", + link: "/identity/administration/users/user/exchange?userId=[ExternalDirectoryObjectId]", + color: "info", + icon: , + }, + { + label: "Block Sign In", + type: "POST", + icon: , + url: "/api/ExecDisableUser", + data: { ID: "ExternalDirectoryObjectId" }, + confirmText: "Are you sure you want to block the sign-in for this equipment mailbox?", + multiPost: false, + condition: (row) => !row.isDirSynced, + }, + { + label: "Unblock Sign In", + type: "POST", + icon: , + url: "/api/ExecDisableUser", + data: { ID: "ExternalDirectoryObjectId", Enable: true }, + confirmText: "Are you sure you want to unblock sign-in for this equipment mailbox?", + multiPost: false, + condition: (row) => !row.isDirSynced, + }, + { + label: "Delete Equipment", + type: "POST", + icon: , + url: "/api/RemoveUser", + data: { ID: "ExternalDirectoryObjectId" }, + confirmText: "Are you sure you want to delete this equipment mailbox?", + multiPost: false, + condition: (row) => !row.isDirSynced, + }, + ]; + + const simpleColumns = [ + "DisplayName", + "UserPrincipalName", + "HiddenFromAddressListsEnabled", + "PrimarySmtpAddress", + ]; + + return ( + } + /> + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/email/resources/management/list-rooms/add.jsx b/src/pages/email/resources/management/list-rooms/add.jsx deleted file mode 100644 index 21aea3ae91d6..000000000000 --- a/src/pages/email/resources/management/list-rooms/add.jsx +++ /dev/null @@ -1,97 +0,0 @@ -import React from "react"; -import { Divider } from "@mui/material"; -import { Grid } from "@mui/system"; -import { useForm } from "react-hook-form"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormDomainSelector } from "/src/components/CippComponents/CippFormDomainSelector"; -import { useSettings } from "/src/hooks/use-settings"; - -const AddRoomMailbox = () => { - const tenantDomain = useSettings().currentTenant; - const formControl = useForm({ - mode: "onChange", - defaultValues: { - displayName: "", - username: "", - domain: null, - resourceCapacity: "", - }, - }); - - return ( - { - const shippedValues = { - tenantID: tenantDomain, - domain: values.domain?.value, - displayName: values.displayName.trim(), - username: values.username.trim(), - userPrincipalName: values.username.trim() + "@" + (values.domain?.value || "").trim(), - }; - - if (values.resourceCapacity && values.resourceCapacity.trim() !== "") { - shippedValues.resourceCapacity = values.resourceCapacity.trim(); - } - - return shippedValues; - }} - > - - {/* Display Name */} - - - - - - - {/* Username and Domain */} - - - - - - - - - - {/* Resource Capacity (Optional) */} - - - - - - ); -}; - -AddRoomMailbox.getLayout = (page) => {page}; - -export default AddRoomMailbox; diff --git a/src/pages/email/resources/management/list-rooms/edit.jsx b/src/pages/email/resources/management/list-rooms/edit.jsx index fd84a0eea64b..9505c7e4c19b 100644 --- a/src/pages/email/resources/management/list-rooms/edit.jsx +++ b/src/pages/email/resources/management/list-rooms/edit.jsx @@ -1,170 +1,17 @@ -import React, { useEffect } from "react"; -import { Divider, Typography } from "@mui/material"; +import { useEffect } from "react"; +import { Box, Divider, IconButton, Tooltip, Typography } from "@mui/material"; +import { Sync } from "@mui/icons-material"; import { Grid } from "@mui/system"; import { useForm } from "react-hook-form"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { useSettings } from "/src/hooks/use-settings"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; +import CippFormPage from "../../../../../components/CippFormPages/CippFormPage"; +import CippFormComponent from "../../../../../components/CippComponents/CippFormComponent"; +import CippFormSkeleton from "../../../../../components/CippFormPages/CippFormSkeleton"; +import { useSettings } from "../../../../../hooks/use-settings"; import { useRouter } from "next/router"; -import { ApiGetCall } from "/src/api/ApiCall"; -import countryList from "/src/data/countryList.json"; - -// Create timezone options from the provided list -const createTimezoneOptions = () => { - const timezones = `Azores Standard Time (UTC-01:00) Azores -Cape Verde Standard Time (UTC-01:00) Cabo Verde Is. -UTC-02 (UTC-02:00) Co-ordinated Universal Time-02 -Greenland Standard Time (UTC-02:00) Greenland -Mid-Atlantic Standard Time (UTC-02:00) Mid-Atlantic - Old -Tocantins Standard Time (UTC-03:00) Araguaina -Paraguay Standard Time (UTC-03:00) Asuncion -E. South America Standard Time (UTC-03:00) Brasilia -SA Eastern Standard Time (UTC-03:00) Cayenne, Fortaleza -Argentina Standard Time (UTC-03:00) City of Buenos Aires -Montevideo Standard Time (UTC-03:00) Montevideo -Magallanes Standard Time (UTC-03:00) Punta Arenas -Saint Pierre Standard Time (UTC-03:00) Saint Pierre and Miquelon -Bahia Standard Time (UTC-03:00) Salvador -Newfoundland Standard Time (UTC-03:30) Newfoundland -Atlantic Standard Time (UTC-04:00) Atlantic Time (Canada) -Venezuela Standard Time (UTC-04:00) Caracas -Central Brazilian Standard Time (UTC-04:00) Cuiaba -SA Western Standard Time (UTC-04:00) Georgetown, La Paz, Manaus, San Juan -Pacific SA Standard Time (UTC-04:00) Santiago -SA Pacific Standard Time (UTC-05:00) Bogota, Lima, Quito, Rio Branco -Eastern Standard Time (Mexico) (UTC-05:00) Chetumal -Eastern Standard Time (UTC-05:00) Eastern Time (US & Canada) -Haiti Standard Time (UTC-05:00) Haiti -Cuba Standard Time (UTC-05:00) Havana -US Eastern Standard Time (UTC-05:00) Indiana (East) -Turks And Caicos Standard Time (UTC-05:00) Turks and Caicos -Central America Standard Time (UTC-06:00) Central America -Central Standard Time (UTC-06:00) Central Time (US & Canada) -Easter Island Standard Time (UTC-06:00) Easter Island -Central Standard Time (Mexico) (UTC-06:00) Guadalajara, Mexico City, Monterrey -Canada Central Standard Time (UTC-06:00) Saskatchewan -US Mountain Standard Time (UTC-07:00) Arizona -Mountain Standard Time (Mexico) (UTC-07:00) La Paz, Mazatlan -Mountain Standard Time (UTC-07:00) Mountain Time (US & Canada) -Yukon Standard Time (UTC-07:00) Yukon -Pacific Standard Time (Mexico) (UTC-08:00) Baja California -UTC-08 (UTC-08:00) Co-ordinated Universal Time-08 -Pacific Standard Time (UTC-08:00) Pacific Time (US & Canada) -Alaskan Standard Time (UTC-09:00) Alaska -UTC-09 (UTC-09:00) Co-ordinated Universal Time-09 -Marquesas Standard Time (UTC-09:30) Marquesas Islands -Aleutian Standard Time (UTC-10:00) Aleutian Islands -Hawaiian Standard Time (UTC-10:00) Hawaii -UTC-11 (UTC-11:00) Co-ordinated Universal Time-11 -Dateline Standard Time (UTC-12:00) International Date Line West -UTC (UTC) Co-ordinated Universal Time -GMT Standard Time (UTC+00:00) Dublin, Edinburgh, Lisbon, London -Greenwich Standard Time (UTC+00:00) Monrovia, Reykjavik -Sao Tome Standard Time (UTC+00:00) Sao Tome -W. Europe Standard Time (UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna -Central Europe Standard Time (UTC+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague -Romance Standard Time (UTC+01:00) Brussels, Copenhagen, Madrid, Paris -Morocco Standard Time (UTC+01:00) Casablanca -Central European Standard Time (UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb -W. Central Africa Standard Time (UTC+01:00) West Central Africa -GTB Standard Time (UTC+02:00) Athens, Bucharest -Middle East Standard Time (UTC+02:00) Beirut -Egypt Standard Time (UTC+02:00) Cairo -E. Europe Standard Time (UTC+02:00) Chisinau -West Bank Standard Time (UTC+02:00) Gaza, Hebron -South Africa Standard Time (UTC+02:00) Harare, Pretoria -FLE Standard Time (UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius -Israel Standard Time (UTC+02:00) Jerusalem -South Sudan Standard Time (UTC+02:00) Juba -Kaliningrad Standard Time (UTC+02:00) Kaliningrad -Sudan Standard Time (UTC+02:00) Khartoum -Libya Standard Time (UTC+02:00) Tripoli -Namibia Standard Time (UTC+02:00) Windhoek -Jordan Standard Time (UTC+03:00) Amman -Arabic Standard Time (UTC+03:00) Baghdad -Syria Standard Time (UTC+03:00) Damascus -Turkey Standard Time (UTC+03:00) Istanbul -Arab Standard Time (UTC+03:00) Kuwait, Riyadh -Belarus Standard Time (UTC+03:00) Minsk -Russian Standard Time (UTC+03:00) Moscow, St Petersburg -E. Africa Standard Time (UTC+03:00) Nairobi -Volgograd Standard Time (UTC+03:00) Volgograd -Iran Standard Time (UTC+03:30) Tehran -Arabian Standard Time (UTC+04:00) Abu Dhabi, Muscat -Astrakhan Standard Time (UTC+04:00) Astrakhan, Ulyanovsk -Azerbaijan Standard Time (UTC+04:00) Baku -Russia Time Zone 3 (UTC+04:00) Izhevsk, Samara -Mauritius Standard Time (UTC+04:00) Port Louis -Saratov Standard Time (UTC+04:00) Saratov -Georgian Standard Time (UTC+04:00) Tbilisi -Caucasus Standard Time (UTC+04:00) Yerevan -Afghanistan Standard Time (UTC+04:30) Kabul -West Asia Standard Time (UTC+05:00) Ashgabat, Tashkent -Qyzylorda Standard Time (UTC+05:00) Astana -Ekaterinburg Standard Time (UTC+05:00) Ekaterinburg -Pakistan Standard Time (UTC+05:00) Islamabad, Karachi -India Standard Time (UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi -Sri Lanka Standard Time (UTC+05:30) Sri Jayawardenepura -Nepal Standard Time (UTC+05:45) Kathmandu -Central Asia Standard Time (UTC+06:00) Bishkek -Bangladesh Standard Time (UTC+06:00) Dhaka -Omsk Standard Time (UTC+06:00) Omsk -Myanmar Standard Time (UTC+06:30) Yangon (Rangoon) -SE Asia Standard Time (UTC+07:00) Bangkok, Hanoi, Jakarta -Altai Standard Time (UTC+07:00) Barnaul, Gorno-Altaysk -W. Mongolia Standard Time (UTC+07:00) Hovd -North Asia Standard Time (UTC+07:00) Krasnoyarsk -N. Central Asia Standard Time (UTC+07:00) Novosibirsk -Tomsk Standard Time (UTC+07:00) Tomsk -China Standard Time (UTC+08:00) Beijing, Chongqing, Hong Kong SAR, Urumqi -North Asia East Standard Time (UTC+08:00) Irkutsk -Singapore Standard Time (UTC+08:00) Kuala Lumpur, Singapore -W. Australia Standard Time (UTC+08:00) Perth -Taipei Standard Time (UTC+08:00) Taipei -Ulaanbaatar Standard Time (UTC+08:00) Ulaanbaatar -Aus Central W. Standard Time (UTC+08:45) Eucla -Transbaikal Standard Time (UTC+09:00) Chita -Tokyo Standard Time (UTC+09:00) Osaka, Sapporo, Tokyo -North Korea Standard Time (UTC+09:00) Pyongyang -Korea Standard Time (UTC+09:00) Seoul -Yakutsk Standard Time (UTC+09:00) Yakutsk -Cen. Australia Standard Time (UTC+09:30) Adelaide -AUS Central Standard Time (UTC+09:30) Darwin -E. Australia Standard Time (UTC+10:00) Brisbane -AUS Eastern Standard Time (UTC+10:00) Canberra, Melbourne, Sydney -West Pacific Standard Time (UTC+10:00) Guam, Port Moresby -Tasmania Standard Time (UTC+10:00) Hobart -Vladivostok Standard Time (UTC+10:00) Vladivostok -Lord Howe Standard Time (UTC+10:30) Lord Howe Island -Bougainville Standard Time (UTC+11:00) Bougainville Island -Russia Time Zone 10 (UTC+11:00) Chokurdakh -Magadan Standard Time (UTC+11:00) Magadan -Norfolk Standard Time (UTC+11:00) Norfolk Island -Sakhalin Standard Time (UTC+11:00) Sakhalin -Central Pacific Standard Time (UTC+11:00) Solomon Is., New Caledonia -Russia Time Zone 11 (UTC+12:00) Anadyr, Petropavlovsk-Kamchatsky -New Zealand Standard Time (UTC+12:00) Auckland, Wellington -UTC+12 (UTC+12:00) Co-ordinated Universal Time+12 -Fiji Standard Time (UTC+12:00) Fiji -Kamchatka Standard Time (UTC+12:00) Petropavlovsk-Kamchatsky - Old -Chatham Islands Standard Time (UTC+12:45) Chatham Islands -UTC+13 (UTC+13:00) Co-ordinated Universal Time+13 -Tonga Standard Time (UTC+13:00) Nuku'alofa -Samoa Standard Time (UTC+13:00) Samoa -Line Islands Standard Time (UTC+14:00) Kiritimati Island`; - - return timezones.split('\n').map(line => { - const parts = line.trim().split(/\s{2,}/); - if (parts.length >= 2) { - return { - value: parts[0].trim(), - label: parts[1].trim(), - }; - } - return null; - }).filter(Boolean); -}; +import { ApiGetCall } from "../../../../../api/ApiCall"; +import countryList from "../../../../../data/countryList.json"; +import timezoneList from "../../../../../data/timezoneList.json"; // Work days options const workDaysOptions = [ @@ -177,14 +24,14 @@ const workDaysOptions = [ { value: "Saturday", label: "Saturday" }, { value: "WeekDay", label: "Weekdays (Monday-Friday)" }, { value: "WeekendDay", label: "Weekend (Saturday-Sunday)" }, - { value: "AllDays", label: "All Days" } + { value: "AllDays", label: "All Days" }, ]; // Automation Processing Options const automateProcessingOptions = [ { value: "None", label: "None - No processing" }, { value: "AutoUpdate", label: "AutoUpdate - Accept/Decline but not delete" }, - { value: "AutoAccept", label: "AutoAccept - Accept and delete" } + { value: "AutoAccept", label: "AutoAccept - Accept and delete" }, ]; const EditRoomMailbox = () => { @@ -208,10 +55,10 @@ const EditRoomMailbox = () => { // Core Properties displayName: room.displayName, hiddenFromAddressListsEnabled: room.hiddenFromAddressListsEnabled, - + // Room Booking Settings capacity: room.capacity, - + // Location Information building: room.building, floor: room.floor, @@ -223,16 +70,16 @@ const EditRoomMailbox = () => { countryOrRegion: room.countryOrRegion ? countryList.find((c) => c.Name === room.countryOrRegion)?.Code || "" : "", - + // Room Equipment audioDeviceName: room.audioDeviceName, videoDeviceName: room.videoDeviceName, displayDeviceName: room.displayDeviceName, - + // Room Features isWheelChairAccessible: room.isWheelChairAccessible, phone: room.phone, - tags: room.tags?.map(tag => ({ label: tag, value: tag })) || [], + tags: room.tags?.map((tag) => ({ label: tag, value: tag })) || [], // Calendar Properties AllowConflicts: room.AllowConflicts, @@ -244,19 +91,31 @@ const EditRoomMailbox = () => { ForwardRequestsToDelegates: room.ForwardRequestsToDelegates, ScheduleOnlyDuringWorkHours: room.ScheduleOnlyDuringWorkHours, AutomateProcessing: room.AutomateProcessing, + AddOrganizerToSubject: room.AddOrganizerToSubject, + DeleteSubject: room.DeleteSubject, + RemoveCanceledMeetings: room.RemoveCanceledMeetings, // Calendar Configuration - WorkDays: room.WorkDays?.split(',')?.map(day => ({ - label: day.trim(), - value: day.trim() - })) || [], + WorkDays: + room.WorkDays?.split(",")?.map((day) => ({ + label: day.trim(), + value: day.trim(), + })) || [], WorkHoursStartTime: room.WorkHoursStartTime, WorkHoursEndTime: room.WorkHoursEndTime, - WorkingHoursTimeZone: room.WorkingHoursTimeZone ? { - value: room.WorkingHoursTimeZone, - label: createTimezoneOptions().find(tz => tz.value === room.WorkingHoursTimeZone)?.label || room.WorkingHoursTimeZone - } : null + WorkingHoursTimeZone: room.WorkingHoursTimeZone + ? { + value: room.WorkingHoursTimeZone, + label: timezoneList.find((tz) => tz.standardTime === room.WorkingHoursTimeZone) + ? `${room.WorkingHoursTimeZone} - ${ + timezoneList.find((tz) => tz.standardTime === room.WorkingHoursTimeZone) + ?.timezone + }` + : room.WorkingHoursTimeZone, + } + : null, }); + void formControl.trigger(); } }, [roomInfo.isSuccess, roomInfo.data]); @@ -273,16 +132,15 @@ const EditRoomMailbox = () => { title="Edit Room Mailbox" backButtonTitle="Room Mailboxes Overview" postUrl="/api/EditRoomMailbox" - customDataformatter={(values) => ({ tenantID: tenantDomain, roomId: roomId, displayName: values.displayName?.trim(), hiddenFromAddressListsEnabled: values.hiddenFromAddressListsEnabled, - + // Room Booking Settings capacity: values.capacity, - + // Location Information building: values.building?.trim(), floor: values.floor, @@ -291,17 +149,17 @@ const EditRoomMailbox = () => { city: values.city?.trim(), state: values.state?.trim(), postalCode: values.postalCode?.trim(), - countryOrRegion: values.countryOrRegion?.value || values.countryOrRegion, - + countryOrRegion: values.countryOrRegion?.value || values.countryOrRegion || null, + // Room Equipment audioDeviceName: values.audioDeviceName?.trim(), videoDeviceName: values.videoDeviceName?.trim(), displayDeviceName: values.displayDeviceName?.trim(), - + // Room Features isWheelChairAccessible: values.isWheelChairAccessible, phone: values.phone?.trim(), - tags: values.tags?.map(tag => tag.value), + tags: values.tags?.map((tag) => tag.value), // Calendar Properties AllowConflicts: values.AllowConflicts, @@ -313,359 +171,376 @@ const EditRoomMailbox = () => { ForwardRequestsToDelegates: values.ForwardRequestsToDelegates, ScheduleOnlyDuringWorkHours: values.ScheduleOnlyDuringWorkHours, AutomateProcessing: values.AutomateProcessing?.value || values.AutomateProcessing, + AddOrganizerToSubject: values.AddOrganizerToSubject, + DeleteSubject: values.DeleteSubject, + RemoveCanceledMeetings: values.RemoveCanceledMeetings, // Calendar Configuration - WorkDays: values.WorkDays?.map(day => day.value).join(','), + WorkDays: values.WorkDays?.map((day) => day.value).join(","), WorkHoursStartTime: values.WorkHoursStartTime, WorkHoursEndTime: values.WorkHoursEndTime, WorkingHoursTimeZone: values.WorkingHoursTimeZone?.value || values.WorkingHoursTimeZone, })} > - - {/* Basic Information */} - - Basic Information - - - - - - - - - - - - - {/* Booking Settings */} - - Booking Settings - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {/* Working Hours */} - - Working Hours - - - - - - - - - - - - - - - - - - - - - - - - - {/* Room Facilities */} - - Room Facilities & Equipment - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {/* Location Information */} - - Location Information - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ({ - label: Name, - value: Code, - }))} - formControl={formControl} - /> - - + {roomInfo.isFetching && ( + + )} + {roomInfo.isSuccess && !roomInfo.isFetching && ( + + {/* Basic Information */} + + + Basic Information + + roomInfo.refetch()}> + + + + + + + + + + + + + + {/* Booking Settings */} + + + Booking Settings + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {/* Working Hours */} + + + Working Hours + + + + + + + + + + + + ({ + value: tz.standardTime, + label: `${tz.standardTime} - ${tz.timezone}`, + }))} + multiple={false} + creatable={false} + formControl={formControl} + /> + + + + + + + + + {/* Room Facilities */} + + + Room Facilities & Equipment + + + + + + + + + + + + + + + + + + + + + + + {/* Location Information */} + + + Location Information + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ({ + label: Name, + value: Code, + }))} + formControl={formControl} + /> + + + )} ); }; EditRoomMailbox.getLayout = (page) => {page}; -export default EditRoomMailbox; \ No newline at end of file +export default EditRoomMailbox; diff --git a/src/pages/email/resources/management/list-rooms/index.js b/src/pages/email/resources/management/list-rooms/index.js index 68c79ba360c2..5348f25ce5dc 100644 --- a/src/pages/email/resources/management/list-rooms/index.js +++ b/src/pages/email/resources/management/list-rooms/index.js @@ -1,12 +1,12 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Button } from "@mui/material"; -import Link from "next/link"; -import { AddHomeWork, Edit, Block, LockOpen, Key } from "@mui/icons-material"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; +import { CippTablePage } from "../../../../../components/CippComponents/CippTablePage.jsx"; +import { Edit, Block, LockOpen, Key } from "@mui/icons-material"; import { TrashIcon } from "@heroicons/react/24/outline"; +import { CippAddRoomDrawer } from "../../../../../components/CippComponents/CippAddRoomDrawer"; const Page = () => { const pageTitle = "Rooms"; + const cardButtonPermissions = ["Exchange.Room.ReadWrite"]; const actions = [ { @@ -70,19 +70,11 @@ const Page = () => { "countryOrRegion", "hiddenFromAddressListsEnabled", ]} - cardButton={ - - } + cardButton={} /> ); }; -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => {page}; export default Page; diff --git a/src/pages/email/resources/management/room-lists/edit.jsx b/src/pages/email/resources/management/room-lists/edit.jsx new file mode 100644 index 000000000000..7fa8c786936e --- /dev/null +++ b/src/pages/email/resources/management/room-lists/edit.jsx @@ -0,0 +1,345 @@ +import { useEffect, useState } from "react"; +import { Box, Button, Divider, Typography } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm } from "react-hook-form"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; +import CippFormPage from "../../../../../components/CippFormPages/CippFormPage"; +import CippFormComponent from "../../../../../components/CippComponents/CippFormComponent"; +import { CippFormUserSelector } from "../../../../../components/CippComponents/CippFormUserSelector"; +import { useRouter } from "next/router"; +import { ApiGetCall } from "../../../../../api/ApiCall"; +import { useSettings } from "../../../../../hooks/use-settings"; +import { CippDataTable } from "../../../../../components/CippTable/CippDataTable"; + +const EditRoomList = () => { + const router = useRouter(); + const { groupId } = router.query; + const [groupIdReady, setGroupIdReady] = useState(false); + const [showMembershipTable, setShowMembershipTable] = useState(false); + const [combinedData, setCombinedData] = useState([]); + const [originalAllowExternal, setOriginalAllowExternal] = useState(null); + const tenantFilter = useSettings().currentTenant; + + const groupInfo = ApiGetCall({ + url: `/api/ListRoomLists?groupID=${groupId}&tenantFilter=${tenantFilter}&members=true&owners=true`, + queryKey: `ListRoomLists-${groupId}`, + waiting: groupIdReady, + }); + + useEffect(() => { + if (groupId) { + setGroupIdReady(true); + groupInfo.refetch(); + } + }, [router.query, groupId, tenantFilter]); + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + tenantFilter: tenantFilter, + AddMember: [], + RemoveMember: [], + AddOwner: [], + RemoveOwner: [], + }, + }); + + useEffect(() => { + if (groupInfo.isSuccess) { + const group = groupInfo.data?.groupInfo; + if (group) { + // Create combined data for the table + const owners = Array.isArray(groupInfo.data?.owners) ? groupInfo.data.owners : []; + const members = Array.isArray(groupInfo.data?.members) ? groupInfo.data.members : []; + + const combinedData = [ + ...owners.map((o) => ({ + type: "Owner", + userPrincipalName: o.userPrincipalName, + displayName: o.displayName, + })), + ...members.map((m) => ({ + type: "Room", + userPrincipalName: m.PrimarySmtpAddress || m.userPrincipalName || m.mail, + displayName: m.DisplayName || m.displayName, + })), + ]; + setCombinedData(combinedData); + + // Store original allowExternal value for comparison + const allowExternalValue = groupInfo?.data?.allowExternal; + setOriginalAllowExternal(allowExternalValue); + + // Reset the form with all values + formControl.reset({ + tenantFilter: tenantFilter, + mail: group.PrimarySmtpAddress || group.mail, + mailNickname: group.Alias || group.mailNickname || "", + allowExternal: allowExternalValue, + displayName: group.DisplayName || group.displayName, + description: group.Description || group.description || "", + groupId: group.Guid || group.id, + groupType: "Room List", + // Initialize empty arrays for add/remove actions + AddMember: [], + RemoveMember: [], + AddOwner: [], + RemoveOwner: [], + }); + } + } + }, [groupInfo.isSuccess, router.query, groupInfo.isFetching]); + + return ( + <> + { + // Only include allowExternal if it has changed from the original value + const modifiedValues = { ...values }; + if (originalAllowExternal !== null && values.allowExternal === originalAllowExternal) { + delete modifiedValues.allowExternal; + } + return modifiedValues; + }} + titleButton={ + <> + + + } + > + {showMembershipTable ? ( + + + + ) : ( + + + + Room List Properties + + + + + + + + + + + + + + Add Members + + + + + `${room.displayName || "Unknown"} (${ + room.mail || room.userPrincipalName || "No email" + })`, + valueField: "mail", + addedField: { + roomType: "bookingType", + capacity: "capacity", + id: "id", + }, + queryKey: `rooms-${tenantFilter}`, + showRefresh: true, + dataFilter: (rooms) => { + // Get current member emails to filter out + const members = Array.isArray(groupInfo.data?.members) + ? groupInfo.data.members + : []; + const currentMemberEmails = members + .map((m) => m.mail || m.userPrincipalName) + .filter(Boolean); + + // Filter out rooms that are already members + // rooms here have been transformed to {label, value, addedFields} format + const filteredRooms = rooms.filter((room) => { + const roomEmail = room.value; // email is in the value field + const isAlreadyMember = currentMemberEmails.includes(roomEmail); + return !isAlreadyMember; + }); + + return filteredRooms; + }, + }} + /> + + + + + `${user.displayName || "Unknown"} (${ + user.userPrincipalName || user.mail || "No email" + })`, + valueField: "userPrincipalName", + addedField: { + id: "id", + }, + queryKey: `users-${tenantFilter}`, + showRefresh: true, + dataFilter: (users) => { + // Get current owner userPrincipalNames to filter out + const owners = Array.isArray(groupInfo.data?.owners) + ? groupInfo.data.owners + : []; + const currentOwnerEmails = owners + .map((o) => o.userPrincipalName) + .filter(Boolean); + + // Filter out users that are already owners + // users here have been transformed to {label, value, addedFields} format + const filteredUsers = users.filter((user) => { + const userEmail = user.value; // userPrincipalName is in the value field + const isAlreadyOwner = currentOwnerEmails.includes(userEmail); + return !isAlreadyOwner; + }); + + return filteredUsers; + }, + }} + /> + + + + + Remove Members + + + + ({ + label: `${m.DisplayName || m.displayName || "Unknown"} (${ + m.PrimarySmtpAddress || m.userPrincipalName || m.mail + })`, + value: m.PrimarySmtpAddress || m.userPrincipalName || m.mail, + addedFields: { id: m.ExternalDirectoryObjectId || m.id }, + })) + : [] + } + /> + + + + ({ + label: `${o.displayName} (${o.userPrincipalName})`, + value: o.userPrincipalName, + addedFields: { id: o.id }, + })) + : [] + } + /> + + + + + Room List Settings + + + + + + + + )} + + + ); +}; + +EditRoomList.getLayout = (page) => {page}; + +export default EditRoomList; diff --git a/src/pages/email/resources/management/room-lists/index.js b/src/pages/email/resources/management/room-lists/index.js index e73dcc50490e..bff09714fd9f 100644 --- a/src/pages/email/resources/management/room-lists/index.js +++ b/src/pages/email/resources/management/room-lists/index.js @@ -1,54 +1,69 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Visibility } from "@mui/icons-material"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; +import { CippTablePage } from "../../../../../components/CippComponents/CippTablePage.jsx"; +import { Edit } from "@mui/icons-material"; +import { TrashIcon } from "@heroicons/react/24/outline"; +import { CippAddRoomListDrawer } from "../../../../../components/CippComponents/CippAddRoomListDrawer"; const Page = () => { const pageTitle = "Room Lists"; const apiUrl = "/api/ListRoomLists"; + const cardButtonPermissions = ["Exchange.Room.ReadWrite"]; const actions = [ { - label: "View included Rooms", - link: `/email/resources/management/room-lists/list/view?roomAddress=[emailAddress]`, - color: "info", - icon: , + label: "Edit Room List", + link: "/email/resources/management/room-lists/edit?groupId=[PrimarySmtpAddress]", + multiPost: false, + icon: , + color: "success", + }, + { + label: "Delete Room List", + type: "POST", + url: "/api/ExecGroupsDelete", + icon: , + data: { + id: "Guid", + displayName: "DisplayName", + GroupType: "!Distribution List", + }, + confirmText: "Are you sure you want to delete this room list?", + multiPost: false, }, ]; const offCanvas = { extendedInfoFields: [ - "id", - "emailAddress", - "displayName", - "phone", - "placeId", - "geoCoordinates", - "address.city", - "address.countryOrRegion", + "Guid", + "PrimarySmtpAddress", + "DisplayName", + "Phone", + "Identity", + "Notes", + "MailNickname", ], actions: actions, }; - const simpleColumns = [ - "displayName", - "geoCoordinates", - "placeId", - "address.city", - "address.countryOrRegion", - ]; + const simpleColumns = ["DisplayName", "PrimarySmtpAddress", "Identity", "Phone", "Notes"]; return ( + + + } /> ); }; -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => {page}; export default Page; diff --git a/src/pages/email/resources/management/room-lists/list/view.jsx b/src/pages/email/resources/management/room-lists/list/view.jsx deleted file mode 100644 index 64bd4a5f07ce..000000000000 --- a/src/pages/email/resources/management/room-lists/list/view.jsx +++ /dev/null @@ -1,31 +0,0 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { useRouter } from "next/router"; -import { useSettings } from "/src/hooks/use-settings"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; - -const Page = () => { - const userSettingsDefaults = useSettings(); - const router = useRouter(); - const { roomAddress } = router.query; - const pageTitle = `Rooms included in ${roomAddress}`; - - return ( - - ); -}; - -Page.getLayout = (page) => {page}; - -export default Page; diff --git a/src/pages/email/spamfilter/list-connectionfilter-templates/index.js b/src/pages/email/spamfilter/list-connectionfilter-templates/index.js index f5d660457154..ff908fa0bb14 100644 --- a/src/pages/email/spamfilter/list-connectionfilter-templates/index.js +++ b/src/pages/email/spamfilter/list-connectionfilter-templates/index.js @@ -1,8 +1,8 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { TrashIcon } from "@heroicons/react/24/outline"; import { GitHub } from "@mui/icons-material"; -import { ApiGetCall } from "/src/api/ApiCall"; +import { ApiGetCall } from "../../../../api/ApiCall"; const Page = () => { const pageTitle = "Connection filter Templates"; diff --git a/src/pages/email/spamfilter/list-connectionfilter/add.jsx b/src/pages/email/spamfilter/list-connectionfilter/add.jsx index 8937226563a9..77a9dabfa170 100644 --- a/src/pages/email/spamfilter/list-connectionfilter/add.jsx +++ b/src/pages/email/spamfilter/list-connectionfilter/add.jsx @@ -2,10 +2,10 @@ import React, { useEffect } from "react"; import { Divider } from "@mui/material"; import { Grid } from "@mui/system"; import { useForm, useWatch } from "react-hook-form"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormTenantSelector } from "/src/components/CippComponents/CippFormTenantSelector"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { CippFormTenantSelector } from "../../../../components/CippComponents/CippFormTenantSelector"; const AddPolicy = () => { const formControl = useForm({ @@ -34,13 +34,14 @@ const AddPolicy = () => { postUrl="/api/AddConnectionFilter" > - + @@ -48,7 +49,7 @@ const AddPolicy = () => { {/* TemplateList */} - + { - + { ); }; -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => {page}; export default Page; diff --git a/src/pages/email/spamfilter/list-quarantine-policies/add.jsx b/src/pages/email/spamfilter/list-quarantine-policies/add.jsx index d84ecdbe00f9..c2fe68b9e437 100644 --- a/src/pages/email/spamfilter/list-quarantine-policies/add.jsx +++ b/src/pages/email/spamfilter/list-quarantine-policies/add.jsx @@ -1,10 +1,11 @@ -import React, { useEffect } from "react"; -import { Grid, Divider } from "@mui/material"; +import { useEffect } from "react"; +import { Divider } from "@mui/material"; +import { Grid } from "@mui/system"; import { useForm, useWatch } from "react-hook-form"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormTenantSelector } from "/src/components/CippComponents/CippFormTenantSelector"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { CippFormTenantSelector } from "../../../../components/CippComponents/CippFormTenantSelector"; const AddPolicy = () => { const formControl = useForm({ @@ -39,13 +40,14 @@ const AddPolicy = () => { postUrl="/api/AddQuarantinePolicy" > - + @@ -53,7 +55,7 @@ const AddPolicy = () => { {/* */} {/* TemplateList, can be added later. But did not seem necessary with so few settings */} - {/* + {/* { */} - - - - - + + + + + - - - - - - - - - - - + + + + + + + + + + ); diff --git a/src/pages/email/spamfilter/list-quarantine-policies/index.js b/src/pages/email/spamfilter/list-quarantine-policies/index.js index fa301cb631f4..33d1101bd445 100644 --- a/src/pages/email/spamfilter/list-quarantine-policies/index.js +++ b/src/pages/email/spamfilter/list-quarantine-policies/index.js @@ -1,8 +1,8 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import CippButtonCard from "/src/components/CippCards/CippButtonCard"; -import { CippInfoBar } from "/src/components/CippCards/CippInfoBar"; -import { CippApiDialog } from "/src/components/CippComponents/CippApiDialog.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import CippButtonCard from "../../../../components/CippCards/CippButtonCard"; +import { CippInfoBar } from "../../../../components/CippCards/CippInfoBar"; +import { CippApiDialog } from "../../../../components/CippComponents/CippApiDialog.jsx"; import { Alert, Typography, Stack, Tooltip, IconButton, SvgIcon, Button } from "@mui/material"; import { Grid } from "@mui/system"; import Link from "next/link"; @@ -16,14 +16,14 @@ import { Edit, Delete, } from "@mui/icons-material"; -import { useSettings } from "/src/hooks/use-settings"; -import { useDialog } from "/src/hooks/use-dialog"; -import { ApiGetCall } from "/src/api/ApiCall"; +import { useSettings } from "../../../../hooks/use-settings"; +import { useDialog } from "../../../../hooks/use-dialog"; +import { ApiGetCall } from "../../../../api/ApiCall"; const Page = () => { const pageTitle = "Quarantine Policies"; const { currentTenant } = useSettings(); - + const createDialog = useDialog(); // Use ApiGetCall directly as a hook @@ -40,7 +40,6 @@ const Page = () => { const hasGlobalQuarantinePolicyData = !!globalQuarantineData; - if (hasGlobalQuarantinePolicyData) { globalQuarantineData.EndUserSpamNotificationFrequency = globalQuarantineData?.EndUserSpamNotificationFrequency === "P1D" @@ -49,42 +48,40 @@ const Page = () => { ? "Weekly" : globalQuarantineData?.EndUserSpamNotificationFrequency === "PT4H" ? "4 hours" - : globalQuarantineData?.EndUserSpamNotificationFrequency + : globalQuarantineData?.EndUserSpamNotificationFrequency; } const multiLanguagePropertyItems = hasGlobalQuarantinePolicyData - ? ( - Array.isArray(globalQuarantineData?.MultiLanguageSetting) && globalQuarantineData.MultiLanguageSetting.length > 0 - ? globalQuarantineData.MultiLanguageSetting.map((language, idx) => ({ - language: language == "Default" ? "English_USA" - : language == "English" ? "English_GB" - : language, - senderDisplayName: - globalQuarantineData.MultiLanguageSenderName[idx] && - globalQuarantineData.MultiLanguageSenderName[idx].trim() !== "" - ? globalQuarantineData.MultiLanguageSenderName[idx] - : "None", - subject: - globalQuarantineData.EsnCustomSubject[idx] && - globalQuarantineData.EsnCustomSubject[idx].trim() !== "" - ? globalQuarantineData.EsnCustomSubject[idx] - : "None", - disclaimer: - globalQuarantineData.MultiLanguageCustomDisclaimer[idx] && - globalQuarantineData.MultiLanguageCustomDisclaimer[idx].trim() !== "" - ? globalQuarantineData.MultiLanguageCustomDisclaimer[idx] - : "None", - })) - : [ - { - language: "None", - senderDisplayName: "None", - subject: "None", - disclaimer: "None", - }, - ] - ) - : []; + ? Array.isArray(globalQuarantineData?.MultiLanguageSetting) && + globalQuarantineData.MultiLanguageSetting.length > 0 + ? globalQuarantineData.MultiLanguageSetting.map((language, idx) => ({ + language: + language == "Default" ? "English_USA" : language == "English" ? "English_GB" : language, + senderDisplayName: + globalQuarantineData.MultiLanguageSenderName[idx] && + globalQuarantineData.MultiLanguageSenderName[idx].trim() !== "" + ? globalQuarantineData.MultiLanguageSenderName[idx] + : "None", + subject: + globalQuarantineData.EsnCustomSubject[idx] && + globalQuarantineData.EsnCustomSubject[idx].trim() !== "" + ? globalQuarantineData.EsnCustomSubject[idx] + : "None", + disclaimer: + globalQuarantineData.MultiLanguageCustomDisclaimer[idx] && + globalQuarantineData.MultiLanguageCustomDisclaimer[idx].trim() !== "" + ? globalQuarantineData.MultiLanguageCustomDisclaimer[idx] + : "None", + })) + : [ + { + language: "None", + senderDisplayName: "None", + subject: "None", + disclaimer: "None", + }, + ] + : []; const buttonCardActions = [ <> @@ -92,34 +89,28 @@ const Page = () => { Edit Settings - { - GlobalQuarantinePolicy.refetch(); + { + GlobalQuarantinePolicy.refetch(); + }} + > + - - - - + + + - + , ]; // Actions to perform (Edit,Delete Policy) @@ -140,8 +131,8 @@ const Page = () => { type: "autoComplete", name: "ReleaseActionPreference", label: "Select release action preference", - multiple : false, - creatable : false, + multiple: false, + creatable: false, options: [ { label: "Release", value: "Release" }, { label: "Request Release", value: "RequestRelease" }, @@ -156,7 +147,7 @@ const Page = () => { type: "switch", name: "Preview", label: "Preview", - }, + }, { type: "switch", name: "BlockSender", @@ -196,11 +187,11 @@ const Page = () => { }, confirmText: ( <> - - Are you sure you want to delete this policy? - + Are you sure you want to delete this policy? - Note: This will delete the Quarantine policy, even if it is currently in use.
    + Note: This will delete the Quarantine policy, even if it is currently + in use. +
    Removing the Admin and User Access it applies to emails.
    @@ -224,7 +215,7 @@ const Page = () => { "Id", // Policy Name/Id "Name", // Policy Name "EndUserQuarantinePermissions", - "Guid", + "Guid", "Builtin", "WhenCreated", // Creation Date "WhenChanged", // Last Modified Date @@ -245,7 +236,6 @@ const Page = () => { }, ]; - const customLanguageOffcanvas = multiLanguagePropertyItems && multiLanguagePropertyItems.length > 0 ? { @@ -269,22 +259,22 @@ const Page = () => { .map(([key, value]) => ( - {key.replace(/([A-Z])/g, ' $1').replace(/^./, str => str.toUpperCase())} - - - {value} + {key + .replace(/([A-Z])/g, " $1") + .replace(/^./, (str) => str.toUpperCase())} + {value} ))}
    ), })), - } + }, } : {}; - // Simplified columns for the table + // Simplified columns for the table const simpleColumns = [ "Name", "ReleaseActionPreference", @@ -298,8 +288,6 @@ const Page = () => { "WhenChanged", ]; - - // Prepare data for CippInfoBar as a const to clean up the code const infoBarData = [ { @@ -310,31 +298,28 @@ const Page = () => { { icon: , data: hasGlobalQuarantinePolicyData - ? (globalQuarantineData?.OrganizationBrandingEnabled - ? "Enabled" - : "Disabled" - ) + ? globalQuarantineData?.OrganizationBrandingEnabled + ? "Enabled" + : "Disabled" : "n/a", name: "Branding", }, { icon: , - data: hasGlobalQuarantinePolicyData - ? (globalQuarantineData?.EndUserSpamNotificationCustomFromAddress - ? globalQuarantineData?.EndUserSpamNotificationCustomFromAddress - : "None") - : "n/a" , + data: hasGlobalQuarantinePolicyData + ? globalQuarantineData?.EndUserSpamNotificationCustomFromAddress + ? globalQuarantineData?.EndUserSpamNotificationCustomFromAddress + : "None" + : "n/a", name: "Custom Sender Address", }, { icon: , toolTip: "More Info", data: hasGlobalQuarantinePolicyData - ? ( - multiLanguagePropertyItems.length > 0 - ? multiLanguagePropertyItems.map(item => item.language).join(", ") - : "None" - ) + ? multiLanguagePropertyItems.length > 0 + ? multiLanguagePropertyItems.map((item) => item.language).join(", ") + : "None" : "n/a", name: "Custom Language", ...customLanguageOffcanvas, @@ -343,7 +328,7 @@ const Page = () => { return ( <> - + { > - + - - + + { filters={filterList} simpleColumns={simpleColumns} cardButton={ - <> - - - } + <> + + + } /> { Identity: "Guid", }, relatedQueryKeys: [`GlobalQuarantinePolicy-${currentTenant}`], - confirmText: - "Are you sure you want to update Global Quarantine settings?", + confirmText: "Are you sure you want to update Global Quarantine settings?", }} // row={globalQuarantineData} row={globalQuarantineData} @@ -402,8 +383,8 @@ const Page = () => { type: "autoComplete", name: "EndUserSpamNotificationFrequency", label: "Notification Frequency", - multiple : false, - creatable : false, + multiple: false, + creatable: false, required: true, options: [ { label: "4 hours", value: "PT4H" }, @@ -430,6 +411,6 @@ const Page = () => { }; // Layout configuration: ensure page uses DashboardLayout -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => {page}; export default Page; diff --git a/src/pages/email/spamfilter/list-spamfilter/add.jsx b/src/pages/email/spamfilter/list-spamfilter/add.jsx index bf5cc6fb10c1..824844d8bdf0 100644 --- a/src/pages/email/spamfilter/list-spamfilter/add.jsx +++ b/src/pages/email/spamfilter/list-spamfilter/add.jsx @@ -2,10 +2,10 @@ import React, { useEffect } from "react"; import { Divider } from "@mui/material"; import { Grid } from "@mui/system"; import { useForm, useWatch } from "react-hook-form"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormTenantSelector } from "/src/components/CippComponents/CippFormTenantSelector"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { CippFormTenantSelector } from "../../../../components/CippComponents/CippFormTenantSelector"; const AddPolicy = () => { const formControl = useForm({ @@ -34,13 +34,14 @@ const AddPolicy = () => { postUrl="/api/AddSpamFilter" > - + @@ -48,7 +49,7 @@ const AddPolicy = () => { {/* TemplateList */} - + { - + { ); }; -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => {page}; export default Page; diff --git a/src/pages/email/spamfilter/list-templates/index.js b/src/pages/email/spamfilter/list-templates/index.js index adcc2884e065..3abe32d9d210 100644 --- a/src/pages/email/spamfilter/list-templates/index.js +++ b/src/pages/email/spamfilter/list-templates/index.js @@ -1,8 +1,8 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { TrashIcon } from "@heroicons/react/24/outline"; import { GitHub } from "@mui/icons-material"; -import { ApiGetCall } from "/src/api/ApiCall"; +import { ApiGetCall } from "../../../../api/ApiCall"; const Page = () => { const pageTitle = "Spamfilter Templates"; diff --git a/src/pages/email/tools/mail-test/index.js b/src/pages/email/tools/mail-test/index.js index 9edd92002471..0f9871807038 100644 --- a/src/pages/email/tools/mail-test/index.js +++ b/src/pages/email/tools/mail-test/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; const Page = () => { const pageTitle = "Mail Test"; diff --git a/src/pages/email/tools/mailbox-restore-wizard/index.js b/src/pages/email/tools/mailbox-restore-wizard/index.js index 407eba25f97d..fb7521dfd4cb 100644 --- a/src/pages/email/tools/mailbox-restore-wizard/index.js +++ b/src/pages/email/tools/mailbox-restore-wizard/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; const Page = () => { const pageTitle = "Mailbox Restore Wizard"; diff --git a/src/pages/email/tools/mailbox-restores/add.jsx b/src/pages/email/tools/mailbox-restores/add.jsx index edeb42b10f3f..0d9a74ba686a 100644 --- a/src/pages/email/tools/mailbox-restores/add.jsx +++ b/src/pages/email/tools/mailbox-restores/add.jsx @@ -1,9 +1,9 @@ -import React, { useEffect } from "react"; +import { useEffect } from "react"; import { Grid } from "@mui/system"; import { useForm, useWatch } from "react-hook-form"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; import { useSettings } from "../../../../hooks/use-settings"; import { getCippTranslation } from "../../../../utils/get-cipp-translation"; import { Alert, Divider, Typography } from "@mui/material"; @@ -91,7 +91,7 @@ const MailboxRestoreForm = () => { Restore Settings - + { /> {/* Target Mailbox */} - + { valueField: "UPN", addedField: { displayName: "displayName", ExchangeGuid: "ExchangeGuid" }, url: "/api/ListMailboxes", + data: { UseReportDB: true }, }} validators={{ validate: (value) => (value ? true : "Please select a target mailbox.") }} /> - + { Optional Settings - + { formControl={formControl} /> - + { formControl={formControl} /> - + { formControl={formControl} /> - + { ]} /> - + { options={wellKnownFolders} /> - + { options={wellKnownFolders} /> - + { /> - + { ]} /> - + { formControl={formControl} /> - + { formControl={formControl} /> - + { ]} /> - + { formControl={formControl} /> - + { formControl={formControl} /> - + { const pageTitle = "Mailbox Restores"; - + const tenantDomain = useSettings().currentTenant; const actions = [ { label: "Resume Restore Request", @@ -62,17 +62,8 @@ const Page = () => { actions={actions} offCanvas={offCanvas} simpleColumns={simpleColumns} - cardButton={ - <> - - - } + cardButton={} + queryKey={`MailboxRestores-${tenantDomain}`} /> ); }; diff --git a/src/pages/email/tools/message-trace/index.js b/src/pages/email/tools/message-trace/index.js index 9a856cefb8af..56ccf9bcd20a 100644 --- a/src/pages/email/tools/message-trace/index.js +++ b/src/pages/email/tools/message-trace/index.js @@ -1,21 +1,20 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; import { Button, Dialog, DialogTitle, DialogContent, IconButton, - Container, Stack, Typography, CircularProgress, } from "@mui/material"; import { useForm } from "react-hook-form"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { ApiPostCall } from "/src/api/ApiCall"; -import { useSettings } from "/src/hooks/use-settings"; -import CippButtonCard from "/src/components/CippCards/CippButtonCard"; -import { CippDataTable } from "/src/components/CippTable/CippDataTable"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { ApiPostCall } from "../../../../api/ApiCall"; +import { useSettings } from "../../../../hooks/use-settings"; +import CippButtonCard from "../../../../components/CippCards/CippButtonCard"; +import { CippDataTable } from "../../../../components/CippTable/CippDataTable"; import { useState } from "react"; import { Search, Close, ClearAll } from "@mui/icons-material"; import { Grid } from "@mui/system"; @@ -149,14 +148,14 @@ const Page = () => { return ( <> - + - + { /> {formControl.watch("dateFilter") === "relative" && ( - + { )} {formControl.watch("dateFilter") === "startEnd" && ( <> - + { disabled={isMessageIdSet} /> - + { disabled={isMessageIdSet} /> - + { formControl={formControl} /> - + { disabled={isMessageIdSet} /> - + { disabled={isMessageIdSet} /> - + { {/* Submit and Clear Buttons */} - + diff --git a/src/pages/email/tools/message-viewer/index.js b/src/pages/email/tools/message-viewer/index.js index ab5b7499c8a0..2521f67b1e22 100644 --- a/src/pages/email/tools/message-viewer/index.js +++ b/src/pages/email/tools/message-viewer/index.js @@ -1,5 +1,5 @@ import CippMessageViewerPage from "../../../../components/CippComponents/CippMessageViewer"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; const Page = () => { return ; diff --git a/src/pages/email/transport/deploy-rules/index.js b/src/pages/email/transport/deploy-rules/index.js deleted file mode 100644 index a12e12a5a58f..000000000000 --- a/src/pages/email/transport/deploy-rules/index.js +++ /dev/null @@ -1,17 +0,0 @@ - -import { Layout as DashboardLayout } from "/src/layouts/index.js"; - -const Page = () => { - const pageTitle = "Deploy Transport rule"; - - return ( -
    -

    {pageTitle}

    -

    This is a placeholder page for the deploy transport rule section.

    -
    - ); -}; - -Page.getLayout = (page) => {page}; - -export default Page; diff --git a/src/pages/email/transport/list-connector-templates/index.js b/src/pages/email/transport/list-connector-templates/index.js index 75723a53422d..4357ed52af23 100644 --- a/src/pages/email/transport/list-connector-templates/index.js +++ b/src/pages/email/transport/list-connector-templates/index.js @@ -1,15 +1,17 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; import { Button } from "@mui/material"; import Link from "next/link"; import { RocketLaunch } from "@mui/icons-material"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { TrashIcon } from "@heroicons/react/24/outline"; import { GitHub } from "@mui/icons-material"; import ConnectorTemplateDetails from "../../../../components/CippComponents/ConnectorTemplateDetails"; -import { ApiGetCall } from "/src/api/ApiCall"; +import { CippAddConnectorDrawer } from "../../../../components/CippComponents/CippAddConnectorDrawer"; +import { ApiGetCall } from "../../../../api/ApiCall"; const Page = () => { const pageTitle = "Exchange Connector Templates"; + const cardButtonPermissions = ["Exchange.Connector.ReadWrite"]; const integrations = ApiGetCall({ url: "/api/ListExtensionsConfig", queryKey: "Integrations", @@ -93,17 +95,7 @@ const Page = () => { label: "Add Template", href: "/email/connectors/add-connector-templates", }} - cardButton={ - <> - - - } + cardButton={} /> ); }; diff --git a/src/pages/email/transport/list-connectors/add.jsx b/src/pages/email/transport/list-connectors/add.jsx deleted file mode 100644 index 5bb832e17d3a..000000000000 --- a/src/pages/email/transport/list-connectors/add.jsx +++ /dev/null @@ -1,88 +0,0 @@ -import React, { useEffect } from "react"; -import { Divider } from "@mui/material"; -import { Grid } from "@mui/system"; -import { useForm, useWatch } from "react-hook-form"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormTenantSelector } from "/src/components/CippComponents/CippFormTenantSelector"; - -const AddPolicy = () => { - const formControl = useForm({ - mode: "onChange", - defaultValues: { - selectedTenants: [], - TemplateList: null, - PowerShellCommand: "", - }, - }); - - const templateListVal = useWatch({ control: formControl.control, name: "TemplateList" }); - - useEffect(() => { - if (templateListVal?.value) { - formControl.setValue("PowerShellCommand", JSON.stringify(templateListVal?.value)); - } - }, [templateListVal, formControl]); - - return ( - - - - - - - - - {/* TemplateList */} - - option, - url: "/api/ListExconnectorTemplates", - }} - placeholder="Select a template or enter PowerShell JSON manually" - /> - - - - - - - - - - ); -}; - -AddPolicy.getLayout = (page) => {page}; - -export default AddPolicy; diff --git a/src/pages/email/transport/list-connectors/index.js b/src/pages/email/transport/list-connectors/index.js index 6f2f9fe11539..8bc44bbe7f81 100644 --- a/src/pages/email/transport/list-connectors/index.js +++ b/src/pages/email/transport/list-connectors/index.js @@ -1,11 +1,11 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Button } from "@mui/material"; -import { RocketLaunch, Book, Check, Block, Delete } from "@mui/icons-material"; -import Link from "next/link"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Book, Check, Block, Delete } from "@mui/icons-material"; +import { CippAddConnectorDrawer } from "../../../../components/CippComponents/CippAddConnectorDrawer"; const Page = () => { const pageTitle = "Connector List"; + const cardButtonPermissions = ["Exchange.Connector.ReadWrite"]; const actions = [ { @@ -72,6 +72,19 @@ const Page = () => { "TlsDomain", ]; + const filters = [ + { + filterName: "Inbound Connectors", + value: [{ id: "cippconnectortype", value: "Inbound" }], + type: "column", + }, + { + filterName: "Outbound Connectors", + value: [{ id: "cippconnectortype", value: "Outbound" }], + type: "column", + }, + ]; + const offCanvas = { extendedInfoFields: simpleColumns, actions: actions, @@ -83,21 +96,12 @@ const Page = () => { apiUrl="/api/ListExchangeConnectors" actions={actions} offCanvas={offCanvas} + filters={filters} simpleColumns={simpleColumns} - cardButton={ - <> - - - } + cardButton={} /> ); }; -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => {page}; export default Page; diff --git a/src/pages/email/transport/list-rules/add.jsx b/src/pages/email/transport/list-rules/add.jsx deleted file mode 100644 index 121a2bacc6b6..000000000000 --- a/src/pages/email/transport/list-rules/add.jsx +++ /dev/null @@ -1,88 +0,0 @@ -import React, { useEffect } from "react"; -import { Divider } from "@mui/material"; -import { Grid } from "@mui/system"; -import { useForm, useWatch } from "react-hook-form"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormTenantSelector } from "/src/components/CippComponents/CippFormTenantSelector"; - -const AddPolicy = () => { - const formControl = useForm({ - mode: "onChange", - defaultValues: { - selectedTenants: [], - TemplateList: null, - PowerShellCommand: "", - }, - }); - - const templateListVal = useWatch({ control: formControl.control, name: "TemplateList" }); - - useEffect(() => { - if (templateListVal?.value) { - formControl.setValue("PowerShellCommand", JSON.stringify(templateListVal?.value)); - } - }, [templateListVal, formControl]); - - return ( - - - - - - - - - {/* TemplateList */} - - option, - url: "/api/ListTransportRulesTemplates", - }} - placeholder="Select a template or enter PowerShell JSON manually" - /> - - - - - - - - - - ); -}; - -AddPolicy.getLayout = (page) => {page}; - -export default AddPolicy; diff --git a/src/pages/email/transport/list-rules/index.js b/src/pages/email/transport/list-rules/index.js index 5faec982d216..75e3f66366b5 100644 --- a/src/pages/email/transport/list-rules/index.js +++ b/src/pages/email/transport/list-rules/index.js @@ -1,12 +1,24 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Button } from "@mui/material"; -import { Book, DoDisturb, Done, RocketLaunch } from "@mui/icons-material"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Book, DoDisturb, Done, Edit } from "@mui/icons-material"; import { TrashIcon } from "@heroicons/react/24/outline"; -import Link from "next/link"; +import { CippAddTransportRuleDrawer } from "../../../../components/CippComponents/CippAddTransportRuleDrawer"; +import { CippTransportRuleDrawer } from "../../../../components/CippComponents/CippTransportRuleDrawer"; +import { useSettings } from "../../../../hooks/use-settings"; +import { useRef } from "react"; const Page = () => { const pageTitle = "Transport Rules"; + const cardButtonPermissions = ["Exchange.TransportRule.ReadWrite"]; + const tableRef = useRef(); + const currentTenant = useSettings().currentTenant; + + const handleRuleSuccess = () => { + // Refresh the table after successful create/edit + if (tableRef.current) { + tableRef.current.refreshData(); + } + }; const actions = [ { @@ -20,22 +32,41 @@ const Page = () => { { label: "Enable Rule", type: "POST", - url: "/api/EditTransportRule", + url: "/api/AddEditTransportRule", data: { - State: "!Enable", - GUID: "Guid", + Enabled: "!Enabled", + ruleId: "Guid", + Name: "Name", }, + condition: (row) => row.State === "Disabled", confirmText: "Are you sure you want to enable this rule?", icon: , }, + { + label: "Edit Rule", + customComponent: (row, { drawerVisible, setDrawerVisible }) => ( + + ), + icon: , + multiPost: false, + }, { label: "Disable Rule", type: "POST", - url: "/api/EditTransportRule", + url: "/api/AddEditTransportRule", data: { - State: "!Disable", - GUID: "Guid", + Enabled: "!Disabled", + ruleId: "Guid", + Name: "Name", }, + condition: (row) => row.State === "Enabled", confirmText: "Are you sure you want to disable this rule?", icon: , }, @@ -75,35 +106,39 @@ const Page = () => { "Tenant", ]; + const filters = [ + { + filterName: "Enabled Rules", + value: [{ id: "State", value: "Enabled" }], + type: "column", + }, + { + filterName: "Disabled Rules", + value: [{ id: "State", value: "Disabled" }], + type: "column", + }, + ]; + return ( - + + } /> diff --git a/src/pages/email/transport/list-templates/index.js b/src/pages/email/transport/list-templates/index.js index ea143610103f..3a9ee1947f52 100644 --- a/src/pages/email/transport/list-templates/index.js +++ b/src/pages/email/transport/list-templates/index.js @@ -1,13 +1,13 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { TrashIcon } from "@heroicons/react/24/outline"; -import { Button } from "@mui/material"; -import { RocketLaunch, GitHub } from "@mui/icons-material"; -import Link from "next/link"; -import { ApiGetCall } from "/src/api/ApiCall"; +import { GitHub } from "@mui/icons-material"; +import { ApiGetCall } from "../../../../api/ApiCall"; +import { CippAddTransportRuleDrawer } from "../../../../components/CippComponents/CippAddTransportRuleDrawer"; const Page = () => { const pageTitle = "Transport Rule Templates"; + const cardButtonPermissions = ["Exchange.TransportRule.ReadWrite"]; const integrations = ApiGetCall({ url: "/api/ListExtensionsConfig", queryKey: "Integrations", @@ -84,17 +84,7 @@ const Page = () => { actions={actions} offCanvas={offCanvas} simpleColumns={simpleColumns} - cardButton={ - <> - - - } + cardButton={ } /> ); }; diff --git a/src/pages/endpoint/MEM/add-policy-template/index.js b/src/pages/endpoint/MEM/add-policy-template/index.js deleted file mode 100644 index 9fb84f97e62f..000000000000 --- a/src/pages/endpoint/MEM/add-policy-template/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; - -const Page = () => { - const pageTitle = "Add Policy Template"; - - return ( -
    -

    {pageTitle}

    -

    This no longer exists.

    -
    - ); -}; - -Page.getLayout = (page) => {page}; - -export default Page; diff --git a/src/pages/endpoint/MEM/add-policy/index.js b/src/pages/endpoint/MEM/add-policy/index.js deleted file mode 100644 index 158d85c81539..000000000000 --- a/src/pages/endpoint/MEM/add-policy/index.js +++ /dev/null @@ -1,41 +0,0 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippWizardConfirmation } from "/src/components/CippWizard/CippWizardConfirmation"; -import CippWizardPage from "/src/components/CippWizard/CippWizardPage.jsx"; -import { CippTenantStep } from "../../../../components/CippWizard/CippTenantStep"; -import { CippIntunePolicy } from "../../../../components/CippWizard/CippIntunePolicy"; - -const Page = () => { - const steps = [ - { - title: "Step 1", - description: "Tenant Selection", - component: CippTenantStep, - componentProps: { type: "multiple", valueField: "customerId" }, - }, - { - title: "Step 2", - description: "Policy Configuration", - component: CippIntunePolicy, - }, - { - title: "Step 3", - description: "Confirmation", - component: CippWizardConfirmation, - }, - ]; - - return ( - <> - - - ); -}; - -Page.getLayout = (page) => {page}; - -export default Page; diff --git a/src/pages/identity/administration/users/invite.jsx b/src/pages/endpoint/MEM/assignment-filter-templates/add.jsx similarity index 56% rename from src/pages/identity/administration/users/invite.jsx rename to src/pages/endpoint/MEM/assignment-filter-templates/add.jsx index b5aa6014181c..e955a271bc99 100644 --- a/src/pages/identity/administration/users/invite.jsx +++ b/src/pages/endpoint/MEM/assignment-filter-templates/add.jsx @@ -1,10 +1,9 @@ import { Box } from "@mui/material"; -import { Grid } from "@mui/system"; import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; import { useForm } from "react-hook-form"; import { useSettings } from "../../../../hooks/use-settings"; -import CippInviteUser from "../../../../components/CippFormPages/CippInviteGuest"; +import CippAddAssignmentFilterTemplateForm from "../../../../components/CippFormPages/CippAddAssignmentFilterTemplateForm"; const Page = () => { const userSettingsDefaults = useSettings(); @@ -18,15 +17,15 @@ const Page = () => { return ( <> - - + diff --git a/src/pages/endpoint/MEM/assignment-filter-templates/deploy.js b/src/pages/endpoint/MEM/assignment-filter-templates/deploy.js new file mode 100644 index 000000000000..4943b2868ef9 --- /dev/null +++ b/src/pages/endpoint/MEM/assignment-filter-templates/deploy.js @@ -0,0 +1,43 @@ +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippWizardConfirmation } from "../../../../components/CippWizard/CippWizardConfirmation"; +import CippWizardPage from "../../../../components/CippWizard/CippWizardPage.jsx"; +import { CippTenantStep } from "../../../../components/CippWizard/CippTenantStep.jsx"; +import { CippWizardAssignmentFilterTemplates } from "../../../../components/CippWizard/CippWizardAssignmentFilterTemplates"; + +const Page = () => { + const steps = [ + { + title: "Step 1", + description: "Tenant Selection", + component: CippTenantStep, + componentProps: { + allTenants: false, + type: "multiple", + }, + }, + { + title: "Step 2", + description: "Choose Template", + component: CippWizardAssignmentFilterTemplates, + }, + { + title: "Step 3", + description: "Confirmation", + component: CippWizardConfirmation, + }, + ]; + + return ( + <> + + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/endpoint/MEM/assignment-filter-templates/edit.jsx b/src/pages/endpoint/MEM/assignment-filter-templates/edit.jsx new file mode 100644 index 000000000000..0eb68a160c8a --- /dev/null +++ b/src/pages/endpoint/MEM/assignment-filter-templates/edit.jsx @@ -0,0 +1,77 @@ +import { Box, CircularProgress } from "@mui/material"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { useForm } from "react-hook-form"; +import { useSettings } from "../../../../hooks/use-settings"; +import CippAddAssignmentFilterTemplateForm from "../../../../components/CippFormPages/CippAddAssignmentFilterTemplateForm"; +import { useRouter } from "next/router"; +import { ApiGetCall } from "../../../../api/ApiCall"; +import { useEffect } from "react"; + +const Page = () => { + const userSettingsDefaults = useSettings(); + const router = useRouter(); + const { id } = router.query; + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + tenantFilter: userSettingsDefaults.currentTenant, + }, + }); + + // Fetch template data + const { data: template, isFetching } = ApiGetCall({ + url: `/api/ListAssignmentFilterTemplates?id=${id}`, + queryKey: `AssignmentFilterTemplate-${id}`, + waiting: !!id, + }); + + // Map groupType values to valid radio options + + // Set form values when template data is loaded + useEffect(() => { + if (template) { + const templateData = template[0]; + + // Make sure we have the necessary data before proceeding + if (templateData) { + formControl.reset({ + GUID: templateData.GUID, + displayName: templateData.displayName, + description: templateData.description, + platform: templateData.platform, + rule: templateData.rule, + assignmentFilterManagementType: templateData.assignmentFilterManagementType, + tenantFilter: userSettingsDefaults.currentTenant, + }); + } + } + }, [template, formControl, userSettingsDefaults.currentTenant]); + + return ( + <> + + {/* Add debugging output to check what values are set */} +
    {JSON.stringify(formControl.watch(), null, 2)}
    + + + + +
    + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/endpoint/MEM/assignment-filter-templates/index.js b/src/pages/endpoint/MEM/assignment-filter-templates/index.js new file mode 100644 index 000000000000..5634b8b7e699 --- /dev/null +++ b/src/pages/endpoint/MEM/assignment-filter-templates/index.js @@ -0,0 +1,133 @@ +import { Button } from "@mui/material"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { AddBox, RocketLaunch, Delete, GitHub, Edit } from "@mui/icons-material"; +import Link from "next/link"; +import { ApiGetCall } from "../../../../api/ApiCall"; +import { CippPropertyListCard } from "../../../../components/CippCards/CippPropertyListCard"; +import { getCippTranslation } from "../../../../utils/get-cipp-translation"; +import { getCippFormatting } from "../../../../utils/get-cipp-formatting"; + +const Page = () => { + const pageTitle = "Assignment Filter Templates"; + const integrations = ApiGetCall({ + url: "/api/ListExtensionsConfig", + queryKey: "Integrations", + refetchOnMount: false, + refetchOnReconnect: false, + }); + const actions = [ + { + label: "Edit Template", + icon: , + link: "/endpoint/MEM/assignment-filter-templates/edit?id=[GUID]", + }, + { + label: "Save to GitHub", + type: "POST", + url: "/api/ExecCommunityRepo", + icon: , + data: { + Action: "UploadTemplate", + GUID: "GUID", + }, + fields: [ + { + label: "Repository", + name: "FullName", + type: "select", + api: { + url: "/api/ListCommunityRepos", + data: { + WriteAccess: true, + }, + queryKey: "CommunityRepos-Write", + dataKey: "Results", + valueField: "FullName", + labelField: "FullName", + }, + multiple: false, + creatable: false, + required: true, + validators: { + required: { value: true, message: "This field is required" }, + }, + }, + { + label: "Commit Message", + placeholder: "Enter a commit message for adding this file to GitHub", + name: "Message", + type: "textField", + multiline: true, + required: true, + rows: 4, + }, + ], + confirmText: "Are you sure you want to save this template to the selected repository?", + condition: () => integrations.isSuccess && integrations?.data?.GitHub?.Enabled, + }, + { + label: "Delete Template", + type: "POST", + url: "/api/RemoveAssignmentFilterTemplate", + icon: , + data: { + ID: "GUID", + }, + confirmText: "Do you want to delete the template?", + multiPost: false, + }, + ]; + + const offCanvas = { + children: (data) => { + const keys = Object.keys(data).filter( + (key) => !key.includes("@odata") && !key.includes("@data") + ); + const properties = []; + keys.forEach((key) => { + if (data[key] && data[key].length > 0) { + properties.push({ + label: getCippTranslation(key), + value: getCippFormatting(data[key], key), + }); + } + }); + return ( + + ); + }, + }; + + return ( + + + + + } + offCanvas={offCanvas} + simpleColumns={["displayName", "description", "platform", "GUID"]} + /> + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/endpoint/MEM/assignment-filters/add.jsx b/src/pages/endpoint/MEM/assignment-filters/add.jsx new file mode 100644 index 000000000000..c4aead07619d --- /dev/null +++ b/src/pages/endpoint/MEM/assignment-filters/add.jsx @@ -0,0 +1,42 @@ +import { Box } from "@mui/material"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { useForm } from "react-hook-form"; +import { useSettings } from "../../../../hooks/use-settings"; +import { useEffect } from "react"; +import CippAddAssignmentFilterForm from "../../../../components/CippFormPages/CippAddAssignmentFilterForm"; + +const Page = () => { + const userSettingsDefaults = useSettings(); + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + assignmentFilterManagementType: "devices", + }, + }); + + useEffect(() => { + formControl.setValue("tenantFilter", userSettingsDefaults?.currentTenant || ""); + }, [userSettingsDefaults, formControl]); + + return ( + <> + + + + + + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/endpoint/MEM/assignment-filters/edit.jsx b/src/pages/endpoint/MEM/assignment-filters/edit.jsx new file mode 100644 index 000000000000..f5a6dbad163f --- /dev/null +++ b/src/pages/endpoint/MEM/assignment-filters/edit.jsx @@ -0,0 +1,78 @@ +import { useEffect, useState } from "react"; +import { Box } from "@mui/material"; +import { useForm } from "react-hook-form"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import { useRouter } from "next/router"; +import { ApiGetCall } from "../../../../api/ApiCall"; +import { useSettings } from "../../../../hooks/use-settings"; +import CippAddAssignmentFilterForm from "../../../../components/CippFormPages/CippAddAssignmentFilterForm"; + +const EditAssignmentFilter = () => { + const router = useRouter(); + const { filterId } = router.query; + const [filterIdReady, setFilterIdReady] = useState(false); + const tenantFilter = useSettings().currentTenant; + + const filterInfo = ApiGetCall({ + url: `/api/ListAssignmentFilters?filterId=${filterId}&tenantFilter=${tenantFilter}`, + queryKey: `ListAssignmentFilters-${filterId}`, + waiting: filterIdReady, + }); + + useEffect(() => { + if (filterId) { + setFilterIdReady(true); + filterInfo.refetch(); + } + }, [router.query, filterId, tenantFilter]); + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + tenantFilter: tenantFilter, + assignmentFilterManagementType: "devices", + }, + }); + + useEffect(() => { + if (filterInfo.isSuccess && filterInfo.data) { + const filter = Array.isArray(filterInfo.data) ? filterInfo.data[0] : filterInfo.data; + + if (filter) { + const formValues = { + tenantFilter: tenantFilter, + filterId: filter.id, + displayName: filter.displayName || "", + description: filter.description || "", + platform: filter.platform || "", + rule: filter.rule || "", + assignmentFilterManagementType: filter.assignmentFilterManagementType || "devices", + }; + + formControl.reset(formValues); + } + } + }, [filterInfo.isSuccess, filterInfo.data, tenantFilter]); + + return ( + <> + + + + + + + ); +}; + +EditAssignmentFilter.getLayout = (page) => {page}; + +export default EditAssignmentFilter; diff --git a/src/pages/endpoint/MEM/assignment-filters/index.js b/src/pages/endpoint/MEM/assignment-filters/index.js new file mode 100644 index 000000000000..462647494c98 --- /dev/null +++ b/src/pages/endpoint/MEM/assignment-filters/index.js @@ -0,0 +1,92 @@ +import { Button } from "@mui/material"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import Link from "next/link"; +import { TrashIcon } from "@heroicons/react/24/outline"; +import { Edit, Add, Book } from "@mui/icons-material"; +import { Stack } from "@mui/system"; +import { useSettings } from "../../../../hooks/use-settings"; + +const Page = () => { + const pageTitle = "Assignment Filters"; + const { currentTenant } = useSettings(); + + const actions = [ + { + label: "Create template based on filter", + type: "POST", + url: "/api/AddAssignmentFilterTemplate", + icon: , + data: { + displayName: "displayName", + description: "description", + platform: "platform", + rule: "rule", + assignmentFilterManagementType: "assignmentFilterManagementType", + }, + confirmText: "Are you sure you want to create a template based on this filter?", + multiPost: false, + }, + { + label: "Edit Filter", + link: "/endpoint/MEM/assignment-filters/edit?filterId=[id]", + multiPost: false, + icon: , + color: "success", + }, + { + label: "Delete Filter", + type: "POST", + url: "/api/ExecAssignmentFilter", + icon: , + data: { + ID: "id", + Action: "Delete", + }, + confirmText: "Are you sure you want to delete this assignment filter?", + multiPost: false, + }, + ]; + + const offCanvas = { + extendedInfoFields: [ + "displayName", + "description", + "id", + "platform", + "rule", + "assignmentFilterManagementType", + "createdDateTime", + "lastModifiedDateTime", + ], + actions: actions, + }; + + return ( + + +
    + } + apiUrl="/api/ListAssignmentFilters" + queryKey={`assignment-filters-${currentTenant}`} + actions={actions} + offCanvas={offCanvas} + simpleColumns={[ + "displayName", + "description", + "platform", + "assignmentFilterManagementType", + "rule", + ]} + /> + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/endpoint/MEM/devices/device/index.jsx b/src/pages/endpoint/MEM/devices/device/index.jsx new file mode 100644 index 000000000000..6caa775a2616 --- /dev/null +++ b/src/pages/endpoint/MEM/devices/device/index.jsx @@ -0,0 +1,1014 @@ +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; +import { useSettings } from "../../../../../hooks/use-settings"; +import { useRouter } from "next/router"; +import { ApiGetCall, ApiPostCall } from "../../../../../api/ApiCall"; +import CippFormSkeleton from "../../../../../components/CippFormPages/CippFormSkeleton"; +import CalendarIcon from "@heroicons/react/24/outline/CalendarIcon"; +import { + PhoneAndroid, + Computer, + PhoneIphone, + Laptop, + Launch, + Security, + CheckCircle, + Warning, + Sync, + RestartAlt, + LocationOn, + Password, + PasswordOutlined, + Key, + Edit, + FindInPage, + Shield, + Archive, + AutoMode, + Recycling, + ManageAccounts, + Fingerprint, + Group, +} from "@mui/icons-material"; +import { HeaderedTabbedLayout } from "../../../../../layouts/HeaderedTabbedLayout"; +import tabOptions from "./tabOptions"; +import { CippCopyToClipBoard } from "../../../../../components/CippComponents/CippCopyToClipboard"; +import { Box, Stack } from "@mui/system"; +import { Grid } from "@mui/system"; +import { SvgIcon, Typography, Card, CardHeader, Divider } from "@mui/material"; +import { CippBannerListCard } from "../../../../../components/CippCards/CippBannerListCard"; +import { CippTimeAgo } from "../../../../../components/CippComponents/CippTimeAgo"; +import { useEffect, useState, useRef } from "react"; +import { PropertyList } from "../../../../../components/property-list"; +import { PropertyListItem } from "../../../../../components/property-list-item"; +import { CippDataTable } from "../../../../../components/CippTable/CippDataTable"; +import { CippHead } from "../../../../../components/CippComponents/CippHead"; +import { Button } from "@mui/material"; +import { getCippFormatting } from "../../../../../utils/get-cipp-formatting"; +import { PencilIcon, EyeIcon } from "@heroicons/react/24/outline"; + +const Page = () => { + const userSettingsDefaults = useSettings(); + const router = useRouter(); + const { deviceId } = router.query; + const [waiting, setWaiting] = useState(false); + + useEffect(() => { + if (deviceId) { + setWaiting(true); + } + }, [deviceId]); + + const deviceRequest = ApiGetCall({ + url: "/api/ListGraphRequest", + data: { + Endpoint: `deviceManagement/managedDevices/${deviceId}`, + tenantFilter: router.query.tenantFilter ?? userSettingsDefaults.currentTenant, + }, + queryKey: `ManagedDevice-${deviceId}`, + waiting: waiting, + }); + + const deviceBulkRequest = ApiPostCall({ + urlFromData: true, + }); + + // Handle response structure - ListGraphRequest may wrap single items in Results array + // Try Results array first, then Results as object, then data directly + let deviceData = null; + if (deviceRequest.isSuccess && deviceRequest.data) { + if (Array.isArray(deviceRequest.data.Results)) { + deviceData = deviceRequest.data.Results[0]; + } else if (deviceRequest.data.Results) { + deviceData = deviceRequest.data.Results; + } else { + deviceData = deviceRequest.data; + } + } + + function refreshFunction() { + if (!deviceId) return; + const requests = [ + { + id: "deviceCompliance", + url: `/deviceManagement/managedDevices/${deviceId}/deviceCompliancePolicyStates`, + method: "GET", + }, + { + id: "deviceConfiguration", + url: `/deviceManagement/managedDevices/${deviceId}/deviceConfigurationStates`, + method: "GET", + }, + { + id: "detectedApps", + url: `/deviceManagement/managedDevices/${deviceId}/detectedApps`, + method: "GET", + }, + { + id: "users", + url: `/deviceManagement/managedDevices/${deviceId}/users`, + method: "GET", + }, + { + id: "deviceMemberOf", + url: `/devices/${deviceId}/transitiveMemberOf/microsoft.graph.group`, + method: "GET", + }, + ]; + + deviceBulkRequest.mutate({ + url: "/api/ListGraphBulkRequest", + data: { + Requests: requests, + tenantFilter: userSettingsDefaults.currentTenant, + }, + }); + } + + useEffect(() => { + if (deviceId && userSettingsDefaults.currentTenant && !deviceBulkRequest.isSuccess) { + refreshFunction(); + } + }, [deviceId, userSettingsDefaults.currentTenant, deviceBulkRequest.isSuccess]); + + const bulkData = deviceBulkRequest?.data?.data ?? []; + const deviceComplianceData = bulkData?.find((item) => item.id === "deviceCompliance"); + const deviceConfigurationData = bulkData?.find((item) => item.id === "deviceConfiguration"); + const detectedAppsData = bulkData?.find((item) => item.id === "detectedApps"); + const usersData = bulkData?.find((item) => item.id === "users"); + const deviceMemberOfData = bulkData?.find((item) => item.id === "deviceMemberOf"); + + const deviceCompliance = deviceComplianceData?.body?.value || []; + const deviceConfiguration = deviceConfigurationData?.body?.value || []; + const detectedApps = detectedAppsData?.body?.value || []; + const users = usersData?.body?.value || []; + const deviceMemberOf = deviceMemberOfData?.body?.value || []; + + // Helper function to format bytes to GB (matching getCippFormatting pattern) + const formatBytesToGB = (bytes) => { + if (!bytes || bytes === 0) return "N/A"; + const gb = bytes / 1024 / 1024 / 1024; + return `${gb.toFixed(2)} GB`; + }; + + // Set the title and subtitle for the layout + const title = deviceRequest.isSuccess ? deviceData?.deviceName : "Loading..."; + + const subtitle = deviceRequest.isSuccess + ? [ + { + icon: , + text: , + }, + { + icon: , + text: , + }, + { + icon: , + text: ( + <> + Last Sync: + + ), + }, + { + icon: , + text: ( + + ), + }, + ] + : []; + + const data = deviceData; + + // Device actions from the devices table page + const deviceActions = [ + { + label: "View in Intune", + link: `https://intune.microsoft.com/${userSettingsDefaults.currentTenant}/#view/Microsoft_Intune_Devices/DeviceSettingsMenuBlade/~/overview/mdmDeviceId/${deviceId}`, + color: "info", + icon: , + target: "_blank", + multiPost: false, + external: true, + }, + { + label: "Change Primary User", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "!users", + }, + fields: [ + { + type: "autoComplete", + name: "user", + label: "Select User", + multiple: false, + creatable: false, + api: { + url: "/api/ListGraphRequest", + data: { + Endpoint: "users", + $select: "id,displayName,userPrincipalName", + $top: 999, + $count: true, + }, + queryKey: "ListUsersAutoComplete", + dataKey: "Results", + labelField: (user) => `${user.displayName} (${user.userPrincipalName})`, + valueField: "id", + addedField: { + userPrincipalName: "userPrincipalName", + }, + showRefresh: true, + }, + }, + ], + confirmText: "Select the User to set as the primary user for [deviceName]", + }, + { + label: "Rename Device", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "setDeviceName", + }, + confirmText: "Enter the new name for the device", + fields: [ + { + type: "textField", + name: "input", + label: "New Device Name", + required: true, + }, + ], + }, + { + label: "Sync Device", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "syncDevice", + }, + confirmText: "Are you sure you want to sync [deviceName]?", + }, + { + label: "Reboot Device", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "rebootNow", + }, + confirmText: "Are you sure you want to reboot [deviceName]?", + }, + { + label: "Locate Device", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "locateDevice", + }, + confirmText: "Are you sure you want to locate [deviceName]?", + }, + { + label: "Retrieve LAPS password", + type: "POST", + icon: , + url: "/api/ExecGetLocalAdminPassword", + data: { + GUID: "azureADDeviceId", + }, + condition: (row) => row.operatingSystem === "Windows", + confirmText: "Are you sure you want to retrieve the local admin password for [deviceName]?", + }, + { + label: "Rotate Local Admin Password", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "RotateLocalAdminPassword", + }, + condition: (row) => row.operatingSystem === "Windows", + confirmText: "Are you sure you want to rotate the password for [deviceName]?", + }, + { + label: "Retrieve BitLocker Keys", + type: "POST", + icon: , + url: "/api/ExecGetRecoveryKey", + data: { + GUID: "azureADDeviceId", + RecoveryKeyType: "!BitLocker", + }, + condition: (row) => row.operatingSystem === "Windows", + confirmText: "Are you sure you want to retrieve the BitLocker keys for [deviceName]?", + }, + { + label: "Retrieve FileVault Key", + type: "POST", + icon: , + url: "/api/ExecGetRecoveryKey", + data: { + GUID: "id", + RecoveryKeyType: "!FileVault", + }, + condition: (row) => row.operatingSystem === "macOS", + confirmText: "Are you sure you want to retrieve the FileVault key for [deviceName]?", + }, + { + label: "Reset Passcode", + type: "POST", + icon: , + url: "/api/ExecDevicePasscodeAction", + data: { + GUID: "id", + Action: "resetPasscode", + }, + condition: (row) => row.operatingSystem === "Android", + confirmText: + "Are you sure you want to reset the passcode for [deviceName]? A new passcode will be generated and displayed.", + }, + { + label: "Remove Passcode", + type: "POST", + icon: , + url: "/api/ExecDevicePasscodeAction", + data: { + GUID: "id", + Action: "resetPasscode", + }, + condition: (row) => row.operatingSystem === "iOS", + confirmText: + "Are you sure you want to remove the passcode from [deviceName]? This will remove the device passcode requirement.", + }, + { + label: "Windows Defender Full Scan", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "WindowsDefenderScan", + quickScan: false, + }, + confirmText: "Are you sure you want to perform a full scan on [deviceName]?", + }, + { + label: "Windows Defender Quick Scan", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "WindowsDefenderScan", + quickScan: true, + }, + confirmText: "Are you sure you want to perform a quick scan on [deviceName]?", + }, + { + label: "Update Windows Defender", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "windowsDefenderUpdateSignatures", + }, + confirmText: + "Are you sure you want to update the Windows Defender signatures for [deviceName]?", + }, + { + label: "Generate logs and ship to MEM", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "createDeviceLogCollectionRequest", + }, + condition: (row) => row.operatingSystem === "Windows", + confirmText: + "Are you sure you want to generate logs for device [deviceName] and ship these to MEM?", + }, + { + label: "Fresh Start (Remove user data)", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "cleanWindowsDevice", + keepUserData: false, + }, + condition: (row) => row.operatingSystem === "Windows", + confirmText: "Are you sure you want to Fresh Start [deviceName]?", + }, + { + label: "Fresh Start (Do not remove user data)", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "cleanWindowsDevice", + keepUserData: true, + }, + condition: (row) => row.operatingSystem === "Windows", + confirmText: "Are you sure you want to Fresh Start [deviceName]?", + }, + { + label: "Wipe Device, keep enrollment data", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "cleanWindowsDevice", + keepUserData: false, + keepEnrollmentData: true, + }, + condition: (row) => row.operatingSystem === "Windows", + confirmText: "Are you sure you want to wipe [deviceName], and retain enrollment data?", + }, + { + label: "Wipe Device, remove enrollment data", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "cleanWindowsDevice", + keepUserData: false, + keepEnrollmentData: false, + }, + condition: (row) => row.operatingSystem === "Windows", + confirmText: "Are you sure you want to wipe [deviceName], and remove enrollment data?", + }, + { + label: "Wipe Device, keep enrollment data, and continue at powerloss", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "cleanWindowsDevice", + keepEnrollmentData: true, + keepUserData: false, + useProtectedWipe: true, + }, + condition: (row) => row.operatingSystem === "Windows", + confirmText: + "Are you sure you want to wipe [deviceName]? This will retain enrollment data. Continuing at powerloss may cause boot issues if wipe is interrupted.", + }, + { + label: "Wipe Device, remove enrollment data, and continue at powerloss", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "cleanWindowsDevice", + keepEnrollmentData: false, + keepUserData: false, + useProtectedWipe: true, + }, + condition: (row) => row.operatingSystem === "Windows", + confirmText: + "Are you sure you want to wipe [deviceName]? This will also remove enrollment data. Continuing at powerloss may cause boot issues if wipe is interrupted.", + }, + { + label: "Autopilot Reset", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "wipe", + keepUserData: "false", + keepEnrollmentData: "true", + }, + condition: (row) => row.operatingSystem === "Windows", + confirmText: "Are you sure you want to Autopilot Reset [deviceName]?", + }, + { + label: "Delete device", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "delete", + }, + confirmText: "Are you sure you want to delete [deviceName]?", + }, + { + label: "Retire device", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "retire", + }, + confirmText: "Are you sure you want to retire [deviceName]?", + }, + ]; + + // Get device icon based on OS + const getDeviceIcon = () => { + if (!data?.operatingSystem) return ; + const os = data.operatingSystem.toLowerCase(); + if (os.includes("android")) return ; + if (os.includes("ios") || os.includes("iphone") || os.includes("ipad")) return ; + if (os.includes("windows") || os.includes("macos")) return ; + return ; + }; + + // Prepare compliance policy items + let compliancePolicyItems = []; + if (deviceCompliance.length > 0) { + compliancePolicyItems = deviceCompliance.map((policy, index) => ({ + id: index, + cardLabelBox: { + cardLabelBoxHeader: policy.complianceState === "compliant" ? : , + }, + text: policy.displayName || "Unknown Policy", + subtext: `State: ${policy.complianceState || "Unknown"}`, + statusColor: policy.complianceState === "compliant" ? "success.main" : "warning.main", + statusText: policy.complianceState || "Unknown", + propertyItems: [ + { + label: "Setting Count", + value: policy.settingCount || "N/A", + }, + { + label: "Setting States", + value: policy.settingStates?.length || 0, + }, + ], + })); + } else if (deviceComplianceData?.status !== 200) { + compliancePolicyItems = [ + { + id: 1, + cardLabelBox: "!", + text: "Error loading compliance policies", + subtext: deviceComplianceData?.error?.message || "Unknown error", + statusColor: "error.main", + statusText: "Error", + propertyItems: [], + }, + ]; + } else { + compliancePolicyItems = [ + { + id: 1, + cardLabelBox: "-", + text: "No compliance policies available", + subtext: "This device does not have any compliance policies assigned.", + statusColor: "warning.main", + statusText: "No Policies", + propertyItems: [], + }, + ]; + } + + // Prepare configuration policy items + let configurationPolicyItems = []; + if (deviceConfiguration.length > 0) { + configurationPolicyItems = deviceConfiguration.map((policy, index) => ({ + id: index, + cardLabelBox: { + cardLabelBoxHeader: policy.state === "compliant" ? : , + }, + text: policy.displayName || "Unknown Policy", + subtext: `State: ${policy.state || "Unknown"}`, + statusColor: policy.state === "compliant" ? "success.main" : "warning.main", + statusText: policy.state || "Unknown", + propertyItems: [ + { + label: "Setting Count", + value: policy.settingCount || "N/A", + }, + { + label: "Setting States", + value: policy.settingStates?.length || 0, + }, + ], + })); + } else if (deviceConfigurationData?.status !== 200) { + configurationPolicyItems = [ + { + id: 1, + cardLabelBox: "!", + text: "Error loading configuration policies", + subtext: deviceConfigurationData?.error?.message || "Unknown error", + statusColor: "error.main", + statusText: "Error", + propertyItems: [], + }, + ]; + } else { + configurationPolicyItems = [ + { + id: 1, + cardLabelBox: "-", + text: "No configuration policies available", + subtext: "This device does not have any configuration policies assigned.", + statusColor: "warning.main", + statusText: "No Policies", + propertyItems: [], + }, + ]; + } + + // Prepare detected apps items + let detectedAppsItems = []; + if (detectedApps.length > 0) { + detectedAppsItems = [ + { + id: 1, + cardLabelBox: { + cardLabelBoxHeader: , + }, + text: "Detected Applications", + subtext: `${detectedApps.length} application(s) detected`, + statusText: `${detectedApps.length} App(s)`, + statusColor: "info.main", + table: { + title: "Detected Applications", + hideTitle: true, + data: detectedApps, + simpleColumns: ["displayName", "version", "platform"], + refreshFunction: refreshFunction, + }, + }, + ]; + } else if (detectedAppsData?.status !== 200) { + detectedAppsItems = [ + { + id: 1, + cardLabelBox: "!", + text: "Error loading detected applications", + subtext: detectedAppsData?.error?.message || "Unknown error", + statusColor: "error.main", + statusText: "Error", + propertyItems: [], + }, + ]; + } else { + detectedAppsItems = [ + { + id: 1, + cardLabelBox: "-", + text: "No detected applications", + subtext: "No applications have been detected on this device.", + statusColor: "warning.main", + statusText: "No Apps", + propertyItems: [], + }, + ]; + } + + // Prepare users items + let usersItems = []; + if (users.length > 0) { + usersItems = [ + { + id: 1, + cardLabelBox: { + cardLabelBoxHeader: , + }, + text: "Device Users", + subtext: `${users.length} user(s) associated with this device`, + statusText: `${users.length} User(s)`, + statusColor: "info.main", + table: { + title: "Device Users", + hideTitle: true, + data: users, + simpleColumns: ["displayName", "userPrincipalName", "mail"], + refreshFunction: refreshFunction, + actions: [ + { + icon: , + label: "View User", + link: `/identity/administration/users/user?userId=[id]&tenantFilter=${userSettingsDefaults.currentTenant}`, + }, + ], + }, + }, + ]; + } else if (usersData?.status !== 200) { + usersItems = [ + { + id: 1, + cardLabelBox: "!", + text: "Error loading device users", + subtext: usersData?.error?.message || "Unknown error", + statusColor: "error.main", + statusText: "Error", + propertyItems: [], + }, + ]; + } else { + usersItems = [ + { + id: 1, + cardLabelBox: "-", + text: "No users associated", + subtext: "No users are currently associated with this device.", + statusColor: "warning.main", + statusText: "No Users", + propertyItems: [], + }, + ]; + } + + // Prepare group membership items + const groupMembershipItems = deviceMemberOf.length > 0 + ? [ + { + id: 1, + cardLabelBox: { + cardLabelBoxHeader: , + }, + text: "Groups", + subtext: "List of groups the device is a member of", + statusText: ` ${ + deviceMemberOf?.filter((item) => item?.["@odata.type"] === "#microsoft.graph.group") + .length + } Group(s)`, + statusColor: "info.main", + table: { + title: "Group Memberships", + hideTitle: true, + actions: [ + { + icon: , + label: "Edit Group", + link: "/identity/administration/groups/edit?groupId=[id]&groupType=[calculatedGroupType]", + }, + ], + data: deviceMemberOf?.filter( + (item) => item?.["@odata.type"] === "#microsoft.graph.group", + ), + refreshFunction: refreshFunction, + simpleColumns: ["displayName", "groupTypes", "securityEnabled", "mailEnabled"], + }, + }, + ] + : deviceMemberOfData?.status !== 200 + ? [ + { + id: 1, + cardLabelBox: "!", + text: "Error loading device group memberships", + subtext: deviceMemberOfData?.error?.message || "Unknown error", + statusColor: "error.main", + statusText: "Error", + propertyItems: [], + }, + ] + : [ + { + id: 1, + cardLabelBox: "-", + text: "No group memberships", + subtext: "This device is not a member of any groups.", + statusColor: "warning.main", + statusText: "No Groups", + propertyItems: [], + }, + ]; + + return ( + + {deviceRequest.isLoading && } + {deviceRequest.isSuccess && ( + + + + + + + + + + {getDeviceIcon()} + {data?.deviceName || "N/A"} + + {data?.manufacturer} {data?.model} + +
    + } + /> + + + + Device Name: + + + {getCippFormatting(data?.deviceName, "deviceName") || "N/A"} + + + + + Device ID: + + + {getCippFormatting(data?.id, "id") || "N/A"} + + + + + Operating System: + + + {data?.operatingSystem || "N/A"} {data?.osVersion || ""} + + + + + Manufacturer: + + {data?.manufacturer || "N/A"} + + + + Model: + + {data?.model || "N/A"} + + + + Serial Number: + + {data?.serialNumber || "N/A"} + + + + Compliance State: + + + {getCippFormatting(data?.complianceState, "complianceState") || "N/A"} + + + + + Enrolled Date: + + + {data?.enrolledDateTime + ? new Date(data.enrolledDateTime).toLocaleString() + : "N/A"} + + + + + Last Sync: + + + {data?.lastSyncDateTime + ? new Date(data.lastSyncDateTime).toLocaleString() + : "N/A"} + + + + + Owner Type: + + + {getCippFormatting(data?.managedDeviceOwnerType, "managedDeviceOwnerType") || + "N/A"} + + + + + Enrollment Type: + + + {getCippFormatting(data?.deviceEnrollmentType, "deviceEnrollmentType") || + "N/A"} + + + {data?.userPrincipalName && ( + + + Primary User: + + + {getCippFormatting(data?.userPrincipalName, "userPrincipalName") || "N/A"} + + + )} + {data?.totalStorageSpaceInBytes && ( + + + Storage: + + + {formatBytesToGB(data.freeStorageSpaceInBytes || 0)} free of{" "} + {formatBytesToGB(data.totalStorageSpaceInBytes)} + {data.freeStorageSpaceInBytes && + data.totalStorageSpaceInBytes && + ` (${Math.round( + ((data.totalStorageSpaceInBytes - data.freeStorageSpaceInBytes) / + data.totalStorageSpaceInBytes) * + 100, + )}% used)`} + + + )} +
    + } + /> + + +
    + + + Compliance Policies + 0} + /> + Configuration Policies + 0} + /> + Detected Applications + + Associated Users + + Memberships + + + +
    + + )} + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/endpoint/MEM/devices/device/tabOptions.json b/src/pages/endpoint/MEM/devices/device/tabOptions.json new file mode 100644 index 000000000000..e5e134f5566a --- /dev/null +++ b/src/pages/endpoint/MEM/devices/device/tabOptions.json @@ -0,0 +1,6 @@ +[ + { + "label": "View Device", + "path": "/endpoint/MEM/devices/device" + } +] diff --git a/src/pages/endpoint/MEM/devices/index.js b/src/pages/endpoint/MEM/devices/index.js index e3a66509ea79..e8e34e9338d5 100644 --- a/src/pages/endpoint/MEM/devices/index.js +++ b/src/pages/endpoint/MEM/devices/index.js @@ -1,7 +1,10 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { useSettings } from "/src/hooks/use-settings"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { CippApiDialog } from "../../../../components/CippComponents/CippApiDialog.jsx"; +import { useSettings } from "../../../../hooks/use-settings"; +import { useDialog } from "../../../../hooks/use-dialog.js"; import { EyeIcon } from "@heroicons/react/24/outline"; +import { Box, Button } from "@mui/material"; import { Sync, RestartAlt, @@ -9,6 +12,7 @@ import { Password, PasswordOutlined, Key, + Edit, Security, FindInPage, Shield, @@ -21,8 +25,16 @@ import { const Page = () => { const pageTitle = "Devices"; const tenantFilter = useSettings().currentTenant; + const depSyncDialog = useDialog(); const actions = [ + { + label: "View Device", + link: `/endpoint/MEM/devices/device?deviceId=[id]`, + color: "info", + icon: , + multiPost: false, + }, { label: "View in Intune", link: `https://intune.microsoft.com/${tenantFilter}/#view/Microsoft_Intune_Devices/DeviceSettingsMenuBlade/~/overview/mdmDeviceId/[id]`, @@ -67,7 +79,26 @@ const Page = () => { }, }, ], - confirmText: "Select the User to set as the primary user for this device", + confirmText: "Select the User to set as the primary user for [deviceName]", + }, + { + label: "Rename Device", + type: "POST", + icon: , + url: "/api/ExecDeviceAction", + data: { + GUID: "id", + Action: "setDeviceName", + }, + confirmText: "Enter the new name for the device", + fields: [ + { + type: "textField", + name: "input", + label: "New Device Name", + required: true, + }, + ], }, { label: "Sync Device", @@ -78,7 +109,7 @@ const Page = () => { GUID: "id", Action: "syncDevice", }, - confirmText: "Are you sure you want to sync this device?", + confirmText: "Are you sure you want to sync [deviceName]?", }, { label: "Reboot Device", @@ -89,7 +120,7 @@ const Page = () => { GUID: "id", Action: "rebootNow", }, - confirmText: "Are you sure you want to reboot this device?", + confirmText: "Are you sure you want to reboot [deviceName]?", }, { label: "Locate Device", @@ -100,17 +131,18 @@ const Page = () => { GUID: "id", Action: "locateDevice", }, - confirmText: "Are you sure you want to locate this device?", + confirmText: "Are you sure you want to locate [deviceName]?", }, { - label: "Retrieve LAPs password", + label: "Retrieve LAPS password", type: "POST", icon: , url: "/api/ExecGetLocalAdminPassword", data: { GUID: "azureADDeviceId", }, - confirmText: "Are you sure you want to retrieve the local admin password?", + condition: (row) => row.operatingSystem === "Windows", + confirmText: "Are you sure you want to retrieve the local admin password for [deviceName]?", }, { label: "Rotate Local Admin Password", @@ -121,17 +153,58 @@ const Page = () => { GUID: "id", Action: "RotateLocalAdminPassword", }, - confirmText: "Are you sure you want to rotate the password for this device?", + condition: (row) => row.operatingSystem === "Windows", + confirmText: "Are you sure you want to rotate the password for [deviceName]?", }, { - label: "Retrieve Bitlocker Keys", + label: "Retrieve BitLocker Keys", type: "POST", icon: , url: "/api/ExecGetRecoveryKey", data: { GUID: "azureADDeviceId", + RecoveryKeyType: "!BitLocker", + }, + condition: (row) => row.operatingSystem === "Windows", + confirmText: "Are you sure you want to retrieve the BitLocker keys for [deviceName]?", + }, + { + label: "Retrieve FileVault Key", + type: "POST", + icon: , + url: "/api/ExecGetRecoveryKey", + data: { + GUID: "id", + RecoveryKeyType: "!FileVault", + }, + condition: (row) => row.operatingSystem === "macOS", + confirmText: "Are you sure you want to retrieve the FileVault key for [deviceName]?", + }, + { + label: "Reset Passcode", + type: "POST", + icon: , + url: "/api/ExecDevicePasscodeAction", + data: { + GUID: "id", + Action: "resetPasscode", }, - confirmText: "Are you sure you want to retrieve the Bitlocker keys?", + condition: (row) => row.operatingSystem === "Android", + confirmText: + "Are you sure you want to reset the passcode for [deviceName]? A new passcode will be generated and displayed.", + }, + { + label: "Remove Passcode", + type: "POST", + icon: , + url: "/api/ExecDevicePasscodeAction", + data: { + GUID: "id", + Action: "resetPasscode", + }, + condition: (row) => row.operatingSystem === "iOS", + confirmText: + "Are you sure you want to remove the passcode from [deviceName]? This will remove the device passcode requirement.", }, { label: "Windows Defender Full Scan", @@ -143,7 +216,7 @@ const Page = () => { Action: "WindowsDefenderScan", quickScan: false, }, - confirmText: "Are you sure you want to perform a full scan on this device?", + confirmText: "Are you sure you want to perform a full scan on [deviceName]?", }, { label: "Windows Defender Quick Scan", @@ -155,7 +228,7 @@ const Page = () => { Action: "WindowsDefenderScan", quickScan: true, }, - confirmText: "Are you sure you want to perform a quick scan on this device?", + confirmText: "Are you sure you want to perform a quick scan on [deviceName]?", }, { label: "Update Windows Defender", @@ -167,7 +240,7 @@ const Page = () => { Action: "windowsDefenderUpdateSignatures", }, confirmText: - "Are you sure you want to update the Windows Defender signatures for this device?", + "Are you sure you want to update the Windows Defender signatures for [deviceName]?", }, { label: "Generate logs and ship to MEM", @@ -176,23 +249,12 @@ const Page = () => { url: "/api/ExecDeviceAction", data: { GUID: "id", - Action: "CreateDeviceLogCollectionRequest", + Action: "createDeviceLogCollectionRequest", }, - confirmText: "Are you sure you want to generate logs and ship these to MEM?", - }, - /* - { - label: "Rename device", - type: "POST", - icon: null, - url: "/api/ExecDeviceAction", - data: { - GUID: "id", - Action: "setDeviceName", - }, - confirmText: "Enter the new name for the device", + condition: (row) => row.operatingSystem === "Windows", + confirmText: + "Are you sure you want to generate logs for device [deviceName] and ship these to MEM?", }, - */ { label: "Fresh Start (Remove user data)", type: "POST", @@ -203,7 +265,8 @@ const Page = () => { Action: "cleanWindowsDevice", keepUserData: false, }, - confirmText: "Are you sure you want to Fresh Start this device?", + condition: (row) => row.operatingSystem === "Windows", + confirmText: "Are you sure you want to Fresh Start [deviceName]?", }, { label: "Fresh Start (Do not remove user data)", @@ -215,7 +278,8 @@ const Page = () => { Action: "cleanWindowsDevice", keepUserData: true, }, - confirmText: "Are you sure you want to Fresh Start this device?", + condition: (row) => row.operatingSystem === "Windows", + confirmText: "Are you sure you want to Fresh Start [deviceName]?", }, { label: "Wipe Device, keep enrollment data", @@ -228,7 +292,8 @@ const Page = () => { keepUserData: false, keepEnrollmentData: true, }, - confirmText: "Are you sure you want to wipe this device, and retain enrollment data?", + condition: (row) => row.operatingSystem === "Windows", + confirmText: "Are you sure you want to wipe [deviceName], and retain enrollment data?", }, { label: "Wipe Device, remove enrollment data", @@ -241,7 +306,8 @@ const Page = () => { keepUserData: false, keepEnrollmentData: false, }, - confirmText: "Are you sure you want to wipe this device, and remove enrollment data?", + condition: (row) => row.operatingSystem === "Windows", + confirmText: "Are you sure you want to wipe [deviceName], and remove enrollment data?", }, { label: "Wipe Device, keep enrollment data, and continue at powerloss", @@ -255,8 +321,9 @@ const Page = () => { keepUserData: false, useProtectedWipe: true, }, + condition: (row) => row.operatingSystem === "Windows", confirmText: - "Are you sure you want to wipe this device? This will retain enrollment data. Continuing at powerloss may cause boot issues if wipe is interrupted.", + "Are you sure you want to wipe [deviceName]? This will retain enrollment data. Continuing at powerloss may cause boot issues if wipe is interrupted.", }, { label: "Wipe Device, remove enrollment data, and continue at powerloss", @@ -270,8 +337,9 @@ const Page = () => { keepUserData: false, useProtectedWipe: true, }, + condition: (row) => row.operatingSystem === "Windows", confirmText: - "Are you sure you want to wipe this device? This will also remove enrollment data. Continuing at powerloss may cause boot issues if wipe is interrupted.", + "Are you sure you want to wipe [deviceName]? This will also remove enrollment data. Continuing at powerloss may cause boot issues if wipe is interrupted.", }, { label: "Autopilot Reset", @@ -284,7 +352,8 @@ const Page = () => { keepUserData: "false", keepEnrollmentData: "true", }, - confirmText: "Are you sure you want to Autopilot Reset this device?", + condition: (row) => row.operatingSystem === "Windows", + confirmText: "Are you sure you want to Autopilot Reset [deviceName]?", }, { label: "Delete device", @@ -295,7 +364,7 @@ const Page = () => { GUID: "id", Action: "delete", }, - confirmText: "Are you sure you want to retire this device?", + confirmText: "Are you sure you want to delete [deviceName]?", }, { label: "Retire device", @@ -306,7 +375,7 @@ const Page = () => { GUID: "id", Action: "retire", }, - confirmText: "Are you sure you want to retire this device?", + confirmText: "Are you sure you want to retire [deviceName]?", }, ]; @@ -315,26 +384,52 @@ const Page = () => { actions: actions, }; + const simpleColumns = [ + "deviceName", + "userPrincipalName", + "complianceState", + "manufacturer", + "model", + "operatingSystem", + "osVersion", + "enrolledDateTime", + "managedDeviceOwnerType", + "deviceEnrollmentType", + "joinType", + ]; + return ( - + <> + + + + } + /> + + ); }; diff --git a/src/pages/endpoint/MEM/list-appprotection-policies/index.js b/src/pages/endpoint/MEM/list-appprotection-policies/index.js index 0e889eaee6a7..0c8fc70161fc 100644 --- a/src/pages/endpoint/MEM/list-appprotection-policies/index.js +++ b/src/pages/endpoint/MEM/list-appprotection-policies/index.js @@ -1,37 +1,23 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Book } from "@mui/icons-material"; -import { TrashIcon } from "@heroicons/react/24/outline"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { PermissionButton } from "../../../../utils/permissions.js"; +import { CippPolicyDeployDrawer } from "../../../../components/CippComponents/CippPolicyDeployDrawer.jsx"; +import { useSettings } from "../../../../hooks/use-settings.js"; +import { useCippIntunePolicyActions } from "../../../../components/CippComponents/CippIntunePolicyActions.jsx"; const Page = () => { const pageTitle = "App Protection & Configuration Policies"; + const cardButtonPermissions = ["Endpoint.MEM.ReadWrite"]; + const tenant = useSettings().currentTenant; - const actions = [ - { - label: "Create template based on policy", - type: "POST", - url: "/api/AddIntuneTemplate", - data: { - ID: "id", - URLName: "managedAppPolicies", - }, - confirmText: "Are you sure you want to create a template based on this policy?", - icon: , - color: "info", + const actions = useCippIntunePolicyActions(tenant, "URLName", { + templateData: { + ID: "id", + URLName: "managedAppPolicies", }, - { - label: "Delete Policy", - type: "POST", - url: "/api/RemovePolicy", - data: { - ID: "id", - URLName: "managedAppPolicies", - }, - confirmText: "Are you sure you want to delete this policy?", - icon: , - color: "danger", - }, - ]; + platformType: "deviceAppManagement", + deleteUrlName: "URLName", + }); const offCanvas = { extendedInfoFields: [ @@ -39,25 +25,33 @@ const Page = () => { "displayName", "lastModifiedDateTime", "PolicyTypeName", + "PolicySource", ], actions: actions, }; - const simpleColumns = ["displayName", "isAssigned", "lastModifiedDateTime"]; + const simpleColumns = [ + "displayName", + "PolicyTypeName", + "PolicyAssignment", + "PolicyExclude", + "lastModifiedDateTime", + ]; return ( + } /> ); }; diff --git a/src/pages/endpoint/MEM/list-compliance-policies/index.js b/src/pages/endpoint/MEM/list-compliance-policies/index.js index a55d76931cc3..b3394023c492 100644 --- a/src/pages/endpoint/MEM/list-compliance-policies/index.js +++ b/src/pages/endpoint/MEM/list-compliance-policies/index.js @@ -1,76 +1,22 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Book, LaptopChromebook } from "@mui/icons-material"; -import { GlobeAltIcon, TrashIcon, UserIcon } from "@heroicons/react/24/outline"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { PermissionButton } from "../../../../utils/permissions.js"; +import { CippPolicyDeployDrawer } from "../../../../components/CippComponents/CippPolicyDeployDrawer.jsx"; +import { useSettings } from "../../../../hooks/use-settings.js"; +import { useCippIntunePolicyActions } from "../../../../components/CippComponents/CippIntunePolicyActions.jsx"; const Page = () => { const pageTitle = "Intune Compliance Policies"; + const cardButtonPermissions = ["Endpoint.MEM.ReadWrite"]; + const tenant = useSettings().currentTenant; - const actions = [ - { - label: "Create template based on policy", - type: "POST", - url: "/api/AddIntuneTemplate", - data: { - ID: "id", - ODataType: "@odata.type", - }, - confirmText: "Are you sure you want to create a template based on this policy?", - icon: , - color: "info", + const actions = useCippIntunePolicyActions(tenant, "deviceCompliancePolicies", { + templateData: { + ID: "id", + ODataType: "@odata.type", }, - { - label: "Assign to All Users", - type: "POST", - url: "/api/ExecAssignPolicy", - data: { - AssignTo: "allLicensedUsers", - ID: "id", - type: "deviceCompliancePolicies", - }, - confirmText: "Are you sure you want to assign this policy to all users?", - icon: , - color: "info", - }, - { - label: "Assign to All Devices", - type: "POST", - url: "/api/ExecAssignPolicy", - data: { - AssignTo: "AllDevices", - ID: "id", - type: "deviceCompliancePolicies", - }, - confirmText: "Are you sure you want to assign this policy to all devices?", - icon: , - color: "info", - }, - { - label: "Assign Globally (All Users / All Devices)", - type: "POST", - url: "/api/ExecAssignPolicy", - data: { - AssignTo: "AllDevicesAndUsers", - ID: "id", - type: "deviceCompliancePolicies", - }, - confirmText: "Are you sure you want to assign this policy to all users and devices?", - icon: , - color: "info", - }, - { - label: "Delete Policy", - type: "POST", - url: "/api/RemovePolicy", - data: { - ID: "id", - URLName: "deviceCompliancePolicies", - }, - confirmText: "Are you sure you want to delete this policy?", - icon: , - color: "danger", - }, - ]; + deleteUrlName: "deviceCompliancePolicies", + }); const offCanvas = { extendedInfoFields: [ @@ -82,23 +28,29 @@ const Page = () => { actions: actions, }; - const simpleColumns = ["displayName", "description", "lastModifiedDateTime"]; + const simpleColumns = [ + "displayName", + "PolicyTypeName", + "PolicyAssignment", + "PolicyExclude", + "description", + "lastModifiedDateTime", + ]; return ( + } /> ); }; diff --git a/src/pages/endpoint/MEM/list-policies/index.js b/src/pages/endpoint/MEM/list-policies/index.js index 79a705984f39..1b4d2d2c97bc 100644 --- a/src/pages/endpoint/MEM/list-policies/index.js +++ b/src/pages/endpoint/MEM/list-policies/index.js @@ -1,76 +1,22 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Book, LaptopChromebook } from "@mui/icons-material"; -import { GlobeAltIcon, TrashIcon, UserIcon } from "@heroicons/react/24/outline"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { PermissionButton } from "../../../../utils/permissions.js"; +import { CippPolicyDeployDrawer } from "../../../../components/CippComponents/CippPolicyDeployDrawer.jsx"; +import { useSettings } from "../../../../hooks/use-settings.js"; +import { useCippIntunePolicyActions } from "../../../../components/CippComponents/CippIntunePolicyActions.jsx"; const Page = () => { const pageTitle = "Configuration Policies"; + const cardButtonPermissions = ["Endpoint.MEM.ReadWrite"]; + const tenant = useSettings().currentTenant; - const actions = [ - { - label: "Create template based on policy", - type: "POST", - url: "/api/AddIntuneTemplate", - data: { - ID: "id", - URLName: "URLName", - }, - confirmText: "Are you sure you want to create a template based on this policy?", - icon: , - color: "info", + const actions = useCippIntunePolicyActions(tenant, "URLName", { + templateData: { + ID: "id", + URLName: "URLName", }, - { - label: "Assign to All Users", - type: "POST", - url: "/api/ExecAssignPolicy", - data: { - AssignTo: "allLicensedUsers", - ID: "id", - type: "URLName", - }, - confirmText: "Are you sure you want to assign this policy to all users?", - icon: , - color: "info", - }, - { - label: "Assign to All Devices", - type: "POST", - url: "/api/ExecAssignPolicy", - data: { - AssignTo: "AllDevices", - ID: "id", - type: "URLName", - }, - confirmText: "Are you sure you want to assign this policy to all devices?", - icon: , - color: "info", - }, - { - label: "Assign Globally (All Users / All Devices)", - type: "POST", - url: "/api/ExecAssignPolicy", - data: { - AssignTo: "AllDevicesAndUsers", - ID: "id", - type: "URLName", - }, - confirmText: "Are you sure you want to assign this policy to all users and devices?", - icon: , - color: "info", - }, - { - label: "Delete Policy", - type: "POST", - url: "/api/RemovePolicy", - data: { - ID: "id", - URLName: "URLName", - }, - confirmText: "Are you sure you want to delete this policy?", - icon: , - color: "danger", - }, - ]; + deleteUrlName: "URLName", + }); const offCanvas = { extendedInfoFields: [ @@ -98,6 +44,13 @@ const Page = () => { actions={actions} offCanvas={offCanvas} simpleColumns={simpleColumns} + cardButton={ + + } /> ); }; diff --git a/src/pages/endpoint/MEM/list-scripts/index.jsx b/src/pages/endpoint/MEM/list-scripts/index.jsx index ee7ed45f4f84..91eb0bf675a6 100644 --- a/src/pages/endpoint/MEM/list-scripts/index.jsx +++ b/src/pages/endpoint/MEM/list-scripts/index.jsx @@ -1,7 +1,13 @@ -import { Layout as DashboardLayout } from "/src/layouts/index"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage"; -import { Code, TrashIcon, PencilIcon } from "@heroicons/react/24/outline"; -import { showToast } from "/src/store/toasts"; +import { Layout as DashboardLayout } from "../../../../layouts/index"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage"; +import { + TrashIcon, + PencilIcon, + UserIcon, + UserGroupIcon, + GlobeAltIcon, +} from "@heroicons/react/24/outline"; +import { showToast } from "../../../../store/toasts"; import { Button, Dialog, @@ -11,14 +17,19 @@ import { CircularProgress, DialogActions, } from "@mui/material"; -import { CippCodeBlock } from "/src/components/CippComponents/CippCodeBlock"; -import { useState, useEffect } from "react"; +import { CippCodeBlock } from "../../../../components/CippComponents/CippCodeBlock"; +import { useState, useEffect, useMemo } from "react"; import { useDispatch } from "react-redux"; -import { Search, Close, Save } from "@mui/icons-material"; +import { Close, Save, LaptopChromebook } from "@mui/icons-material"; import { useSettings } from "../../../../hooks/use-settings"; import { Stack } from "@mui/system"; import { useQuery, useQueryClient } from "@tanstack/react-query"; +const assignmentModeOptions = [ + { label: "Replace existing assignments", value: "replace" }, + { label: "Append to existing assignments", value: "append" }, +]; + const Page = () => { const pageTitle = "Scripts"; const [codeOpen, setCodeOpen] = useState(false); @@ -31,6 +42,12 @@ const Page = () => { const dispatch = useDispatch(); + const language = useMemo(() => { + return currentScript?.scriptType?.toLowerCase() === ("macos" || "linux") + ? "shell" + : "powershell"; + }, [currentScript?.scriptType]); + const tenantFilter = useSettings().currentTenant; const { isLoading: scriptIsLoading, @@ -149,7 +166,154 @@ const Page = () => { ); }; + // Map script type to Graph API endpoint + const getScriptEndpoint = (scriptType) => { + const mapping = { + Windows: "deviceManagementScripts", + MacOS: "deviceShellScripts", + Remediation: "deviceHealthScripts", + Linux: "configurationPolicies", + }; + return mapping[scriptType] || "deviceManagementScripts"; + }; + const actions = [ + { + label: "Assign to All Users", + type: "POST", + url: "/api/ExecAssignPolicy", + icon: , + color: "info", + fields: [ + { + type: "radio", + name: "assignmentMode", + label: "Assignment mode", + options: assignmentModeOptions, + defaultValue: "replace", + helperText: + "Replace will overwrite existing assignments. Append keeps current assignments and adds the new ones.", + }, + ], + confirmText: 'Are you sure you want to assign "[displayName]" to all users?', + customDataformatter: (row, action, formData) => ({ + tenantFilter: tenantFilter, + ID: row?.id, + Type: getScriptEndpoint(row?.scriptType), + AssignTo: "allLicensedUsers", + assignmentMode: formData?.assignmentMode || "replace", + }), + }, + { + label: "Assign to All Devices", + type: "POST", + url: "/api/ExecAssignPolicy", + icon: , + color: "info", + fields: [ + { + type: "radio", + name: "assignmentMode", + label: "Assignment mode", + options: assignmentModeOptions, + defaultValue: "replace", + helperText: + "Replace will overwrite existing assignments. Append keeps current assignments and adds the new ones.", + }, + ], + confirmText: 'Are you sure you want to assign "[displayName]" to all devices?', + customDataformatter: (row, action, formData) => ({ + tenantFilter: tenantFilter, + ID: row?.id, + Type: getScriptEndpoint(row?.scriptType), + AssignTo: "AllDevices", + assignmentMode: formData?.assignmentMode || "replace", + }), + }, + { + label: "Assign Globally (All Users / All Devices)", + type: "POST", + url: "/api/ExecAssignPolicy", + icon: , + color: "info", + fields: [ + { + type: "radio", + name: "assignmentMode", + label: "Assignment mode", + options: assignmentModeOptions, + defaultValue: "replace", + helperText: + "Replace will overwrite existing assignments. Append keeps current assignments and adds the new ones.", + }, + ], + confirmText: 'Are you sure you want to assign "[displayName]" to all users and devices?', + customDataformatter: (row, action, formData) => ({ + tenantFilter: tenantFilter, + ID: row?.id, + Type: getScriptEndpoint(row?.scriptType), + AssignTo: "AllDevicesAndUsers", + assignmentMode: formData?.assignmentMode || "replace", + }), + }, + { + label: "Assign to Custom Group", + type: "POST", + url: "/api/ExecAssignPolicy", + icon: , + color: "info", + confirmText: 'Select the target groups for "[displayName]".', + fields: [ + { + type: "autoComplete", + name: "groupTargets", + label: "Group(s)", + multiple: true, + creatable: false, + allowResubmit: true, + validators: { required: "Please select at least one group" }, + api: { + url: "/api/ListGraphRequest", + dataKey: "Results", + queryKey: `ListScriptAssignmentGroups-${tenantFilter}`, + labelField: (group) => + group.id ? `${group.displayName} (${group.id})` : group.displayName, + valueField: "id", + addedField: { + description: "description", + }, + data: { + Endpoint: "groups", + manualPagination: true, + $select: "id,displayName,description", + $orderby: "displayName", + $top: 999, + $count: true, + }, + }, + }, + { + type: "radio", + name: "assignmentMode", + label: "Assignment mode", + options: assignmentModeOptions, + defaultValue: "replace", + helperText: + "Replace will overwrite existing assignments. Append keeps current assignments and adds the new ones.", + }, + ], + customDataformatter: (row, action, formData) => { + const selectedGroups = Array.isArray(formData?.groupTargets) ? formData.groupTargets : []; + return { + tenantFilter: tenantFilter, + ID: row?.id, + Type: getScriptEndpoint(row?.scriptType), + GroupIds: selectedGroups.map((group) => group.value).filter(Boolean), + GroupNames: selectedGroups.map((group) => group.label).filter(Boolean), + assignmentMode: formData?.assignmentMode || "replace", + }; + }, + }, { label: "Edit Script", icon: , @@ -192,6 +356,8 @@ const Page = () => { const simpleColumns = [ "scriptType", "displayName", + "ScriptAssignment", + "ScriptExclude", "description", "runAsAccount", "lastModifiedDateTime", @@ -240,7 +406,7 @@ const Page = () => { type="editor" code={codeContent} onChange={codeChange} - language="powershell" + language={language} /> )} diff --git a/src/pages/endpoint/MEM/list-templates/edit.jsx b/src/pages/endpoint/MEM/list-templates/edit.jsx new file mode 100644 index 000000000000..3e0f7c47409d --- /dev/null +++ b/src/pages/endpoint/MEM/list-templates/edit.jsx @@ -0,0 +1,127 @@ +import { Alert, Box } from "@mui/material"; +import { useForm } from "react-hook-form"; +import { useRouter } from "next/router"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormSkeleton from "../../../../components/CippFormPages/CippFormSkeleton"; +import { ApiGetCall } from "../../../../api/ApiCall"; +import CippTemplateFieldRenderer from "../../../../components/CippComponents/CippTemplateFieldRenderer"; + +const EditIntuneTemplate = () => { + const router = useRouter(); + const { id } = router.query; + const formControl = useForm({ mode: "onChange" }); + + const templateQuery = ApiGetCall({ + url: `/api/ListIntuneTemplates?id=${id}`, + queryKey: `IntuneTemplate-${id}`, + enabled: !!id, + }); + + const templateData = Array.isArray(templateQuery.data) + ? templateQuery.data.find((t) => t.id === id || t.GUID === id) + : templateQuery.data; + + // Custom data formatter to convert autoComplete objects to values + const customDataFormatter = (values) => { + // Recursively extract values from autoComplete objects and fix @odata issues + const extractValues = (obj) => { + if (!obj) return obj; + + // If this is an autoComplete object with label/value, return just the value + if ( + obj && + typeof obj === "object" && + obj.hasOwnProperty("value") && + obj.hasOwnProperty("label") + ) { + return obj.value; + } + + // If it's an array, process each item + if (Array.isArray(obj)) { + return obj.map((item) => extractValues(item)); + } + + // If it's an object, process each property + if (typeof obj === "object") { + const result = {}; + Object.keys(obj).forEach((key) => { + const value = extractValues(obj[key]); + + // Handle @odata objects created by React Hook Form's dot notation interpretation + if (key.endsWith("@odata") && value && typeof value === "object") { + // Convert @odata objects back to dot notation properties + Object.keys(value).forEach((odataKey) => { + // Always try to restore the original @odata property, regardless of form value + const baseKey = key.replace("@odata", ""); + const originalKey = `${baseKey}@odata.${odataKey}`; + const originalValue = getOriginalValueByPath(templateData, originalKey); + if (originalValue !== undefined) { + result[originalKey] = originalValue; + } + }); + } else { + result[key] = value; + } + }); + return result; + } + + // For primitive values, return as-is + return obj; + }; + + // Helper function to get original value by dot-notation path + const getOriginalValueByPath = (obj, path) => { + const keys = path.split("."); + let current = obj; + for (const key of keys) { + if (current && typeof current === "object" && key in current) { + current = current[key]; + } else { + return undefined; + } + } + return current; + }; + + // Extract values from the entire form data and include id + const processedValues = extractValues(values); + + return { + id, + ...processedValues, + }; + }; + + return ( + + + {templateQuery.isLoading ? ( + + ) : templateQuery.isError || !templateData ? ( + Error loading template or template not found. + ) : ( + + )} + + + ); +}; + +EditIntuneTemplate.getLayout = (page) => {page}; + +export default EditIntuneTemplate; diff --git a/src/pages/endpoint/MEM/list-templates/index.js b/src/pages/endpoint/MEM/list-templates/index.js index d9beda8689ae..fcfc8aa81e5a 100644 --- a/src/pages/endpoint/MEM/list-templates/index.js +++ b/src/pages/endpoint/MEM/list-templates/index.js @@ -1,12 +1,16 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { PencilIcon, TrashIcon } from "@heroicons/react/24/outline"; -import { GitHub } from "@mui/icons-material"; +import { Edit, GitHub, LocalOffer, LocalOfferOutlined, CopyAll } from "@mui/icons-material"; import CippJsonView from "../../../../components/CippFormPages/CippJSONView"; -import { ApiGetCall } from "/src/api/ApiCall"; +import { ApiGetCall } from "../../../../api/ApiCall"; +import { CippPolicyImportDrawer } from "../../../../components/CippComponents/CippPolicyImportDrawer.jsx"; +import { PermissionButton } from "../../../../utils/permissions.js"; const Page = () => { const pageTitle = "Available Endpoint Manager Templates"; + const cardButtonPermissions = ["Endpoint.MEM.ReadWrite"]; + const integrations = ApiGetCall({ url: "/api/ListExtensionsConfig", queryKey: "Integrations", @@ -14,6 +18,13 @@ const Page = () => { refetchOnReconnect: false, }); const actions = [ + { + label: "Edit Template", + link: `/endpoint/MEM/list-templates/edit?id=[GUID]`, + icon: , + color: "info", + condition: (row) => row.isSynced === false, + }, { label: "Edit Template Name and Description", type: "POST", @@ -31,12 +42,58 @@ const Page = () => { }, ], data: { GUID: "GUID", Type: "!IntuneTemplate" }, + defaultvalues: (row) => ({ + displayName: row.displayName, + description: row.description, + }), confirmText: "Enter the new name and description for the template. Warning: This will disconnect the template from a template library if applied.", multiPost: false, icon: , color: "info", }, + { + label: "Clone Template", + type: "POST", + url: "/api/ExecCloneTemplate", + data: { GUID: "GUID", Type: "!IntuneTemplate" }, + confirmText: + "Are you sure you want to clone [displayName]? Cloned template are no longer synced with a template library.", + multiPost: false, + icon: , + color: "info", + }, + { + label: "Add to package", + type: "POST", + url: "/api/ExecSetPackageTag", + data: { GUID: "GUID" }, + fields: [ + { + type: "textField", + name: "Package", + label: "Package Name", + required: true, + validators: { + required: { value: true, message: "Package name is required" }, + }, + }, + ], + confirmText: "Enter the package name to assign to the selected template(s).", + multiPost: true, + icon: , + color: "info", + }, + { + label: "Remove from package", + type: "POST", + url: "/api/ExecSetPackageTag", + data: { GUID: "GUID", Remove: true }, + confirmText: "Are you sure you want to remove the selected template(s) from their package?", + multiPost: true, + icon: , + color: "warning", + }, { label: "Save to GitHub", type: "POST", @@ -94,20 +151,32 @@ const Page = () => { ]; const offCanvas = { - children: (row) => , + children: (row) => , size: "lg", }; - const simpleColumns = ["displayName", "description", "Type"]; + const simpleColumns = ["displayName", "isSynced", "package", "description", "Type"]; return ( - + <> + + } + /> + ); }; diff --git a/src/pages/endpoint/MEM/reusable-settings-templates/add.jsx b/src/pages/endpoint/MEM/reusable-settings-templates/add.jsx new file mode 100644 index 000000000000..481499eb557d --- /dev/null +++ b/src/pages/endpoint/MEM/reusable-settings-templates/add.jsx @@ -0,0 +1,389 @@ +import { + Box, + Button, + Divider, + Stack, + Table, + TableBody, + TableCell, + TableHead, + TableRow, + Typography, +} from "@mui/material"; +import { useFieldArray, useForm } from "react-hook-form"; +import { useMemo } from "react"; +import { useSettings } from "../../../../hooks/use-settings"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; + +const Page = () => { + const userSettingsDefaults = useSettings(); + + const baseSettingDefinitionId = "vendor_msft_firewall_mdmstore_dynamickeywords_addresses_{id}"; + + const generateGuid = () => { + const wrap = (val) => `{${val}}`; + if (typeof crypto !== "undefined" && crypto.randomUUID) return wrap(crypto.randomUUID()); + const s4 = () => + Math.floor((1 + Math.random()) * 0x10000) + .toString(16) + .substring(1); + return wrap(`${s4()}${s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`); + }; + + const buildGroupEntryFromBase = (baseId, options = {}) => { + const { idValue = generateGuid(), autoresolveValue = "", keywordValue = "" } = options; + return { + children: [ + { + "@odata.type": "#microsoft.graph.deviceManagementConfigurationSimpleSettingInstance", + settingDefinitionId: `${baseId}_id`, + simpleSettingValue: { + "@odata.type": "#microsoft.graph.deviceManagementConfigurationStringSettingValue", + value: idValue, + }, + }, + { + "@odata.type": "#microsoft.graph.deviceManagementConfigurationChoiceSettingInstance", + settingDefinitionId: `${baseId}_autoresolve`, + choiceSettingValue: { value: autoresolveValue, children: [] }, + }, + { + "@odata.type": "#microsoft.graph.deviceManagementConfigurationSimpleSettingInstance", + settingDefinitionId: `${baseId}_keyword`, + simpleSettingValue: { + "@odata.type": "#microsoft.graph.deviceManagementConfigurationStringSettingValue", + value: keywordValue, + }, + }, + ], + }; + }; + + const buildGroupEntryFromDefinitions = ({ + idDef, + autoresolveDef, + keywordDef, + idValue = "", + autoresolveValue = "", + keywordValue = "", + } = {}) => { + const children = []; + + if (idDef) { + children.push({ + "@odata.type": "#microsoft.graph.deviceManagementConfigurationSimpleSettingInstance", + settingDefinitionId: idDef, + simpleSettingValue: { + "@odata.type": "#microsoft.graph.deviceManagementConfigurationStringSettingValue", + value: idValue, + }, + }); + } + + if (autoresolveDef) { + children.push({ + "@odata.type": "#microsoft.graph.deviceManagementConfigurationChoiceSettingInstance", + settingDefinitionId: autoresolveDef, + choiceSettingValue: { value: autoresolveValue, children: [] }, + }); + } + + if (keywordDef) { + children.push({ + "@odata.type": "#microsoft.graph.deviceManagementConfigurationSimpleSettingInstance", + settingDefinitionId: keywordDef, + simpleSettingValue: { + "@odata.type": "#microsoft.graph.deviceManagementConfigurationStringSettingValue", + value: keywordValue, + }, + }); + } + + return { children }; + }; + + const buildInitialGroupEntry = () => + buildGroupEntryFromBase(baseSettingDefinitionId, { idValue: generateGuid() }); + + const initialGroupCollection = [buildInitialGroupEntry()]; + const initialParsedRaw = { + settingDefinitionId: baseSettingDefinitionId, + settingInstance: { + "@odata.type": "#microsoft.graph.deviceManagementConfigurationGroupSettingCollectionInstance", + settingDefinitionId: baseSettingDefinitionId, + groupSettingCollectionValue: [buildInitialGroupEntry()], + }, + }; + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + tenantFilter: userSettingsDefaults.currentTenant, + parsedRAWJson: initialParsedRaw, + groupSettingCollectionValue: initialGroupCollection, + }, + }); + + const customDataFormatter = useMemo(() => { + const extractValues = (obj) => { + if (obj === null || obj === undefined) return obj; + + if ( + obj && + typeof obj === "object" && + obj.hasOwnProperty("value") && + obj.hasOwnProperty("label") + ) { + return obj.value; + } + + if (Array.isArray(obj)) { + return obj.map((item) => extractValues(item)); + } + + if (typeof obj === "object") { + const result = {}; + Object.keys(obj).forEach((key) => { + result[key] = extractValues(obj[key]); + }); + return result; + } + + return obj; + }; + + return (values) => { + const processedValues = extractValues(values) || {}; + const baseRaw = processedValues.parsedRAWJson || {}; + const normalizeCollection = (collection) => { + if (!collection) return undefined; + return Array.isArray(collection) ? collection : [collection]; + }; + const ensureIdValues = (collection) => { + if (!collection) return collection; + return collection.map((entry) => { + if (!entry?.children || !Array.isArray(entry.children)) return entry; + const nextChildren = entry.children.map((child) => { + if ( + child?.settingDefinitionId?.toLowerCase().endsWith("_id") && + child?.simpleSettingValue && + !child.simpleSettingValue.value + ) { + return { + ...child, + simpleSettingValue: { + ...child.simpleSettingValue, + value: generateGuid(), + }, + }; + } + return child; + }); + return { ...entry, children: nextChildren }; + }); + }; + const deriveBaseSettingDefinitionId = (collection) => { + if (!collection?.length) return undefined; + const firstChildren = collection[0]?.children || []; + const firstDef = firstChildren.find((child) => child?.settingDefinitionId)?.settingDefinitionId; + if (!firstDef) return undefined; + return firstDef + .replace(/_id$/i, "") + .replace(/_autoresolve$/i, "") + .replace(/_keyword$/i, ""); + }; + + if (!baseRaw.settingInstance) { + baseRaw.settingInstance = {}; + } + + if (processedValues.displayName) { + baseRaw.displayName = processedValues.displayName; + } + if (processedValues.description) { + baseRaw.description = processedValues.description; + } + const normalizedCollection = normalizeCollection( + processedValues.groupSettingCollectionValue ?? + baseRaw?.settingInstance?.groupSettingCollectionValue, + ); + + const normalizedWithIds = ensureIdValues(normalizedCollection); + + if (normalizedWithIds) { + baseRaw.settingInstance.groupSettingCollectionValue = normalizedWithIds; + } + + if (baseRaw.settingInstance.groupSettingCollectionValue) { + if (!baseRaw.settingInstance["@odata.type"]) { + baseRaw.settingInstance["@odata.type"] = + "#microsoft.graph.deviceManagementConfigurationGroupSettingCollectionInstance"; + } + + const resolvedBaseDefinitionId = + baseRaw.settingDefinitionId || deriveBaseSettingDefinitionId(normalizedWithIds); + + if (!baseRaw.settingDefinitionId) { + baseRaw.settingDefinitionId = resolvedBaseDefinitionId; + } + + if (!baseRaw.settingInstance.settingDefinitionId) { + baseRaw.settingInstance.settingDefinitionId = resolvedBaseDefinitionId; + } + } + + return { + GUID: processedValues.GUID, + displayName: processedValues.displayName, + description: processedValues.description, + rawJSON: JSON.stringify(baseRaw, null, 2), + tenantFilter: processedValues.tenantFilter || userSettingsDefaults.currentTenant, + }; + }; + }, [userSettingsDefaults.currentTenant]); + + const { fields, append, remove } = useFieldArray({ + control: formControl.control, + name: "groupSettingCollectionValue", + }); + + const groupChildDefinitions = useMemo(() => { + const first = fields?.[0]?.children || []; + return { + idDef: first.find((c) => c.settingDefinitionId?.toLowerCase().includes("_id")) + ?.settingDefinitionId, + autoresolveDef: first.find((c) => + c.settingDefinitionId?.toLowerCase().includes("_autoresolve"), + )?.settingDefinitionId, + keywordDef: first.find((c) => c.settingDefinitionId?.toLowerCase().includes("_keyword")) + ?.settingDefinitionId, + }; + }, [fields]); + + const createEmptyEntry = () => { + return buildGroupEntryFromDefinitions(groupChildDefinitions); + }; + + return ( + + + + Template + + + + + + + {fields?.length > 0 && ( + + + Group Setting Collection (Policy) + + + + + ID + Autoresolve + Keyword + Actions + + + + {fields.map((field, index) => { + const idPath = `groupSettingCollectionValue.${index}.children.0.simpleSettingValue.value`; + const autoresolvePath = `groupSettingCollectionValue.${index}.children.1.choiceSettingValue.value`; + const keywordPath = `groupSettingCollectionValue.${index}.children.2.simpleSettingValue.value`; + + const autoresolveBase = groupChildDefinitions.autoresolveDef || "autoresolve"; + const autoresolveTrue = `${autoresolveBase}_true`; + const autoresolveFalse = `${autoresolveBase}_false`; + + return ( + + + + + + + + + + + + + + + ); + })} + +
    + + + +
    + )} +
    +
    + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/endpoint/MEM/reusable-settings-templates/edit.jsx b/src/pages/endpoint/MEM/reusable-settings-templates/edit.jsx new file mode 100644 index 000000000000..82baa233ba27 --- /dev/null +++ b/src/pages/endpoint/MEM/reusable-settings-templates/edit.jsx @@ -0,0 +1,424 @@ +import { + Alert, + Box, + Button, + Stack, + Table, + TableBody, + TableCell, + TableHead, + TableRow, + Typography, + Divider, +} from "@mui/material"; +import { useForm, useFieldArray } from "react-hook-form"; +import { useRouter } from "next/router"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormSkeleton from "../../../../components/CippFormPages/CippFormSkeleton"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { ApiGetCall } from "../../../../api/ApiCall"; +import { useSettings } from "../../../../hooks/use-settings"; +import { useEffect, useMemo } from "react"; + +// Structured clone helper for older runtimes +const deepClone = (obj) => JSON.parse(JSON.stringify(obj)); + +const generateGuid = () => { + const wrap = (val) => `{${val}}`; + if (typeof crypto !== "undefined" && crypto.randomUUID) return wrap(crypto.randomUUID()); + const s4 = () => + Math.floor((1 + Math.random()) * 0x10000) + .toString(16) + .substring(1); + return wrap(`${s4()}${s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`); +}; + +const buildGroupEntryFromDefinitions = ({ + idDef, + autoresolveDef, + keywordDef, + idValue = "", + autoresolveValue = "", + keywordValue = "", +} = {}) => { + const children = []; + + if (idDef) { + children.push({ + "@odata.type": "#microsoft.graph.deviceManagementConfigurationSimpleSettingInstance", + settingDefinitionId: idDef, + simpleSettingValue: { + "@odata.type": "#microsoft.graph.deviceManagementConfigurationStringSettingValue", + value: idValue, + }, + }); + } + + if (autoresolveDef) { + children.push({ + "@odata.type": "#microsoft.graph.deviceManagementConfigurationChoiceSettingInstance", + settingDefinitionId: autoresolveDef, + choiceSettingValue: { value: autoresolveValue, children: [] }, + }); + } + + if (keywordDef) { + children.push({ + "@odata.type": "#microsoft.graph.deviceManagementConfigurationSimpleSettingInstance", + settingDefinitionId: keywordDef, + simpleSettingValue: { + "@odata.type": "#microsoft.graph.deviceManagementConfigurationStringSettingValue", + value: keywordValue, + }, + }); + } + + return { children }; +}; + +const normalizeCollection = (collection) => { + if (!collection) return []; + return Array.isArray(collection) ? collection : [collection]; +}; + +const EditReusableSettingsTemplate = () => { + const router = useRouter(); + const { id: rawId } = router.query; + const { currentTenant } = useSettings(); + + const normalizedId = useMemo(() => { + if (typeof rawId === "string") return rawId; + if (Array.isArray(rawId) && rawId.length > 0) return rawId[0]; + return undefined; + }, [rawId]); + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + tenantFilter: currentTenant, + GUID: normalizedId, + }, + }); + + const templateQuery = ApiGetCall({ + url: "/api/ListIntuneReusableSettingTemplates", + data: normalizedId ? { id: normalizedId } : undefined, + queryKey: `ReusableSettingTemplate-${normalizedId}`, + waiting: !!normalizedId, + }); + + const templateData = Array.isArray(templateQuery.data) + ? templateQuery.data[0] + : templateQuery.data; + + const normalizedTemplate = useMemo(() => { + if (!templateData) return null; + return { + ...templateData, + // Normalize all known casing variants to the canonical RawJSON property + RawJSON: templateData.RawJSON ?? templateData.RAWJson ?? templateData.rawJSON, + }; + }, [templateData]); + + const parsedRaw = useMemo(() => { + if (!normalizedTemplate?.RawJSON) return null; + try { + return JSON.parse(normalizedTemplate.RawJSON); + } catch (e) { + return null; + } + }, [normalizedTemplate]); + + // Strip the group collection out of the parsed RAW for cleaner form state + const sanitizedParsedRaw = useMemo(() => { + if (!parsedRaw) return null; + const clone = deepClone(parsedRaw); + if (clone?.settingInstance?.groupSettingCollectionValue) { + delete clone.settingInstance.groupSettingCollectionValue; + } + return clone; + }, [parsedRaw]); + + const groupCollection = useMemo(() => { + const source = + parsedRaw?.settingInstance?.groupSettingCollectionValue || + templateData?.settingInstance?.groupSettingCollectionValue || + []; + return normalizeCollection(source); + }, [parsedRaw, templateData]); + + const groupChildDefinitions = useMemo(() => { + const first = groupCollection?.[0]?.children || []; + return { + idDef: first.find((c) => c.settingDefinitionId?.toLowerCase().includes("_id")) + ?.settingDefinitionId, + autoresolveDef: first.find((c) => + c.settingDefinitionId?.toLowerCase().includes("_autoresolve"), + )?.settingDefinitionId, + keywordDef: first.find((c) => c.settingDefinitionId?.toLowerCase().includes("_keyword")) + ?.settingDefinitionId, + }; + }, [groupCollection]); + + useEffect(() => { + if (groupCollection) { + formControl.setValue("groupSettingCollectionValue", groupCollection); + if (sanitizedParsedRaw) { + formControl.setValue("parsedRAWJson", sanitizedParsedRaw); + } + } + }, [groupCollection, sanitizedParsedRaw, formControl]); + + useEffect(() => { + if (normalizedTemplate) { + formControl.setValue( + "displayName", + normalizedTemplate.displayName || normalizedTemplate.name, + ); + formControl.setValue( + "description", + normalizedTemplate.description || normalizedTemplate.Description, + ); + } + }, [normalizedTemplate, formControl]); + + /** + * Convert RHF form values into the API payload while preserving Graph @odata fields. + * - Flattens react-hook-form autocomplete objects to their .value. + * - Restores @odata.* keys from the original template to avoid dot-notation loss from RHF. + * - Syncs displayName/description into parsed RAW JSON and reinserts the edited groupSettingCollectionValue. + * - Builds the final payload expected by /api/AddIntuneReusableSettingTemplate, including tenant fallback. + */ + const customDataFormatter = useMemo(() => { + const getOriginalValueByPath = (obj, path) => { + if (!obj) return undefined; + const keys = path.split("."); + let current = obj; + for (const key of keys) { + if (current && typeof current === "object" && key in current) { + current = current[key]; + } else { + return undefined; + } + } + return current; + }; + + const extractValues = (obj) => { + if (obj === null || obj === undefined) return obj; + + if ( + obj && + typeof obj === "object" && + obj.hasOwnProperty("value") && + obj.hasOwnProperty("label") + ) { + return obj.value; + } + + if (Array.isArray(obj)) { + return obj.map((item) => extractValues(item)); + } + + if (typeof obj === "object") { + const result = {}; + Object.keys(obj).forEach((key) => { + const value = extractValues(obj[key]); + + if (key.endsWith("@odata") && value && typeof value === "object") { + // Restore @odata.* keys from the original template to avoid RHF dot-notation artifacts + Object.keys(value).forEach((odataKey) => { + const baseKey = key.replace("@odata", ""); + const originalKey = `${baseKey}@odata.${odataKey}`; + const originalValue = getOriginalValueByPath(normalizedTemplate, originalKey); + if (originalValue !== undefined) { + result[originalKey] = originalValue; + } + }); + } else { + result[key] = value; + } + }); + return result; + } + + return obj; + }; + + return (values) => { + const processedValues = extractValues(values) || {}; + + // Sync template/policy name & description into parsed RAW JSON, and merge edited group collection + if (processedValues.parsedRAWJson) { + if (processedValues.displayName) { + processedValues.parsedRAWJson.displayName = processedValues.displayName; + } + if (processedValues.description) { + processedValues.parsedRAWJson.description = processedValues.description; + } + + if ( + processedValues.groupSettingCollectionValue && + processedValues.parsedRAWJson.settingInstance + ) { + processedValues.parsedRAWJson.settingInstance.groupSettingCollectionValue = + processedValues.groupSettingCollectionValue; + } + } + + return { + GUID: processedValues.GUID || normalizedId, + displayName: processedValues.displayName, + description: processedValues.description, + package: processedValues.package, + rawJSON: JSON.stringify(processedValues.parsedRAWJson || processedValues, null, 2), + tenantFilter: processedValues.tenantFilter || currentTenant, + }; + }; + }, [currentTenant, normalizedId, normalizedTemplate]); + + const { fields, append, remove } = useFieldArray({ + control: formControl.control, + name: "groupSettingCollectionValue", + }); + + const createEmptyEntry = () => { + return buildGroupEntryFromDefinitions({ + ...groupChildDefinitions, + idValue: generateGuid(), + }); + }; + + return ( + + + {templateQuery.isLoading ? ( + + ) : templateQuery.isError || !normalizedTemplate ? ( + Error loading reusable settings template. + ) : ( + <> + + Template + + + + + + + {fields?.length > 0 && ( + + + Group Setting Collection (Policy) + + + + + ID + Autoresolve + Keyword + Actions + + + + {fields.map((field, index) => { + const idPath = `groupSettingCollectionValue.${index}.children.0.simpleSettingValue.value`; + const autoresolvePath = `groupSettingCollectionValue.${index}.children.1.choiceSettingValue.value`; + const keywordPath = `groupSettingCollectionValue.${index}.children.2.simpleSettingValue.value`; + + const autoresolveBase = groupChildDefinitions.autoresolveDef || "autoresolve"; + const autoresolveTrue = `${autoresolveBase}_true`; + const autoresolveFalse = `${autoresolveBase}_false`; + + return ( + + + + + + + + + + + + + + + ); + })} + +
    + + + +
    + )} + + )} +
    +
    + ); +}; + +EditReusableSettingsTemplate.getLayout = (page) => {page}; + +export default EditReusableSettingsTemplate; diff --git a/src/pages/endpoint/MEM/reusable-settings-templates/index.js b/src/pages/endpoint/MEM/reusable-settings-templates/index.js new file mode 100644 index 000000000000..fe6a5810e995 --- /dev/null +++ b/src/pages/endpoint/MEM/reusable-settings-templates/index.js @@ -0,0 +1,108 @@ +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import CippJsonView from "../../../../components/CippFormPages/CippJSONView"; +import { Button } from "@mui/material"; +import Link from "next/link"; +import { AddBox, GitHub, Delete, Edit } from "@mui/icons-material"; +import { ApiGetCall } from "../../../../api/ApiCall"; + +const Page = () => { + const pageTitle = "Reusable Settings Templates"; + + const integrations = ApiGetCall({ + url: "/api/ListExtensionsConfig", + queryKey: "Integrations", + refetchOnMount: false, + refetchOnReconnect: false, + }); + + const actions = [ + { + label: "Edit Template", + icon: , + link: "/endpoint/MEM/reusable-settings-templates/edit?id=[GUID]", + }, + { + label: "Save to GitHub", + type: "POST", + url: "/api/ExecCommunityRepo", + icon: , + data: { + Action: "UploadTemplate", + GUID: "GUID", + }, + fields: [ + { + label: "Repository", + name: "FullName", + type: "select", + api: { + url: "/api/ListCommunityRepos", + data: { + WriteAccess: true, + }, + queryKey: "CommunityRepos-Write", + dataKey: "Results", + valueField: "FullName", + labelField: "FullName", + }, + multiple: false, + creatable: false, + required: true, + validators: { + required: { value: true, message: "This field is required" }, + }, + }, + { + label: "Commit Message", + placeholder: "Enter a commit message for adding this file to GitHub", + name: "Message", + type: "textField", + multiline: true, + required: true, + rows: 4, + }, + ], + confirmText: "Are you sure you want to save this template to the selected repository?", + condition: () => integrations.isSuccess && integrations?.data?.GitHub?.Enabled, + }, + { + label: "Delete Template", + type: "POST", + url: "/api/RemoveIntuneReusableSettingTemplate", + icon: , + data: { + ID: "GUID", + }, + confirmText: "Do you want to delete the template?", + multiPost: false, + }, + ]; + + const offCanvas = { + children: (row) => , + size: "lg", + }; + + const simpleColumns = ["displayName", "package", "description", "isSynced"]; + + return ( + }> + Add Reusable Settings Template + + } + apiUrl="/api/ListIntuneReusableSettingTemplates" + tenantInTitle={false} + actions={actions} + offCanvas={offCanvas} + simpleColumns={simpleColumns} + queryKey="ListIntuneReusableSettingTemplates-table" + /> + ); +}; + +Page.getLayout = (page) => {page}; +export default Page; diff --git a/src/pages/endpoint/MEM/reusable-settings/edit.jsx b/src/pages/endpoint/MEM/reusable-settings/edit.jsx new file mode 100644 index 000000000000..ac1285e02f42 --- /dev/null +++ b/src/pages/endpoint/MEM/reusable-settings/edit.jsx @@ -0,0 +1,142 @@ +import { useEffect } from "react"; +import { Alert, Box, Stack } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm } from "react-hook-form"; +import { useRouter } from "next/router"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormSkeleton from "../../../../components/CippFormPages/CippFormSkeleton"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import CippJsonView from "../../../../components/CippFormPages/CippJSONView"; +import { ApiGetCall } from "../../../../api/ApiCall"; +import { useSettings } from "../../../../hooks/use-settings"; + +const EditReusableSetting = () => { + const router = useRouter(); + const { id, tenant } = router.query; + const { currentTenant } = useSettings(); + + const effectiveTenant = tenant || currentTenant; + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + tenantFilter: effectiveTenant, + }, + }); + + const { reset } = formControl; + + const settingQuery = ApiGetCall({ + url: "/api/ListIntuneReusableSettings", + queryKey: ["ListIntuneReusableSettings", effectiveTenant, id], + enabled: !!id && !!effectiveTenant, + data: { tenantFilter: effectiveTenant, ID: id }, + }); + + const record = Array.isArray(settingQuery.data) ? settingQuery.data[0] : settingQuery.data; + + const getRawJson = (source) => source?.RawJSON ?? ""; + + useEffect(() => { + if (record) { + const rawJsonValue = getRawJson(record); + reset({ + tenantFilter: effectiveTenant, + ID: record.id, + displayName: record.displayName, + description: record.description, + rawJSON: rawJsonValue, + }); + } + }, [record, effectiveTenant, reset]); + + const safeJson = () => { + const rawJsonValue = getRawJson(record); + if (!rawJsonValue) return null; + try { + return JSON.parse(rawJsonValue); + } catch (e) { + console.error("Failed to parse RawJSON for reusable setting preview", { + error: e, + recordId: record?.id, + }); + return null; + } + }; + + const customDataformatter = (values) => ({ + tenantFilter: values.tenantFilter || effectiveTenant, + ID: values.ID, // forward the existing setting id so the API updates the same record + TemplateId: values.ID, // keep legacy TemplateId for API compatibility + displayName: values.displayName, + description: values.description, + rawJSON: values.rawJSON, + }); + + return ( + + + {settingQuery.isLoading ? ( + + ) : settingQuery.isError || !record ? ( + Error loading reusable setting or setting not found. + ) : ( + + + + + + + + + + + + + + + + + + + )} + + + ); +}; + +EditReusableSetting.getLayout = (page) => {page}; + +export default EditReusableSetting; diff --git a/src/pages/endpoint/MEM/reusable-settings/index.js b/src/pages/endpoint/MEM/reusable-settings/index.js new file mode 100644 index 000000000000..c301082ea1f0 --- /dev/null +++ b/src/pages/endpoint/MEM/reusable-settings/index.js @@ -0,0 +1,67 @@ +import { Book, DeleteForever } from "@mui/icons-material"; +import { CippReusableSettingsDeployDrawer } from "../../../../components/CippComponents/CippReusableSettingsDeployDrawer.jsx"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { useSettings } from "../../../../hooks/use-settings"; +import CippJsonView from "../../../../components/CippFormPages/CippJSONView"; + +const Page = () => { + const { currentTenant } = useSettings(); + const pageTitle = "Reusable Settings"; + + const actions = [ + { + label: "Edit Reusable Setting", + link: `/endpoint/MEM/reusable-settings/edit?id=[id]&tenant=${currentTenant}&tenantFilter=${currentTenant}`, + }, + { + label: "Delete Reusable Setting", + type: "POST", + url: "/api/RemoveIntuneReusableSetting", + icon: , + color: "error", + data: { + ID: "id", + DisplayName: "displayName", + }, + confirmText: "Delete this reusable setting from the tenant?", + multiPost: false, + }, + { + label: "Create Template from Setting", + type: "POST", + url: "/api/AddIntuneReusableSettingTemplate", + icon: , + data: { + displayName: "displayName", + description: "description", + rawJSON: "RawJSON", + }, + confirmText: "Create a reusable settings template from this entry?", + multiPost: false, + }, + ]; + + const offCanvas = { + children: (row) => , + size: "lg", + }; + + return ( + + } + apiUrl="/api/ListIntuneReusableSettings" + queryKey={`ListIntuneReusableSettings-${currentTenant}`} + actions={actions} + offCanvas={offCanvas} + simpleColumns={["displayName", "description", "id", "version"]} + /> + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/endpoint/applications/list/add.jsx b/src/pages/endpoint/applications/list/add.jsx deleted file mode 100644 index 8bad92e4b715..000000000000 --- a/src/pages/endpoint/applications/list/add.jsx +++ /dev/null @@ -1,704 +0,0 @@ -import React, { useEffect } from "react"; -import { Divider, Button } from "@mui/material"; -import { Grid } from "@mui/system"; -import { useForm, useWatch } from "react-hook-form"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormTenantSelector } from "/src/components/CippComponents/CippFormTenantSelector"; -import { CippFormCondition } from "/src/components/CippComponents/CippFormCondition"; -import languageList from "/src/data/languageList.json"; -import { ApiPostCall } from "../../../../api/ApiCall"; -const ApplicationDeploymentForm = () => { - const formControl = useForm({ - mode: "onChange", - }); - - const selectedTenants = useWatch({ - control: formControl.control, - name: "selectedTenants", - }); - - const applicationType = useWatch({ - control: formControl.control, - name: "appType", - }); - - const searchQuerySelection = useWatch({ - control: formControl.control, - name: "packageSearch", - }); - - useEffect(() => { - //if the searchQuerySelection was succesful, fill in the fields. - if (searchQuerySelection) { - formControl.setValue("packagename", searchQuerySelection.value.packagename); - formControl.setValue("applicationName", searchQuerySelection.value.applicationName); - formControl.setValue("description", searchQuerySelection.value.description); - searchQuerySelection.value.customRepo - ? formControl.setValue("customRepo", searchQuerySelection.value.customRepo) - : null; - } - }, [searchQuerySelection]); - - const postUrl = { - mspApp: "/api/AddMSPApp", - StoreApp: "/api/AddStoreApp", - winGetApp: "/api/AddwinGetApp", - chocolateyApp: "/api/AddChocoApp", - officeApp: "/api/AddOfficeApp", - }; - - const ChocosearchResults = ApiPostCall({ - urlFromData: true, - }); - - const winGetSearchResults = ApiPostCall({ - urlFromData: true, - }); - - const searchApp = (searchText, type) => { - if (type === "choco") { - ChocosearchResults.mutate({ - url: `/api/ListAppsRepository`, - data: { search: searchText }, - queryKey: `SearchApp-${searchText}-${type}`, - }); - } - - if (type === "StoreApp") { - winGetSearchResults.mutate({ - url: `/api/ListPotentialApps`, - data: { searchString: searchText, type: "WinGet" }, - queryKey: `SearchApp-${searchText}-${type}`, - }); - } - }; - - return ( - { - const formattedData = { ...data }; - formattedData.selectedTenants = selectedTenants.map((tenant) => ({ - defaultDomainName: tenant.value, - customerId: tenant.addedFields.customerId, - })); - return formattedData; - }} - > - - - - - - - - {/* Tenant Selector */} - - - - - - - - - - - - - - - - - - {selectedTenants?.map((tenant, index) => ( - - - - ))} - - - {/* For "syncro" */} - - {selectedTenants?.map((tenant, index) => ( - - - - ))} - - - {/* Similar blocks for other rmmname values */} - {/* For "huntress" */} - - - - - {selectedTenants?.map((tenant, index) => ( - - - - ))} - - - {/* For "automate" */} - - - - - {selectedTenants?.map((tenant, index) => ( - - - - ))} - {selectedTenants?.map((tenant, index) => ( - - - - ))} - - - {/* For "cwcommand" */} - - {selectedTenants?.map((tenant, index) => ( - - - - ))} - - - {/* Assign To Options */} - - - - - - - - - - - {/* WinGet App Section */} - - - - - - - - - - ({ - value: item, - label: `${item.applicationName} - ${item.packagename}`, - })) - : [] - } - multiple={false} - formControl={formControl} - isFetching={winGetSearchResults.isLoading} - /> - - - - - - - - - - - - {/* Install Options */} - - - - - {/* Assign To Options */} - - - - - - - - - - - {/* Chocolatey App Section */} - - - - - - - - - - ({ - value: item, - label: `${item.applicationName} - ${item.packagename}`, - })) - : [] - } - multiple={false} - formControl={formControl} - isFetching={ChocosearchResults.isLoading} - /> - - - - - - - - - - - - - - - - {/* Install Options */} - - - - - - - {/* Assign To Options */} - - - - - - - - - - - {/* Office App Section */} - - {/* Office App Fields */} - - - - - - - - - ({ - value: tag, - label: language, - }))} - multiple={true} - formControl={formControl} - validators={{ required: "Please select at least one language" }} - /> - - - - - - - - - - - - - - - {/* Assign To Options */} - - - - - - - ); -}; - -ApplicationDeploymentForm.getLayout = (page) => {page}; - -export default ApplicationDeploymentForm; diff --git a/src/pages/endpoint/applications/list/index.js b/src/pages/endpoint/applications/list/index.js index d10fe0727555..49e5bc4b2816 100644 --- a/src/pages/endpoint/applications/list/index.js +++ b/src/pages/endpoint/applications/list/index.js @@ -1,23 +1,109 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { GlobeAltIcon, TrashIcon, UserIcon } from "@heroicons/react/24/outline"; -import { Add, LaptopMac } from "@mui/icons-material"; -import { Button } from "@mui/material"; -import Link from "next/link"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { CippApiDialog } from "../../../../components/CippComponents/CippApiDialog.jsx"; +import { GlobeAltIcon, TrashIcon, UserIcon, UserGroupIcon } from "@heroicons/react/24/outline"; +import { LaptopMac, Sync } from "@mui/icons-material"; +import { CippApplicationDeployDrawer } from "../../../../components/CippComponents/CippApplicationDeployDrawer"; +import { Button, Box } from "@mui/material"; +import { useSettings } from "../../../../hooks/use-settings.js"; +import { useDialog } from "../../../../hooks/use-dialog.js"; + +const assignmentIntentOptions = [ + { label: "Required", value: "Required" }, + { label: "Available", value: "Available" }, + { label: "Available without enrollment", value: "AvailableWithoutEnrollment" }, + { label: "Uninstall", value: "Uninstall" }, +]; + +const assignmentModeOptions = [ + { label: "Replace existing assignments", value: "replace" }, + { label: "Append to existing assignments", value: "append" }, +]; + +const assignmentFilterTypeOptions = [ + { label: "Include - Apply to devices matching filter", value: "include" }, + { label: "Exclude - Apply to devices NOT matching filter", value: "exclude" }, +]; + +const getAppAssignmentSettingsType = (odataType) => { + if (!odataType || typeof odataType !== "string") { + return undefined; + } + + return odataType.replace("#microsoft.graph.", "").replace(/App$/i, ""); +}; const Page = () => { const pageTitle = "Applications"; + const syncDialog = useDialog(); + const tenant = useSettings().currentTenant; + + const getAssignmentFilterFields = () => [ + { + type: "autoComplete", + name: "assignmentFilter", + label: "Assignment Filter (Optional)", + multiple: false, + creatable: false, + api: { + url: "/api/ListAssignmentFilters", + queryKey: `ListAssignmentFilters-${tenant}`, + labelField: (filter) => filter.displayName, + valueField: "displayName", + }, + }, + { + type: "radio", + name: "assignmentFilterType", + label: "Assignment Filter Mode", + options: assignmentFilterTypeOptions, + defaultValue: "include", + helperText: "Choose whether to include or exclude devices matching the filter.", + }, + ]; const actions = [ { label: "Assign to All Users", type: "POST", url: "/api/ExecAssignApp", - data: { - AssignTo: "!AllUsers", - ID: "id", + fields: [ + { + type: "radio", + name: "Intent", + label: "Assignment intent", + options: assignmentIntentOptions, + defaultValue: "Required", + validators: { required: "Select an assignment intent" }, + helperText: + "Available assigns to Company Portal, Required installs automatically, Uninstall removes the app, Available without enrollment exposes it without device enrollment.", + }, + { + type: "radio", + name: "assignmentMode", + label: "Assignment mode", + options: assignmentModeOptions, + defaultValue: "replace", + helperText: + "Replace will overwrite existing assignments. Append keeps current assignments and adds/overwrites only for the selected groups/intents.", + }, + ...getAssignmentFilterFields(), + ], + customDataformatter: (row, action, formData) => { + const tenantFilterValue = tenant === "AllTenants" && row?.Tenant ? row.Tenant : tenant; + return { + tenantFilter: tenantFilterValue, + ID: row?.id, + AssignTo: "AllUsers", + Intent: formData?.Intent || "Required", + assignmentMode: formData?.assignmentMode || "replace", + AssignmentFilterName: formData?.assignmentFilter?.value || null, + AssignmentFilterType: formData?.assignmentFilter?.value + ? formData?.assignmentFilterType || "include" + : null, + }; }, - confirmText: "Are you sure you want to assign this app to all users?", + confirmText: 'Are you sure you want to assign "[displayName]" to all users?', icon: , color: "info", }, @@ -25,11 +111,43 @@ const Page = () => { label: "Assign to All Devices", type: "POST", url: "/api/ExecAssignApp", - data: { - AssignTo: "!AllDevices", - ID: "id", + fields: [ + { + type: "radio", + name: "Intent", + label: "Assignment intent", + options: assignmentIntentOptions, + defaultValue: "Required", + validators: { required: "Select an assignment intent" }, + helperText: + "Available assigns to Company Portal, Required installs automatically, Uninstall removes the app, Available without enrollment exposes it without device enrollment.", + }, + { + type: "radio", + name: "assignmentMode", + label: "Assignment mode", + options: assignmentModeOptions, + defaultValue: "replace", + helperText: + "Replace will overwrite existing assignments. Append keeps current assignments and adds/overwrites only for the selected groups/intents.", + }, + ...getAssignmentFilterFields(), + ], + customDataformatter: (row, action, formData) => { + const tenantFilterValue = tenant === "AllTenants" && row?.Tenant ? row.Tenant : tenant; + return { + tenantFilter: tenantFilterValue, + ID: row?.id, + AssignTo: "AllDevices", + Intent: formData?.Intent || "Required", + assignmentMode: formData?.assignmentMode || "replace", + AssignmentFilterName: formData?.assignmentFilter?.value || null, + AssignmentFilterType: formData?.assignmentFilter?.value + ? formData?.assignmentFilterType || "include" + : null, + }; }, - confirmText: "Are you sure you want to assign this app to all devices?", + confirmText: 'Are you sure you want to assign "[displayName]" to all devices?', icon: , color: "info", }, @@ -37,14 +155,121 @@ const Page = () => { label: "Assign Globally (All Users / All Devices)", type: "POST", url: "/api/ExecAssignApp", - data: { - AssignTo: "!Both", - ID: "id", + fields: [ + { + type: "radio", + name: "Intent", + label: "Assignment intent", + options: assignmentIntentOptions, + defaultValue: "Required", + validators: { required: "Select an assignment intent" }, + helperText: + "Available assigns to Company Portal, Required installs automatically, Uninstall removes the app, Available without enrollment exposes it without device enrollment.", + }, + { + type: "radio", + name: "assignmentMode", + label: "Assignment mode", + options: assignmentModeOptions, + defaultValue: "replace", + helperText: + "Replace will overwrite existing assignments. Append keeps current assignments and adds/overwrites only for the selected groups/intents.", + }, + ...getAssignmentFilterFields(), + ], + customDataformatter: (row, action, formData) => { + const tenantFilterValue = tenant === "AllTenants" && row?.Tenant ? row.Tenant : tenant; + return { + tenantFilter: tenantFilterValue, + ID: row?.id, + AssignTo: "AllDevicesAndUsers", + Intent: formData?.Intent || "Required", + assignmentMode: formData?.assignmentMode || "replace", + AssignmentFilterName: formData?.assignmentFilter?.value || null, + AssignmentFilterType: formData?.assignmentFilter?.value + ? formData?.assignmentFilterType || "include" + : null, + }; }, - confirmText: "Are you sure you want to assign this app to all users and devices?", + confirmText: 'Are you sure you want to assign "[displayName]" to all users and devices?', icon: , color: "info", }, + { + label: "Assign to Custom Group", + type: "POST", + url: "/api/ExecAssignApp", + icon: , + color: "info", + confirmText: 'Select the target groups and intent for "[displayName]".', + fields: [ + { + type: "autoComplete", + name: "groupTargets", + label: "Group(s)", + multiple: true, + creatable: false, + allowResubmit: true, + validators: { required: "Please select at least one group" }, + api: { + url: "/api/ListGraphRequest", + dataKey: "Results", + queryKey: `ListAppAssignmentGroups-${tenant}`, + labelField: (group) => + group.id ? `${group.displayName} (${group.id})` : group.displayName, + valueField: "id", + addedField: { + description: "description", + }, + data: { + Endpoint: "groups", + manualPagination: true, + $select: "id,displayName,description", + $orderby: "displayName", + $top: 999, + $count: true, + }, + }, + }, + { + type: "radio", + name: "assignmentIntent", + label: "Assignment intent", + options: assignmentIntentOptions, + defaultValue: "Required", + validators: { required: "Select an assignment intent" }, + helperText: + "Available assigns to Company Portal, Required installs automatically, Uninstall removes the app, Available without enrollment exposes it without device enrollment.", + }, + { + type: "radio", + name: "assignmentMode", + label: "Assignment mode", + options: assignmentModeOptions, + defaultValue: "replace", + helperText: + "Replace will overwrite existing assignments. Append keeps current assignments and adds/overwrites only for the selected groups/intents.", + }, + ...getAssignmentFilterFields(), + ], + customDataformatter: (row, action, formData) => { + const selectedGroups = Array.isArray(formData?.groupTargets) ? formData.groupTargets : []; + const tenantFilterValue = tenant === "AllTenants" && row?.Tenant ? row.Tenant : tenant; + return { + tenantFilter: tenantFilterValue, + ID: row?.id, + GroupIds: selectedGroups.map((group) => group.value).filter(Boolean), + GroupNames: selectedGroups.map((group) => group.label).filter(Boolean), + Intent: formData?.assignmentIntent || "Required", + AssignmentMode: formData?.assignmentMode || "replace", + AppType: getAppAssignmentSettingsType(row?.["@odata.type"]), + AssignmentFilterName: formData?.assignmentFilter?.value || null, + AssignmentFilterType: formData?.assignmentFilter?.value + ? formData?.assignmentFilterType || "include" + : null, + }; + }, + }, { label: "Delete Application", type: "POST", @@ -52,7 +277,7 @@ const Page = () => { data: { ID: "id", }, - confirmText: "Are you sure you want to delete this application?", + confirmText: 'Are you sure you want to delete "[displayName]"?', icon: , color: "danger", }, @@ -77,26 +302,41 @@ const Page = () => { const simpleColumns = [ "displayName", + "AppAssignment", + "AppExclude", "publishingState", - "installCommandLine", - "uninstallCommandLine", + "lastModifiedDateTime", + "createdDateTime", ]; return ( - - - - } - /> + <> + + + + + } + /> + + ); }; diff --git a/src/pages/endpoint/applications/queue/index.js b/src/pages/endpoint/applications/queue/index.js index 3e683b11e8b0..57a8337a0289 100644 --- a/src/pages/endpoint/applications/queue/index.js +++ b/src/pages/endpoint/applications/queue/index.js @@ -1,15 +1,15 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { CheckmarkIcon } from "react-hot-toast"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { Button } from "@mui/material"; -import { PlayArrow, Add } from "@mui/icons-material"; -import Link from "next/link"; -import { ApiPostCall } from "../../../../api/ApiCall"; -import { CippApiResults } from "../../../../components/CippComponents/CippApiResults"; +import { PlayArrow } from "@mui/icons-material"; import { TrashIcon } from "@heroicons/react/24/outline"; +import { CippApplicationDeployDrawer } from "../../../../components/CippComponents/CippApplicationDeployDrawer"; +import { CippApiDialog } from "../../../../components/CippComponents/CippApiDialog"; +import { useDialog } from "../../../../hooks/use-dialog"; const Page = () => { const pageTitle = "Queued Applications"; + const runQueueDialog = useDialog(); const actions = [ { @@ -22,35 +22,38 @@ const Page = () => { color: "danger", }, ]; - const handlePostCall = ApiPostCall({ - urlFromdata: true, - relatedQueryKeys: "ListApplicationQueue", - }); + const simpleColumns = ["tenantName", "applicationName", "cmdLine", "assignTo"]; - const handleRunQueue = () => { - handlePostCall.mutate({ url: "/api/ExecAppUpload" }); - }; return ( - } - simpleColumns={simpleColumns} - tenantInTitle={false} - cardButton={ - <> - - - - - } - /> + <> + + + + + } + /> + + ); }; diff --git a/src/pages/endpoint/autopilot/add-device/index.js b/src/pages/endpoint/autopilot/add-device/index.js index 8b8d45513a1e..5758c4a0507d 100644 --- a/src/pages/endpoint/autopilot/add-device/index.js +++ b/src/pages/endpoint/autopilot/add-device/index.js @@ -1,10 +1,8 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippWizardConfirmation } from "/src/components/CippWizard/CippWizardConfirmation"; -import CippWizardPage from "/src/components/CippWizard/CippWizardPage.jsx"; -import { CippTenantStep } from "/src/components/CippWizard/CippTenantStep.jsx"; -import { useSettings } from "../../../../hooks/use-settings"; -import { CippWizardCSVImport } from "../../../../components/CippWizard/CippWizardCSVImport"; -import { CippWizardBulkOptions } from "../../../../components/CippWizard/CippWizardBulkOptions"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippWizardConfirmation } from "../../../../components/CippWizard/CippWizardConfirmation"; +import CippWizardPage from "../../../../components/CippWizard/CippWizardPage.jsx"; +import { CippTenantStep } from "../../../../components/CippWizard/CippTenantStep.jsx"; +import { CippWizardAutopilotImport } from "../../../../components/CippWizard/CippWizardAutopilotImport"; import { CippWizardAutopilotOptions } from "../../../../components/CippWizard/CippWizardAutopilotOptions"; const Page = () => { @@ -21,18 +19,37 @@ const Page = () => { { title: "Step 2", description: "Device Import", - component: CippWizardCSVImport, + component: CippWizardAutopilotImport, componentProps: { name: "autopilotData", - manualFields: true, - fields: ["SerialNumber", "oemManufacturerName", "modelName", "productKey", "hardwareHash"], - nameToCSVMapping: { - SerialNumber: "Device serial number", - oemManufacturerName: "Manufacturer name", - modelName: "Device Model", - productKey: "Windows product ID", - hardwareHash: "Hardware hash", - }, + fields: [ + { + friendlyName: "Serialnumber", + propertyName: "SerialNumber", + alternativePropertyNames: ["Device Serial Number"], + }, + { + friendlyName: "Manufacturer", + propertyName: "oemManufacturerName", + alternativePropertyNames: ["Manufacturer name"], + }, + { + friendlyName: "Model", + propertyName: "modelName", + alternativePropertyNames: ["Device model"], + }, + { + friendlyName: "Product ID", + propertyName: "productKey", + alternativePropertyNames: ["Windows Product ID"], + }, + { + friendlyName: "Hardware hash", + propertyName: "hardwareHash", + alternativePropertyNames: ["Hardware Hash"], + }, + ], + fileName: "autopilot-template", }, }, { diff --git a/src/pages/endpoint/autopilot/add-status-page/index.js b/src/pages/endpoint/autopilot/add-status-page/index.js deleted file mode 100644 index 460c7f68f3de..000000000000 --- a/src/pages/endpoint/autopilot/add-status-page/index.js +++ /dev/null @@ -1,124 +0,0 @@ -import React from "react"; -import { Divider } from "@mui/material"; -import { Grid } from "@mui/system"; -import { useForm, useWatch } from "react-hook-form"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormTenantSelector } from "/src/components/CippComponents/CippFormTenantSelector"; - -const Page = () => { - const formControl = useForm({ - mode: "onChange", - defaultValues: { - TimeOutInMinutes: "", - ErrorMessage: "", - ShowProgress: false, - EnableLog: false, - OBEEOnly: false, - blockDevice: false, - Allowretry: false, - AllowReset: false, - AllowFail: false, - }, - }); - - return ( - - - {/* Tenant Selector */} - - - - - - - {/* Form Fields */} - - - - - - - - - {/* Switches */} - - - - - - - - - - - - ); -}; - -Page.getLayout = (page) => {page}; - -export default Page; diff --git a/src/pages/endpoint/autopilot/list-devices/index.js b/src/pages/endpoint/autopilot/list-devices/index.js index 4f641664f439..3c25271def7c 100644 --- a/src/pages/endpoint/autopilot/list-devices/index.js +++ b/src/pages/endpoint/autopilot/list-devices/index.js @@ -1,11 +1,10 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { CippApiDialog } from "/src/components/CippComponents/CippApiDialog.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { CippApiDialog } from "../../../../components/CippComponents/CippApiDialog.jsx"; import { Button } from "@mui/material"; import { PersonAdd, Delete, Sync, Add, Edit, Sell } from "@mui/icons-material"; import { useDialog } from "../../../../hooks/use-dialog"; import Link from "next/link"; -import { useState } from "react"; const Page = () => { const pageTitle = "Autopilot Devices"; diff --git a/src/pages/endpoint/autopilot/list-profiles/add.jsx b/src/pages/endpoint/autopilot/list-profiles/add.jsx deleted file mode 100644 index 26fd85204b24..000000000000 --- a/src/pages/endpoint/autopilot/list-profiles/add.jsx +++ /dev/null @@ -1,164 +0,0 @@ -import React from "react"; -import { Divider } from "@mui/material"; -import { Grid } from "@mui/system"; -import { useForm, useWatch } from "react-hook-form"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormTenantSelector } from "/src/components/CippComponents/CippFormTenantSelector"; -import languageList from "/src/data/languageList.json"; - -const AutopilotProfileForm = () => { - const formControl = useForm({ - mode: "onChange", - defaultValues: { - DisplayName: "", - Description: "", - DeviceNameTemplate: "", - languages: null, - CollectHash: true, - Assignto: true, - DeploymentMode: true, - HideTerms: true, - HidePrivacy: true, - HideChangeAccount: true, - NotLocalAdmin: true, - allowWhiteglove: true, - Autokeyboard: true, - }, - }); - - return ( - - - {/* Tenant Selector */} - - - - - - - {/* Form Fields */} - - - - - - ({ - value: tag, - label: `${language} - ${geographicArea}`, // Format as "language - geographic area" for display - }))} - formControl={formControl} - multiple={false} - /> - - - - - - - - - - - {/* Switches */} - - - - - - - - - - - - - - ); -}; - -AutopilotProfileForm.getLayout = (page) => {page}; - -export default AutopilotProfileForm; diff --git a/src/pages/endpoint/autopilot/list-profiles/index.js b/src/pages/endpoint/autopilot/list-profiles/index.js index e1e3e8375b1a..12f2369f4e05 100644 --- a/src/pages/endpoint/autopilot/list-profiles/index.js +++ b/src/pages/endpoint/autopilot/list-profiles/index.js @@ -1,24 +1,33 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { EyeIcon } from "@heroicons/react/24/outline"; -import { Button } from "@mui/material"; -import Link from "next/link"; -import { AccountCircle } from "@mui/icons-material"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Delete } from "@mui/icons-material"; import CippJsonView from "../../../../components/CippFormPages/CippJSONView"; +import { CippAutopilotProfileDrawer } from "../../../../components/CippComponents/CippAutopilotProfileDrawer"; const Page = () => { const pageTitle = "Autopilot Profiles"; - const actions = []; + const actions = [ + { + label: "Delete Profile", + icon: , + type: "POST", + url: "/api/RemoveAutopilotConfig", + data: { ID: "id", displayName: "displayName", assignments: "assignments" }, + confirmText: + "Are you sure you want to delete this Autopilot profile? This action cannot be undone.", + color: "danger", + }, + ]; const offCanvas = { - children: (row) => , + children: (row) => , size: "xl", }; const simpleColumns = [ "displayName", - "Description", + "description", "language", "extractHardwareHash", "deviceNameTemplate", @@ -27,19 +36,18 @@ const Page = () => { return ( - + } /> diff --git a/src/pages/endpoint/autopilot/list-status-pages/index.js b/src/pages/endpoint/autopilot/list-status-pages/index.js index fc1525f4cbbb..4ec8a3b93313 100644 --- a/src/pages/endpoint/autopilot/list-status-pages/index.js +++ b/src/pages/endpoint/autopilot/list-status-pages/index.js @@ -1,8 +1,6 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Button } from "@mui/material"; -import Link from "next/link"; -import { PostAdd } from "@mui/icons-material"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { CippAutopilotStatusPageDrawer } from "../../../../components/CippComponents/CippAutopilotStatusPageDrawer"; const Page = () => { const pageTitle = "Autopilot Status Pages"; @@ -26,13 +24,7 @@ const Page = () => { simpleColumns={simpleColumns} cardButton={ <> - + } /> diff --git a/src/pages/endpoint/reports/analyticsdevicescore/index.js b/src/pages/endpoint/reports/analyticsdevicescore/index.js index 5660e0fbf612..73051fe1318b 100644 --- a/src/pages/endpoint/reports/analyticsdevicescore/index.js +++ b/src/pages/endpoint/reports/analyticsdevicescore/index.js @@ -1,7 +1,7 @@ import { EyeIcon } from "@heroicons/react/24/outline"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { useSettings } from "/src/hooks/use-settings"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { useSettings } from "../../../../hooks/use-settings"; const Page = () => { const pageTitle = "Analytics Device Score Report"; diff --git a/src/pages/endpoint/reports/autopilot-deployment/index.js b/src/pages/endpoint/reports/autopilot-deployment/index.js new file mode 100644 index 000000000000..49f8b56e4d07 --- /dev/null +++ b/src/pages/endpoint/reports/autopilot-deployment/index.js @@ -0,0 +1,112 @@ +import { EyeIcon, DocumentTextIcon } from "@heroicons/react/24/outline"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { useSettings } from "../../../../hooks/use-settings"; +import { CheckCircle, Error, Warning, Refresh } from "@mui/icons-material"; + +const Page = () => { + const pageTitle = "Autopilot Deployments"; + const tenantFilter = useSettings().currentTenant; + + // Actions for viewing device in Intune and deployment details + const actions = [ + { + label: "View Device in Intune", + link: `https://intune.microsoft.com/${tenantFilter}/#view/Microsoft_Intune_Devices/DeviceSettingsMenuBlade/~/overview/mdmDeviceId/[deviceId]`, + color: "info", + icon: , + target: "_blank", + multiPost: false, + external: true, + }, + { + label: "View Deployment Details", + link: `https://intune.microsoft.com/${tenantFilter}/#view/Microsoft_Intune_DeviceSettings/DeploymentOverviewMenuBlade/~/autopilotDeployment/deploymentProfileId/[windowsAutopilotDeploymentProfileDisplayName]`, + color: "info", + icon: , + target: "_blank", + multiPost: false, + external: true, + }, + ]; + + // Extended info fields for the off-canvas panel + const offCanvas = { + extendedInfoFields: [ + "id", + "deviceId", + "userId", + "eventDateTime", + "deviceRegisteredDateTime", + "enrollmentStartDateTime", + "enrollmentType", + "deviceSerialNumber", + "managedDeviceName", + "userPrincipalName", + "windowsAutopilotDeploymentProfileDisplayName", + "enrollmentState", + "windows10EnrollmentCompletionPageConfigurationDisplayName", + "deploymentState", + "deviceSetupStatus", + "accountSetupStatus", + "osVersion", + "deploymentDuration", + "deploymentTotalDuration", + "deviceSetupDuration", + "accountSetupDuration", + "deploymentStartDateTime", + "deploymentEndDateTime", + "enrollmentFailureDetails", + ], + actions: actions, + }; + + // Columns to be displayed in the table (most important first) + const simpleColumns = [ + "managedDeviceName", + "eventDateTime", + "deviceSerialNumber", + "userPrincipalName", + "deploymentState", + "enrollmentState", + "enrollmentType", + "deploymentTotalDuration", + "windowsAutopilotDeploymentProfileDisplayName", + "enrollmentFailureDetails", + ]; + + // Predefined filters for common deployment scenarios + const filterList = [ + { + filterName: "Failed Deployments", + value: [{ id: "deploymentState", value: "failure" }], + type: "column", + }, + { + filterName: "Successful Deployments", + value: [{ id: "deploymentState", value: "success" }], + type: "column", + }, + ]; + + return ( + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/endpoint/reports/detected-apps/index.js b/src/pages/endpoint/reports/detected-apps/index.js new file mode 100644 index 000000000000..5f692c12428d --- /dev/null +++ b/src/pages/endpoint/reports/detected-apps/index.js @@ -0,0 +1,59 @@ +๏ปฟimport { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; + +const Page = () => { + const pageTitle = "Discovered Apps"; + + // Columns to be displayed in the table + const simpleColumns = [ + "displayName", + "version", + "deviceCount", + "platform", + "publisher", + "sizeInByte", + ]; + + // Predefined filters + const filterList = [ + { + filterName: "Windows Apps", + value: [{ id: "platform", value: "windows" }], + type: "column", + }, + { + filterName: "macOS Apps", + value: [{ id: "platform", value: "macOS" }], + type: "column", + }, + { + filterName: "iOS Apps", + value: [{ id: "platform", value: "ios" }], + type: "column", + }, + { + filterName: "Android Apps", + value: [{ id: "platform", value: "android" }], + type: "column", + }, + ]; + + return ( + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/endpoint/reports/workfromanywhere/index.js b/src/pages/endpoint/reports/workfromanywhere/index.js index cd963abfbe72..27fdfbe1e5a7 100644 --- a/src/pages/endpoint/reports/workfromanywhere/index.js +++ b/src/pages/endpoint/reports/workfromanywhere/index.js @@ -1,7 +1,7 @@ import { EyeIcon } from "@heroicons/react/24/outline"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { useSettings } from "/src/hooks/use-settings"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { useSettings } from "../../../../hooks/use-settings"; const Page = () => { const pageTitle = "Work from anywhere Report"; diff --git a/src/pages/fullPageLoading.js b/src/pages/fullPageLoading.js index 67412ff6bc8e..f4d4e0ed5aec 100644 --- a/src/pages/fullPageLoading.js +++ b/src/pages/fullPageLoading.js @@ -17,7 +17,7 @@ const FullPageLoading = () => { - + Loading... #Todo: Make pretty, make it obey user settings for theme. diff --git a/src/pages/identity/administration/deleted-items/index.js b/src/pages/identity/administration/deleted-items/index.js index 66d27c8bfd83..961298efb234 100644 --- a/src/pages/identity/administration/deleted-items/index.js +++ b/src/pages/identity/administration/deleted-items/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { RestoreFromTrash, Warning } from "@mui/icons-material"; const Page = () => { diff --git a/src/pages/identity/administration/deploy-group-template/index.js b/src/pages/identity/administration/deploy-group-template/index.js index d96412b632bf..04313ef9bf2d 100644 --- a/src/pages/identity/administration/deploy-group-template/index.js +++ b/src/pages/identity/administration/deploy-group-template/index.js @@ -1,4 +1,4 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; const Page = () => { const pageTitle = "Deploy Group Template"; diff --git a/src/pages/identity/administration/devices/index.js b/src/pages/identity/administration/devices/index.js index c547a0d800b1..74791fb678c2 100644 --- a/src/pages/identity/administration/devices/index.js +++ b/src/pages/identity/administration/devices/index.js @@ -1,6 +1,6 @@ -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; // had to add an extra path here because I added an extra folder structure. We should switch to absolute pathing so we dont have to deal with relative. -import { useSettings } from "/src/hooks/use-settings"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; // had to add an extra path here because I added an extra folder structure. We should switch to absolute pathing so we dont have to deal with relative. +import { useSettings } from "../../../../hooks/use-settings"; import { Visibility, CheckCircleOutline, Block, VpnKey, DeleteForever } from "@mui/icons-material"; const Page = () => { @@ -78,6 +78,7 @@ const Page = () => { $count: true, }} apiDataKey="Results" + queryKey={`EntraDevices-${tenantFilter}`} actions={actions} simpleColumns={[ "displayName", diff --git a/src/pages/identity/administration/group-templates/add.jsx b/src/pages/identity/administration/group-templates/add.jsx index fe5b597fe926..4e79cc7900c5 100644 --- a/src/pages/identity/administration/group-templates/add.jsx +++ b/src/pages/identity/administration/group-templates/add.jsx @@ -1,6 +1,6 @@ import { Box } from "@mui/material"; import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; import { useForm } from "react-hook-form"; import { useSettings } from "../../../../hooks/use-settings"; import CippAddGroupTemplateForm from "../../../../components/CippFormPages/CippAddGroupTemplateForm"; diff --git a/src/pages/identity/administration/group-templates/deploy.js b/src/pages/identity/administration/group-templates/deploy.js index 31791894f361..e27fa27a56ab 100644 --- a/src/pages/identity/administration/group-templates/deploy.js +++ b/src/pages/identity/administration/group-templates/deploy.js @@ -1,7 +1,7 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippWizardConfirmation } from "/src/components/CippWizard/CippWizardConfirmation"; -import CippWizardPage from "/src/components/CippWizard/CippWizardPage.jsx"; -import { CippTenantStep } from "/src/components/CippWizard/CippTenantStep.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippWizardConfirmation } from "../../../../components/CippWizard/CippWizardConfirmation"; +import CippWizardPage from "../../../../components/CippWizard/CippWizardPage.jsx"; +import { CippTenantStep } from "../../../../components/CippWizard/CippTenantStep.jsx"; import { CippWizardGroupTemplates } from "../../../../components/CippWizard/CippWizardGroupTemplates"; const Page = () => { diff --git a/src/pages/identity/administration/group-templates/edit.jsx b/src/pages/identity/administration/group-templates/edit.jsx index 6f7b74c11cdf..5fd7f3417805 100644 --- a/src/pages/identity/administration/group-templates/edit.jsx +++ b/src/pages/identity/administration/group-templates/edit.jsx @@ -1,106 +1,78 @@ -import { Box, CircularProgress } from "@mui/material"; -import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { useForm } from "react-hook-form"; -import { useSettings } from "../../../../hooks/use-settings"; -import CippAddGroupTemplateForm from "../../../../components/CippFormPages/CippAddGroupTemplateForm"; -import { useRouter } from "next/router"; -import { ApiGetCall } from "../../../../api/ApiCall"; -import { useEffect } from "react"; - -const Page = () => { - const userSettingsDefaults = useSettings(); - const router = useRouter(); - const { id } = router.query; - - const formControl = useForm({ - mode: "onChange", - defaultValues: { - tenantFilter: userSettingsDefaults.currentTenant, - }, - }); - - // Fetch template data - const { data: template, isFetching } = ApiGetCall({ - url: `/api/ListGroupTemplates?id=${id}`, - queryKey: `GroupTemplate-${id}`, - waiting: !!id, - }); - - // Map groupType values to valid radio options - const mapGroupType = (type) => { - // Map of group types to the corresponding option value - const groupTypeMap = { - // Standard mappings - azurerole: "azurerole", - generic: "generic", - m365: "m365", - dynamic: "dynamic", - dynamicdistribution: "dynamicdistribution", - distribution: "distribution", - security: "security", - - // Additional mappings from possible backend values - Unified: "m365", - Security: "generic", - Distribution: "distribution", - "Mail-enabled security": "security", - "Mail Enabled Security": "security", - "Azure Role Group": "azurerole", - "Azure Active Directory Role Group": "azurerole", - "Security Group": "generic", - "Microsoft 365 Group": "m365", - "Microsoft 365 (Unified)": "m365", - "Dynamic Group": "dynamic", - DynamicMembership: "dynamic", - "Dynamic Distribution Group": "dynamicdistribution", - DynamicDistribution: "dynamicdistribution", - "Distribution List": "distribution", - }; - - // Return just the value for the radio group, not the label/value pair - return groupTypeMap[type] || "generic"; // Default to generic if no mapping exists - }; - - // Set form values when template data is loaded - useEffect(() => { - if (template) { - const templateData = template[0]; - - // Make sure we have the necessary data before proceeding - if (templateData) { - formControl.reset({ - ...templateData, - groupType: mapGroupType(templateData.groupType), - tenantFilter: userSettingsDefaults.currentTenant, - }); - } - } - }, [template, formControl, userSettingsDefaults.currentTenant]); - - return ( - <> - - {/* Add debugging output to check what values are set */} -
    {JSON.stringify(formControl.watch(), null, 2)}
    - - - - -
    - - ); -}; - -Page.getLayout = (page) => {page}; - -export default Page; +import { Box, CircularProgress } from "@mui/material"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { useForm } from "react-hook-form"; +import { useSettings } from "../../../../hooks/use-settings"; +import CippAddGroupTemplateForm from "../../../../components/CippFormPages/CippAddGroupTemplateForm"; +import { useRouter } from "next/router"; +import { ApiGetCall } from "../../../../api/ApiCall"; +import { useEffect } from "react"; + +const Page = () => { + const userSettingsDefaults = useSettings(); + const router = useRouter(); + const { id } = router.query; + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + tenantFilter: userSettingsDefaults.currentTenant, + }, + }); + + // Fetch template data + const { data: template, isFetching } = ApiGetCall({ + url: `/api/ListGroupTemplates?id=${id}`, + queryKey: `GroupTemplate-${id}`, + waiting: !!id, + }); + + // Map groupType values to valid radio options + + // Set form values when template data is loaded + useEffect(() => { + if (template) { + const templateData = template[0]; + + // Make sure we have the necessary data before proceeding + if (templateData) { + formControl.reset({ + GUID: templateData.GUID, + displayName: templateData.displayName, + description: templateData.description, + username: templateData.username, + groupType: templateData.groupType, + membershipRules: templateData.membershipRules, + allowExternal: templateData.allowExternal, + tenantFilter: userSettingsDefaults.currentTenant, + }); + } + } + }, [template, formControl, userSettingsDefaults.currentTenant]); + + return ( + <> + + {/* Add debugging output to check what values are set */} +
    {JSON.stringify(formControl.watch(), null, 2)}
    + + + + +
    + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/identity/administration/group-templates/index.js b/src/pages/identity/administration/group-templates/index.js index 6fe4acd3230a..3920e4a01d26 100644 --- a/src/pages/identity/administration/group-templates/index.js +++ b/src/pages/identity/administration/group-templates/index.js @@ -1,10 +1,9 @@ import { Button } from "@mui/material"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; import { AddBox, RocketLaunch, Delete, GitHub, Edit } from "@mui/icons-material"; import Link from "next/link"; -import { CippCodeBlock } from "../../../../components/CippComponents/CippCodeBlock"; -import { ApiGetCall } from "/src/api/ApiCall"; +import { ApiGetCall } from "../../../../api/ApiCall"; import { CippPropertyListCard } from "../../../../components/CippCards/CippPropertyListCard"; import { getCippTranslation } from "../../../../utils/get-cipp-translation"; import { getCippFormatting } from "../../../../utils/get-cipp-formatting"; @@ -110,7 +109,7 @@ const Page = () => { { title="Groups" backButtonTitle="Group Overview" postUrl="/api/AddGroup" + resetForm={true} > diff --git a/src/pages/identity/administration/groups/edit.jsx b/src/pages/identity/administration/groups/edit.jsx index 870a213c88f9..4409353cb92b 100644 --- a/src/pages/identity/administration/groups/edit.jsx +++ b/src/pages/identity/administration/groups/edit.jsx @@ -1,11 +1,11 @@ -import React, { useEffect, useState } from "react"; -import { Divider, Typography } from "@mui/material"; +import { useEffect, useState } from "react"; +import { Box, Button, Divider, Typography, Alert } from "@mui/material"; import { Grid } from "@mui/system"; -import { useForm, useWatch } from "react-hook-form"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormUserSelector } from "/src/components/CippComponents/CippFormUserSelector"; +import { useForm } from "react-hook-form"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { CippFormUserSelector } from "../../../../components/CippComponents/CippFormUserSelector"; import { useRouter } from "next/router"; import { ApiGetCall } from "../../../../api/ApiCall"; import { useSettings } from "../../../../hooks/use-settings"; @@ -16,6 +16,9 @@ const EditGroup = () => { const router = useRouter(); const { groupId, groupType } = router.query; const [groupIdReady, setGroupIdReady] = useState(false); + const [showMembershipTable, setShowMembershipTable] = useState(false); + const [combinedData, setCombinedData] = useState([]); + const [initialValues, setInitialValues] = useState({}); const tenantFilter = useSettings().currentTenant; const groupInfo = ApiGetCall({ @@ -23,7 +26,6 @@ const EditGroup = () => { queryKey: `ListGroups-${groupId}`, waiting: groupIdReady, }); - const [combinedData, setCombinedData] = useState([]); useEffect(() => { if (groupId) { @@ -36,6 +38,13 @@ const EditGroup = () => { mode: "onChange", defaultValues: { tenantFilter: tenantFilter, + AddMember: [], + RemoveMember: [], + AddOwner: [], + RemoveOwner: [], + AddContact: [], + RemoveContact: [], + visibility: "Public", }, }); @@ -43,6 +52,7 @@ const EditGroup = () => { if (groupInfo.isSuccess) { const group = groupInfo.data?.groupInfo; if (group) { + // Create combined data for the table const combinedData = [ ...(groupInfo.data?.owners?.map((o) => ({ type: "Owner", @@ -57,12 +67,18 @@ const EditGroup = () => { ]; setCombinedData(combinedData); - formControl.reset({ + // Create initial values object + const formValues = { tenantFilter: tenantFilter, mail: group.mail, + mailNickname: group.mailNickname || "", allowExternal: groupInfo?.data?.allowExternal, sendCopies: groupInfo?.data?.sendCopies, - groupName: group.displayName, + hideFromOutlookClients: groupInfo?.data?.hideFromOutlookClients, + visibility: group?.visibility ?? "Public", + displayName: group.displayName, + description: group.description || "", + membershipRules: group.membershipRule || "", groupId: group.id, groupType: (() => { if (group.groupTypes?.includes("Unified")) { @@ -84,176 +100,363 @@ const EditGroup = () => { } return null; })(), + securityEnabled: group.securityEnabled, + // Initialize empty arrays for add/remove actions + AddMember: [], + RemoveMember: [], + AddOwner: [], + RemoveOwner: [], + AddContact: [], + RemoveContact: [], + }; + + // Store initial values for comparison + setInitialValues({ + allowExternal: groupInfo?.data?.allowExternal, + sendCopies: groupInfo?.data?.sendCopies, + hideFromOutlookClients: groupInfo?.data?.hideFromOutlookClients, + securityEnabled: group.securityEnabled, + visibility: group.visibility ?? "Public", }); + + // Reset the form with all values + formControl.reset(formValues); } } }, [groupInfo.isSuccess, router.query, groupInfo.isFetching]); + // Custom data formatter to only send changed values + const customDataFormatter = (formData) => { + const cleanedData = { ...formData }; + + // Properties that should only be sent if they've changed from initial values + const changeDetectionProperties = [ + "allowExternal", + "sendCopies", + "hideFromOutlookClients", + "securityEnabled", + "visibility", + ]; + + changeDetectionProperties.forEach((property) => { + if (formData[property] === initialValues[property]) { + delete cleanedData[property]; + } + }); + + return cleanedData; + }; + return ( - - - - Add - - - m.userPrincipalName)} - /> - + <> + + + + } + > + {groupInfo.isSuccess && groupInfo.data?.groupInfo?.onPremisesSyncEnabled && ( + + This group is synced from on-premises Active Directory. Changes should be made in the + on-premises environment instead. + + )} + {showMembershipTable ? ( + + + + ) : ( + + + + Group Properties + + + + + + + + + + - {/* AddOwners */} - - `${option.displayName} (${option.userPrincipalName})`} - valueField="userPrincipalName" - addedField={{ - id: "id", - displayName: "displayName", - }} - removeOptions={groupInfo.data?.owners?.map((o) => o.userPrincipalName)} - /> - - - m?.["@odata.type"] === "#microsoft.graph.orgContact") - .map((m) => m.mail)} - /> - - - - Remove + {groupInfo.data?.groupInfo?.groupTypes?.includes("DynamicMembership") && ( + + + + )} - m?.["@odata.type"] !== "#microsoft.graph.orgContact") - ?.map((m) => ({ - label: `${m.displayName} (${m.userPrincipalName})`, - value: m.userPrincipalName, - addedFields: { - id: m.id, - displayName: m.displayName, - }, - }))} - name="RemoveMember" - label="Remove Member" - multiple={true} - /> - + + + Add Members + - {/* RemoveOwners */} - - ({ - label: `${o.displayName} (${o.userPrincipalName})`, - value: o.userPrincipalName, - addedFields: { - id: o.id, - displayName: o.displayName, - }, - }))} - formControl={formControl} - name="RemoveOwner" - label="Remove Owner" - multiple={true} - /> - - - m?.["@odata.type"] === "#microsoft.graph.orgContact") - .map((m) => ({ - label: `${m.displayName} (${m.mail})`, - value: m.mail, - addedFields: { - id: m.id, - displayName: m.displayName, - mail: m.mail, - }, - }))} - formControl={formControl} - name="RemoveContact" - label="Remove Contact" - multiple={true} - /> - + + + !groupInfo.data?.members?.some((m) => m.id === option.value) + } + /> + + + + + !groupInfo.data?.owners?.some((o) => o.id === option.value) + } + /> + + + + + !groupInfo.data?.members + ?.filter((m) => m?.["@odata.type"] === "#microsoft.graph.orgContact") + ?.some((c) => c.id === option.value) + } + /> + - - {(groupType === "Microsoft 365" || groupType === "Distribution List") && ( - + + + Remove Members + + + + m?.["@odata.type"] !== "#microsoft.graph.orgContact") + ?.map((m) => ({ + label: `${m.displayName} (${m.userPrincipalName})`, + value: m.id, + addedFields: { + userPrincipalName: m.userPrincipalName, + displayName: m.displayName, + id: m.id, + }, + })) || [] + } + sortOptions={true} + /> + + + ({ + label: `${o.displayName} (${o.userPrincipalName})`, + value: o.id, + addedFields: { + userPrincipalName: o.userPrincipalName, + displayName: o.displayName, + id: o.id, + }, + })) || [] + } + sortOptions={true} /> - )} - {groupType === "Microsoft 365" && ( - + m?.["@odata.type"] === "#microsoft.graph.orgContact") + ?.map((m) => ({ + label: `${m.displayName} (${m.mail})`, + value: m.mail, + addedFields: { id: m.id }, + })) || [] + } + sortOptions={true} /> - )} - - - - - - - + + + + Group Settings + + + {groupType === "Microsoft 365" && ( + + + + )} + + {(groupType === "Microsoft 365" || groupType === "Distribution List") && ( + + + + )} + + {groupType === "Microsoft 365" && ( + + + + )} + + {groupType === "Microsoft 365" && ( + + + + )} + {groupType === "Microsoft 365" && ( + + + + )} + + + )} + + ); }; diff --git a/src/pages/identity/administration/groups/group/index.jsx b/src/pages/identity/administration/groups/group/index.jsx new file mode 100644 index 000000000000..03f7881828fa --- /dev/null +++ b/src/pages/identity/administration/groups/group/index.jsx @@ -0,0 +1,813 @@ +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; +import { useSettings } from "../../../../../hooks/use-settings"; +import { useRouter } from "next/router"; +import { ApiGetCall, ApiPostCall } from "../../../../../api/ApiCall"; +import CippFormSkeleton from "../../../../../components/CippFormPages/CippFormSkeleton"; +import CalendarIcon from "@heroicons/react/24/outline/CalendarIcon"; +import { + Group, + Mail, + Fingerprint, + Launch, + Person, + AdminPanelSettings, + Visibility, + Lock, + LockOpen, + CloudSync, + GroupSharp, + GroupAdd, +} from "@mui/icons-material"; +import { HeaderedTabbedLayout } from "../../../../../layouts/HeaderedTabbedLayout"; +import tabOptions from "./tabOptions"; +import { CippCopyToClipBoard } from "../../../../../components/CippComponents/CippCopyToClipboard"; +import { Box, Stack } from "@mui/system"; +import { Grid } from "@mui/system"; +import { SvgIcon, Typography, Card, CardHeader, Divider } from "@mui/material"; +import { CippBannerListCard } from "../../../../../components/CippCards/CippBannerListCard"; +import { CippTimeAgo } from "../../../../../components/CippComponents/CippTimeAgo"; +import { useEffect, useState } from "react"; +import { EyeIcon, PencilIcon, TrashIcon } from "@heroicons/react/24/outline"; +import { CippDataTable } from "../../../../../components/CippTable/CippDataTable"; +import { PropertyList } from "../../../../../components/property-list"; +import { PropertyListItem } from "../../../../../components/property-list-item"; +import { getCippFormatting } from "../../../../../utils/get-cipp-formatting"; +import { CippHead } from "../../../../../components/CippComponents/CippHead"; +import { Button } from "@mui/material"; +import { Edit } from "@mui/icons-material"; + +const Page = () => { + const userSettingsDefaults = useSettings(); + const router = useRouter(); + const { groupId } = router.query; + const [waiting, setWaiting] = useState(false); + + useEffect(() => { + if (groupId) { + setWaiting(true); + } + }, [groupId]); + + const groupRequest = ApiGetCall({ + url: `/api/ListGraphRequest`, + data: { + Endpoint: `groups/${groupId}`, + tenantFilter: router.query.tenantFilter ?? userSettingsDefaults.currentTenant, + }, + queryKey: `Group-${groupId}`, + waiting: waiting, + }); + + const groupBulkRequest = ApiPostCall({ + urlFromData: true, + }); + + function refreshFunction() { + if (!groupId) return; + const requests = [ + { + id: "groupMembers", + url: `/groups/${groupId}/members`, + method: "GET", + }, + { + id: "groupOwners", + url: `/groups/${groupId}/owners`, + method: "GET", + }, + { + id: "groupMemberOf", + url: `/groups/${groupId}/memberOf`, + method: "GET", + }, + ]; + + groupBulkRequest.mutate({ + url: "/api/ListGraphBulkRequest", + data: { + Requests: requests, + tenantFilter: userSettingsDefaults.currentTenant, + }, + }); + } + + useEffect(() => { + if ( + groupId && + userSettingsDefaults.currentTenant && + groupRequest.isSuccess && + !groupBulkRequest.isSuccess + ) { + refreshFunction(); + } + }, [groupId, userSettingsDefaults.currentTenant, groupRequest.isSuccess, groupBulkRequest.isSuccess]); + + // Handle response structure - ListGraphRequest may wrap single items in Results array + let groupData = null; + if (groupRequest.isSuccess && groupRequest.data) { + if (Array.isArray(groupRequest.data.Results)) { + groupData = groupRequest.data.Results[0]; + } else if (groupRequest.data.Results) { + groupData = groupRequest.data.Results; + } else { + groupData = groupRequest.data; + } + } + + const bulkData = groupBulkRequest?.data?.data ?? []; + const groupMembersData = bulkData?.find((item) => item.id === "groupMembers"); + const groupOwnersData = bulkData?.find((item) => item.id === "groupOwners"); + const groupMemberOfData = bulkData?.find((item) => item.id === "groupMemberOf"); + + const groupMembers = groupMembersData?.body?.value || []; + const groupOwners = groupOwnersData?.body?.value || []; + const groupMemberOf = groupMemberOfData?.body?.value || []; + + // Set the title and subtitle for the layout + const title = groupRequest.isSuccess ? groupData?.displayName : "Loading..."; + + const subtitle = groupRequest.isSuccess + ? [ + { + icon: , + text: , + }, + { + icon: , + text: , + }, + { + icon: , + text: ( + <> + Created: + + ), + }, + { + icon: , + text: ( + + ), + }, + ] + : []; + + // Calculate groupType and calculatedGroupType for actions + const calculateGroupType = (group) => { + if (!group) return { groupType: null, calculatedGroupType: null }; + let groupType = null; + let calculatedGroupType = null; + + if (group.groupTypes?.includes("Unified")) { + groupType = "Microsoft 365"; + calculatedGroupType = "m365"; + } else if (!group.mailEnabled && group.securityEnabled) { + groupType = "Security"; + calculatedGroupType = "security"; + } else if (group.mailEnabled && group.securityEnabled) { + groupType = "Mail-Enabled Security"; + calculatedGroupType = "mailenabledsecurity"; + } else if ( + (!group.groupTypes || group.groupTypes.length === 0) && + group.mailEnabled && + !group.securityEnabled + ) { + groupType = "Distribution List"; + calculatedGroupType = "distribution"; + } + + return { groupType, calculatedGroupType }; + }; + + // Calculate group type and add to data for actions + const { groupType, calculatedGroupType } = calculateGroupType(groupData); + const data = groupData + ? { + ...groupData, + groupType: groupType, + calculatedGroupType: calculatedGroupType, + } + : null; + + // Calculate group type for display + const getGroupType = () => { + if (!groupData) return "N/A"; + if (groupData.groupTypes?.includes("Unified")) { + return "Microsoft 365"; + } + if (!groupData.mailEnabled && groupData.securityEnabled) { + return "Security"; + } + if (groupData.mailEnabled && groupData.securityEnabled) { + return "Mail-Enabled Security"; + } + if ( + (!groupData.groupTypes || groupData.groupTypes.length === 0) && + groupData.mailEnabled && + !groupData.securityEnabled + ) { + return "Distribution List"; + } + return "N/A"; + }; + + // Get group actions + const getGroupActions = () => { + if (!groupData) return []; + const { groupType, calculatedGroupType } = calculateGroupType(groupData); + + return [ + { + //tested + label: "Edit Group", + link: "/identity/administration/groups/edit?groupId=[id]&groupType=[groupType]", + multiPost: false, + icon: , + color: "success", + showInActionsMenu: true, + }, + { + label: "Set Global Address List Visibility", + type: "POST", + url: "/api/ExecGroupsHideFromGAL", + icon: , + data: { + ID: "mail", + GroupType: "groupType", + }, + fields: [ + { + type: "radio", + name: "HidefromGAL", + label: "Global Address List Visibility", + options: [ + { label: "Hidden", value: true }, + { label: "Shown", value: false }, + ], + validators: { required: "Please select a visibility option" }, + }, + ], + confirmText: + "Are you sure you want to hide this group from the global address list? Remember this will not work if the group is AD Synched.", + multiPost: false, + }, + { + label: "Only allow messages from people inside the organisation", + type: "POST", + url: "/api/ExecGroupsDeliveryManagement", + icon: , + data: { + ID: "mail", + GroupType: "groupType", + OnlyAllowInternal: true, + }, + confirmText: + "Are you sure you want to only allow messages from people inside the organisation? Remember this will not work if the group is AD Synched.", + multiPost: false, + }, + { + label: "Allow messages from people inside and outside the organisation", + type: "POST", + icon: , + url: "/api/ExecGroupsDeliveryManagement", + data: { + ID: "mail", + GroupType: "groupType", + OnlyAllowInternal: false, + }, + confirmText: + "Are you sure you want to allow messages from people inside and outside the organisation? Remember this will not work if the group is AD Synched.", + multiPost: false, + }, + { + label: "Set Source of Authority", + type: "POST", + url: "/api/ExecSetCloudManaged", + icon: , + data: { + ID: "id", + displayName: "displayName", + type: "!Group", + }, + fields: [ + { + type: "radio", + name: "isCloudManaged", + label: "Source of Authority", + options: [ + { label: "Cloud Managed", value: true }, + { label: "On-Premises Managed", value: false }, + ], + validators: { required: "Please select a source of authority" }, + }, + ], + confirmText: + "Are you sure you want to change the source of authority for '[displayName]'? Setting it to On-Premises Managed will take until the next sync cycle to show the change.", + multiPost: false, + }, + { + label: "Create template based on group", + type: "POST", + url: "/api/AddGroupTemplate", + icon: , + data: { + displayName: "displayName", + description: "description", + groupType: "calculatedGroupType", + membershipRules: "membershipRule", + allowExternal: "allowExternal", + username: "mailNickname", + }, + confirmText: "Are you sure you want to create a template based on this group?", + multiPost: false, + }, + { + label: "Create Team from Group", + type: "POST", + url: "/api/AddGroupTeam", + icon: , + data: { + GroupId: "id", + }, + confirmText: + "Are you sure you want to create a Team from this group? Note: The group must be at least 15 minutes old for this to work.", + multiPost: false, + defaultvalues: { + TeamSettings: { + memberSettings: { + allowCreatePrivateChannels: false, + allowCreateUpdateChannels: true, + allowDeleteChannels: false, + allowAddRemoveApps: false, + allowCreateUpdateRemoveTabs: false, + allowCreateUpdateRemoveConnectors: false, + }, + messagingSettings: { + allowUserEditMessages: true, + allowUserDeleteMessages: true, + allowOwnerDeleteMessages: false, + allowTeamMentions: false, + allowChannelMentions: false, + }, + funSettings: { + allowGiphy: true, + giphyContentRating: "strict", + allowStickersAndMemes: false, + allowCustomMemes: false, + }, + }, + }, + fields: [ + { + type: "heading", + name: "memberSettingsHeading", + label: "Member Settings", + }, + { + type: "switch", + name: "TeamSettings.memberSettings.allowCreatePrivateChannels", + label: "Allow members to create private channels", + }, + { + type: "switch", + name: "TeamSettings.memberSettings.allowCreateUpdateChannels", + label: "Allow members to create and update channels", + }, + { + type: "switch", + name: "TeamSettings.memberSettings.allowDeleteChannels", + label: "Allow members to delete channels", + }, + { + type: "switch", + name: "TeamSettings.memberSettings.allowAddRemoveApps", + label: "Allow members to add and remove apps", + }, + { + type: "switch", + name: "TeamSettings.memberSettings.allowCreateUpdateRemoveTabs", + label: "Allow members to create, update and remove tabs", + }, + { + type: "switch", + name: "TeamSettings.memberSettings.allowCreateUpdateRemoveConnectors", + label: "Allow members to create, update and remove connectors", + }, + { + type: "heading", + name: "messagingSettingsHeading", + label: "Messaging Settings", + }, + { + type: "switch", + name: "TeamSettings.messagingSettings.allowUserEditMessages", + label: "Allow users to edit their messages", + }, + { + type: "switch", + name: "TeamSettings.messagingSettings.allowUserDeleteMessages", + label: "Allow users to delete their messages", + }, + { + type: "switch", + name: "TeamSettings.messagingSettings.allowOwnerDeleteMessages", + label: "Allow owners to delete messages", + }, + { + type: "switch", + name: "TeamSettings.messagingSettings.allowTeamMentions", + label: "Allow @team mentions", + }, + { + type: "switch", + name: "TeamSettings.messagingSettings.allowChannelMentions", + label: "Allow @channel mentions", + }, + { + type: "heading", + name: "funSettingsHeading", + label: "Fun Settings", + }, + { + type: "switch", + name: "TeamSettings.funSettings.allowGiphy", + label: "Allow Giphy", + }, + { + type: "select", + name: "TeamSettings.funSettings.giphyContentRating", + label: "Giphy content rating", + options: [ + { value: "strict", label: "Strict" }, + { value: "moderate", label: "Moderate" }, + ], + }, + { + type: "switch", + name: "TeamSettings.funSettings.allowStickersAndMemes", + label: "Allow stickers and memes", + }, + { + type: "switch", + name: "TeamSettings.funSettings.allowCustomMemes", + label: "Allow custom memes", + }, + ], + condition: (row) => row?.calculatedGroupType === "m365", + }, + { + label: "Delete Group", + type: "POST", + url: "/api/ExecGroupsDelete", + icon: , + data: { + ID: "id", + GroupType: "groupType", + DisplayName: "displayName", + }, + confirmText: "Are you sure you want to delete this group.", + multiPost: false, + }, + ]; + }; + + const groupActions = groupData ? getGroupActions() : []; + + // Prepare members items + const membersItems = + groupMembers.length > 0 + ? [ + { + id: 1, + cardLabelBox: { + cardLabelBoxHeader: , + }, + text: "Members", + subtext: "List of members in this group", + statusText: ` ${groupMembers.length} Member(s)`, + statusColor: "info.main", + table: { + title: "Members", + hideTitle: true, + actions: [ + { + icon: , + label: "View User", + link: `/identity/administration/users/user?userId=[id]&tenantFilter=${userSettingsDefaults.currentTenant}`, + condition: (row) => row["@odata.type"] === "#microsoft.graph.user", + }, + ], + data: groupMembers, + refreshFunction: refreshFunction, + simpleColumns: ["displayName", "userPrincipalName", "mail", "@odata.type"], + }, + }, + ] + : groupMembersData?.status !== 200 + ? [ + { + id: 1, + cardLabelBox: "!", + text: "Error loading members", + subtext: groupMembersData?.body?.error?.message || "Unknown error", + statusColor: "error.main", + statusText: "Error", + propertyItems: [], + }, + ] + : [ + { + id: 1, + cardLabelBox: "-", + text: "No members", + subtext: "This group has no members.", + statusColor: "warning.main", + statusText: "No Members", + propertyItems: [], + }, + ]; + + // Prepare owners items + const ownersItems = + groupOwners.length > 0 + ? [ + { + id: 1, + cardLabelBox: { + cardLabelBoxHeader: , + }, + text: "Owners", + subtext: "List of owners of this group", + statusText: ` ${groupOwners.length} Owner(s)`, + statusColor: "info.main", + table: { + title: "Owners", + hideTitle: true, + actions: [ + { + icon: , + label: "View User", + link: `/identity/administration/users/user?userId=[id]&tenantFilter=${userSettingsDefaults.currentTenant}`, + condition: (row) => row["@odata.type"] === "#microsoft.graph.user", + }, + ], + data: groupOwners, + refreshFunction: refreshFunction, + simpleColumns: ["displayName", "userPrincipalName", "mail", "@odata.type"], + }, + }, + ] + : groupOwnersData?.status !== 200 + ? [ + { + id: 1, + cardLabelBox: "!", + text: "Error loading owners", + subtext: groupOwnersData?.body?.error?.message || "Unknown error", + statusColor: "error.main", + statusText: "Error", + propertyItems: [], + }, + ] + : [ + { + id: 1, + cardLabelBox: "-", + text: "No owners", + subtext: "This group has no owners.", + statusColor: "warning.main", + statusText: "No Owners", + propertyItems: [], + }, + ]; + + // Prepare group memberships items + const groupMembershipItems = + groupMemberOf.length > 0 + ? [ + { + id: 1, + cardLabelBox: { + cardLabelBoxHeader: , + }, + text: "Group Memberships", + subtext: "List of groups this group is a member of", + statusText: ` ${ + groupMemberOf?.filter((item) => item?.["@odata.type"] === "#microsoft.graph.group").length + } Group(s)`, + statusColor: "info.main", + table: { + title: "Group Memberships", + hideTitle: true, + actions: [ + { + icon: , + label: "View Group", + link: `/identity/administration/groups/group?groupId=[id]&tenantFilter=${userSettingsDefaults.currentTenant}`, + condition: (row) => row["@odata.type"] === "#microsoft.graph.group", + }, + { + icon: , + label: "Edit Group", + link: "/identity/administration/groups/edit?groupId=[id]&groupType=[calculatedGroupType]", + condition: (row) => row["@odata.type"] === "#microsoft.graph.group", + }, + ], + data: groupMemberOf?.filter((item) => item?.["@odata.type"] === "#microsoft.graph.group"), + refreshFunction: refreshFunction, + simpleColumns: ["displayName", "groupTypes", "securityEnabled", "mailEnabled"], + }, + }, + ] + : groupMemberOfData?.status !== 200 + ? [ + { + id: 1, + cardLabelBox: "!", + text: "Error loading group memberships", + subtext: groupMemberOfData?.body?.error?.message || "Unknown error", + statusColor: "error.main", + statusText: "Error", + propertyItems: [], + }, + ] + : [ + { + id: 1, + cardLabelBox: "-", + text: "No group memberships", + subtext: "This group is not a member of any other groups.", + statusColor: "warning.main", + statusText: "No Groups", + propertyItems: [], + }, + ]; + + return ( + + {groupRequest.isLoading && } + {groupRequest.isSuccess && ( + + + + + + + + + + + + + {data?.displayName || "N/A"} + + {getGroupType()} + + + } + /> + + + + Display Name: + + + {getCippFormatting(data?.displayName, "displayName") || "N/A"} + + + + + Group ID: + + + {getCippFormatting(data?.id, "id") || "N/A"} + + + {data?.mail && ( + + + Email Address: + + {data.mail || "N/A"} + + )} + {data?.description && ( + + + Description: + + {data.description || "N/A"} + + )} + + + Group Type: + + {getGroupType()} + + + + Mail Enabled: + + + {getCippFormatting(data?.mailEnabled, "mailEnabled") || "N/A"} + + + + + Security Enabled: + + + {getCippFormatting(data?.securityEnabled, "securityEnabled") || "N/A"} + + + {data?.createdDateTime && ( + + + Created Date: + + + {data.createdDateTime + ? new Date(data.createdDateTime).toLocaleString() + : "N/A"} + + + )} + {data?.onPremisesSyncEnabled && ( + + + Synced from AD: + + + {getCippFormatting(data?.onPremisesSyncEnabled, "onPremisesSyncEnabled") || + "N/A"} + + + )} + + } + /> + + + + + + Members + + Owners + + Memberships + + + +
    + + )} + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/identity/administration/groups/group/tabOptions.json b/src/pages/identity/administration/groups/group/tabOptions.json new file mode 100644 index 000000000000..f092f4cb37d6 --- /dev/null +++ b/src/pages/identity/administration/groups/group/tabOptions.json @@ -0,0 +1,6 @@ +[ + { + "label": "View Group", + "path": "/identity/administration/groups/group" + } +] diff --git a/src/pages/identity/administration/groups/index.js b/src/pages/identity/administration/groups/index.js index 427a2ae002a5..3320ac353204 100644 --- a/src/pages/identity/administration/groups/index.js +++ b/src/pages/identity/administration/groups/index.js @@ -1,55 +1,69 @@ import { Button } from "@mui/material"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; import Link from "next/link"; -import { TrashIcon } from "@heroicons/react/24/outline"; +import { TrashIcon, EyeIcon } from "@heroicons/react/24/outline"; import { Visibility, - VisibilityOff, GroupAdd, Edit, LockOpen, Lock, GroupSharp, + CloudSync, + RocketLaunch, } from "@mui/icons-material"; +import { Stack } from "@mui/system"; +import { useState } from "react"; +import { useSettings } from "../../../../hooks/use-settings"; const Page = () => { const pageTitle = "Groups"; + const [showMembers, setShowMembers] = useState(false); + const { currentTenant } = useSettings(); + + const handleMembersToggle = () => { + setShowMembers(!showMembers); + }; const actions = [ + { + label: "View Group", + link: `/identity/administration/groups/group?groupId=[id]&tenantFilter=${currentTenant}`, + color: "info", + icon: , + multiPost: false, + }, { //tested label: "Edit Group", - link: "/identity/administration/groups/edit?groupId=[id]&groupType=[calculatedGroupType]", + link: "/identity/administration/groups/edit?groupId=[id]&groupType=[groupType]", multiPost: false, icon: , color: "success", }, { - label: "Hide from Global Address List", - type: "POST", - url: "/api/ExecGroupsHideFromGAL", - icon: , - data: { - ID: "mail", - GroupType: "calculatedGroupType", - HidefromGAL: true, - }, - confirmText: - "Are you sure you want to hide this mailbox from the global address list? Remember this will not work if the group is AD Synched.", - multiPost: false, - }, - { - label: "Unhide from Global Address List", + label: "Set Global Address List Visibility", type: "POST", url: "/api/ExecGroupsHideFromGAL", icon: , data: { ID: "mail", - GroupType: "calculatedGroupType", - HidefromGAL: false, + GroupType: "groupType", }, + fields: [ + { + type: "radio", + name: "HidefromGAL", + label: "Global Address List Visibility", + options: [ + { label: "Hidden", value: true }, + { label: "Shown", value: false }, + ], + validators: { required: "Please select a visibility option" }, + }, + ], confirmText: - "Are you sure you want to unhide this mailbox from the global address list? Remember this will not work if the group is AD Synched.", + "Are you sure you want to hide this group from the global address list? Remember this will not work if the group is AD Synched.", multiPost: false, }, { @@ -59,7 +73,7 @@ const Page = () => { icon: , data: { ID: "mail", - GroupType: "calculatedGroupType", + GroupType: "groupType", OnlyAllowInternal: true, }, confirmText: @@ -73,29 +87,189 @@ const Page = () => { url: "/api/ExecGroupsDeliveryManagement", data: { ID: "mail", - GroupType: "calculatedGroupType", + GroupType: "groupType", OnlyAllowInternal: false, }, confirmText: "Are you sure you want to allow messages from people inside and outside the organisation? Remember this will not work if the group is AD Synched.", multiPost: false, }, + { + label: "Set Source of Authority", + type: "POST", + url: "/api/ExecSetCloudManaged", + icon: , + data: { + ID: "id", + displayName: "displayName", + type: "!Group", + }, + fields: [ + { + type: "radio", + name: "isCloudManaged", + label: "Source of Authority", + options: [ + { label: "Cloud Managed", value: true }, + { label: "On-Premises Managed", value: false }, + ], + validators: { required: "Please select a source of authority" }, + }, + ], + confirmText: + "Are you sure you want to change the source of authority for '[displayName]'? Setting it to On-Premises Managed will take until the next sync cycle to show the change.", + multiPost: false, + }, { label: "Create template based on group", type: "POST", url: "/api/AddGroupTemplate", icon: , data: { - Displayname: "displayName", - Description: "description", - GroupType: "calculatedGroupType", - MembershipRules: "membershipRule", + displayName: "displayName", + description: "description", + groupType: "calculatedGroupType", + membershipRules: "membershipRule", allowExternal: "allowExternal", username: "mailNickname", }, confirmText: "Are you sure you want to create a template based on this group?", multiPost: false, }, + { + label: "Create Team from Group", + type: "POST", + url: "/api/AddGroupTeam", + icon: , + data: { + GroupId: "id", + }, + confirmText: + "Are you sure you want to create a Team from this group? Note: The group must be at least 15 minutes old for this to work.", + multiPost: false, + defaultvalues: { + TeamSettings: { + memberSettings: { + allowCreatePrivateChannels: false, + allowCreateUpdateChannels: true, + allowDeleteChannels: false, + allowAddRemoveApps: false, + allowCreateUpdateRemoveTabs: false, + allowCreateUpdateRemoveConnectors: false, + }, + messagingSettings: { + allowUserEditMessages: true, + allowUserDeleteMessages: true, + allowOwnerDeleteMessages: false, + allowTeamMentions: false, + allowChannelMentions: false, + }, + funSettings: { + allowGiphy: true, + giphyContentRating: "strict", + allowStickersAndMemes: false, + allowCustomMemes: false, + }, + }, + }, + fields: [ + { + type: "heading", + name: "memberSettingsHeading", + label: "Member Settings", + }, + { + type: "switch", + name: "TeamSettings.memberSettings.allowCreatePrivateChannels", + label: "Allow members to create private channels", + }, + { + type: "switch", + name: "TeamSettings.memberSettings.allowCreateUpdateChannels", + label: "Allow members to create and update channels", + }, + { + type: "switch", + name: "TeamSettings.memberSettings.allowDeleteChannels", + label: "Allow members to delete channels", + }, + { + type: "switch", + name: "TeamSettings.memberSettings.allowAddRemoveApps", + label: "Allow members to add and remove apps", + }, + { + type: "switch", + name: "TeamSettings.memberSettings.allowCreateUpdateRemoveTabs", + label: "Allow members to create, update and remove tabs", + }, + { + type: "switch", + name: "TeamSettings.memberSettings.allowCreateUpdateRemoveConnectors", + label: "Allow members to create, update and remove connectors", + }, + { + type: "heading", + name: "messagingSettingsHeading", + label: "Messaging Settings", + }, + { + type: "switch", + name: "TeamSettings.messagingSettings.allowUserEditMessages", + label: "Allow users to edit their messages", + }, + { + type: "switch", + name: "TeamSettings.messagingSettings.allowUserDeleteMessages", + label: "Allow users to delete their messages", + }, + { + type: "switch", + name: "TeamSettings.messagingSettings.allowOwnerDeleteMessages", + label: "Allow owners to delete messages", + }, + { + type: "switch", + name: "TeamSettings.messagingSettings.allowTeamMentions", + label: "Allow @team mentions", + }, + { + type: "switch", + name: "TeamSettings.messagingSettings.allowChannelMentions", + label: "Allow @channel mentions", + }, + { + type: "heading", + name: "funSettingsHeading", + label: "Fun Settings", + }, + { + type: "switch", + name: "TeamSettings.funSettings.allowGiphy", + label: "Allow Giphy", + }, + { + type: "select", + name: "TeamSettings.funSettings.giphyContentRating", + label: "Giphy content rating", + options: [ + { value: "strict", label: "Strict" }, + { value: "moderate", label: "Moderate" }, + ], + }, + { + type: "switch", + name: "TeamSettings.funSettings.allowStickersAndMemes", + label: "Allow stickers and memes", + }, + { + type: "switch", + name: "TeamSettings.funSettings.allowCustomMemes", + label: "Allow custom memes", + }, + ], + condition: (row) => row?.calculatedGroupType === "m365", + }, { label: "Delete Group", type: "POST", @@ -103,7 +277,7 @@ const Page = () => { icon: , data: { ID: "id", - GroupType: "calculatedGroupType", + GroupType: "groupType", DisplayName: "displayName", }, confirmText: "Are you sure you want to delete this group.", @@ -120,6 +294,11 @@ const Page = () => { "mailEnabled", "securityEnabled", "visibility", + "assignedLicenses", + "licenseProcessingState.state", + "onPremisesSamAccountName", + "membershipRule", + "onPremisesSyncEnabled", ], actions: actions, }; @@ -127,13 +306,29 @@ const Page = () => { + + - + + } apiUrl="/api/ListGroups" + apiData={{ expandMembers: showMembers }} + queryKey={ + showMembers + ? `groups-with-members-${currentTenant}` + : `groups-without-members-${currentTenant}` + } actions={actions} offCanvas={offCanvas} simpleColumns={[ @@ -142,13 +337,13 @@ const Page = () => { "mail", "mailEnabled", "mailNickname", - "calculatedGroupType", + "groupType", "assignedLicenses", + "licenseProcessingState.state", "visibility", "onPremisesSamAccountName", "membershipRule", "onPremisesSyncEnabled", - "userPrincipalName", ]} /> ); diff --git a/src/pages/identity/administration/index.js b/src/pages/identity/administration/index.js index ddd398e434f7..f2222b9e4fab 100644 --- a/src/pages/identity/administration/index.js +++ b/src/pages/identity/administration/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; const Page = () => { const pageTitle = "Administration"; diff --git a/src/pages/identity/administration/jit-admin-templates/add.jsx b/src/pages/identity/administration/jit-admin-templates/add.jsx new file mode 100644 index 000000000000..5b776241428d --- /dev/null +++ b/src/pages/identity/administration/jit-admin-templates/add.jsx @@ -0,0 +1,287 @@ +import { Box, Divider, Typography } from "@mui/material"; +import { Grid } from "@mui/system"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { useForm, useWatch } from "react-hook-form"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { CippFormCondition } from "../../../../components/CippComponents/CippFormCondition"; +import { CippFormDomainSelector } from "../../../../components/CippComponents/CippFormDomainSelector"; +import { CippFormUserSelector } from "../../../../components/CippComponents/CippFormUserSelector"; +import gdaproles from "../../../../data/GDAPRoles.json"; +import { useSettings } from "../../../../hooks/use-settings"; + +const Page = () => { + const userSettingsDefaults = useSettings(); + const formControl = useForm({ + mode: "onChange", + defaultValues: { + tenantFilter: userSettingsDefaults.currentTenant, + }, + }); + + const watchedTenant = useWatch({ control: formControl.control, name: "tenantFilter" }); + const isAllTenants = watchedTenant?.value === "AllTenants" || watchedTenant === "AllTenants"; + + return ( + <> + + + + + Template Information + + + + + + + + + + + Default JIT Admin Settings + + + + ({ label: role.Name, value: role.ObjectId }))} + formControl={formControl} + required={true} + validators={{ + required: "At least one default role is required", + validate: (options) => { + if (!options?.length) { + return "At least one default role is required"; + } + return true; + }, + }} + /> + + + + { + if (!value) return true; // Optional field + const durationValue = typeof value === "object" && value.value ? value.value : value; + const iso8601Regex = /^P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)W)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?)?$/; + if (!iso8601Regex.test(durationValue)) { + return "Invalid format. Use PT1H, P1D, PT2H30M, etc."; + } + return true; + }, + }} + /> + + + + + + + + + + + + + + + + + + + + + User Creation Settings + + + + + {isAllTenants + ? "AllTenants templates can only use 'New User' option (no further options are configurable)" + : "Choose whether this template creates a new user or assigns to existing user"} + + + + + + + + {isAllTenants + ? "Pre-fill user details (optional, for AllTenants templates)" + : "Pre-fill user details (optional, only for specific tenant templates)"} + + + + + + + + + + + + {!isAllTenants && ( + + + + )} + + + + {!isAllTenants && ( + <> + + + Select default user (optional, only for specific tenant templates) + + + + + + + )} + + + + + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/identity/administration/jit-admin-templates/edit.jsx b/src/pages/identity/administration/jit-admin-templates/edit.jsx new file mode 100644 index 000000000000..468c457d4240 --- /dev/null +++ b/src/pages/identity/administration/jit-admin-templates/edit.jsx @@ -0,0 +1,313 @@ +import { Box, Divider, Typography } from "@mui/material"; +import { Grid } from "@mui/system"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { useForm, useWatch } from "react-hook-form"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { CippFormCondition } from "../../../../components/CippComponents/CippFormCondition"; +import { CippFormDomainSelector } from "../../../../components/CippComponents/CippFormDomainSelector"; +import { CippFormUserSelector } from "../../../../components/CippComponents/CippFormUserSelector"; +import gdaproles from "../../../../data/GDAPRoles.json"; +import { useSettings } from "../../../../hooks/use-settings"; +import { useRouter } from "next/router"; +import { ApiGetCall } from "../../../../api/ApiCall"; +import { useEffect } from "react"; + +const Page = () => { + const userSettingsDefaults = useSettings(); + const router = useRouter(); + const { id } = router.query; + + const formControl = useForm({ + mode: "onChange", + defaultValues: { + tenantFilter: userSettingsDefaults.currentTenant, + }, + }); + + const watchedTenant = useWatch({ control: formControl.control, name: "tenantFilter" }); + const isAllTenants = watchedTenant?.value === "AllTenants" || watchedTenant === "AllTenants"; + + // Get the template data + const template = ApiGetCall({ + url: `/api/ListJITAdminTemplates?GUID=${id}`, + queryKey: `JITAdminTemplate-${id}`, + waiting: !!id, + }); + + // Populate form when template data is loaded + useEffect(() => { + if (template.isSuccess && template.data?.[0]) { + const templateData = template.data[0]; + formControl.reset({ + ...templateData, + GUID: id, + }); + } + }, [template.isSuccess, template.data]); + + return ( + <> + + + + + Template Information + + + + + + + + + + + Default JIT Admin Settings + + + + ({ label: role.Name, value: role.ObjectId }))} + formControl={formControl} + required={true} + validators={{ + required: "At least one default role is required", + validate: (options) => { + if (!options?.length) { + return "At least one default role is required"; + } + return true; + }, + }} + /> + + + + { + if (!value) return true; // Optional field + const durationValue = typeof value === "object" && value.value ? value.value : value; + const iso8601Regex = /^P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)W)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?)?$/; + if (!iso8601Regex.test(durationValue)) { + return "Invalid format. Use PT1H, P1D, PT2H30M, etc."; + } + return true; + }, + }} + /> + + + + + + + + + + + + + + + + + + + + + User Creation Settings + + + + + + + + + + {isAllTenants + ? "Pre-fill user details (optional, for AllTenants templates)" + : "Pre-fill user details (optional, only for specific tenant templates)"} + + + + + + + + + + + + {!isAllTenants && ( + + + + )} + + + + {!isAllTenants && ( + <> + + + Select default user (optional, only for specific tenant templates) + + + + + + + )} + + + + + + + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/identity/administration/jit-admin-templates/index.js b/src/pages/identity/administration/jit-admin-templates/index.js new file mode 100644 index 000000000000..8f3c4cd85a50 --- /dev/null +++ b/src/pages/identity/administration/jit-admin-templates/index.js @@ -0,0 +1,140 @@ +import { Button } from "@mui/material"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { AddBox, Delete, GitHub, Edit } from "@mui/icons-material"; +import Link from "next/link"; +import { ApiGetCall } from "../../../../api/ApiCall"; +import { CippPropertyListCard } from "../../../../components/CippCards/CippPropertyListCard"; +import { getCippTranslation } from "../../../../utils/get-cipp-translation"; +import { getCippFormatting } from "../../../../utils/get-cipp-formatting"; +import { useSettings } from "../../../../hooks/use-settings"; + +const Page = () => { + const pageTitle = "JIT Admin Templates"; + const tenantFilter = useSettings()?.currentTenant; + const integrations = ApiGetCall({ + url: "/api/ListExtensionsConfig", + queryKey: "Integrations", + refetchOnMount: false, + refetchOnReconnect: false, + }); + const actions = [ + { + label: "Edit Template", + icon: , + link: "/identity/administration/jit-admin-templates/edit?id=[GUID]", + }, + { + label: "Save to GitHub", + type: "POST", + url: "/api/ExecCommunityRepo", + icon: , + data: { + Action: "UploadTemplate", + GUID: "GUID", + }, + fields: [ + { + label: "Repository", + name: "FullName", + type: "select", + api: { + url: "/api/ListCommunityRepos", + data: { + WriteAccess: true, + }, + queryKey: "CommunityRepos-Write", + dataKey: "Results", + valueField: "FullName", + labelField: "FullName", + }, + multiple: false, + creatable: false, + required: true, + validators: { + required: { value: true, message: "This field is required" }, + }, + }, + { + label: "Commit Message", + placeholder: "Enter a commit message for adding this file to GitHub", + name: "Message", + type: "textField", + multiline: true, + required: true, + rows: 4, + }, + ], + confirmText: "Are you sure you want to save this template to the selected repository?", + condition: () => integrations.isSuccess && integrations?.data?.GitHub?.Enabled, + }, + { + label: "Delete Template", + type: "POST", + url: "/api/RemoveJITAdminTemplate", + icon: , + data: { + ID: "GUID", + }, + confirmText: "Do you want to delete the template?", + multiPost: false, + }, + ]; + + const offCanvas = { + children: (data) => { + const keys = Object.keys(data).filter( + (key) => !key.includes("@odata") && !key.includes("@data") + ); + const properties = []; + keys.forEach((key) => { + if (data[key] && data[key].length > 0) { + properties.push({ + label: getCippTranslation(key), + value: getCippFormatting(data[key], key), + }); + } + }); + return ( + + ); + }, + }; + + return ( + }> + Add JIT Admin Template + + } + offCanvas={offCanvas} + simpleColumns={[ + "templateName", + "defaultForTenant", + "tenantFilter", + "defaultDuration.label", + "defaultRoles", + "generateTAPByDefault", + "defaultExpireAction.label", + "defaultNotificationActions", + "reasonTemplate" + ]} + /> + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/identity/administration/jit-admin/add.jsx b/src/pages/identity/administration/jit-admin/add.jsx index 3de0924ffc61..3e7f80d73559 100644 --- a/src/pages/identity/administration/jit-admin/add.jsx +++ b/src/pages/identity/administration/jit-admin/add.jsx @@ -1,238 +1,529 @@ -import { Box, Divider } from "@mui/material"; -import { Grid } from "@mui/system"; -import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippFormTenantSelector } from "../../../../components/CippComponents/CippFormTenantSelector"; -import { useForm } from "react-hook-form"; -import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; -import { CippFormCondition } from "../../../../components/CippComponents/CippFormCondition"; -import gdaproles from "/src/data/GDAPRoles.json"; -import { CippFormDomainSelector } from "../../../../components/CippComponents/CippFormDomainSelector"; -import { CippFormUserSelector } from "../../../../components/CippComponents/CippFormUserSelector"; -const Page = () => { - const formControl = useForm({ Mode: "onChange" }); - return ( - <> - - - - - - - - - - - - - - - - - - - - - - - { - if (!option?.value) { - return "Domain is required"; - } - return true; - }, - }} - /> - - - - - - - - - - - - - - { - if (!value) { - return "Start date is required"; - } - return true; - }, - }} - /> - - - { - const startDate = formControl.getValues("startDate"); - if (!value) { - return "End date is required"; - } - if (new Date(value) < new Date(startDate)) { - return "End date must be after start date"; - } - return true; - }, - }} - /> - - - ({ label: role.Name, value: role.ObjectId }))} - formControl={formControl} - required={true} - validators={{ - validate: (options) => { - if (!options?.length) { - return "At least one role is required"; - } - return true; - }, - }} - /> - - - - - - { - if (!option?.value) { - return "Expiration action is required"; - } - return true; - }, - }} - /> - - - - - - - - - ); -}; - -Page.getLayout = (page) => {page}; - -export default Page; +import { Box, Divider } from "@mui/material"; +import { Grid } from "@mui/system"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippFormTenantSelector } from "../../../../components/CippComponents/CippFormTenantSelector"; +import { useForm, useWatch } from "react-hook-form"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { CippFormCondition } from "../../../../components/CippComponents/CippFormCondition"; +import gdaproles from "../../../../data/GDAPRoles.json"; +import { CippFormDomainSelector } from "../../../../components/CippComponents/CippFormDomainSelector"; +import { CippFormUserSelector } from "../../../../components/CippComponents/CippFormUserSelector"; +import { CippFormGroupSelector } from "../../../../components/CippComponents/CippFormGroupSelector"; +import { ApiGetCall } from "../../../../api/ApiCall"; +import { useEffect, useState } from "react"; + +const Page = () => { + const formControl = useForm({ mode: "onChange" }); + const selectedTenant = useWatch({ control: formControl.control, name: "tenantFilter" }); + const [selectedTemplate, setSelectedTemplate] = useState(null); + + const jitAdminTemplates = ApiGetCall({ + url: selectedTenant + ? `/api/ListJITAdminTemplates?TenantFilter=${selectedTenant.value}` + : undefined, + queryKey: selectedTenant ? `JITAdminTemplates-${selectedTenant.value}` : "JITAdminTemplates", + refetchOnMount: false, + refetchOnReconnect: false, + waiting: !!selectedTenant, + }); + + const watcher = useWatch({ control: formControl.control }); + const useRoles = useWatch({ control: formControl.control, name: "useRoles" }); + const useGroups = useWatch({ control: formControl.control, name: "useGroups" }); + + // Clear fields when switches are toggled off + useEffect(() => { + if (!useRoles) { + formControl.setValue("adminRoles", []); + } + }, [useRoles]); + + useEffect(() => { + if (!useGroups) { + formControl.setValue("groupMemberships", []); + } + }, [useGroups]); + + // Reset expiration action when switches change + useEffect(() => { + const currentAction = formControl.getValues("expireAction"); + if (!currentAction?.value) return; + + if (!useRoles && currentAction.value === "RemoveRoles") { + formControl.setValue("expireAction", null); + } else if (!useGroups && currentAction.value === "RemoveGroups") { + formControl.setValue("expireAction", null); + } else if ((!useRoles || !useGroups) && currentAction.value === "RemoveRolesAndGroups") { + formControl.setValue("expireAction", null); + } else if (useRoles && useGroups && currentAction.value === "RemoveRoles") { + formControl.setValue("expireAction", null); + } else if (useRoles && useGroups && currentAction.value === "RemoveGroups") { + formControl.setValue("expireAction", null); + } + }, [useRoles, useGroups]); + + // Simple duration parser for basic ISO 8601 durations + const parseDuration = (duration) => { + if (!duration) return null; + const matches = duration.match( + /P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)W)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?)?/ + ); + if (!matches) return null; + return { + years: parseInt(matches[1] || 0), + months: parseInt(matches[2] || 0), + weeks: parseInt(matches[3] || 0), + days: parseInt(matches[4] || 0), + hours: parseInt(matches[5] || 0), + minutes: parseInt(matches[6] || 0), + seconds: parseInt(matches[7] || 0), + }; + }; + + const addDurationToDate = (date, duration) => { + if (!date || !duration) return null; + const parsed = parseDuration(duration); + if (!parsed) return null; + + const result = new Date(date); + result.setFullYear(result.getFullYear() + parsed.years); + result.setMonth(result.getMonth() + parsed.months); + result.setDate(result.getDate() + parsed.weeks * 7); + result.setDate(result.getDate() + parsed.days); + result.setHours(result.getHours() + parsed.hours); + result.setMinutes(result.getMinutes() + parsed.minutes); + result.setSeconds(result.getSeconds() + parsed.seconds); + return result; + }; + + // Auto-select default template for tenant + // Priority: tenant-specific default > AllTenants default + useEffect(() => { + if (jitAdminTemplates.isSuccess && !watcher.jitAdminTemplate) { + const templates = jitAdminTemplates.data || []; + + // First, try to find a tenant-specific default template + let defaultTemplate = templates.find( + (template) => + template.defaultForTenant === true && + template.tenantFilter !== "AllTenants" && + template.tenantFilter === selectedTenant?.value + ); + + // If not found, fall back to AllTenants default template + if (!defaultTemplate) { + defaultTemplate = templates.find( + (template) => template.defaultForTenant === true && template.tenantFilter === "AllTenants" + ); + } + + if (defaultTemplate) { + formControl.setValue("jitAdminTemplate", { + label: defaultTemplate.templateName, + value: defaultTemplate.GUID, + addedFields: defaultTemplate, + }); + setSelectedTemplate(defaultTemplate); + } + } + }, [jitAdminTemplates.isSuccess, selectedTenant]); + + // Only set template-driven fields when the template actually changes + const [lastTemplate, setLastTemplate] = useState(null); + useEffect(() => { + const template = watcher.jitAdminTemplate?.addedFields; + if (!template || template.GUID === lastTemplate) return; + setSelectedTemplate(template); + setLastTemplate(template.GUID); + + // Helpers + const roundDown15 = (date) => { + const d = new Date(date); + d.setMilliseconds(0); + d.setSeconds(0); + d.setMinutes(Math.floor(d.getMinutes() / 15) * 15); + return d; + }; + const roundUp15 = (date) => { + const d = new Date(date); + d.setMilliseconds(0); + d.setSeconds(0); + let min = d.getMinutes(); + d.setMinutes(min % 15 === 0 ? min : Math.ceil(min / 15) * 15); + if (d.getMinutes() === 60) { + d.setHours(d.getHours() + 1); + d.setMinutes(0); + } + return d; + }; + + // Set all template-driven fields + formControl.setValue("adminRoles", template.defaultRoles || [], { shouldDirty: true }); + formControl.setValue("expireAction", template.defaultExpireAction || null, { + shouldDirty: true, + }); + formControl.setValue("postExecution", template.defaultNotificationActions || [], { + shouldDirty: true, + }); + formControl.setValue("UseTAP", template.generateTAPByDefault ?? false, { shouldDirty: true }); + formControl.setValue("reason", template.reasonTemplate || "", { shouldDirty: true }); + + // User action and user details + if (template.defaultUserAction) { + formControl.setValue("userAction", template.defaultUserAction, { shouldDirty: true }); + } + if (template.defaultFirstName) { + formControl.setValue("firstName", template.defaultFirstName, { shouldDirty: true }); + } + if (template.defaultLastName) { + formControl.setValue("lastName", template.defaultLastName, { shouldDirty: true }); + } + if (template.defaultUserName) { + formControl.setValue("userName", template.defaultUserName, { shouldDirty: true }); + } + if (template.defaultDomain) { + formControl.setValue("domain", template.defaultDomain, { shouldDirty: true }); + } + if (template.defaultExistingUser) { + formControl.setValue("existingUser", template.defaultExistingUser, { shouldDirty: true }); + } + + // Dates + if (template.defaultDuration) { + const duration = + typeof template.defaultDuration === "object" && template.defaultDuration !== null + ? template.defaultDuration.value + : template.defaultDuration; + const start = roundDown15(new Date()); + const unixStart = Math.floor(start.getTime() / 1000); + formControl.setValue("startDate", unixStart, { shouldDirty: true }); + const end = roundUp15(addDurationToDate(start, duration)); + const unixEnd = Math.floor(end.getTime() / 1000); + formControl.setValue("endDate", unixEnd, { shouldDirty: true }); + } + }, [watcher.jitAdminTemplate, lastTemplate]); + + // Recalculate end date when start date changes and template has default duration + useEffect(() => { + if (watcher.startDate && selectedTemplate?.defaultDuration) { + const durationValue = + typeof selectedTemplate.defaultDuration === "object" && + selectedTemplate.defaultDuration !== null + ? selectedTemplate.defaultDuration.value + : selectedTemplate.defaultDuration; + const startDateDate = new Date(watcher.startDate * 1000); + const endDateObj = addDurationToDate(startDateDate, durationValue); + if (endDateObj) { + const unixEnd = Math.floor(endDateObj.getTime() / 1000); + formControl.setValue("endDate", unixEnd); + } + } + }, [watcher.startDate]); + + return ( + <> + + + + + + + + ({ + label: template.templateName, + value: template.GUID, + addedFields: template, + })) + : [] + } + formControl={formControl} + /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + const startDate = formControl.getValues("startDate"); + if (value && startDate && new Date(value) < new Date(startDate)) { + return "End date must be after start date"; + } + return true; + }, + }} + /> + + + + + + {!useRoles && !useGroups && ( + + + Please select at least "Admin Roles" or "Group Membership" + + + )} + + + ({ label: role.Name, value: role.ObjectId }))} + formControl={formControl} + required={true} + validators={{ + required: "At least one role is required", + validate: (options) => { + if (!options?.length) { + return "At least one role is required"; + } + return true; + }, + }} + /> + + + + + { + if (!options?.length) { + return "At least one group is required"; + } + return true; + }, + }} + /> + + + + + + + + + + { + const opts = [ + { label: "Delete User", value: "DeleteUser" }, + { label: "Disable User", value: "DisableUser" }, + ]; + if (useRoles && useGroups) { + opts.push({ label: "Remove Roles and Groups", value: "RemoveRolesAndGroups" }); + } else if (useRoles) { + opts.push({ label: "Remove Roles", value: "RemoveRoles" }); + } else if (useGroups) { + opts.push({ label: "Remove Groups", value: "RemoveGroups" }); + } + return opts; + })()} + formControl={formControl} + validators={{ required: "Expiration action is required" }} + /> + + + + + + + + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/identity/administration/jit-admin/index.js b/src/pages/identity/administration/jit-admin/index.js index ae2faff8bf5c..fe623ec569db 100644 --- a/src/pages/identity/administration/jit-admin/index.js +++ b/src/pages/identity/administration/jit-admin/index.js @@ -1,10 +1,35 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippTablePage from "/src/components/CippComponents/CippTablePage"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippTablePage from "../../../../components/CippComponents/CippTablePage"; import { Button } from "@mui/material"; import { AdminPanelSettings } from "@mui/icons-material"; import Link from "next/link"; const Page = () => { + const simpleColumns = [ + "userPrincipalName", + "displayName", + "accountEnabled", + "jitAdminEnabled", + "jitAdminStartDate", + "jitAdminExpiration", + "jitAdminReason", + "jitAdminCreatedBy", + "memberOf", + ]; + + const filters = [ + { + filterName: "Active JIT Admins", + value: [{ id: "jitAdminEnabled", value: true }], + type: "column", + }, + { + filterName: "Expired/Disabled", + value: [{ id: "jitAdminEnabled", value: false }], + type: "column", + }, + ]; + return ( { } - title="JIT Admin Table" - apiUrl="/api/ExecJITAdmin?Action=List" + title="JIT Admins" + apiUrl="/api/ListJITAdmin" apiDataKey="Results" - simpleColumns={[]} + simpleColumns={simpleColumns} + filters={filters} /> ); }; diff --git a/src/pages/identity/administration/offboarding-wizard/index.js b/src/pages/identity/administration/offboarding-wizard/index.js index 5e6dddaf1e6a..6bf7ec6ff0c8 100644 --- a/src/pages/identity/administration/offboarding-wizard/index.js +++ b/src/pages/identity/administration/offboarding-wizard/index.js @@ -1,13 +1,34 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippWizardConfirmation } from "/src/components/CippWizard/CippWizardConfirmation"; -import CippWizardPage from "/src/components/CippWizard/CippWizardPage.jsx"; -import { CippTenantStep } from "/src/components/CippWizard/CippTenantStep.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippWizardConfirmation } from "../../../../components/CippWizard/CippWizardConfirmation"; +import CippWizardPage from "../../../../components/CippWizard/CippWizardPage.jsx"; +import { CippTenantStep } from "../../../../components/CippWizard/CippTenantStep.jsx"; import { CippWizardAutoComplete } from "../../../../components/CippWizard/CippWizardAutoComplete"; import { CippWizardOffboarding } from "../../../../components/CippWizard/CippWizardOffboarding"; import { useSettings } from "../../../../hooks/use-settings"; +import CippTablePage from "../../../../components/CippComponents/CippTablePage"; +import { PersonOff } from "@mui/icons-material"; +import { Button } from "@mui/material"; +import { useState } from "react"; +import ScheduledTaskDetails from "../../../../components/CippComponents/ScheduledTaskDetails"; +import { CippScheduledTaskActions } from "../../../../components/CippComponents/CippScheduledTaskActions"; +import { CippSchedulerDrawer } from "../../../../components/CippComponents/CippSchedulerDrawer"; const Page = () => { + const [wizardOpen, setWizardOpen] = useState(false); + const [editTaskId, setEditTaskId] = useState(null); + const [cloneTaskId, setCloneTaskId] = useState(null); const initialState = useSettings(); + const currentTenant = initialState.currentTenant; + + const drawerHandlers = { + openEditDrawer: (row) => setEditTaskId(row.RowKey), + openCloneDrawer: (row) => setCloneTaskId(row.RowKey), + }; + + const actions = CippScheduledTaskActions(drawerHandlers, { + hideActions: ["Edit Job", "Clone Job"], + }); + const steps = [ { title: "Step 1", @@ -16,6 +37,7 @@ const Page = () => { componentProps: { allTenants: false, type: "single", + includeOffboardingDefaults: true, }, }, { @@ -30,6 +52,7 @@ const Page = () => { api: { url: "/api/ListGraphRequest", dataKey: "Results", + queryKey: "Users - {tenant}", data: { Endpoint: "users", manualPagination: true, @@ -52,13 +75,99 @@ const Page = () => { title: "Step 4", description: "Confirmation", component: CippWizardConfirmation, + maxWidth: "lg", + componentProps: { + columns: 3, + }, }, ]; + const filterList = [ + { + filterName: "Running", + value: [{ id: "TaskState", value: "Running" }], + type: "column", + }, + { + filterName: "Planned", + value: [{ id: "TaskState", value: "Planned" }], + type: "column", + }, + { + filterName: "Failed", + value: [{ id: "TaskState", value: "Failed" }], + type: "column", + }, + { + filterName: "Completed", + value: [{ id: "TaskState", value: "Completed" }], + type: "column", + }, + ]; + + const offCanvas = { + children: (extendedData) => ( + + ), + size: "xl", + actions: actions, + }; + return ( <> + setWizardOpen(true)} startIcon={}> + Start Offboarding + + } + title="User Offboarding" + apiUrl="/api/ListScheduledItems?Type=Invoke-CIPPOffboardingJob&" + queryKey={`OffboardingJobs-${currentTenant}`} + actions={actions} + simpleColumns={[ + "Tenant", + "Parameters.Username", + "TaskState", + "ScheduledTime", + "ExecutedTime", + ]} + filters={filterList} + offCanvas={offCanvas} + /> + + {/* Edit Drawer */} + {editTaskId && ( + setEditTaskId(null)} + onClose={() => setEditTaskId(null)} + PermissionButton={({ children }) => <>{children}} + /> + )} + + {/* Clone Drawer */} + {cloneTaskId && ( + setCloneTaskId(null)} + onClose={() => setCloneTaskId(null)} + PermissionButton={({ children }) => <>{children}} + /> + )} setWizardOpen(false)} + dialogIcon={} + relatedQueryKeys={[`OffboardingJobs-${currentTenant}`]} + initialState={{ + ...initialState.offboardingDefaults, + ...{ Scheduled: { enabled: false } }, + }} steps={steps} postUrl="/api/ExecOffboardUser" wizardTitle="User Offboarding Wizard" diff --git a/src/pages/identity/administration/risky-users/index.js b/src/pages/identity/administration/risky-users/index.js index 9fe9b7004690..d3ff4080d112 100644 --- a/src/pages/identity/administration/risky-users/index.js +++ b/src/pages/identity/administration/risky-users/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { Clear, Search } from "@mui/icons-material"; const Page = () => { diff --git a/src/pages/identity/administration/roles/index.js b/src/pages/identity/administration/roles/index.js index 4229e12eb622..f09fb8a01388 100644 --- a/src/pages/identity/administration/roles/index.js +++ b/src/pages/identity/administration/roles/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; const Page = () => { const pageTitle = "Roles"; diff --git a/src/pages/identity/administration/users/add.jsx b/src/pages/identity/administration/users/add.jsx index dfbdc7891f03..46a8c07fac61 100644 --- a/src/pages/identity/administration/users/add.jsx +++ b/src/pages/identity/administration/users/add.jsx @@ -1,14 +1,14 @@ import { Box } from "@mui/material"; import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; import { useForm, useWatch } from "react-hook-form"; -import { CippFormUserSelector } from "/src/components/CippComponents/CippFormUserSelector"; import { useSettings } from "../../../../hooks/use-settings"; import { useEffect } from "react"; import CippAddEditUser from "../../../../components/CippFormPages/CippAddEditUser"; const Page = () => { const userSettingsDefaults = useSettings(); + const tenantDomain = useSettings().currentTenant; const formControl = useForm({ mode: "onBlur", @@ -37,6 +37,12 @@ const Page = () => { } newFields.tenantFilter = userSettingsDefaults.currentTenant; + // Preserve the currently selected template when copying properties + const currentTemplate = formControl.getValues("userTemplate"); + if (currentTemplate) { + newFields.userTemplate = currentTemplate; + } + formControl.reset(newFields); } }, [formValues]); @@ -48,36 +54,8 @@ const Page = () => { title="User" backButtonTitle="User Overview" postUrl="/api/AddUser" + relatedQueryKeys={`Users - ${tenantDomain}`} > - - - diff --git a/src/pages/identity/administration/users/bulk-add.js b/src/pages/identity/administration/users/bulk-add.js index af435fb04982..215982897f48 100644 --- a/src/pages/identity/administration/users/bulk-add.js +++ b/src/pages/identity/administration/users/bulk-add.js @@ -1,7 +1,7 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippWizardConfirmation } from "/src/components/CippWizard/CippWizardConfirmation"; -import CippWizardPage from "/src/components/CippWizard/CippWizardPage.jsx"; -import { CippTenantStep } from "/src/components/CippWizard/CippTenantStep.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippWizardConfirmation } from "../../../../components/CippWizard/CippWizardConfirmation"; +import CippWizardPage from "../../../../components/CippWizard/CippWizardPage.jsx"; +import { CippTenantStep } from "../../../../components/CippWizard/CippTenantStep.jsx"; import { useSettings } from "../../../../hooks/use-settings"; import { CippWizardCSVImport } from "../../../../components/CippWizard/CippWizardCSVImport"; import { CippWizardBulkOptions } from "../../../../components/CippWizard/CippWizardBulkOptions"; diff --git a/src/pages/identity/administration/users/index.js b/src/pages/identity/administration/users/index.js index 0b67a7ece144..a8942377f3ea 100644 --- a/src/pages/identity/administration/users/index.js +++ b/src/pages/identity/administration/users/index.js @@ -1,14 +1,20 @@ -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { Button } from "@mui/material"; -import { Send, GroupAdd, PersonAdd } from "@mui/icons-material"; -import Link from "next/link"; -import { useSettings } from "/src/hooks/use-settings.js"; -import { CippUserActions } from "/src/components/CippComponents/CippUserActions.jsx"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { useSettings } from "../../../../hooks/use-settings.js"; +import { PermissionButton } from "../../../../utils/permissions"; +import { useCippUserActions } from "../../../../components/CippComponents/CippUserActions.jsx"; +import { CippInviteGuestDrawer } from "../../../../components/CippComponents/CippInviteGuestDrawer.jsx"; +import { CippBulkInviteGuestDrawer } from "../../../../components/CippComponents/CippBulkInviteGuestDrawer.jsx"; +import { CippBulkUserDrawer } from "../../../../components/CippComponents/CippBulkUserDrawer.jsx"; +import { CippAddUserDrawer } from "../../../../components/CippComponents/CippAddUserDrawer.jsx"; +import { CippApiLogsDrawer } from "../../../../components/CippComponents/CippApiLogsDrawer.jsx"; +import { Box } from "@mui/material"; const Page = () => { + const userActions = useCippUserActions(); const pageTitle = "Users"; const tenant = useSettings().currentTenant; + const cardButtonPermissions = ["Identity.User.ReadWrite"]; const filters = [ { @@ -45,8 +51,9 @@ const Page = () => { "onPremisesLastSyncDateTime", // OnPrem Last Sync "onPremisesDistinguishedName", // OnPrem DN "otherMails", // Alternate Email Addresses + "licenseAssignmentStates", // License Assignment States ], - actions: CippUserActions(), + actions: userActions, }; return ( @@ -54,29 +61,43 @@ const Page = () => { title={pageTitle} apiUrl="/api/ListGraphRequest" cardButton={ - <> - - - - + + + + + + + } apiData={{ Endpoint: "users", manualPagination: true, $select: - "id,accountEnabled,businessPhones,city,createdDateTime,companyName,country,department,displayName,faxNumber,givenName,isResourceAccount,jobTitle,mail,mailNickname,mobilePhone,officeLocation,otherMails,postalCode,preferredDataLocation,preferredLanguage,proxyAddresses,showInAddressList,state,streetAddress,surname,usageLocation,userPrincipalName,userType,assignedLicenses,onPremisesSyncEnabled,OnPremisesImmutableId,onPremisesLastSyncDateTime,onPremisesDistinguishedName", + "id,accountEnabled,businessPhones,city,createdDateTime,companyName,country,department,displayName,faxNumber,givenName,isResourceAccount,jobTitle,mail,mailNickname,mobilePhone,officeLocation,otherMails,postalCode,preferredDataLocation,preferredLanguage,proxyAddresses,showInAddressList,state,streetAddress,surname,usageLocation,userPrincipalName,userType,assignedLicenses,licenseAssignmentStates,onPremisesSyncEnabled,OnPremisesImmutableId,onPremisesLastSyncDateTime,onPremisesDistinguishedName", $count: true, $orderby: "displayName", $top: 999, }} apiDataKey="Results" - actions={CippUserActions()} + actions={userActions} offCanvas={offCanvas} simpleColumns={[ "accountEnabled", @@ -86,6 +107,7 @@ const Page = () => { "businessPhones", "proxyAddresses", "assignedLicenses", + "licenseAssignmentStates", ]} filters={filters} /> diff --git a/src/pages/identity/administration/users/patch-wizard.jsx b/src/pages/identity/administration/users/patch-wizard.jsx new file mode 100644 index 000000000000..b990988398de --- /dev/null +++ b/src/pages/identity/administration/users/patch-wizard.jsx @@ -0,0 +1,726 @@ +import { useState, useEffect, useMemo } from "react"; +import { useRouter } from "next/router"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippWizardPage from "../../../../components/CippWizard/CippWizardPage.jsx"; +import { + Stack, + Typography, + Card, + CardContent, + Chip, + Box, + TextField, + Checkbox, + Button, + Switch, + FormControlLabel, + Autocomplete, +} from "@mui/material"; +import { CippWizardStepButtons } from "../../../../components/CippWizard/CippWizardStepButtons"; +import { ApiPostCall, ApiGetCall } from "../../../../api/ApiCall"; +import { CippApiResults } from "../../../../components/CippComponents/CippApiResults"; +import { CippDataTable } from "../../../../components/CippTable/CippDataTable"; +import { Delete } from "@mui/icons-material"; + +// User properties that can be patched +const PATCHABLE_PROPERTIES = [ + { + property: "city", + label: "City", + type: "string", + }, + { + property: "companyName", + label: "Company Name", + type: "string", + }, + { + property: "country", + label: "Country", + type: "string", + }, + { + property: "department", + label: "Department", + type: "string", + }, + { + property: "employeeType", + label: "Employee Type", + type: "string", + }, + { + property: "jobTitle", + label: "Job Title", + type: "string", + }, + { + property: "officeLocation", + label: "Office Location", + type: "string", + }, + { + property: "postalCode", + label: "Postal Code", + type: "string", + }, + { + property: "preferredDataLocation", + label: "Preferred Data Location", + type: "string", + }, + { + property: "preferredLanguage", + label: "Preferred Language", + type: "string", + }, + { + property: "showInAddressList", + label: "Show in Address List", + type: "boolean", + }, + { + property: "state", + label: "State/Province", + type: "string", + }, + { + property: "streetAddress", + label: "Street Address", + type: "string", + }, + { + property: "usageLocation", + label: "Usage Location", + type: "string", + }, +]; + +// Step 1: Display users to be updated +const UsersDisplayStep = (props) => { + const { onNextStep, onPreviousStep, formControl, currentStep, users, onUsersChange } = props; + + const handleRemoveUser = (userToRemove) => { + const updatedUsers = users.filter((user) => user.id !== userToRemove.id); + onUsersChange(updatedUsers); + }; + + // Clean user data without circular references + const tableData = + users?.map((user) => ({ + id: user.id, + displayName: user.displayName, + userPrincipalName: user.userPrincipalName, + jobTitle: user.jobTitle, + department: user.department, + // Only include serializable properties + })) || []; + + const columns = ["displayName", "userPrincipalName", "jobTitle", "department"]; + + // Define actions separately to avoid circular references + const rowActions = [ + { + label: "Remove from List", + icon: , + color: "error", + customFunction: (user) => handleRemoveUser(user), + noConfirm: true, + }, + ]; + + return ( + + + Users to be updated + + The following users will be updated with the properties you select in the next step. You + can remove users from this list if needed. + + + + {users && users.length > 0 ? ( + + ) : ( + + + + No users selected. Please go back and select users from the main table. + + + + )} + + 0 ? onNextStep : undefined} + formControl={formControl} + noNextButton={!users || users.length === 0} + /> + + ); +}; + +// Step 2: Property selection and input +const PropertySelectionStep = (props) => { + const { onNextStep, onPreviousStep, formControl, currentStep, users } = props; + const [selectedProperties, setSelectedProperties] = useState([]); + + // Get unique tenant domains from users + const tenantDomains = + [...new Set(users?.map((user) => user.Tenant || user.tenantFilter).filter(Boolean))] || []; + + // Fetch custom data mappings for all tenants + const customDataMappings = ApiGetCall({ + url: + tenantDomains.length > 0 + ? `/api/ListCustomDataMappings?sourceType=Manual Entry&directoryObject=User&tenantFilter=${tenantDomains[0]}` + : null, + queryKey: `ManualEntryMappings-${tenantDomains.join(",")}`, + enabled: tenantDomains.length > 0, + refetchOnMount: false, + refetchOnReconnect: false, + }); + + // Process custom data mappings into property format + const customDataProperties = useMemo(() => { + if (customDataMappings.isSuccess && customDataMappings.data?.Results) { + return customDataMappings.data.Results.filter((mapping) => { + // Only include single-value properties, filter out multivalue ones + const dataType = mapping.customDataAttribute.addedFields.dataType?.toLowerCase(); + const isMultiValue = mapping.customDataAttribute.addedFields.isMultiValue; + return !isMultiValue && dataType !== "collection"; + }).map((mapping) => ({ + property: mapping.customDataAttribute.value, // Use the actual attribute name, not nested under customData + label: `${mapping.manualEntryFieldLabel} (Custom)`, + type: mapping.customDataAttribute.addedFields.dataType?.toLowerCase() || "string", + isCustomData: true, + })); + } + return []; + }, [customDataMappings.isSuccess, customDataMappings.data]); + + // Combine standard properties with custom data properties + const allProperties = useMemo(() => { + return [...PATCHABLE_PROPERTIES, ...customDataProperties]; + }, [customDataProperties]); + + // Register form fields + formControl.register("selectedProperties", { required: true }); + formControl.register("propertyValues", { required: false }); + + const handlePropertyValueChange = (property, value) => { + const currentValues = formControl.getValues("propertyValues") || {}; + const newValues = { ...currentValues, [property]: value }; + formControl.setValue("propertyValues", newValues); + formControl.trigger(); + }; + + const renderPropertyInput = (propertyName) => { + const property = allProperties.find((p) => p.property === propertyName); + const currentValue = formControl.getValues("propertyValues")?.[propertyName]; + + if (property?.type === "boolean") { + return ( + handlePropertyValueChange(propertyName, e.target.checked)} + /> + } + label={property.label} + key={propertyName} + /> + ); + } + + // Default to text input for string types with consistent styling + return ( + handlePropertyValueChange(propertyName, e.target.value)} + placeholder={`Enter new value for ${property?.label || propertyName}`} + variant="filled" + size="small" + slotProps={{ + inputLabel: { + shrink: true, + sx: { transition: "none" }, + }, + input: { + notched: true, + sx: { + transition: "none", + "& .MuiOutlinedInput-notchedOutline": { + transition: "none", + }, + }, + }, + }} + /> + ); + }; + + return ( + + + Select Properties to update + + Choose which user properties you want to modify and provide the new values. + {customDataProperties.length > 0 && ( + <> Custom data fields are available based on your tenant's manual entry mappings. + )} + + {customDataMappings.isLoading && ( + + Loading custom data mappings... + + )} + + + selectedProperties.includes(prop.property))} + onChange={(event, newValue) => { + // Check if "Select All" was clicked + const selectAllOption = newValue.find((option) => option.isSelectAll); + + if (selectAllOption) { + // If Select All is in the new value, select all properties + const allSelected = selectedProperties.length === allProperties.length; + const newProperties = allSelected ? [] : allProperties.map((p) => p.property); + setSelectedProperties(newProperties); + formControl.setValue("selectedProperties", newProperties); + + // Reset property values when selection changes + const currentValues = formControl.getValues("propertyValues") || {}; + const newValues = {}; + newProperties.forEach((prop) => { + if (currentValues[prop]) { + newValues[prop] = currentValues[prop]; + } + }); + formControl.setValue("propertyValues", newValues); + formControl.trigger(); + } else { + // Normal property selection + const newProperties = newValue + .filter((prop) => !prop.isSelectAll) + .map((prop) => prop.property); + setSelectedProperties(newProperties); + formControl.setValue("selectedProperties", newProperties); + + // Reset property values when selection changes + const currentValues = formControl.getValues("propertyValues") || {}; + const newValues = {}; + newProperties.forEach((prop) => { + if (currentValues[prop]) { + newValues[prop] = currentValues[prop]; + } + }); + formControl.setValue("propertyValues", newValues); + formControl.trigger(); + } + }} + getOptionLabel={(option) => option.label} + isOptionEqualToValue={(option, value) => option.property === value.property} + size="small" + renderOption={(props, option, { selected }) => { + const isAllSelected = selectedProperties.length === allProperties.length; + const isIndeterminate = + selectedProperties.length > 0 && selectedProperties.length < allProperties.length; + + if (option.isSelectAll) { + return ( +
  • + + {option.label} +
  • + ); + } + + return ( +
  • + + {option.label} +
  • + ); + }} + renderInput={(params) => ( + + )} + renderTags={(value, getTagProps) => + value + .filter((option) => !option.isSelectAll) + .map((option, index) => ( + + )) + } + /> + + {selectedProperties.length > 0 && ( + + + + Properties to update + + {selectedProperties.map(renderPropertyInput)} + + + )} + + +
    + ); +}; + +// Step 3: Confirmation +const ConfirmationStep = (props) => { + const { lastStep, formControl, onPreviousStep, currentStep, users, allProperties } = props; + const formValues = formControl.getValues(); + const { selectedProperties = [], propertyValues = {} } = formValues; + + // Create API call handler for bulk patch + const patchUsersApi = ApiPostCall({ + relatedQueryKeys: ["ListUsers"], + }); + + const handleSubmit = () => { + // Validate that we still have users to patch + if (!users || users.length === 0) { + console.error("No users to patch"); + return; + } + + // Create bulk request data + const patchData = users.map((user) => { + const userData = { + id: user.id, + tenantFilter: user.Tenant || user.tenantFilter, + }; + + selectedProperties.forEach((propName) => { + if (propertyValues[propName] !== undefined && propertyValues[propName] !== "") { + // Handle dot notation properties (e.g., "extension_abc123.customField") + if (propName.includes(".")) { + const parts = propName.split("."); + let current = userData; + + // Navigate to the nested object, creating it if it doesn't exist + for (let i = 0; i < parts.length - 1; i++) { + if (!current[parts[i]]) { + current[parts[i]] = {}; + } + current = current[parts[i]]; + } + + // Set the final property value + current[parts[parts.length - 1]] = propertyValues[propName]; + } else { + // Handle regular properties + userData[propName] = propertyValues[propName]; + } + } + }); + + return userData; + }); + + // Submit to API + patchUsersApi.mutate({ + url: "/api/PatchUser", + data: patchData, + }); + }; + + // Clean user data for table display + const tableData = + users?.map((user) => ({ + id: user.id, + displayName: user.displayName, + userPrincipalName: user.userPrincipalName, + jobTitle: user.jobTitle, + department: user.department, + })) || []; + + const columns = ["displayName", "userPrincipalName", "jobTitle", "department"]; + + return ( + + + Confirm User Updates + + Review the users that will be updated with {selectedProperties.length} selected{" "} + {selectedProperties.length === 1 ? "property" : "properties"}, then click Submit to apply + the changes. + + + + {/* Properties to be updated */} + {selectedProperties.length > 0 && ( + + + + Properties to Update + + + {selectedProperties.map((propName) => { + const property = allProperties.find((p) => p.property === propName); + const value = propertyValues[propName]; + const displayValue = + property?.type === "boolean" ? (value ? "Yes" : "No") : value || "Not set"; + + return ( + + + {property?.label || propName}: + + + {displayValue} + + + ); + })} + + + + )} + + {users && users.length > 0 ? ( + + ) : ( + + + + No users to update. Please go back and select users. + + + + )} + + + + + {currentStep > 0 && ( + + )} + + + + ); +}; + +const Page = () => { + const router = useRouter(); + const [users, setUsers] = useState([]); + + // Get users from URL parameters or session storage + useEffect(() => { + try { + if (router.query.users) { + const parsedUsers = JSON.parse(decodeURIComponent(router.query.users)); + setUsers(Array.isArray(parsedUsers) ? parsedUsers : [parsedUsers]); + } else { + // Fallback to session storage + const storedUsers = sessionStorage.getItem("patchWizardUsers"); + if (storedUsers) { + const parsedUsers = JSON.parse(storedUsers); + setUsers(Array.isArray(parsedUsers) ? parsedUsers : [parsedUsers]); + // Clear session storage after use + sessionStorage.removeItem("patchWizardUsers"); + } + } + } catch (error) { + console.error("Error parsing users data:", error); + setUsers([]); + } + }, [router.query.users]); + + // Get unique tenant domains from users + const tenantDomains = useMemo(() => { + return ( + [...new Set(users?.map((user) => user.Tenant || user.tenantFilter).filter(Boolean))] || [] + ); + }, [users]); + + // Fetch custom data mappings for all tenants + const customDataMappings = ApiGetCall({ + url: + tenantDomains.length > 0 + ? `/api/ListCustomDataMappings?sourceType=Manual Entry&directoryObject=User&tenantFilter=${tenantDomains[0]}` + : null, + queryKey: `ManualEntryMappings-${tenantDomains.join(",")}`, + enabled: tenantDomains.length > 0, + refetchOnMount: false, + refetchOnReconnect: false, + }); + + // Process custom data mappings into property format + const customDataProperties = useMemo(() => { + if (customDataMappings.isSuccess && customDataMappings.data?.Results) { + return customDataMappings.data.Results.filter((mapping) => { + // Only include single-value properties, filter out multivalue ones + const dataType = mapping.customDataAttribute.addedFields.dataType?.toLowerCase(); + const isMultiValue = mapping.customDataAttribute.addedFields.isMultiValue; + return !isMultiValue && dataType !== "collection"; + }).map((mapping) => ({ + property: mapping.customDataAttribute.value, // Use the actual attribute name, not nested under customData + label: `${mapping.manualEntryFieldLabel} (Custom)`, + type: mapping.customDataAttribute.addedFields.dataType?.toLowerCase() || "string", + isCustomData: true, + })); + } + return []; + }, [customDataMappings.isSuccess, customDataMappings.data]); + + // Combine standard properties with custom data properties + const allProperties = useMemo(() => { + return [...PATCHABLE_PROPERTIES, ...customDataProperties]; + }, [customDataProperties]); + + const steps = [ + { + title: "Step 1", + description: "Review Users", + component: UsersDisplayStep, + componentProps: { + users: users, + onUsersChange: setUsers, + }, + }, + { + title: "Step 2", + description: "Select Properties", + component: PropertySelectionStep, + componentProps: { + users: users, + allProperties: allProperties, + customDataMappings: customDataMappings, + customDataProperties: customDataProperties, + }, + }, + { + title: "Step 3", + description: "Confirmation", + component: ConfirmationStep, + componentProps: { + users: users, + allProperties: allProperties, + }, + }, + ]; + + const initialState = { + selectedProperties: [], + propertyValues: {}, + }; + + return ( + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/identity/administration/users/user/bec.jsx b/src/pages/identity/administration/users/user/bec.jsx index 632638a7987e..a5b44d5a7893 100644 --- a/src/pages/identity/administration/users/user/bec.jsx +++ b/src/pages/identity/administration/users/user/bec.jsx @@ -1,9 +1,8 @@ -import React, { use, useEffect, useState } from "react"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { useSettings } from "/src/hooks/use-settings"; +import { useEffect, useState } from "react"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; +import { useSettings } from "../../../../../hooks/use-settings"; import { useRouter } from "next/router"; -import { ApiGetCall } from "/src/api/ApiCall"; -import CippFormSkeleton from "/src/components/CippFormPages/CippFormSkeleton"; +import { ApiGetCall } from "../../../../../api/ApiCall"; import CalendarIcon from "@heroicons/react/24/outline/CalendarIcon"; import { CheckCircle, Download, Mail, Fingerprint, Launch } from "@mui/icons-material"; import { HeaderedTabbedLayout } from "../../../../../layouts/HeaderedTabbedLayout"; @@ -17,6 +16,8 @@ import CippButtonCard from "../../../../../components/CippCards/CippButtonCard"; import { SvgIcon, Typography, CircularProgress, Button } from "@mui/material"; import { PropertyList } from "../../../../../components/property-list"; import { PropertyListItem } from "../../../../../components/property-list-item"; +import { CippHead } from "../../../../../components/CippComponents/CippHead"; +import { BECRemediationReportButton } from "../../../../../components/BECRemediationReportButton"; const Page = () => { const userSettingsDefaults = useSettings(); @@ -102,7 +103,7 @@ const Page = () => { if (becPollingCall.data.NewRules && becPollingCall.data.NewRules.length > 0) { // Example condition to check for potential breach const hasPotentialBreach = becPollingCall.data.NewRules.some((rule) => - rule.MoveToFolder?.includes("RSS") + rule.MoveToFolder?.includes("RSS"), ); if (hasPotentialBreach) { return "Potential Breach found. The rules for this user contain classic signs of a breach."; @@ -125,7 +126,7 @@ const Page = () => { if (becPollingCall.data.AddedApps && becPollingCall.data.AddedApps.length > 0) { // Example condition to check for potential breach const hasPotentialBreach = becPollingCall.data.AddedApps.some( - (app) => /* your condition here */ false + (app) => /* your condition here */ false, ); if (hasPotentialBreach) { return "Potential Breach found."; @@ -168,15 +169,15 @@ const Page = () => { icon: , text: ( + color="muted" + style={{ paddingLeft: 0 }} + size="small" + href={`https://entra.microsoft.com/${userSettingsDefaults.currentTenant}/#view/Microsoft_AAD_UsersAndTenants/UserProfileMenuBlade/~/overview/userId/${userId}`} + target="_blank" + rel="noopener noreferrer" + > + View in Entra + ), }, ] @@ -189,17 +190,18 @@ const Page = () => { subtitle={subtitle} isFetching={userRequest.isFetching} > + {/* Loading State: Show only Remediation Card and Check 1 with Loading Skeleton */} {isFetching && userRequest.isSuccess && ( {/* Remediation Card */} - + { /> {/* Check 1 Card with Loading */} - + { > {/* Remediation Card */} - + { /> {/* All Steps */} - + { becPollingCall.data.NewRules.length > 0 && ( - {becPollingCall.data.NewRules.map((rule) => ( - + {becPollingCall.data.NewRules.map((rule, index) => ( + ))} @@ -353,10 +359,11 @@ const Page = () => { becPollingCall.data.NewUsers.length > 0 && ( - {becPollingCall.data.NewUsers.map((user) => ( + {becPollingCall.data.NewUsers.map((user, index) => ( ))} @@ -396,10 +403,11 @@ const Page = () => { becPollingCall.data.AddedApps.length > 0 && ( - {becPollingCall.data.AddedApps.map((app) => ( + {becPollingCall.data.AddedApps.map((app, index) => ( ))} @@ -439,8 +447,9 @@ const Page = () => { becPollingCall.data.MailboxPermissionChanges.length > 0 && ( - {becPollingCall.data.MailboxPermissionChanges.map((permission) => ( + {becPollingCall.data.MailboxPermissionChanges.map((permission, index) => ( @@ -482,10 +491,11 @@ const Page = () => { becPollingCall.data.MFADevices.length > 0 && ( - {becPollingCall.data.MFADevices.map((permission) => ( + {becPollingCall.data.MFADevices.map((permission, index) => ( ))} @@ -524,10 +534,11 @@ const Page = () => { becPollingCall.data.ChangedPasswords.length > 0 && ( - {becPollingCall.data.ChangedPasswords.map((permission) => ( + {becPollingCall.data.ChangedPasswords.map((permission, index) => ( ))} @@ -557,33 +568,41 @@ const Page = () => { } > - Click this button to download a report of all the data found during this - research to perform your own analysis. + Generate a comprehensive PDF report for documentation, compliance, or end-user + review. The report includes detailed explanations suitable for non-technical + users, managers, and compliance requirements (ISO/CMMC/SOC). {/* Implement download functionality */} {becPollingCall.data && ( - + + + + )} diff --git a/src/pages/identity/administration/users/user/conditional-access.jsx b/src/pages/identity/administration/users/user/conditional-access.jsx index 64d2f3f82b0e..8449148b8562 100644 --- a/src/pages/identity/administration/users/user/conditional-access.jsx +++ b/src/pages/identity/administration/users/user/conditional-access.jsx @@ -1,263 +1,289 @@ -import { useState } from "react"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { useSettings } from "/src/hooks/use-settings"; -import { useRouter } from "next/router"; -import CippFormSkeleton from "/src/components/CippFormPages/CippFormSkeleton"; -import CalendarIcon from "@heroicons/react/24/outline/CalendarIcon"; -import { Mail, Forward, Fingerprint, Launch } from "@mui/icons-material"; -import { HeaderedTabbedLayout } from "../../../../../layouts/HeaderedTabbedLayout"; -import tabOptions from "./tabOptions"; -import ReactTimeAgo from "react-time-ago"; -import { CippCopyToClipBoard } from "../../../../../components/CippComponents/CippCopyToClipboard"; -import { Box, Stack, Typography, Button, CircularProgress } from "@mui/material"; -import { Grid } from "@mui/system"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import countryList from "/src/data/countryList"; -import { CippDataTable } from "/src/components/CippTable/CippDataTable"; -import { useForm } from "react-hook-form"; -import CippButtonCard from "../../../../../components/CippCards/CippButtonCard"; -import { ApiGetCall, ApiPostCall } from "../../../../../api/ApiCall"; -import { CippApiResults } from "../../../../../components/CippComponents/CippApiResults"; - -const Page = () => { - const userSettingsDefaults = useSettings(); - const router = useRouter(); - const { userId } = router.query; - - const tenant = userSettingsDefaults.currentTenant; - const [formParams, setFormParams] = useState(false); - - const userRequest = ApiGetCall({ - url: `/api/ListUsers?UserId=${userId}&tenantFilter=${tenant}`, - queryKey: `ListUsers-${userId}`, - }); - - // Set the title and subtitle for the layout - const title = userRequest.isSuccess ? userRequest.data?.[0]?.displayName : "Loading..."; - - const subtitle = userRequest.isSuccess - ? [ - { - icon: , - text: , - }, - { - icon: , - text: , - }, - { - icon: , - text: ( - <> - Created: - - ), - }, - { - icon: , - text: ( - - ), - }, - ] - : []; - - // Initialize React Hook Form - const formControl = useForm(); - - const postRequest = ApiPostCall({ - url: "/api/ExecCACheck", - relatedQueryKeys: `ExecCACheck-${tenant}-${userId}-${JSON.stringify(formParams)}`, - }); - const onSubmit = (data) => { - //add userId and tenantFilter to the object - data.userId = {}; - data.userId["value"] = userId; - data.tenantFilter = tenant; - setFormParams(data); - postRequest.mutate({ - url: "/api/ExecCACheck", - data: data, - queryKey: `ExecCACheck-${tenant}-${userId}-${JSON.stringify(formParams)}`, - }); - }; - - return ( - - {userRequest.isLoading && } - {userRequest.isSuccess && ( - - - {/* Form Section */} - - - Test policies - - } - > - {/* Form Starts Here */} -
    - - Test your conditional access policies before putting them in production. The - returned results will show you if the user is allowed or denied access based on - the policy. - - - - {/* Mandatory Parameters */} - Mandatory Parameters: - `${option.displayName}`, - valueField: "id", - queryKey: `ServicePrincipals-${tenant}`, - data: { - Endpoint: "ServicePrincipals", - manualPagination: true, - $select: "id,displayName", - $count: true, - $orderby: "displayName", - $top: 999, - }, - }} - formControl={formControl} - /> - - {/* Optional Parameters */} - Optional Parameters: - - {/* Test from this country */} - ({ - value: Code, - label: Name, - }))} - formControl={formControl} - /> - - {/* Test from this IP */} - - - {/* Device Platform */} - - - {/* Client Application Type */} - - - {/* Sign-in risk level */} - - - {/* User risk level */} - - - -
    -
    -
    - - - -
    -
    - )} -
    - ); -}; - -Page.getLayout = (page) => {page}; - -export default Page; +import { useState } from "react"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; +import { useSettings } from "../../../../../hooks/use-settings"; +import { useRouter } from "next/router"; +import CippFormSkeleton from "../../../../../components/CippFormPages/CippFormSkeleton"; +import CalendarIcon from "@heroicons/react/24/outline/CalendarIcon"; +import { Mail, Fingerprint, Launch } from "@mui/icons-material"; +import { HeaderedTabbedLayout } from "../../../../../layouts/HeaderedTabbedLayout"; +import tabOptions from "./tabOptions"; +import ReactTimeAgo from "react-time-ago"; +import { CippCopyToClipBoard } from "../../../../../components/CippComponents/CippCopyToClipboard"; +import { Box, Stack, Typography, Button } from "@mui/material"; +import { Grid } from "@mui/system"; +import CippFormComponent from "../../../../../components/CippComponents/CippFormComponent"; +import countryList from "../../../../../data/countryList"; +import { CippDataTable } from "../../../../../components/CippTable/CippDataTable"; +import { useForm } from "react-hook-form"; +import CippButtonCard from "../../../../../components/CippCards/CippButtonCard"; +import { ApiGetCall, ApiPostCall } from "../../../../../api/ApiCall"; +import { CippApiResults } from "../../../../../components/CippComponents/CippApiResults"; + +const Page = () => { + const userSettingsDefaults = useSettings(); + const router = useRouter(); + const { userId } = router.query; + + const tenant = userSettingsDefaults.currentTenant; + const [formParams, setFormParams] = useState(false); + + const userRequest = ApiGetCall({ + url: `/api/ListUsers?UserId=${userId}&tenantFilter=${tenant}`, + queryKey: `ListUsers-${userId}`, + }); + + // Set the title and subtitle for the layout + const title = userRequest.isSuccess ? userRequest.data?.[0]?.displayName : "Loading..."; + + const subtitle = userRequest.isSuccess + ? [ + { + icon: , + text: , + }, + { + icon: , + text: , + }, + { + icon: , + text: ( + <> + Created: + + ), + }, + { + icon: , + text: ( + + ), + }, + ] + : []; + + // Initialize React Hook Form + const formControl = useForm(); + + const postRequest = ApiPostCall({ + url: "/api/ExecCACheck", + relatedQueryKeys: `ExecCACheck-${tenant}-${userId}-${JSON.stringify(formParams)}`, + }); + const onSubmit = (data) => { + //add userId and tenantFilter to the object + data.userId = {}; + data.userId["value"] = userId; + data.tenantFilter = tenant; + setFormParams(data); + postRequest.mutate({ + url: "/api/ExecCACheck", + data: data, + queryKey: `ExecCACheck-${tenant}-${userId}-${JSON.stringify(formParams)}`, + }); + }; + + return ( + + {userRequest.isLoading && } + {userRequest.isSuccess && ( + + + {/* Form Section */} + + + Test policies + + } + > + {/* Form Starts Here */} +
    + + Test your conditional access policies before putting them in production. The + returned results will show you if the user is allowed or denied access based on + the policy. + + + + {/* Mandatory Parameters */} + Mandatory Parameters: + `${option.displayName}`, + valueField: "id", + queryKey: `ServicePrincipals-${tenant}`, + data: { + Endpoint: "ServicePrincipals", + manualPagination: true, + $select: "id,displayName", + $count: true, + $orderby: "displayName", + $top: 999, + }, + }} + validators={{ required: "Application is required" }} + formControl={formControl} + /> + + {/* Optional Parameters */} + Optional Parameters: + {/* Device Platform */} + + + {/* Client Application Type */} + + + {/* Authentication Flow */} + + + {/* Test from this IP */} + + + {/* Test from this country */} + ({ + value: Code, + label: Name, + }))} + formControl={formControl} + /> + + {/* Sign-in risk level */} + + + {/* User risk level */} + + + +
    +
    +
    + + + +
    +
    + )} +
    + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/identity/administration/users/user/devices.jsx b/src/pages/identity/administration/users/user/devices.jsx index 41a1e73edd2d..9fcb9086bdbc 100644 --- a/src/pages/identity/administration/users/user/devices.jsx +++ b/src/pages/identity/administration/users/user/devices.jsx @@ -1,8 +1,8 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { useSettings } from "/src/hooks/use-settings"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; +import { useSettings } from "../../../../../hooks/use-settings"; import { useRouter } from "next/router"; -import { ApiGetCall } from "/src/api/ApiCall"; -import CippFormSkeleton from "/src/components/CippFormPages/CippFormSkeleton"; +import { ApiGetCall } from "../../../../../api/ApiCall"; +import CippFormSkeleton from "../../../../../components/CippFormPages/CippFormSkeleton"; import CalendarIcon from "@heroicons/react/24/outline/CalendarIcon"; import { Check, Mail, Fingerprint } from "@mui/icons-material"; import { HeaderedTabbedLayout } from "../../../../../layouts/HeaderedTabbedLayout"; @@ -343,10 +343,10 @@ const Page = () => { }} > - + - + Latest Logon { const userSettingsDefaults = useSettings(); const router = useRouter(); const { userId } = router.query; + const [waiting, setWaiting] = useState(false); const userRequest = ApiGetCall({ url: `/api/ListUsers?UserId=${userId}&tenantFilter=${userSettingsDefaults.currentTenant}`, queryKey: `ListUsers-${userId}`, + waiting: waiting, }); + // add useEffect to refetch user data when userId changes - also set waiting to false if userId is undefined + useEffect(() => { + if (userId !== undefined) { + setWaiting(true); + userRequest.refetch(); + } else { + setWaiting(false); + } + }, [userId, waiting]); + const formControl = useForm({ mode: "onBlur", defaultValues: { @@ -43,8 +55,13 @@ const Page = () => { defaultAttributes[attribute.label] = { Value: user?.[attribute.label] }; }); } + + // Use fallback for usageLocation if user's usageLocation is null/undefined + const usageLocation = user?.usageLocation || userSettingsDefaults?.usageLocation || null; + formControl.reset({ ...user, + usageLocation: usageLocation, defaultAttributes: defaultAttributes, tenantFilter: userSettingsDefaults.currentTenant, licenses: user.assignedLicenses.map((license) => ({ @@ -102,6 +119,12 @@ const Page = () => { subtitle={subtitle} isFetching={userRequest.isLoading} > + {userRequest.isSuccess && userRequest.data?.[0]?.onPremisesSyncEnabled && ( + + This user is synced from on-premises Active Directory. Changes should be made in the + on-premises environment instead. + + )} { formPageType="Edit" postUrl="/api/EditUser" > - {userRequest.isLoading && } - {userRequest.isSuccess && ( + {userRequest.isFetching && } + {!userRequest.isFetching && userRequest.isSuccess && ( { const userSettingsDefaults = useSettings(); @@ -49,6 +51,7 @@ const Page = () => { const aliasDialog = useDialog(); const permissionsDialog = useDialog(); const calendarPermissionsDialog = useDialog(); + const contactPermissionsDialog = useDialog(); const router = useRouter(); const { userId } = router.query; @@ -64,9 +67,9 @@ const Page = () => { waiting: waiting, }); const userRequest = ApiGetCall({ - url: `/api/ListUserMailboxDetails?UserId=${userId}&tenantFilter=${userSettingsDefaults.currentTenant}`, + url: `/api/ListUserMailboxDetails?UserId=${userId}&tenantFilter=${userSettingsDefaults.currentTenant}&userMail=${graphUserRequest.data?.[0]?.userPrincipalName}`, queryKey: `Mailbox-${userId}`, - waiting: waiting, + waiting: waiting && !!graphUserRequest.data?.[0]?.userPrincipalName, }); const usersList = ApiGetCall({ @@ -75,7 +78,6 @@ const Page = () => { Endpoint: `users`, tenantFilter: userSettingsDefaults.currentTenant, $select: "id,displayName,userPrincipalName,mail", - noPagination: true, $top: 999, }, queryKey: `UserNames-${userSettingsDefaults.currentTenant}`, @@ -93,16 +95,99 @@ const Page = () => { waiting: waiting, }); + const contactPermissions = ApiGetCall({ + url: `/api/ListContactPermissions?UserId=${userId}&tenantFilter=${userSettingsDefaults.currentTenant}`, + queryKey: `ContactPermissions-${userId}`, + waiting: waiting, + }); + const mailboxRulesRequest = ApiGetCall({ url: `/api/ListUserMailboxRules?UserId=${userId}&tenantFilter=${userSettingsDefaults.currentTenant}`, queryKey: `MailboxRules-${userId}`, waiting: waiting, }); + const junkEmailConfigRequest = ApiGetCall({ + url: `/api/ListUserTrustedBlockedSenders?UserId=${userId}&userPrincipalName=${graphUserRequest.data?.[0]?.userPrincipalName}&tenantFilter=${userSettingsDefaults.currentTenant}`, + queryKey: `TrustedBlockedSenders-${userId}`, + waiting: waiting && !!graphUserRequest.data?.[0]?.userPrincipalName, + }); + + const groupsList = ApiGetCall({ + url: "/api/ListGraphRequest", + data: { + Endpoint: `groups`, + tenantFilter: userSettingsDefaults.currentTenant, + $filter: "securityEnabled eq true and mailEnabled eq true", + $select: "id,displayName,mail,description", + $top: 999, + }, + queryKey: `MailEnabledSecurityGroups-${userSettingsDefaults.currentTenant}`, + }); + + const getPermissionInfo = (userIdentifier, groupsList) => { + // Handle undefined/null cases first + if (!userIdentifier) { + return { + type: "Unknown", + displayName: "Unknown User", + }; + } + + // Handle arrays by joining them + if (Array.isArray(userIdentifier)) { + userIdentifier = userIdentifier.join(", "); + } + + // Ensure userIdentifier is a string + if (typeof userIdentifier !== "string") { + userIdentifier = String(userIdentifier); + } + + // Handle special built-in cases + if (userIdentifier === "Default" || userIdentifier === "Anonymous") { + return { + type: "System", + displayName: userIdentifier, + }; + } + + // Check if it's a group - handle Exchange's different naming patterns + const matchingGroup = groupsList?.data?.Results?.find((group) => { + // Ensure group properties exist before comparison + if (!group) return false; + + return ( + // Exact match on mail address + (group.mail && group.mail === userIdentifier) || + // Exact match on display name + (group.displayName && group.displayName === userIdentifier) || + // Partial match - permission identifier starts with group display name (handles timestamps) + (group.displayName && + typeof group.displayName === "string" && + typeof userIdentifier === "string" && + userIdentifier.startsWith(group.displayName)) + ); + }); + + if (matchingGroup) { + return { + type: "Group", + displayName: matchingGroup.displayName, // Use clean name from Graph API + }; + } + + // If not a system entity or group, assume it's a user + return { + type: "User", + displayName: userIdentifier, // Keep original for users + }; + }; + // Define API configurations for the dialogs const aliasApiConfig = { type: "POST", - url: "/api/SetUserAliases", + url: "/api/EditUserAliases", relatedQueryKeys: `ListUsers-${userId}`, confirmText: "Add the specified proxy addresses to this user?", customDataformatter: (row, action, formData) => { @@ -123,7 +208,7 @@ const Page = () => { customDataformatter: (row, action, data) => { const permissions = []; const { permissions: permissionValues } = data; - const autoMap = data.autoMap === undefined ? true : data.autoMap; + const autoMap = permissionValues.AutoMap === undefined ? true : permissionValues.AutoMap; // Build permissions array based on form values if (permissionValues?.AddFullAccess) { @@ -169,6 +254,7 @@ const Page = () => { const permission = { UserID: data.UserToGetPermissions, PermissionLevel: data.Permissions, + FolderName: calPermissions.data?.[0]?.FolderName ?? "Calendar", Modification: "Add", }; @@ -176,6 +262,9 @@ const Page = () => { permission.CanViewPrivateItems = true; } + // Always include SendNotificationToUser explicitly (default false) + permission.SendNotificationToUser = Boolean(data.SendNotificationToUser); + return { userID: graphUserRequest.data?.[0]?.userPrincipalName, tenantFilter: userSettingsDefaults.currentTenant, @@ -184,7 +273,32 @@ const Page = () => { }, }; - // This effect is no longer needed since we use CippApiDialog for form handling + const contactPermissionsApiConfig = { + type: "POST", + url: "/api/ExecModifyContactPerms", + relatedQueryKeys: `ContactPermissions-${userId}`, + confirmText: "Add the specified permissions to this contact folder?", + customDataformatter: (row, action, data) => { + if (!data.UserToGetPermissions || !data.Permissions) return null; + + // Build permission object dynamically + const permission = { + UserID: data.UserToGetPermissions, + PermissionLevel: data.Permissions, + FolderName: contactPermissions.data?.[0]?.FolderName ?? "Contact", + Modification: "Add", + }; + + // Always include SendNotificationToUser explicitly (default false) + permission.SendNotificationToUser = Boolean(data.SendNotificationToUser); + + return { + userID: graphUserRequest.data?.[0]?.userPrincipalName, + tenantFilter: userSettingsDefaults.currentTenant, + permissions: [permission], + }; + }, + }; useEffect(() => { if (permissionsDialog.open) { @@ -202,14 +316,14 @@ const Page = () => { }); formControl.setValue( "ooo.StartTime", - new Date(oooRequest.data?.StartTime).getTime() / 1000 || null + new Date(oooRequest.data?.StartTime).getTime() / 1000 || null, ); formControl.setValue( "ooo.EndTime", - new Date(oooRequest.data?.EndTime).getTime() / 1000 || null + new Date(oooRequest.data?.EndTime).getTime() / 1000 || null, ); } - }, [oooRequest.isSuccess]); + }, [oooRequest.isSuccess, oooRequest.data]); useEffect(() => { //if userId is defined, we can fetch the user data @@ -218,8 +332,163 @@ const Page = () => { } }, [userId]); + useEffect(() => { + if (userRequest.isSuccess && userRequest.data?.[0]) { + const currentSettings = userRequest.data[0]; + let forwardingAddress = currentSettings.ForwardingAddress; + const forwardingSmtpAddress = currentSettings.MailboxActionsData?.ForwardingSmtpAddress; + const forwardAndDeliver = currentSettings.ForwardAndDeliver; + + // Handle ForwardingAddress being an array or string + if (Array.isArray(forwardingAddress)) { + forwardingAddress = forwardingAddress.join(", "); + } + + let forwardingType = "disabled"; + let cleanAddress = ""; + + if (forwardingSmtpAddress) { + // External forwarding + forwardingType = "ExternalAddress"; + cleanAddress = forwardingSmtpAddress; + } else if (forwardingAddress) { + // Internal forwarding + forwardingType = "internalAddress"; + cleanAddress = forwardingAddress; + } + + // Set form values + formControl.setValue("forwarding.forwardOption", forwardingType); + formControl.setValue("forwarding.KeepCopy", forwardAndDeliver === true); + + if (forwardingType === "internalAddress") { + formControl.setValue("forwarding.ForwardInternal", cleanAddress); + formControl.setValue("forwarding.ForwardExternal", ""); + } else if (forwardingType === "ExternalAddress") { + formControl.setValue("forwarding.ForwardExternal", cleanAddress); + formControl.setValue("forwarding.ForwardInternal", ""); + } else { + formControl.setValue("forwarding.ForwardInternal", ""); + formControl.setValue("forwarding.ForwardExternal", ""); + } + } + }, [userRequest.isSuccess, userRequest.dataUpdatedAt, formControl]); + const title = graphUserRequest.isSuccess ? graphUserRequest.data?.[0]?.displayName : "Loading..."; + // Create options array for mailbox permissions (no system users) + const mailboxPermissionOptions = useMemo(() => { + const options = []; + + // Add users + if (usersList?.data?.Results) { + usersList.data.Results.forEach((user) => { + options.push({ + value: user.userPrincipalName, + label: `${user.displayName} (${user.userPrincipalName})`, + type: "user", + }); + }); + } + + // Add mail-enabled security groups + if (groupsList?.data?.Results) { + groupsList.data.Results.forEach((group) => { + options.push({ + value: group.mail, + label: `${group.displayName} (${group.mail})`, + type: "group", + }); + }); + } + + // Sort alphabetically by label + return options.sort((a, b) => a.label.localeCompare(b.label)); + }, [usersList?.data?.Results, groupsList?.data?.Results]); + + // Create options array for calendar permissions (includes system users) + const calendarPermissionOptions = useMemo(() => { + const options = []; + + // Add special system users for calendar permissions + options.push({ + value: "Default", + label: "Default", + type: "system", + }); + + // Add users + if (usersList?.data?.Results) { + usersList.data.Results.forEach((user) => { + options.push({ + value: user.userPrincipalName, + label: `${user.displayName} (${user.userPrincipalName})`, + type: "user", + }); + }); + } + + // Add mail-enabled security groups + if (groupsList?.data?.Results) { + groupsList.data.Results.forEach((group) => { + options.push({ + value: group.mail, + label: `${group.displayName} (${group.mail})`, + type: "group", + }); + }); + } + + // Sort alphabetically by label, but keep system users at the top + return options.sort((a, b) => { + if (a.type === "system" && b.type !== "system") return -1; + if (b.type === "system" && a.type !== "system") return 1; + return a.label.localeCompare(b.label); + }); + }, [usersList?.data?.Results, groupsList?.data?.Results]); + + const contactPermissionOptions = useMemo(() => { + const options = []; + + // Add special system users for calendar permissions + options.push({ + value: "Default", + label: "Default", + type: "system", + }); + + // Add users + if (usersList?.data?.Results) { + usersList.data.Results.forEach((user) => { + options.push({ + value: user.userPrincipalName, + label: `${user.displayName} (${user.userPrincipalName})`, + type: "user", + }); + }); + } + + // Add mail-enabled security groups + if (groupsList?.data?.Results) { + groupsList.data.Results.forEach((group) => { + options.push({ + value: group.mail, + label: `${group.displayName} (${group.mail})`, + type: "group", + }); + }); + } + + // Sort alphabetically by label, but keep system users at the top + return options.sort((a, b) => { + if (a.type === "system" && b.type !== "system") return -1; + if (b.type === "system" && a.type !== "system") return 1; + return a.label.localeCompare(b.label); + }); + }, [usersList?.data?.Results, groupsList?.data?.Results]); + + const isUserGroupLoading = usersList.isFetching || groupsList.isFetching; + const subtitle = graphUserRequest.isSuccess ? [ { @@ -267,24 +536,31 @@ const Page = () => { icon: , url: "/api/ExecModifyMBPerms", customDataformatter: (row, action, formData) => { - // build permissions var permissions = []; - // if the row is an array, iterate through it if (Array.isArray(row)) { row.forEach((item) => { + // Safely extract original user identifier + const originalUser = item?._raw?.User || item?.User; + if (originalUser) { + // Only add if we have a valid user + permissions.push({ + UserID: originalUser, // Use original identifier for API calls + PermissionLevel: item?.AccessRights || "Unknown", + Modification: "Remove", + }); + } + }); + } else { + // Safely extract original user identifier + const originalUser = row?._raw?.User || row?.User; + if (originalUser) { + // Only add if we have a valid user permissions.push({ - UserID: item.User, - PermissionLevel: item.AccessRights, + UserID: originalUser, // Use original identifier for API calls + PermissionLevel: row?.AccessRights || "Unknown", Modification: "Remove", }); - }); - } else { - // if it's a single object, just push it - permissions.push({ - UserID: row.User, - PermissionLevel: row.AccessRights, - Modification: "Remove", - }); + } } return { @@ -314,8 +590,8 @@ const Page = () => { text: "Mailbox Permissions", subtext: userRequest.data?.[0]?.Permissions?.length !== 0 - ? "Other users have access to this mailbox" - : "No other users have access to this mailbox", + ? "Other users or groups have access to this mailbox" + : "No other users or groups have access to this mailbox", statusColor: "green.main", cardLabelBoxActions: ( + ), + table: { + title: "Contact Permissions", + hideTitle: true, + data: + contactPermissions.data?.map((permission) => { + const userIdentifier = permission?.User; + const permissionInfo = getPermissionInfo(permission.User, groupsList); + return { + User: permissionInfo.displayName, + AccessRights: permission?.AccessRights?.join(", ") || "Unknown", + FolderName: permission?.FolderName || "Unknown", + Type: permissionInfo.type, + _raw: permission, + }; + }) || [], + refreshFunction: () => contactPermissions.refetch(), + isFetching: contactPermissions.isFetching, + simpleColumns: ["User", "AccessRights", "FolderName", "Type"], + actions: [ + { + label: "Remove Permission", + type: "POST", + icon: , + url: "/api/ExecModifyContactPerms", + customDataformatter: (row, action, formData) => { + var permissions = []; + if (Array.isArray(row)) { + row.forEach((item) => { + const originalUser = item._raw ? item._raw.User : item.User; + permissions.push({ + UserID: originalUser, // Use original identifier for API calls + PermissionLevel: item.AccessRights, + FolderName: item.FolderName, + Modification: "Remove", + }); + }); + } else { + const originalUser = row._raw ? row._raw.User : row.User; + permissions.push({ + UserID: originalUser, // Use original identifier for API calls + PermissionLevel: row.AccessRights, + FolderName: row.FolderName, + Modification: "Remove", + }); + } + return { + userID: graphUserRequest.data?.[0]?.userPrincipalName, + tenantFilter: userSettingsDefaults.currentTenant, + permissions: permissions, + }; + }, + confirmText: "Are you sure you want to remove this contact permission?", + multiPost: false, + relatedQueryKeys: `ContactPermissions-${userId}`, + condition: (row) => row.User !== "Default" && row.User !== "Anonymous", + }, + ], + offCanvas: { + children: (data) => { + const originalUser = data._raw ? data._raw.User : data.User; + const permissionInfo = getPermissionInfo(originalUser, groupsList); + return ( + , + url: "/api/ExecModifyContactPerms", + data: { + userID: graphUserRequest.data?.[0]?.userPrincipalName, + tenantFilter: userSettingsDefaults.currentTenant, + permissions: [ + { + UserID: originalUser, // Use original identifier for API calls + PermissionLevel: data.AccessRights, + FolderName: data.FolderName, + Modification: "Remove", + }, + ], + }, + confirmText: "Are you sure you want to remove this contact permission?", + multiPost: false, + relatedQueryKeys: `ContactPermissions-${userId}`, + }, + ]} + /> + ); + }, + }, + }, + }, + ]; + const mailboxRuleActions = [ { label: "Enable Mailbox Rule", type: "POST", icon: , url: "/api/ExecSetMailboxRule", - data: { - ruleId: "Identity", - userPrincipalName: graphUserRequest.data?.[0]?.userPrincipalName, - ruleName: "Name", - Enable: true, + customDataformatter: (row, action, formData) => { + return { + ruleId: row?.Identity, + userPrincipalName: graphUserRequest.data?.[0]?.userPrincipalName, + ruleName: row?.Name, + Enable: true, + tenantFilter: userSettingsDefaults.currentTenant, + }; }, - condition: (row) => !row.Enabled, + condition: (row) => row && !row.Enabled, confirmText: "Are you sure you want to enable this mailbox rule?", multiPost: false, }, @@ -520,13 +964,16 @@ const Page = () => { type: "POST", icon: , url: "/api/ExecSetMailboxRule", - data: { - ruleId: "Identity", - userPrincipalName: graphUserRequest.data?.[0]?.userPrincipalName, - ruleName: "Name", - Disable: true, + customDataformatter: (row, action, formData) => { + return { + ruleId: row?.Identity, + userPrincipalName: graphUserRequest.data?.[0]?.userPrincipalName, + ruleName: row?.Name, + Disable: true, + tenantFilter: userSettingsDefaults.currentTenant, + }; }, - condition: (row) => row.Enabled, + condition: (row) => row && row.Enabled, confirmText: "Are you sure you want to disable this mailbox rule?", multiPost: false, }, @@ -535,10 +982,13 @@ const Page = () => { type: "POST", icon: , url: "/api/ExecRemoveMailboxRule", - data: { - ruleId: "Identity", - ruleName: "Name", - userPrincipalName: graphUserRequest.data?.[0]?.userPrincipalName, + customDataformatter: (row, action, formData) => { + return { + ruleId: row?.Identity, + ruleName: row?.Name, + userPrincipalName: graphUserRequest.data?.[0]?.userPrincipalName, + tenantFilter: userSettingsDefaults.currentTenant, + }; }, confirmText: "Are you sure you want to remove this mailbox rule?", multiPost: false, @@ -574,7 +1024,7 @@ const Page = () => { offCanvas: { children: (data) => { const keys = Object.keys(data).filter( - (key) => !key.includes("@odata") && !key.includes("@data") + (key) => !key.includes("@odata") && !key.includes("@data"), ); const properties = []; keys.forEach((key) => { @@ -590,7 +1040,128 @@ const Page = () => { cardSx={{ p: 0, m: -2 }} title="Rule Details" propertyItems={properties} - actionItems={mailboxRuleActions} + actionItems={[ + { + label: "Enable Mailbox Rule", + type: "POST", + icon: , + url: "/api/ExecSetMailboxRule", + data: { + ruleId: data?.Identity, + userPrincipalName: graphUserRequest.data?.[0]?.userPrincipalName, + ruleName: data?.Name, + Enable: true, + tenantFilter: userSettingsDefaults.currentTenant, + }, + confirmText: "Are you sure you want to enable this mailbox rule?", + multiPost: false, + }, + { + label: "Disable Mailbox Rule", + type: "POST", + icon: , + url: "/api/ExecSetMailboxRule", + data: { + ruleId: data?.Identity, + userPrincipalName: graphUserRequest.data?.[0]?.userPrincipalName, + ruleName: data?.Name, + Disable: true, + tenantFilter: userSettingsDefaults.currentTenant, + }, + confirmText: "Are you sure you want to disable this mailbox rule?", + multiPost: false, + }, + { + label: "Remove Mailbox Rule", + type: "POST", + icon: , + url: "/api/ExecRemoveMailboxRule", + data: { + ruleId: data?.Identity, + ruleName: data?.Name, + userPrincipalName: graphUserRequest.data?.[0]?.userPrincipalName, + tenantFilter: userSettingsDefaults.currentTenant, + }, + confirmText: "Are you sure you want to remove this mailbox rule?", + multiPost: false, + relatedQueryKeys: `MailboxRules-${userId}`, + }, + ]} + /> + ); + }, + }, + }, + }, + ]; + + const junkEmailConfigActions = [ + { + label: "Remove Entry", + type: "POST", + icon: , + url: "/api/RemoveTrustedBlockedSender", + customDataformatter: (row, action, formData) => { + return { + userPrincipalName: row?.UserPrincipalName, + typeProperty: row?.TypeProperty, + value: row?.Value, + tenantFilter: userSettingsDefaults.currentTenant, + }; + }, + confirmText: + "Are you sure you want to remove [Value] from the [Type] list for [UserPrincipalName]?", + multiPost: false, + relatedQueryKeys: `JunkEmailConfig-${userId}`, + }, + ]; + + const junkEmailConfigCard = [ + { + id: 1, + cardLabelBox: { + cardLabelBoxHeader: junkEmailConfigRequest.isFetching ? ( + + ) : junkEmailConfigRequest.data?.length !== 0 ? ( + + ) : ( + + ), + }, + text: "Trusted and Blocked Senders/Domains", + subtext: junkEmailConfigRequest.data?.length + ? "Trusted/Blocked senders and domains are configured for this user" + : "No trusted or blocked senders/domains entries for this user", + statusColor: "green.main", + table: { + title: "Trusted and Blocked Senders/Domains", + hideTitle: true, + data: junkEmailConfigRequest.data || [], + refreshFunction: () => junkEmailConfigRequest.refetch(), + isFetching: junkEmailConfigRequest.isFetching, + simpleColumns: ["Type", "Value"], + actions: junkEmailConfigActions, + offCanvas: { + children: (data) => { + return ( + ); }, @@ -604,7 +1175,7 @@ const Page = () => { label: "Make Primary", type: "POST", icon: , - url: "/api/SetUserAliases", + url: "/api/EditUserAliases", data: { id: userId, tenantFilter: userSettingsDefaults.currentTenant, @@ -613,12 +1184,13 @@ const Page = () => { confirmText: "Are you sure you want to make this the primary proxy address?", multiPost: false, relatedQueryKeys: `ListUsers-${userId}`, + condition: (row) => row && row.Type !== "Primary", }, { label: "Remove Proxy Address", type: "POST", icon: , - url: "/api/SetUserAliases", + url: "/api/EditUserAliases", data: { id: userId, tenantFilter: userSettingsDefaults.currentTenant, @@ -627,11 +1199,10 @@ const Page = () => { confirmText: "Are you sure you want to remove this proxy address?", multiPost: false, relatedQueryKeys: `ListUsers-${userId}`, + condition: (row) => row && row.Type !== "Primary", }, ]; - // Proxy address actions implementations are handled by the CippAliasDialog component - const proxyAddressesCard = [ { id: 1, @@ -667,7 +1238,7 @@ const Page = () => { data: graphUserRequest.data?.[0]?.proxyAddresses?.map((address) => ({ Address: address, - Type: address.startsWith("SMTP:") ? "Primary" : "Alias", + Type: typeof address === "string" && address.startsWith("SMTP:") ? "Primary" : "Alias", })) || [], refreshFunction: () => graphUserRequest.refetch(), isFetching: graphUserRequest.isFetching, @@ -698,10 +1269,6 @@ const Page = () => { }, ]; - // These API request objects are no longer needed as they're handled by CippApiDialog - - // Calendar permissions dialog functionality is now handled by the CippCalendarPermissionsDialog component - return ( { {userRequest?.data?.[0]?.Mailbox?.[0]?.error && ( - + {userRequest?.data?.[0]?.Mailbox?.[0]?.error.includes( - "Microsoft.Exchange.Configuration.Tasks.ManagementObjectNotFoundException" + "Microsoft.Exchange.Configuration.Tasks.ManagementObjectNotFoundException", ) ? "This user does not have a mailbox, make sure they are licensed for Exchange." : "An error occurred while fetching the mailbox details."} @@ -748,10 +1314,10 @@ const Page = () => { )} {!userRequest?.data?.[0]?.Mailbox?.[0]?.error?.includes( - "Microsoft.Exchange.Configuration.Tasks.ManagementObjectNotFoundException" + "Microsoft.Exchange.Configuration.Tasks.ManagementObjectNotFoundException", ) && ( <> - + { handleRefresh={() => userRequest.refetch()} /> - + { items={calCard} isCollapsible={true} /> + + @@ -822,12 +1399,9 @@ const Page = () => { {({ formHook }) => ( ({ - value: user.userPrincipalName, - label: `${user.displayName} (${user.userPrincipalName})`, - })) || [] - } + combinedOptions={mailboxPermissionOptions} + isUserGroupLoading={isUserGroupLoading} + defaultAutoMap={true} /> )} @@ -839,7 +1413,29 @@ const Page = () => { row={graphUserRequest.data?.[0]} allowResubmit={true} > - {({ formHook }) => } + {({ formHook }) => ( + + )} + + + + {({ formHook }) => ( + + )} ); diff --git a/src/pages/identity/administration/users/user/index.jsx b/src/pages/identity/administration/users/user/index.jsx index 1bc1412818bf..95adbe3d4fed 100644 --- a/src/pages/identity/administration/users/user/index.jsx +++ b/src/pages/identity/administration/users/user/index.jsx @@ -1,10 +1,10 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { useSettings } from "/src/hooks/use-settings"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; +import { useSettings } from "../../../../../hooks/use-settings"; import { useRouter } from "next/router"; -import { ApiGetCall, ApiPostCall } from "/src/api/ApiCall"; -import CippFormSkeleton from "/src/components/CippFormPages/CippFormSkeleton"; +import { ApiGetCall, ApiPostCall } from "../../../../../api/ApiCall"; +import CippFormSkeleton from "../../../../../components/CippFormPages/CippFormSkeleton"; import CalendarIcon from "@heroicons/react/24/outline/CalendarIcon"; -import { AdminPanelSettings, Check, Group, Mail, Fingerprint, Launch } from "@mui/icons-material"; +import { AdminPanelSettings, Check, Group, Mail, Fingerprint, Launch, Devices } from "@mui/icons-material"; import { HeaderedTabbedLayout } from "../../../../../layouts/HeaderedTabbedLayout"; import tabOptions from "./tabOptions"; import { CippCopyToClipBoard } from "../../../../../components/CippComponents/CippCopyToClipboard"; @@ -15,16 +15,19 @@ import { SvgIcon, Typography } from "@mui/material"; import { CippBannerListCard } from "../../../../../components/CippCards/CippBannerListCard"; import { CippTimeAgo } from "../../../../../components/CippComponents/CippTimeAgo"; import { useEffect, useState } from "react"; -import CippUserActions from "/src/components/CippComponents/CippUserActions"; +import { useCippUserActions } from "../../../../../components/CippComponents/CippUserActions"; import { EyeIcon, PencilIcon } from "@heroicons/react/24/outline"; -import { CippDataTable } from "/src/components/CippTable/CippDataTable"; +import { CippDataTable } from "../../../../../components/CippTable/CippDataTable"; import dynamic from "next/dynamic"; -const CippMap = dynamic(() => import("/src/components/CippComponents/CippMap"), { ssr: false }); +const CippMap = dynamic(() => import("../../../../../components/CippComponents/CippMap"), { + ssr: false, +}); import { Button, Dialog, DialogTitle, DialogContent, IconButton } from "@mui/material"; import { Close } from "@mui/icons-material"; import { CippPropertyList } from "../../../../../components/CippComponents/CippPropertyList"; import { CippCodeBlock } from "../../../../../components/CippComponents/CippCodeBlock"; +import { CippHead } from "../../../../../components/CippComponents/CippHead"; const SignInLogsDialog = ({ open, onClose, userId, tenantFilter }) => { return ( @@ -73,6 +76,7 @@ const Page = () => { const { userId } = router.query; const [waiting, setWaiting] = useState(false); const [signInLogsDialogOpen, setSignInLogsDialogOpen] = useState(false); + const userActions = useCippUserActions(); useEffect(() => { if (userId) { @@ -81,7 +85,9 @@ const Page = () => { }, [userId]); const userRequest = ApiGetCall({ - url: `/api/ListUsers?UserId=${userId}&tenantFilter=${router.query.tenantFilter ?? userSettingsDefaults.currentTenant}`, + url: `/api/ListUsers?UserId=${userId}&tenantFilter=${ + router.query.tenantFilter ?? userSettingsDefaults.currentTenant + }`, queryKey: `ListUsers-${userId}`, waiting: waiting, }); @@ -90,46 +96,64 @@ const Page = () => { urlFromData: true, }); - useEffect(() => { - if (userId && userSettingsDefaults.currentTenant && !userBulkRequest.isSuccess) { - userBulkRequest.mutate({ - url: "/api/ListGraphBulkRequest", - data: { - Requests: [ - { - id: "userMemberOf", - url: `/users/${userId}/memberOf`, - method: "GET", - }, - { - id: "mfaDevices", - url: `/users/${userId}/authentication/methods?$top=99`, - method: "GET", - }, - { - id: "signInLogs", - url: `/auditLogs/signIns?$filter=(userId eq '${userId}')&$top=1`, - method: "GET", - }, - ], - tenantFilter: userSettingsDefaults.currentTenant, - noPaginateIds: ["signInLogs"], - }, + function refreshFunction() { + const userPrincipalName = userRequest.data?.[0]?.userPrincipalName; + const requests = [ + { + id: "userMemberOf", + url: `/users/${userId}/memberOf`, + method: "GET", + }, + { + id: "mfaDevices", + url: `/users/${userId}/authentication/methods?$top=99`, + method: "GET", + }, + { + id: "signInLogs", + url: `/auditLogs/signIns?$filter=(userId eq '${userId}')&$top=1`, + method: "GET", + }, + ]; + + // Only add managedDevices request if we have the userPrincipalName + if (userPrincipalName) { + requests.push({ + id: "managedDevices", + url: `/deviceManagement/managedDevices?$filter=userPrincipalName eq '${userPrincipalName}'`, + method: "GET", }); } - }, [userId, userSettingsDefaults.currentTenant, userBulkRequest.isSuccess]); + + userBulkRequest.mutate({ + url: "/api/ListGraphBulkRequest", + data: { + Requests: requests, + tenantFilter: userSettingsDefaults.currentTenant, + noPaginateIds: ["signInLogs"], + }, + }); + } + + useEffect(() => { + if (userId && userSettingsDefaults.currentTenant && userRequest.isSuccess && !userBulkRequest.isSuccess) { + refreshFunction(); + } + }, [userId, userSettingsDefaults.currentTenant, userRequest.isSuccess, userBulkRequest.isSuccess]); const bulkData = userBulkRequest?.data?.data ?? []; const signInLogsData = bulkData?.find((item) => item.id === "signInLogs"); const userMemberOfData = bulkData?.find((item) => item.id === "userMemberOf"); const mfaDevicesData = bulkData?.find((item) => item.id === "mfaDevices"); + const managedDevicesData = bulkData?.find((item) => item.id === "managedDevices"); const signInLogs = signInLogsData?.body?.value || []; const userMemberOf = userMemberOfData?.body?.value || []; const mfaDevices = mfaDevicesData?.body?.value || []; + const managedDevices = managedDevicesData?.body?.value || []; // Set the title and subtitle for the layout - const title = userRequest.isSuccess ? <>{userRequest.data?.[0]?.displayName} : "Loading..."; + const title = userRequest.isSuccess ? userRequest.data?.[0]?.displayName : "Loading..."; const subtitle = userRequest.isSuccess ? [ @@ -231,7 +255,7 @@ const Page = () => { <> Location - + { ]} /> - + { ) { // Filter policies where result is "success" const appliedPolicies = signInData.appliedConditionalAccessPolicies.filter( - (policy) => policy.result === "success" + (policy) => policy.result === "success", ); if (appliedPolicies.length > 0) { @@ -412,7 +436,7 @@ const Page = () => { if (mfaDevices.length > 0) { // Exclude password authentication method const mfaDevicesFiltered = mfaDevices.filter( - (method) => method["@odata.type"] !== "#microsoft.graph.passwordAuthenticationMethod" + (method) => method["@odata.type"] !== "#microsoft.graph.passwordAuthenticationMethod", ); if (mfaDevicesFiltered.length > 0) { @@ -514,6 +538,11 @@ const Page = () => { }, text: "Groups", subtext: "List of groups the user is a member of", + statusText: ` ${ + userMemberOf?.filter((item) => item?.["@odata.type"] === "#microsoft.graph.group") + .length + } Group(s)`, + statusColor: "info.main", table: { title: "Group Memberships", hideTitle: true, @@ -521,12 +550,13 @@ const Page = () => { { icon: , label: "Edit Group", - link: "/identity/administration/groups/edit?groupId=[id]", + link: "/identity/administration/groups/edit?groupId=[id]&groupType=[calculatedGroupType]", }, ], data: userMemberOf?.filter( - (item) => item?.["@odata.type"] === "#microsoft.graph.group" + (item) => item?.["@odata.type"] === "#microsoft.graph.group", ), + refreshFunction: refreshFunction, simpleColumns: ["displayName", "groupTypes", "securityEnabled", "mailEnabled"], }, }, @@ -542,23 +572,81 @@ const Page = () => { }, text: "Admin Roles", subtext: "List of roles the user is a member of", + statusText: ` ${ + userMemberOf?.filter( + (item) => item?.["@odata.type"] === "#microsoft.graph.directoryRole", + ).length + } Role(s)`, + statusColor: "info.main", table: { title: "Admin Roles", hideTitle: true, data: userMemberOf?.filter( - (item) => item?.["@odata.type"] === "#microsoft.graph.directoryRole" + (item) => item?.["@odata.type"] === "#microsoft.graph.directoryRole", ), simpleColumns: ["displayName", "description"], + refreshFunction: refreshFunction, }, }, ] : []; + const ownedDevicesItems = managedDevices.length > 0 + ? [ + { + id: 1, + cardLabelBox: { + cardLabelBoxHeader: , + }, + text: "Managed Devices", + subtext: "List of devices managed for this user", + statusText: `${managedDevices.length} Device(s)`, + statusColor: "info.main", + table: { + title: "Managed Devices", + hideTitle: true, + data: managedDevices, + refreshFunction: refreshFunction, + simpleColumns: ["deviceName", "operatingSystem", "osVersion", "managementType"], + actions: [ + { + icon: , + label: "View Device", + link: `/endpoint/MEM/devices/device?deviceId=[id]&tenantFilter=${userSettingsDefaults.currentTenant}`, + }, + ], + }, + }, + ] + : managedDevicesData?.status !== 200 + ? [ + { + id: 1, + cardLabelBox: "!", + text: "Error loading devices", + subtext: managedDevicesData?.error?.message || "Unknown error", + statusColor: "error.main", + statusText: "Error", + propertyItems: [], + }, + ] + : [ + { + id: 1, + cardLabelBox: "-", + text: "No devices", + subtext: "This user does not have any managed devices.", + statusColor: "warning.main", + statusText: "No Devices", + propertyItems: [], + }, + ]; + return ( { py: 4, }} > + - + - + Latest Logon { 0 ? true : false} + isCollapsible={true} /> 0 ? true : false} + isCollapsible={true} + /> + Managed Devices + diff --git a/src/pages/identity/administration/vacation-mode/add/index.js b/src/pages/identity/administration/vacation-mode/add/index.js new file mode 100644 index 000000000000..eb4f73a75cbc --- /dev/null +++ b/src/pages/identity/administration/vacation-mode/add/index.js @@ -0,0 +1,99 @@ +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; +import CippWizardPage from "../../../../../components/CippWizard/CippWizardPage.jsx"; +import { CippTenantStep } from "../../../../../components/CippWizard/CippTenantStep.jsx"; +import { CippWizardAutoComplete } from "../../../../../components/CippWizard/CippWizardAutoComplete"; +import { CippWizardVacationActions } from "../../../../../components/CippWizard/CippWizardVacationActions"; +import { CippWizardVacationSchedule } from "../../../../../components/CippWizard/CippWizardVacationSchedule"; +import { CippWizardVacationConfirmation } from "../../../../../components/CippWizard/CippWizardVacationConfirmation"; + +const Page = () => { + const steps = [ + { + title: "Step 1", + description: "Tenant Selection", + component: CippTenantStep, + componentProps: { + allTenants: false, + type: "single", + }, + }, + { + title: "Step 2", + description: "User Selection", + component: CippWizardAutoComplete, + componentProps: { + title: "Select the users to apply vacation mode for", + name: "Users", + placeholder: "Select Users", + type: "multiple", + api: { + url: "/api/ListGraphRequest", + dataKey: "Results", + queryKey: "Users - {tenant}", + data: { + Endpoint: "users", + manualPagination: true, + $select: "id,userPrincipalName,displayName", + $count: true, + $orderby: "displayName", + $top: 999, + }, + addedField: { + userPrincipalName: "userPrincipalName", + }, + labelField: (option) => `${option.displayName} (${option.userPrincipalName})`, + valueField: "userPrincipalName", + }, + }, + }, + { + title: "Step 3", + description: "Vacation Actions", + component: CippWizardVacationActions, + }, + { + title: "Step 4", + description: "Schedule", + component: CippWizardVacationSchedule, + }, + { + title: "Step 5", + description: "Review & Submit", + component: CippWizardVacationConfirmation, + }, + ]; + + const initialState = { + tenantFilter: null, + Users: [], + enableCAExclusion: false, + PolicyId: null, + excludeLocationAuditAlerts: false, + enableMailboxPermissions: false, + delegates: [], + permissionTypes: [], + autoMap: true, + includeCalendar: false, + calendarPermission: null, + canViewPrivateItems: false, + enableOOO: false, + oooInternalMessage: null, + oooExternalMessage: null, + startDate: null, + endDate: null, + postExecution: [], + reference: null, + }; + + return ( + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/identity/administration/vacation-mode/index.js b/src/pages/identity/administration/vacation-mode/index.js new file mode 100644 index 000000000000..f2caa0ec2468 --- /dev/null +++ b/src/pages/identity/administration/vacation-mode/index.js @@ -0,0 +1,104 @@ +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippTablePage from "../../../../components/CippComponents/CippTablePage"; +import { Delete } from "@mui/icons-material"; +import { EyeIcon } from "@heroicons/react/24/outline"; +import { Button } from "@mui/material"; +import Link from "next/link"; +import { EventAvailable } from "@mui/icons-material"; +import { useSettings } from "../../../../hooks/use-settings.js"; + +const Page = () => { + const initialState = useSettings(); + const currentTenant = initialState.currentTenant; + + const actions = [ + { + label: "View Task Details", + link: "/cipp/scheduler/task?id=[RowKey]", + icon: , + }, + { + label: "Cancel Vacation Mode", + type: "POST", + url: "/api/RemoveScheduledItem", + data: { ID: "RowKey" }, + confirmText: + "Are you sure you want to cancel this vacation mode entry? This might mean the user will remain in vacation mode permanently.", + icon: , + multiPost: false, + }, + ]; + + const filterList = [ + { + filterName: "Running", + value: [{ id: "TaskState", value: "Running" }], + type: "column", + }, + { + filterName: "Planned", + value: [{ id: "TaskState", value: "Planned" }], + type: "column", + }, + { + filterName: "Failed", + value: [{ id: "TaskState", value: "Failed" }], + type: "column", + }, + { + filterName: "Completed", + value: [{ id: "TaskState", value: "Completed" }], + type: "column", + }, + { + filterName: "CA Exclusion", + value: [{ id: "Name", value: "CA Exclusion" }], + type: "column", + }, + { + filterName: "Mailbox Permissions", + value: [{ id: "Name", value: "Mailbox Vacation" }], + type: "column", + }, + { + filterName: "Out of Office", + value: [{ id: "Name", value: "OOO Vacation" }], + type: "column", + }, + ]; + + return ( + } + > + Add Vacation Schedule + + } + title="Vacation Mode" + apiUrl="/api/ListScheduledItems?SearchTitle=*Vacation*" + queryKey={`VacationMode-${currentTenant}`} + actions={actions} + simpleColumns={["Tenant", "Name", "Reference", "TaskState", "ScheduledTime", "ExecutedTime"]} + filters={filterList} + offCanvas={{ + extendedInfoFields: [ + "Name", + "TaskState", + "ScheduledTime", + "Reference", + "Tenant", + "ExecutedTime", + ], + actions: actions, + }} + /> + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/identity/reports/azure-ad-connect-report/index.js b/src/pages/identity/reports/azure-ad-connect-report/index.js index 97594a13d6ac..5a75dd7a60d9 100644 --- a/src/pages/identity/reports/azure-ad-connect-report/index.js +++ b/src/pages/identity/reports/azure-ad-connect-report/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; const simpleColumns = [ "displayName", diff --git a/src/pages/identity/reports/inactive-users-report/index.js b/src/pages/identity/reports/inactive-users-report/index.js index b3bd18ea373a..168231bf6c26 100644 --- a/src/pages/identity/reports/inactive-users-report/index.js +++ b/src/pages/identity/reports/inactive-users-report/index.js @@ -1,11 +1,27 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { EyeIcon, TrashIcon } from "@heroicons/react/24/outline"; -import { Edit, Block } from "@mui/icons-material"; +import { Edit, Block, Sync, Info } from "@mui/icons-material"; +import { + Button, + SvgIcon, + IconButton, + Tooltip, + Alert, +} from "@mui/material"; +import { Stack } from "@mui/system"; +import { useSettings } from "../../../../hooks/use-settings"; +import { useDialog } from "../../../../hooks/use-dialog"; +import { CippApiDialog } from "../../../../components/CippComponents/CippApiDialog"; const Page = () => { const pageTitle = "Inactive users (6 months)"; const apiUrl = "/api/ListInactiveAccounts"; + const currentTenant = useSettings().currentTenant; + const syncDialog = useDialog(); + + const isAllTenants = currentTenant === "AllTenants"; + const actions = [ { label: "View User", @@ -51,6 +67,7 @@ const Page = () => { "lastSignInDateTime", "lastNonInteractiveSignInDateTime", "numberOfAssignedLicenses", + "daysSinceLastSignIn", "lastRefreshedDateTime", ], actions: actions, @@ -63,18 +80,62 @@ const Page = () => { "lastSignInDateTime", "lastNonInteractiveSignInDateTime", "numberOfAssignedLicenses", + "daysSinceLastSignIn", "lastRefreshedDateTime", ]; + const pageActions = [ + + + + + + + + , + ]; + return ( - + <> + {currentTenant && currentTenant !== "" ? ( + + ) : ( + Please select a tenant to view inactive users. + )} + + ); }; diff --git a/src/pages/identity/reports/index.js b/src/pages/identity/reports/index.js index 095383995762..cb5872a4486b 100644 --- a/src/pages/identity/reports/index.js +++ b/src/pages/identity/reports/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; const Page = () => { const pageTitle = "Reports"; diff --git a/src/pages/identity/reports/mfa-report/index.js b/src/pages/identity/reports/mfa-report/index.js index 206e8337e2ef..8958301c763c 100644 --- a/src/pages/identity/reports/mfa-report/index.js +++ b/src/pages/identity/reports/mfa-report/index.js @@ -1,21 +1,58 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { LockPerson } from "@mui/icons-material"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { LockPerson, Sync, Info } from "@mui/icons-material"; +import { Button, Alert, SvgIcon, IconButton, Tooltip } from "@mui/material"; +import { useSettings } from "../../../../hooks/use-settings"; +import { Stack } from "@mui/system"; +import { useDialog } from "../../../../hooks/use-dialog"; +import { CippApiDialog } from "../../../../components/CippComponents/CippApiDialog"; +import { useRouter } from "next/router"; +import { useMemo, useState } from "react"; +import { CippQueueTracker } from "../../../../components/CippTable/CippQueueTracker"; const Page = () => { const pageTitle = "MFA Report"; const apiUrl = "/api/ListMFAUsers"; - const simpleColumns = [ - "UPN", - "AccountEnabled", - "isLicensed", - "MFARegistration", - "PerUser", - "CoveredBySD", - "CoveredByCA", - "MFAMethods", - "CAPolicies", - ]; + const currentTenant = useSettings().currentTenant; + const syncDialog = useDialog(); + const router = useRouter(); + const [syncQueueId, setSyncQueueId] = useState(null); + + const isAllTenants = currentTenant === "AllTenants"; + + const apiData = { + UseReportDB: true, + }; + const simpleColumns = isAllTenants + ? [ + "Tenant", + "UPN", + "AccountEnabled", + "isLicensed", + "MFARegistration", + "PerUser", + "CoveredBySD", + "CoveredByCA", + "MFAMethods", + "CAPolicies", + "IsAdmin", + "UserType", + "CacheTimestamp", + ] + : [ + "UPN", + "AccountEnabled", + "isLicensed", + "MFARegistration", + "PerUser", + "CoveredBySD", + "CoveredByCA", + "MFAMethods", + "CAPolicies", + "IsAdmin", + "UserType", + "CacheTimestamp", + ]; const filters = [ { filterName: "Enabled, licensed users", @@ -44,15 +81,33 @@ const Page = () => { value: [{ id: "MFARegistration", value: "Yes" }], type: "column", }, + { + filterName: "Admin Users", + value: [{ id: "IsAdmin", value: "Yes" }], + type: "column", + }, ]; + // Parse filters from URL query parameters + const urlFilters = useMemo(() => { + if (router.query.filters) { + try { + return JSON.parse(router.query.filters); + } catch (e) { + console.error("Failed to parse filters from URL:", e); + return null; + } + } + return null; + }, [router.query.filters]); + const actions = [ { label: "Set Per-User MFA", type: "POST", icon: , url: "/api/ExecPerUserMFA", - data: { userId: "UPN" }, + data: { userId: "ID", userPrincipalName: "UPN" }, fields: [ { type: "autoComplete", @@ -72,14 +127,65 @@ const Page = () => { }, ]; + const pageActions = [ + + + + + + + + + , + ]; + return ( - + <> + + { + if (result?.Metadata?.QueueId) { + setSyncQueueId(result?.Metadata?.QueueId); + } + }, + }} + /> + ); }; diff --git a/src/pages/identity/reports/risk-detections/index.js b/src/pages/identity/reports/risk-detections/index.js index 3c54fc260e31..ef62600025d3 100644 --- a/src/pages/identity/reports/risk-detections/index.js +++ b/src/pages/identity/reports/risk-detections/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { MagnifyingGlassIcon } from "@heroicons/react/24/outline"; const Page = () => { diff --git a/src/pages/identity/reports/signin-report/index.js b/src/pages/identity/reports/signin-report/index.js index 9928b10dae07..9f55cf2d2376 100644 --- a/src/pages/identity/reports/signin-report/index.js +++ b/src/pages/identity/reports/signin-report/index.js @@ -1,9 +1,9 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { useState } from "react"; import { Button, TextField, Switch, FormControlLabel } from "@mui/material"; import { Grid } from "@mui/system"; -import CippButtonCard from "/src/components/CippCards/CippButtonCard"; +import CippButtonCard from "../../../../components/CippCards/CippButtonCard"; const Page = () => { const pageTitle = "Sign Ins Report"; @@ -43,7 +43,7 @@ const Page = () => { const tableFilter = ( - + { fullWidth /> - + { fullWidth /> - + { /> {filterValues.failedLogonsOnly && ( - + { /> )} - + diff --git a/src/pages/index.js b/src/pages/index.js index d12ed2729f1b..fd02b3802bc9 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -1,338 +1,3 @@ -import Head from "next/head"; -import { useEffect, useState } from "react"; -import { Box, Container, Button } from "@mui/material"; -import { Grid } from "@mui/system"; -import { CippInfoBar } from "../components/CippCards/CippInfoBar"; -import { CippChartCard } from "../components/CippCards/CippChartCard"; -import { CippPropertyListCard } from "../components/CippCards/CippPropertyListCard"; -import { Layout as DashboardLayout } from "../layouts/index.js"; -import { useSettings } from "../hooks/use-settings"; -import { getCippFormatting } from "../utils/get-cipp-formatting.js"; -import Portals from "../data/portals"; -import { BulkActionsMenu } from "../components/bulk-actions-menu.js"; -import { CippUniversalSearch } from "../components/CippCards/CippUniversalSearch.jsx"; -import { ApiGetCall } from "../api/ApiCall.jsx"; -import { CippCopyToClipBoard } from "../components/CippComponents/CippCopyToClipboard.jsx"; +import DashboardV2 from "./dashboardv2"; -const Page = () => { - const { currentTenant } = useSettings(); - const [domainVisible, setDomainVisible] = useState(false); - - const organization = ApiGetCall({ - url: "/api/ListOrg", - queryKey: `${currentTenant}-ListOrg`, - data: { tenantFilter: currentTenant }, - }); - - const dashboard = ApiGetCall({ - url: "/api/ListuserCounts", - data: { tenantFilter: currentTenant }, - queryKey: `${currentTenant}-ListuserCounts`, - }); - - const GlobalAdminList = ApiGetCall({ - url: "/api/ListGraphRequest", - queryKey: `${currentTenant}-ListGraphRequest`, - data: { - tenantFilter: currentTenant, - Endpoint: "/directoryRoles(roleTemplateId='62e90394-69f5-4237-9190-012177145e10')/members", - $select: "displayName,userPrincipalName,accountEnabled", - }, - }); - - const sharepoint = ApiGetCall({ - url: "/api/ListSharepointQuota", - queryKey: `${currentTenant}-ListSharepointQuota`, - data: { tenantFilter: currentTenant }, - }); - - const standards = ApiGetCall({ - url: "/api/ListStandardTemplates", - queryKey: `${currentTenant}-ListStandardTemplates`, - }); - - const partners = ApiGetCall({ - url: "/api/ListGraphRequest", - queryKey: `${currentTenant}-ListPartners`, - data: { - Endpoint: "policies/crossTenantAccessPolicy/partners", - tenantFilter: currentTenant, - ReverseTenantLookup: true, - }, - }); - - const currentTenantInfo = ApiGetCall({ - url: "/api/ListTenants", - queryKey: `ListTenants`, - }); - - // Top bar data - const tenantInfo = [ - { name: "Tenant Name", data: organization.data?.displayName }, - { - name: "Tenant ID", - data: ( - <> - - - ), - }, - { - name: "Default Domain", - data: ( - <> - domain.isDefault === true)?.name - } - type="chip" - /> - - ), - }, - { - name: "AD Sync Enabled", - data: getCippFormatting(organization.data?.onPremisesSyncEnabled, "dirsync"), - }, - ]; - - function getActionCountsForTenant(standardsData, currentTenant) { - if (!standardsData) { - return { - remediateCount: 0, - alertCount: 0, - reportCount: 0, - total: 0, - }; - } - - const applicableTemplates = standardsData.filter((template) => { - const tenantFilterArr = Array.isArray(template?.tenantFilter) ? template.tenantFilter : []; - const excludedTenantsArr = Array.isArray(template?.excludedTenants) - ? template.excludedTenants - : []; - - const tenantInFilter = - tenantFilterArr.length > 0 && tenantFilterArr.some((tf) => tf.value === currentTenant); - - const allTenantsTemplate = - tenantFilterArr.some((tf) => tf.value === "AllTenants") && - (excludedTenantsArr.length === 0 || - !excludedTenantsArr.some((et) => et.value === currentTenant)); - - return tenantInFilter || allTenantsTemplate; - }); - - // Combine standards from all applicable templates: - let combinedStandards = {}; - for (const template of applicableTemplates) { - for (const [standardKey, standardValue] of Object.entries(template.standards)) { - combinedStandards[standardKey] = standardValue; - } - } - - // Count each action type: - let remediateCount = 0; - let alertCount = 0; - let reportCount = 0; - - for (const [, standard] of Object.entries(combinedStandards)) { - let actions = standard.action || []; - if (!Array.isArray(actions)) { - actions = [actions]; - } - actions.forEach((actionObj) => { - if (actionObj?.value === "Remediate") { - remediateCount++; - } else if (actionObj?.value === "Alert") { - alertCount++; - } else if (actionObj?.value === "Report") { - reportCount++; - } - }); - } - - const total = Object.keys(combinedStandards).length; - - return { remediateCount, alertCount, reportCount, total }; - } - - const { remediateCount, alertCount, reportCount, total } = getActionCountsForTenant( - standards.data, - currentTenant - ); - - const [PortalMenuItems, setPortalMenuItems] = useState([]); - - useEffect(() => { - if (currentTenantInfo.isSuccess) { - const tenantLookup = currentTenantInfo.data?.find( - (tenant) => tenant.defaultDomainName === currentTenant - ); - const menuItems = Portals.map((portal) => ({ - label: portal.label, - target: "_blank", - link: portal.url.replace(portal.variable, tenantLookup?.[portal.variable]), - icon: portal.icon, - })); - setPortalMenuItems(menuItems); - } - }, [currentTenantInfo.isSuccess, currentTenant]); - - return ( - <> - - Dashboard - - - - - - - - - - - - - - - - - - - - - - - - - - {/* Converted Domain Names to Property List */} - - ({ - label: "", - value: domain.name, - }))} - actionButton={ - organization.data?.verifiedDomains?.length > 3 && ( - - ) - } - /> - - - - ({ - label: partner.TenantInfo?.displayName, - value: partner.TenantInfo?.defaultDomainName, - }))} - /> - - - - - plan.capabilityStatus === "Enabled" && - ["exchange", "AADPremiumService", "WindowsDefenderATP"].includes( - plan.service - ) - ) - .reduce((uniqueServices, curr) => { - const serviceLabel = - curr.service === "exchange" - ? "Exchange" - : curr.service === "AADPremiumService" - ? "AAD Premium" - : curr.service === "Windows Defender" - ? "Windows Defender" - : curr.service; - - if (!uniqueServices.includes(serviceLabel)) { - uniqueServices.push(serviceLabel); - } - return uniqueServices; - }, []) - .join(", "), - }, - ]} - /> - - - - - - ); -}; - -Page.getLayout = (page) => {page}; - -export default Page; +export default DashboardV2; diff --git a/src/pages/license.js b/src/pages/license.js index 442aede25829..e95baaff74b7 100644 --- a/src/pages/license.js +++ b/src/pages/license.js @@ -1,5 +1,5 @@ import { Container } from "@mui/system"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../layouts/index.js"; import { Link } from "@mui/material"; const Page = () => { diff --git a/src/pages/loading.js b/src/pages/loading.js index 930702aadc53..63e65e3c81eb 100644 --- a/src/pages/loading.js +++ b/src/pages/loading.js @@ -51,7 +51,7 @@ const Page = () => { alignItems="center" // Center vertically sx={{ height: "100%" }} // Ensure the container takes full height > - + { const pageTitle = "Log Out"; diff --git a/src/pages/onboardingv2.js b/src/pages/onboardingv2.js index ee7f73445035..59f101d6f8f8 100644 --- a/src/pages/onboardingv2.js +++ b/src/pages/onboardingv2.js @@ -8,6 +8,10 @@ import { CippTenantModeDeploy } from "../components/CippWizard/CippTenantModeDep import { CippBaselinesStep } from "../components/CippWizard/CippBaselinesStep.jsx"; import { CippNotificationsStep } from "../components/CippWizard/CippNotificationsStep.jsx"; import { CippAlertsStep } from "../components/CippWizard/CippAlertsStep.jsx"; +import { CippAddTenantTypeSelection } from "../components/CippWizard/CippAddTenantTypeSelection.jsx"; +import { CippDirectTenantDeploy } from "../components/CippWizard/CippDirectTenantDeploy.jsx"; +import { CippGDAPTenantSetup } from "../components/CippWizard/CippGDAPTenantSetup.jsx"; +import { CippGDAPTenantOnboarding } from "../components/CippWizard/CippGDAPTenantOnboarding.jsx"; import { BuildingOfficeIcon, CloudIcon, CpuChipIcon } from "@heroicons/react/24/outline"; const Page = () => { @@ -67,9 +71,32 @@ const Page = () => { description: "Tenants", component: CippTenantModeDeploy, showStepWhen: (values) => - values?.selectedOption === "CreateApp" || - values?.selectedOption === "FirstSetup" || - values?.selectedOption === "AddTenant", + values?.selectedOption === "CreateApp" || values?.selectedOption === "FirstSetup", + }, + { + description: "Tenant Type", + component: CippAddTenantTypeSelection, + showStepWhen: (values) => values?.selectedOption === "AddTenant", + }, + { + description: "Direct Tenant", + component: CippDirectTenantDeploy, + showStepWhen: (values) => + values?.selectedOption === "AddTenant" && values?.tenantType === "Direct", + }, + { + description: "GDAP Setup", + component: CippGDAPTenantSetup, + showStepWhen: (values) => + values?.selectedOption === "AddTenant" && values?.tenantType === "GDAP", + }, + { + description: "GDAP Onboarding", + component: CippGDAPTenantOnboarding, + showStepWhen: (values) => + values?.selectedOption === "AddTenant" && + values?.tenantType === "GDAP" && + values?.GDAPInviteAccepted === true, }, { description: "Baselines", diff --git a/src/pages/security/defender/deployment/index.js b/src/pages/security/defender/deployment/index.js index 14b6be90c7fd..8835923e022b 100644 --- a/src/pages/security/defender/deployment/index.js +++ b/src/pages/security/defender/deployment/index.js @@ -1,12 +1,12 @@ -import React from "react"; -import { Typography, Divider } from "@mui/material"; +import { Typography, Divider, Card, CardContent, CardHeader } from "@mui/material"; import { Grid } from "@mui/system"; -import { useForm, useWatch } from "react-hook-form"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormTenantSelector } from "/src/components/CippComponents/CippFormTenantSelector"; -import { CippFormCondition } from "/src/components/CippComponents/CippFormCondition"; +import { useForm } from "react-hook-form"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { CippFormTenantSelector } from "../../../../components/CippComponents/CippFormTenantSelector"; +import { CippFormCondition } from "../../../../components/CippComponents/CippFormCondition"; +import { CippFormInputArray } from "../../../../components/CippComponents/CippFormInputArray"; const DeployDefenderForm = () => { const formControl = useForm({ @@ -26,13 +26,14 @@ const DeployDefenderForm = () => { - + @@ -40,7 +41,7 @@ const DeployDefenderForm = () => { {/* Defender Setup Section */} - + { compareType="is" compareValue={true} > - + Defender Setup - Defender and MEM Reporting + Defender and MEM Reporting - + - - - - - - + {/* Left column: General (2), Android (3), macOS (2), EDR (2) = 9 items */} + + {/* General */} + + General} /> + + + + + + + + + {/* Android */} + + Android} /> + + + + + + + + + + + + {/* macOS */} + + macOS} /> + + + + + + + + + + + {/* EDR */} + + EDR Policy} /> + + + + + + + + - - - - - - - + + {/* Right column: iOS/iPadOS (6), Windows (3) = 9 items */} + + {/* iOS */} + + iOS / iPadOS} /> + + + + + + + + + + + + + + + {/* Windows */} + + Windows} /> + + + + + + + + + + @@ -139,7 +318,7 @@ const DeployDefenderForm = () => { {/* Defender Defaults Policy Section */} - + { compareType="is" compareValue={true} > - + Defender Defaults Policy Select Defender policies to deploy - + - + { /> + + + + - + { /> @@ -244,21 +469,21 @@ const DeployDefenderForm = () => { /> - { name="Policy.DisableCatchupQuickScan" formControl={formControl} /> + + + + + - {/* Assign to Group */} - - Assign to Group + + + {/* Threat Remediation Actions Section */} + + + Threat Remediation Actions + + + + + + + + + + + + {/* Assignment Section */} + + + Policy Assignment + + + + + + + + {/* Exclusion Policy Section */} + + + + + + + Exclusion Policy + Configure Defender Exclusions + + + + + + + + + + + + Assign to Group + + {/* ASR Section */} - + { compareType="is" compareValue={true} > - + ASR Rules Set Attack Surface Reduction Rules { /> - + - + { formControl={formControl} /> - + { {/* Assign to Group */} - + Assign to Group { - - {/* Remove the Review and Confirm section as per your request */} ); diff --git a/src/pages/security/defender/list-defender-tvm/index.js b/src/pages/security/defender/list-defender-tvm/index.js index cc0f7a971bb7..0282426b7873 100644 --- a/src/pages/security/defender/list-defender-tvm/index.js +++ b/src/pages/security/defender/list-defender-tvm/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; const Page = () => { const pageTitle = "Software Vulnerabilities Status"; diff --git a/src/pages/security/defender/list-defender/index.js b/src/pages/security/defender/list-defender/index.js index 93834cfd42b2..b2aa76a3fe05 100644 --- a/src/pages/security/defender/list-defender/index.js +++ b/src/pages/security/defender/list-defender/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; const Page = () => { const pageTitle = "Defender Status"; diff --git a/src/pages/security/incidents/list-alerts/index.js b/src/pages/security/incidents/list-alerts/index.js index 9379da71347d..e3c4148a3e0d 100644 --- a/src/pages/security/incidents/list-alerts/index.js +++ b/src/pages/security/incidents/list-alerts/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { Assignment, Done } from "@mui/icons-material"; const Page = () => { diff --git a/src/pages/security/incidents/list-check-alerts/index.js b/src/pages/security/incidents/list-check-alerts/index.js new file mode 100644 index 000000000000..db56faf0454e --- /dev/null +++ b/src/pages/security/incidents/list-check-alerts/index.js @@ -0,0 +1,61 @@ +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Alert, Link } from "@mui/material"; + +const Page = () => { + const pageTitle = "Check Alerts"; + + // Explainer component + const explainer = ( + + This page collects the alerts from Check by Cyberdrain, a browser plugin that blocks AiTM + (Adversary-in-the-Middle) attacks. Check provides real-time protection against phishing and + credential theft attempts. Learn more at{" "} + + docs.check.tech + {" "} + or install the plugin now: + + Microsoft Edge + {" "} + | + + Chrome + + + ); + + const columns = [ + "tenantFilter", + "type", + "url", + "reason", + "score", + "threshold", + "potentialUserName", + "potentialUserDisplayName", + "reportedByIP", + "timestamp", + ]; + + return ( + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/security/incidents/list-incidents/index.js b/src/pages/security/incidents/list-incidents/index.js index 354a86355a8f..f2070f55a915 100644 --- a/src/pages/security/incidents/list-incidents/index.js +++ b/src/pages/security/incidents/list-incidents/index.js @@ -1,9 +1,133 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { useState } from "react"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { PersonAdd, PlayArrow, Assignment, Done } from "@mui/icons-material"; +import { + Button, + Accordion, + AccordionSummary, + AccordionDetails, + Typography, + SvgIcon, + Stack, + Box, +} from "@mui/material"; +import { Grid } from "@mui/system"; +import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; +import { useForm } from "react-hook-form"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { FunnelIcon, XMarkIcon } from "@heroicons/react/24/outline"; +import { useSettings } from "../../../../hooks/use-settings"; + +const defaultStartDate = (() => { + const d = new Date(); + d.setDate(d.getDate() - 30); + d.setHours(0, 0, 0, 0); + return Math.floor(d.getTime() / 1000); +})(); const Page = () => { const pageTitle = "Incidents List"; + const userSettingsDefaults = useSettings(); + + const formControl = useForm({ defaultValues: { startDate: defaultStartDate, endDate: null } }); + const [expanded, setExpanded] = useState(false); + const [filterEnabled, setFilterEnabled] = useState(true); + const [startDate, setStartDate] = useState( + new Date(defaultStartDate * 1000).toISOString().split("T")[0].replace(/-/g, ""), + ); + const [endDate, setEndDate] = useState(null); + + const onSubmit = (data) => { + setStartDate( + data.startDate + ? new Date(data.startDate * 1000).toISOString().split("T")[0].replace(/-/g, "") + : null, + ); + setEndDate( + data.endDate + ? new Date(data.endDate * 1000).toISOString().split("T")[0].replace(/-/g, "") + : null, + ); + setFilterEnabled(data.startDate !== null || data.endDate !== null); + setExpanded(false); + }; + + const clearFilters = () => { + formControl.reset({ startDate: null, endDate: null }); + setFilterEnabled(false); + setStartDate(null); + setEndDate(null); + setExpanded(false); + }; + + const fmt = (yyyymmdd) => + yyyymmdd + ? new Date( + yyyymmdd.replace(/(\d{4})(\d{2})(\d{2})/, "$1-$2-$3") + "T00:00:00", + ).toLocaleDateString() + : null; + + const tableFilter = ( + setExpanded(v)}> + }> + + + + + + {filterEnabled && (startDate || endDate) + ? startDate && endDate + ? `Date Filter: ${fmt(startDate)} โ€” ${fmt(endDate)}` + : startDate + ? `Date Filter: From ${fmt(startDate)}` + : `Date Filter: Up to ${fmt(endDate)}` + : "Date Filter"} + + + + + + + + + + + + + + + + + + + + + ); // Define actions for incidents const actions = [ @@ -95,6 +219,9 @@ const Page = () => { actions={actions} offCanvas={offCanvas} simpleColumns={simpleColumns} + tableFilter={tableFilter} + queryKey={`ExecIncidentsList-${userSettingsDefaults.currentTenant}-${startDate}-${endDate}`} + apiData={{ StartDate: startDate, EndDate: endDate }} /> ); }; diff --git a/src/pages/security/incidents/list-mdo-alerts/index.js b/src/pages/security/incidents/list-mdo-alerts/index.js new file mode 100644 index 000000000000..6ad4151c2ffa --- /dev/null +++ b/src/pages/security/incidents/list-mdo-alerts/index.js @@ -0,0 +1,121 @@ +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { PersonAdd, PlayArrow, Assignment, Done } from "@mui/icons-material"; + +const Page = () => { + const pageTitle = "Email & Collaboration Alerts"; + + // Define actions for incidents + const actions = [ + { + label: "Assign to self", + type: "POST", + icon: , + url: "/api/ExecSetMdoAlert", + data: { + GUID: "id", + }, + confirmText: "Are you sure you want to assign this incident to yourself?", + }, + { + label: "Set status to active", + type: "POST", + icon: , + url: "/api/ExecSetMdoAlert", + data: { + GUID: "id", + Status: "!active", + Assigned: "assignedTo", + }, + confirmText: "Are you sure you want to set the status to active?", + }, + { + label: "Set status to in progress", + type: "POST", + icon: , + url: "/api/ExecSetMdoAlert", + data: { + GUID: "id", + Status: "!inProgress", + Assigned: "assignedTo", + }, + confirmText: "Are you sure you want to set the status to in progress?", + }, + { + label: "Set status to resolved", + type: "POST", + icon: , + url: "/api/ExecSetMdoAlert", + data: { + GUID: "id", + Status: "!resolved", + Assigned: "assignedTo", + }, + confirmText: "Are you sure you want to set the status to resolved?", + }, + ]; + + // Define off-canvas details + const offCanvas = { + extendedInfoFields: [ + "createdDateTime", + "title", + "description", + "category", + "status", + "severity", + "classification", + "determination", + "serviceSource", + "evidence", + "detectionSource", + "tenant", + "providerAlertId", + "incidentId", + "affectedResources", + "involvedUsers", + "mitreTechniques", + "threatDisplayName", + "threatFamilyName", + "actorDisplayName", + "recommendedActions", + "firstActivityDateTime", + "lastActivityDateTime", + "lastUpdateDateTime", + "resolvedDateTime", + "alertWebUrl", + "incidentWebUrl", + ], + actions: actions, + }; + + // Simplified columns for the table + const simpleColumns = [ + "createdDateTime", + "status", + "severity", + "title", + "category", + "classification", + "affectedResources", + "evidence", + "assignedTo", + "incidentWebUrl", + "tenant", + ]; + + return ( + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/security/reports/list-device-compliance/index.js b/src/pages/security/reports/list-device-compliance/index.js index 6c4ab4343db3..27ce02ecbe70 100644 --- a/src/pages/security/reports/list-device-compliance/index.js +++ b/src/pages/security/reports/list-device-compliance/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; const Page = () => { const pageTitle = "Device Compliance"; diff --git a/src/pages/security/safelinks/safelinks-template/add.jsx b/src/pages/security/safelinks/safelinks-template/add.jsx new file mode 100644 index 000000000000..3a427161d451 --- /dev/null +++ b/src/pages/security/safelinks/safelinks-template/add.jsx @@ -0,0 +1,64 @@ +import { useEffect } from "react"; +import { Divider } from "@mui/material"; +import { Grid } from "@mui/system"; +import { useForm, useWatch } from "react-hook-form"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { CippFormTenantSelector } from "../../../../components/CippComponents/CippFormTenantSelector"; + +const DeploySafeLinksPolicyTemplate = () => { + const formControl = useForm({ + mode: "onChange", + defaultValues: { + selectedTenants: [], + TemplateList: [], + }, + }); + + return ( + + + + + + + + option, + url: "/api/ListSafeLinksPolicyTemplates", + }} + placeholder="Select a template" + validators={{ required: "A template must be selected" }} + /> + + + + ); +}; + +DeploySafeLinksPolicyTemplate.getLayout = (page) => {page}; +export default DeploySafeLinksPolicyTemplate; diff --git a/src/pages/security/safelinks/safelinks-template/create.jsx b/src/pages/security/safelinks/safelinks-template/create.jsx new file mode 100644 index 000000000000..4d373aa77995 --- /dev/null +++ b/src/pages/security/safelinks/safelinks-template/create.jsx @@ -0,0 +1,52 @@ +import { Box } from "@mui/material"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { useForm, useWatch } from "react-hook-form"; +import { useSettings } from "../../../../hooks/use-settings"; +import { SafeLinksForm, safeLinksDataUtils } from "../../../../components/CippFormPages/CippSafeLinksPolicyRuleForm"; + +const Page = () => { + const userSettingsDefaults = useSettings(); + + // Main form for policy configuration + const formControl = useForm({ + mode: "onBlur", + defaultValues: { + tenantFilter: userSettingsDefaults.currentTenant, + }, + }); + + // Watch policy name to pass to rule form + const watchPolicyName = useWatch({ control: formControl.control, name: "PolicyName" }); + + // Use the utility to create the data formatter + const customDataFormatter = safeLinksDataUtils.createDataFormatter(formControl, 'createTemplate'); + + return ( + <> + + + + + + + + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; \ No newline at end of file diff --git a/src/pages/security/safelinks/safelinks-template/edit.jsx b/src/pages/security/safelinks/safelinks-template/edit.jsx new file mode 100644 index 000000000000..568b4163e0de --- /dev/null +++ b/src/pages/security/safelinks/safelinks-template/edit.jsx @@ -0,0 +1,76 @@ +import { Box } from "@mui/material"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { useForm, useWatch } from "react-hook-form"; +import { useSettings } from "../../../../hooks/use-settings"; +import { useEffect } from "react"; +import { SafeLinksForm, safeLinksDataUtils } from "../../../../components/CippFormPages/CippSafeLinksPolicyRuleForm"; +import { useRouter } from "next/router"; +import { ApiGetCall } from "../../../../api/ApiCall"; + +const Page = () => { + const router = useRouter(); + const { ID } = router.query; + const userSettingsDefaults = useSettings(); + + // Main form for policy configuration + const formControl = useForm({ + mode: "onBlur", + defaultValues: { + tenantFilter: userSettingsDefaults.currentTenant, + }, + }); + + // Watch policy name to pass to rule form + const watchPolicyName = useWatch({ control: formControl.control, name: "PolicyName" }); + + // Get existing template data + const templateData = ApiGetCall({ + url: `/api/ListSafeLinksPolicyTemplateDetails?ID=${ID}`, + queryKey: `SafeLinksTemplate-${ID}`, + enabled: !!ID, + }); + + // Populate forms with existing data when available + useEffect(() => { + if (templateData.isSuccess && templateData.data?.Results) { + const template = templateData.data.Results; + + // Use utility to populate form + safeLinksDataUtils.populateFormData(formControl, template, userSettingsDefaults, 'template'); + } + }, [templateData.isSuccess, templateData.data, ID, formControl, userSettingsDefaults]); + + // Use the utility to create the data formatter + const customDataFormatter = safeLinksDataUtils.createDataFormatter(formControl, 'template', { ID }); + + return ( + <> + + + + + + + + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; \ No newline at end of file diff --git a/src/pages/security/safelinks/safelinks-template/index.jsx b/src/pages/security/safelinks/safelinks-template/index.jsx new file mode 100644 index 000000000000..6fa5924ef055 --- /dev/null +++ b/src/pages/security/safelinks/safelinks-template/index.jsx @@ -0,0 +1,121 @@ +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { TrashIcon } from "@heroicons/react/24/outline"; +import { Button } from "@mui/material"; +import { RocketLaunch, GitHub, Edit, Add } from "@mui/icons-material"; +import Link from "next/link"; +import { ApiGetCall } from "../../../../api/ApiCall"; + +const Page = () => { + const pageTitle = "Safe Links Policy Templates"; + + // Check if GitHub integration is enabled + const integrations = ApiGetCall({ + url: "/api/ListExtensionsConfig", + queryKey: "Integrations", + refetchOnMount: false, + refetchOnReconnect: false, + }); + + const actions = [ + { + label: "Edit Template", + link: "/security/safelinks/safelinks-template/edit?ID=[GUID]", + icon: , + color: "success", + target: "_self", + }, + { + label: "Save to GitHub", + type: "POST", + url: "/api/ExecCommunityRepo", + icon: , + data: { + Action: "UploadTemplate", + GUID: "GUID", + }, + fields: [ + { + label: "Repository", + name: "FullName", + type: "select", + api: { + url: "/api/ListCommunityRepos", + data: { + WriteAccess: true, + }, + queryKey: "CommunityRepos-Write", + dataKey: "Results", + valueField: "FullName", + labelField: "FullName", + }, + multiple: false, + creatable: false, + required: true, + validators: { + required: { value: true, message: "This field is required" }, + }, + }, + { + label: "Commit Message", + placeholder: "Enter a commit message for adding this file to GitHub", + name: "Message", + type: "textField", + multiline: true, + required: true, + rows: 4, + }, + ], + confirmText: "Are you sure you want to save this template to the selected repository?", + condition: () => integrations.isSuccess && integrations?.data?.GitHub?.Enabled, + }, + { + label: "Delete Template", + type: "POST", + url: "/api/RemoveSafeLinksPolicyTemplate", + data: { ID: "GUID" }, + confirmText: "Do you want to delete the template?", + icon: , + color: "danger", + }, + ]; + + const offCanvas = { + extendedInfoFields: ["TemplateName", "TemplateDescription", "GUID"], + actions: actions, + }; + + const simpleColumns = ["TemplateName", "TemplateDescription", "GUID"]; + + return ( + + + + + } + /> + ); +}; + +Page.getLayout = (page) => {page}; +export default Page; \ No newline at end of file diff --git a/src/pages/security/safelinks/safelinks/add.jsx b/src/pages/security/safelinks/safelinks/add.jsx new file mode 100644 index 000000000000..ebce15a03ece --- /dev/null +++ b/src/pages/security/safelinks/safelinks/add.jsx @@ -0,0 +1,52 @@ +import { Box } from "@mui/material"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { useForm, useWatch } from "react-hook-form"; +import { useSettings } from "../../../../hooks/use-settings"; +import { SafeLinksForm, safeLinksDataUtils } from "../../../../components/CippFormPages/CippSafeLinksPolicyRuleForm"; + +const Page = () => { + const userSettingsDefaults = useSettings(); + + // Main form for policy configuration + const formControl = useForm({ + mode: "onBlur", + defaultValues: { + tenantFilter: userSettingsDefaults.currentTenant, + }, + }); + + // Watch policy name to pass to rule form + const watchPolicyName = useWatch({ control: formControl.control, name: "PolicyName" }); + + // Use the utility to create the data formatter + const customDataFormatter = safeLinksDataUtils.createDataFormatter(formControl, 'add'); + + return ( + <> + + + + + + + + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; \ No newline at end of file diff --git a/src/pages/security/safelinks/safelinks/edit.jsx b/src/pages/security/safelinks/safelinks/edit.jsx new file mode 100644 index 000000000000..c49846119edb --- /dev/null +++ b/src/pages/security/safelinks/safelinks/edit.jsx @@ -0,0 +1,88 @@ +import { Box } from "@mui/material"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { useForm, useWatch } from "react-hook-form"; +import { useSettings } from "../../../../hooks/use-settings"; +import { useEffect } from "react"; +import { SafeLinksForm, safeLinksDataUtils } from "../../../../components/CippFormPages/CippSafeLinksPolicyRuleForm"; +import { useRouter } from "next/router"; +import { ApiGetCall } from "../../../../api/ApiCall"; + +const Page = () => { + const router = useRouter(); + const { PolicyName, RuleName } = router.query; + const userSettingsDefaults = useSettings(); + + // Main form for policy configuration + const formControl = useForm({ + mode: "onBlur", + defaultValues: { + tenantFilter: userSettingsDefaults.currentTenant, + PolicyName: PolicyName, + }, + }); + + // Watch policy name for rule synchronization + const watchPolicyName = useWatch({ control: formControl.control, name: "PolicyName" }); + + // Get existing policy and rule data + const policyData = ApiGetCall({ + url: `/api/ListSafeLinksPolicyDetails?PolicyName=${PolicyName}&RuleName=${RuleName}&tenantFilter=${userSettingsDefaults.currentTenant}`, + queryKey: `SafeLinksPolicy-${PolicyName}`, + enabled: !!PolicyName, + }); + + // Populate forms with existing data when available + useEffect(() => { + if (policyData.isSuccess && policyData.data?.Results) { + const results = policyData.data.Results; + const policy = results.Policy || {}; + const rule = results.Rule || {}; + + // Combine policy and rule data + const combinedData = { + ...policy, + ...rule, + RuleName: rule.RuleName || RuleName, + SafeLinksPolicy: policy.PolicyName || PolicyName, + State: rule.State, + }; + + // Use utility to populate form + safeLinksDataUtils.populateFormData(formControl, combinedData, userSettingsDefaults, 'edit'); + } + }, [policyData.isSuccess, policyData.data, PolicyName, RuleName, formControl, userSettingsDefaults]); + + // Use the utility to create the data formatter + const customDataFormatter = safeLinksDataUtils.createDataFormatter(formControl, 'edit'); + + return ( + <> + + + + + + + + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; \ No newline at end of file diff --git a/src/pages/security/safelinks/safelinks/index.jsx b/src/pages/security/safelinks/safelinks/index.jsx new file mode 100644 index 000000000000..02ccc9f872ea --- /dev/null +++ b/src/pages/security/safelinks/safelinks/index.jsx @@ -0,0 +1,169 @@ +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Block, Check, LowPriority, Edit, DeleteForever, Policy, Book } from "@mui/icons-material"; +import { Button } from "@mui/material"; +import Link from "next/link"; + +const Page = () => { + const pageTitle = "Safe Links Policies"; + const apiUrl = "/api/ListSafeLinksPolicy"; + + const filterList = [ + { + filterName: "Enabled Rules", + value: [{ id: "State", value: "Enabled" }], + type: "column", + }, + { + filterName: "Disabled Rules", + value: [{ id: "State", value: "Disabled" }], + type: "column", + } + ]; + + const actions = [ + { + label: "Edit Safe Links Policy", + link: "/security/safelinks/safelinks/edit?PolicyName=[PolicyName]&RuleName=[RuleName]&tenantFilter=[tenantFilter]", + icon: , + color: "success", + target: "_self", + condition: (row) => !row.IsBuiltInProtection && !row.PolicyName.startsWith("Standard Preset Security Policy") && !row.PolicyName.startsWith("Strict Preset Security Policy") && row.PolicyName !== "Built-In Protection Policy", + }, + { + label: "Enable Rule", + type: "POST", + icon: , + url: "/api/EditSafeLinksPolicy", + data: { + PolicyName: "PolicyName", + Name: "PolicyName", + Enabled: true + }, + confirmText: "Are you sure you want to enable this rule?", + color: "info", + condition: (row) => row.State === "Disabled" && !row.IsBuiltInProtection && !row.PolicyName.startsWith("Standard Preset Security Policy") && !row.PolicyName.startsWith("Strict Preset Security Policy")&& row.PolicyName !== "Built-In Protection Policy", + }, + { + label: "Disable Rule", + type: "POST", + icon: , + url: "/api/EditSafeLinksPolicy", + data: { + PolicyName: "PolicyName", + Name: "PolicyName", + Enabled: false + }, + confirmText: "Are you sure you want to disable this rule?", + color: "info", + condition: (row) => row.State === "Enabled" && !row.IsBuiltInProtection && !row.PolicyName.startsWith("Standard Preset Security Policy") && !row.PolicyName.startsWith("Strict Preset Security Policy")&& row.PolicyName !== "Built-In Protection Policy", + }, + { + label: "Set Priority", + type: "POST", + icon: , + url: "/api/EditSafeLinksPolicy", + condition: (row) => !row.IsBuiltInProtection && !row.PolicyName.startsWith("Standard Preset Security Policy") && !row.PolicyName.startsWith("Strict Preset Security Policy")&& row.PolicyName !== "Built-In Protection Policy", + data: { + PolicyName: "PolicyName", + Name: "PolicyName" + }, + confirmText: "What would you like to set the priority to?", + color: "info", + hideBulk: true, + fields: [ + { + type: "number", + name: "Priority", + label: "Priority", + placeholder: "Enter a number", + validators: { + required: "Priority is required", + min: { + value: 0, + message: "Priority must be at least 0 and no more than -1 of the lowest priority", + }, + }, + }, + ], + }, + { + label: "Create template based on policy", + type: "POST", + url: "/api/AddSafeLinksPolicyTemplate", + postEntireRow: true, + confirmText: "Are you sure you want to create a template based on this policy?", + icon: , + hideBulk: true, + condition: (row) => !row.IsBuiltInProtection && !row.PolicyName.startsWith("Standard Preset Security Policy") && !row.PolicyName.startsWith("Strict Preset Security Policy")&& row.PolicyName !== "Built-In Protection Policy", + }, + { + label: "Delete Rule", + type: "GET", + icon: , + url: "/api/ExecDeleteSafeLinksPolicy", + data: { + RuleName: "RuleName", + PolicyName: "PolicyName", + }, + confirmText: "Are you sure you want to delete this policy and rule?", + color: "danger", + condition: (row) => !row.IsBuiltInProtection && !row.PolicyName.startsWith("Standard Preset Security Policy") && !row.PolicyName.startsWith("Strict Preset Security Policy")&& row.PolicyName !== "Built-In Protection Policy", + } + ]; + + // Define columns for the table + const simpleColumns = [ + "PolicyName", + "ConfigurationStatus", + "IsValid", + "State", + "Priority", + "Description", + "RecipientDomainIs", + "SentTo", + "SentToMemberOf", + "ExceptIfSentTo", + "ExceptIfSentToMemberOf", + "ExceptIfRecipientDomainIs", + "DoNotRewriteUrls", + "EnableSafeLinksForEmail", + "EnableSafeLinksForTeams", + "EnableSafeLinksForOffice", + "TrackClicks", + "ScanUrls", + "EnableForInternalSenders", + "DeliverMessageAfterScan", + "AllowClickThrough", + "DisableUrlRewrite", + "EnableOrganizationBranding", + "WhenCreated", + "WhenChanged", + ]; + + const offCanvas = { + extendedInfoFields: ["RuleName", "ConfigurationStatus", "IsValid", "PolicyName", "State", "WhenCreated", "WhenChanged"], + actions: actions, + }; + + return ( + + + + } + /> + ); +}; + +Page.getLayout = (page) => {page}; +export default Page; \ No newline at end of file diff --git a/src/pages/teams-share/onedrive/index.js b/src/pages/teams-share/onedrive/index.js index 9ec970fbda1e..8d279cffaf73 100644 --- a/src/pages/teams-share/onedrive/index.js +++ b/src/pages/teams-share/onedrive/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; +import { CippTablePage } from "../../../components/CippComponents/CippTablePage.jsx"; import { PersonAdd, PersonRemove } from "@mui/icons-material"; const Page = () => { diff --git a/src/pages/teams-share/sharepoint/add-site.js b/src/pages/teams-share/sharepoint/add-site.js index 23b7e08c64ef..b6d2650d890b 100644 --- a/src/pages/teams-share/sharepoint/add-site.js +++ b/src/pages/teams-share/sharepoint/add-site.js @@ -1,10 +1,10 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; import "@mui/material"; import { Grid } from "@mui/system"; import { useForm } from "react-hook-form"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import { useSettings } from "/src/hooks/use-settings"; +import CippFormComponent from "../../../components/CippComponents/CippFormComponent"; +import CippFormPage from "../../../components/CippFormPages/CippFormPage"; +import { useSettings } from "../../../hooks/use-settings"; const AddSiteForm = () => { const userSettingsDefaults = useSettings(); @@ -23,10 +23,10 @@ const AddSiteForm = () => { backButtonTitle="Back to Sites" > - + - + { required /> - + { }} /> - + { }} /> - + { const tenantFilter = useSettings().currentTenant; const fields = [ - "SiteName", + "siteName", "siteDescription", "siteOwner", - "TemplateName", + "templateName", "siteDesign", "sensitivityLabel", ]; diff --git a/src/pages/teams-share/sharepoint/index.js b/src/pages/teams-share/sharepoint/index.js index 38baf8abb4c2..21cefc406ca4 100644 --- a/src/pages/teams-share/sharepoint/index.js +++ b/src/pages/teams-share/sharepoint/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; +import { CippTablePage } from "../../../components/CippComponents/CippTablePage.jsx"; import { Button } from "@mui/material"; import { Add, @@ -8,11 +8,15 @@ import { PersonRemove, AdminPanelSettings, NoAccounts, + Delete, } from "@mui/icons-material"; import Link from "next/link"; +import { CippDataTable } from "../../../components/CippTable/CippDataTable"; +import { useSettings } from "../../../hooks/use-settings"; const Page = () => { const pageTitle = "SharePoint Sites"; + const tenantFilter = useSettings().currentTenant; const actions = [ { @@ -173,11 +177,39 @@ const Page = () => { ], multiPost: false, }, + { + label: "Delete Site", + type: "POST", + icon: , + url: "/api/DeleteSharepointSite", + data: { + SiteId: "siteId", + }, + confirmText: "Are you sure you want to delete this SharePoint site? This action cannot be undone.", + color: "error", + multiPost: false, + }, ]; const offCanvas = { extendedInfoFields: ["displayName", "description", "webUrl"], actions: actions, + children: (row) => ( + + ), + size: "lg", // Make the offcanvas extra large }; return ( diff --git a/src/pages/teams-share/teams/business-voice/index.js b/src/pages/teams-share/teams/business-voice/index.js index 6cef4fd00045..a3aa56764153 100644 --- a/src/pages/teams-share/teams/business-voice/index.js +++ b/src/pages/teams-share/teams/business-voice/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { PersonAdd, PersonRemove, LocationOn } from "@mui/icons-material"; const Page = () => { diff --git a/src/pages/teams-share/teams/list-team/add.jsx b/src/pages/teams-share/teams/list-team/add.jsx index 28a92cc6df65..fe625e628eea 100644 --- a/src/pages/teams-share/teams/list-team/add.jsx +++ b/src/pages/teams-share/teams/list-team/add.jsx @@ -2,10 +2,10 @@ import React from "react"; import { Divider } from "@mui/material"; import { Grid } from "@mui/system"; import { useForm } from "react-hook-form"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormUserSelector } from "/src/components/CippComponents/CippFormUserSelector"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { CippFormUserSelector } from "../../../../components/CippComponents/CippFormUserSelector"; import { useSettings } from "../../../../hooks/use-settings"; const TeamsAddTeamForm = () => { @@ -42,7 +42,7 @@ const TeamsAddTeamForm = () => { > {/* Display Name */} - + { {/* Description */} - + { - + { {/* Visibility */} - + { const actions = [ { label: "Edit Group", - link: "/identity/administration/groups/edit?groupId=[id]", + link: "/identity/administration/groups/edit?groupId=[id]&groupType=Microsoft 365", multiPost: false, color: "warning", icon: , diff --git a/src/pages/teams-share/teams/teams-activity/index.js b/src/pages/teams-share/teams/teams-activity/index.js index c2e8acb22944..2f2797a57cbb 100644 --- a/src/pages/teams-share/teams/teams-activity/index.js +++ b/src/pages/teams-share/teams/teams-activity/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; const Page = () => { const pageTitle = "Teams Activity List"; diff --git a/src/pages/tenant/administration/add-subscription/index.jsx b/src/pages/tenant/administration/add-subscription/index.jsx index e46a5a2fb5ac..457f350b3d3b 100644 --- a/src/pages/tenant/administration/add-subscription/index.jsx +++ b/src/pages/tenant/administration/add-subscription/index.jsx @@ -1,12 +1,10 @@ -import React from "react"; -import { Box, Typography } from "@mui/material"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Box } from "@mui/material"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; import { useForm, useWatch } from "react-hook-form"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { useSettings } from "/src/hooks/use-settings"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { useSettings } from "../../../../hooks/use-settings"; import { Grid, darken, lighten, styled } from "@mui/system"; -import { CippPropertyList } from "/src/components/CippComponents/CippPropertyList"; import { CippPropertyListCard } from "../../../../components/CippCards/CippPropertyListCard"; import { getCippFormatting } from "../../../../utils/get-cipp-formatting"; import { getCippTranslation } from "../../../../utils/get-cipp-translation"; diff --git a/src/pages/tenant/administration/alert-configuration/alert.jsx b/src/pages/tenant/administration/alert-configuration/alert.jsx index 87a4c662c54d..577134d1fcc6 100644 --- a/src/pages/tenant/administration/alert-configuration/alert.jsx +++ b/src/pages/tenant/administration/alert-configuration/alert.jsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from "react"; +import { useState, useEffect, useRef } from "react"; import { Box, Button, @@ -18,18 +18,20 @@ import { Grid } from "@mui/system"; import { ArrowLeftIcon } from "@mui/x-date-pickers"; import { useRouter } from "next/router"; import { useForm, useFormState, useWatch } from "react-hook-form"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormTenantSelector } from "/src/components/CippComponents/CippFormTenantSelector"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { CippFormTenantSelector } from "../../../../components/CippComponents/CippFormTenantSelector"; import CippButtonCard from "../../../../components/CippCards/CippButtonCard"; -import alertList from "/src/data/alerts.json"; -import auditLogTemplates from "/src/data/AuditLogTemplates"; -import auditLogSchema from "/src/data/AuditLogSchema.json"; -import DeleteIcon from "@mui/icons-material/Delete"; // Icon for removing added inputs -import { Layout as DashboardLayout } from "/src/layouts/index.js"; // Dashboard layout +import alertList from "../../../../data/alerts.json"; +import auditLogTemplates from "../../../../data/AuditLogTemplates"; +import auditLogSchema from "../../../../data/AuditLogSchema.json"; +import { Save, Delete } from "@mui/icons-material"; + +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; // Dashboard layout import { CippApiResults } from "../../../../components/CippComponents/CippApiResults"; import { ApiGetCall, ApiPostCall } from "../../../../api/ApiCall"; import { PlusIcon } from "@heroicons/react/24/outline"; import { CippFormCondition } from "../../../../components/CippComponents/CippFormCondition"; +import { CippHead } from "../../../../components/CippComponents/CippHead"; const AlertWizard = () => { const apiRequest = ApiPostCall({ @@ -54,6 +56,8 @@ const AlertWizard = () => { { value: "4h", label: "Every 4 hours" }, { value: "1d", label: "Every 1 day" }, { value: "7d", label: "Every 7 days" }, + { value: "14d", label: "Every 14 days" }, + { value: "21d", label: "Every 21 days" }, { value: "30d", label: "Every 30 days" }, { value: "365d", label: "Every 365 days" }, ]); @@ -78,100 +82,274 @@ const AlertWizard = () => { { value: "Audit.Exchange", label: "Exchange" }, ]; + // Existing alert load effect moved below state declarations for guard usage + + const [alertType, setAlertType] = useState("none"); + // Track condition row indices; start empty to avoid off-by-one when loading presets + const [addedEvent, setAddedEvent] = useState([]); + const [isLoadingPreset, setIsLoadingPreset] = useState(false); // Guard against clearing during preset load + const [isLoadingExistingAlert, setIsLoadingExistingAlert] = useState(false); // Guard during existing alert load + const [hasLoadedExistingAlert, setHasLoadedExistingAlert] = useState(false); // Prevent double-load + const prevOperatorValuesRef = useRef([]); // Track previous operator values + const originalMembershipInputsRef = useRef({}); // Preserve original in/notIn arrays for rehydration + + const formControl = useForm({ mode: "onChange" }); + const selectedPreset = useWatch({ control: formControl.control, name: "preset" }); // Watch the preset + const commandValue = useWatch({ control: formControl.control, name: "command" }); + const logbookWatcher = useWatch({ control: formControl.control, name: "logbook" }); + const propertyWatcher = useWatch({ control: formControl.control, name: "conditions" }); + + // Clear input value only on actual operator transitions, skip while preset loading + useEffect(() => { + if (!propertyWatcher || isLoadingPreset || isLoadingExistingAlert) return; + propertyWatcher.forEach((condition, index) => { + const currentOp = condition?.Operator?.value?.toLowerCase(); + if (!currentOp) return; + const prevOp = prevOperatorValuesRef.current[index]; + if (currentOp !== prevOp) { + const isInOrNotIn = currentOp === "in" || currentOp === "notin"; + const isStringProperty = condition?.Property?.value === "String"; + if (isInOrNotIn) { + formControl.setValue(`conditions.${index}.Input`, [], { shouldValidate: false }); + } else { + if (isStringProperty) { + formControl.setValue( + `conditions.${index}.Input`, + { value: "" }, + { shouldValidate: false }, + ); + } else { + formControl.setValue(`conditions.${index}.Input`, "", { shouldValidate: false }); + } + } + prevOperatorValuesRef.current[index] = currentOp; + } + }); + }, [propertyWatcher, isLoadingPreset, isLoadingExistingAlert]); + // Load existing alert (edit mode) with guarded batching similar to preset loading useEffect(() => { - if (existingAlert.isSuccess && editAlert) { - const alert = existingAlert?.data?.find((alert) => alert.RowKey === router.query.id); + if (existingAlert.isSuccess && editAlert && !hasLoadedExistingAlert) { + const alert = existingAlert?.data?.find((a) => a.RowKey === router.query.id); + if (!alert) return; + setHasLoadedExistingAlert(true); // Mark as loaded to prevent re-execution + // Scripted alert path (no conditions operator clearing needed) if (alert?.LogType === "Scripted") { setAlertType("script"); - - //console.log(alert); - - // Create formatted excluded tenants array if it exists const excludedTenantsFormatted = Array.isArray(alert.excludedTenants) ? alert.excludedTenants.map((tenant) => ({ value: tenant, label: tenant })) : []; - - // Format the command object const usedCommand = alertList?.find( - (cmd) => cmd.name === alert.RawAlert.Command.replace("Get-CIPPAlert", "") + (cmd) => cmd.name === alert.RawAlert.Command.replace("Get-CIPPAlert", ""), ); - - // Format recurrence option const recurrenceOption = recurrenceOptions?.find( - (opt) => opt.value === alert.RawAlert.Recurrence + (opt) => opt.value === alert.RawAlert.Recurrence, ); - - // Format post execution values const postExecutionValue = postExecutionOptions.filter((opt) => - alert.RawAlert.PostExecution.split(",").includes(opt.value) + alert.RawAlert.PostExecution.split(",").includes(opt.value), ); - - // Create the reset object with all the form values - const resetObject = { - tenantFilter: { + let tenantFilterForForm; + if (alert.RawAlert.TenantGroup) { + try { + const tenantGroupObject = JSON.parse(alert.RawAlert.TenantGroup); + tenantFilterForForm = { + value: tenantGroupObject.value, + label: tenantGroupObject.label, + type: "Group", + addedFields: tenantGroupObject, + }; + } catch (error) { + console.error("Error parsing tenant group:", error); + tenantFilterForForm = { + value: alert.RawAlert.Tenant, + label: alert.RawAlert.Tenant, + type: "Tenant", + }; + } + } else { + tenantFilterForForm = { value: alert.RawAlert.Tenant, label: alert.RawAlert.Tenant, - }, + type: "Tenant", + }; + } + let startDateTimeForForm = null; + if (alert.RawAlert.DesiredStartTime && alert.RawAlert.DesiredStartTime !== "0") { + const desiredStartEpoch = parseInt(alert.RawAlert.DesiredStartTime); + startDateTimeForForm = desiredStartEpoch; + } + const resetObject = { + tenantFilter: tenantFilterForForm, excludedTenants: excludedTenantsFormatted, command: { value: usedCommand, label: usedCommand.label }, recurrence: recurrenceOption, postExecution: postExecutionValue, + startDateTime: startDateTimeForForm, + AlertComment: alert.RawAlert.AlertComment || "", }; - - // Parse Parameters field if it exists and is a string if (usedCommand?.requiresInput && alert.RawAlert.Parameters) { try { - // Check if Parameters is a string that needs parsing const params = typeof alert.RawAlert.Parameters === "string" ? JSON.parse(alert.RawAlert.Parameters) : alert.RawAlert.Parameters; - - // Set the input value if it exists if (params.InputValue) { - resetObject[usedCommand.inputName] = params.InputValue; + if (usedCommand.multipleInput) { + // Load multiple input values from InputValue object + usedCommand.inputs.forEach((input) => { + if (params.InputValue[input.inputName] !== undefined) { + resetObject[input.inputName] = params.InputValue[input.inputName]; + } + }); + } else { + // Backward compatibility: single input value + resetObject[usedCommand.inputName] = params.InputValue; + } } } catch (error) { console.error("Error parsing parameters:", error); } } - - // Reset the form with all values at once formControl.reset(resetObject, { keepDirty: false }); } + // Audit alert path if (alert?.PartitionKey === "Webhookv2") { setAlertType("audit"); + setIsLoadingExistingAlert(true); const foundLogbook = logbookOptions?.find( - (logbook) => logbook.value === alert.RawAlert.type - ); - //make sure that for every condition, we spawn the field using setAddedEvent - setAddedEvent( - alert.RawAlert.Conditions.map((_, index) => ({ - id: index, - })) + (logbook) => logbook.value === alert.RawAlert.type, ); - - formControl.reset({ + const rawConditions = alert.RawAlert.Conditions || []; + const formattedConditions = rawConditions.map((cond) => { + const opVal = cond?.Operator?.value || ""; + const lower = opVal.toLowerCase(); + const mappedOp = lower === "notin" ? "notIn" : lower; // keep UI canonical value + const normalizedOperator = { ...cond.Operator, value: mappedOp }; + const isString = cond?.Property?.value === "String"; + const isList = cond?.Property?.value?.startsWith("List:"); + const isInSet = mappedOp === "in" || mappedOp === "notIn"; + let Input; + // For in/notIn operators, always treat Input as array regardless of Property type + if (isInSet) { + Input = Array.isArray(cond.Input) ? cond.Input : []; + // Normalize items to {value, label} consistently and store original + Input = Input.map((item) => { + if (typeof item === "string") return { value: item, label: item }; + if (item && typeof item === "object") { + return { + value: item.value ?? item.label ?? "", + label: item.label ?? item.value ?? "", + }; + } + return { value: "", label: "" }; + }); + } else if (isString) { + Input = { value: cond.Input?.value ?? "" }; + } else { + Input = cond.Input ?? (isList ? [] : ""); + } + return { Property: cond.Property, Operator: normalizedOperator, Input }; + }); + const resetData = { RowKey: router.query.clone ? undefined : router.query.id ? router.query.id : undefined, tenantFilter: alert.RawAlert.Tenants, - excludedTenants: alert.excludedTenants, + excludedTenants: alert.excludedTenants?.filter((t) => t !== null) || [], Actions: alert.RawAlert.Actions, - conditions: alert.RawAlert.Conditions, logbook: foundLogbook, - }); + AlertComment: alert.RawAlert.AlertComment || "", + conditions: [], // Include empty array to register field structure + }; + // Reset first without spawning rows to avoid rendering empty operator fields + formControl.reset(resetData); + // Set conditions in timeout to ensure proper registration after reset + setTimeout(() => { + // Seed previous operator values BEFORE setting conditions to prevent clearing + prevOperatorValuesRef.current = formattedConditions.map((c) => + (c.Operator?.value || "").toLowerCase(), + ); + + // Process each condition with proper normalization + const processedConditions = formattedConditions.map((cond, idx) => { + let finalInput = cond.Input; + const isList = cond.Property?.value?.startsWith("List:"); + const operatorVal = cond.Operator?.value; + const isMembership = operatorVal === "in" || operatorVal === "notIn"; + + // Normalize based on operator and property type + if (Array.isArray(finalInput)) { + finalInput = finalInput.map((item) => + typeof item === "string" ? { label: item, value: item } : item, + ); + // Further ensure label/value presence and rebuild from schema if possible + const schemaOptions = auditLogSchema[cond.Property?.value] || []; + finalInput = finalInput.map((item) => { + const match = schemaOptions.find((opt) => opt.value === item.value); + return { + value: item.value, + label: item.label || match?.label || item.value, + }; + }); + originalMembershipInputsRef.current[idx] = finalInput; + } else if (isList && !isMembership) { + // Single selection list value + if (typeof finalInput === "string") { + finalInput = { label: finalInput, value: finalInput }; + } else if ( + finalInput && + typeof finalInput === "object" && + !finalInput.label && + finalInput.value + ) { + finalInput = { label: finalInput.value, value: finalInput.value }; + } + } + + return { + Property: cond.Property, + Operator: cond.Operator, + Input: finalInput, + }; + }); + + // Set the entire conditions array at once with processed values + formControl.setValue("conditions", processedConditions, { + shouldValidate: false, + shouldDirty: true, + shouldTouch: false, + }); + + // Try setting individual paths as backup + processedConditions.forEach((cond, idx) => { + formControl.setValue(`conditions.${idx}`, cond, { shouldValidate: false }); + }); + + // Spawn condition rows only after conditions exist to ensure autocomplete visibility + setAddedEvent(processedConditions.map((_, i) => ({ id: i }))); + formControl.trigger(); + // Defer another snapshot to catch any async UI transformations + setTimeout(() => { + const deferredSnapshot = formControl.getValues("conditions") || []; + // Rehydrate membership arrays if they were nulled out by Autocomplete uncontrolled clears + deferredSnapshot.forEach((cond, idx) => { + const op = cond?.Operator?.value; + if ( + (op === "in" || op === "notIn") && + (cond.Input === null || cond.Input === undefined) + ) { + const original = originalMembershipInputsRef.current[idx]; + if (original && Array.isArray(original) && original.length > 0) { + formControl.setValue(`conditions.${idx}.Input`, original, { + shouldValidate: false, + }); + } + } + }); + }, 150); + setIsLoadingExistingAlert(false); + }, 100); } } }, [existingAlert.isSuccess, router, editAlert]); - const [alertType, setAlertType] = useState("none"); - const [addedEvent, setAddedEvent] = useState([{ id: 1 }]); // Track added inputs - - const formControl = useForm({ mode: "onChange" }); - const selectedPreset = useWatch({ control: formControl.control, name: "preset" }); // Watch the preset - const commandValue = useWatch({ control: formControl.control, name: "command" }); - const logbookWatcher = useWatch({ control: formControl.control, name: "logbook" }); - const propertyWatcher = useWatch({ control: formControl.control, name: "conditions" }); - useEffect(() => { formControl.reset(); }, [alertType]); @@ -184,53 +362,71 @@ const AlertWizard = () => { })); const recommendedOption = updatedRecurrenceOptions?.find( - (opt) => opt.value === commandValue.value.recommendedRunInterval + (opt) => opt.value === commandValue.value.recommendedRunInterval, ); if (recommendedOption) { recommendedOption.label += " (Recommended)"; } setRecurrenceOptions(updatedRecurrenceOptions); - formControl.setValue("recurrence", recommendedOption); + + // Only set the recommended recurrence if we're NOT editing an existing alert + if (!editAlert) { + formControl.setValue("recurrence", recommendedOption); + } } - }, [commandValue]); + }, [commandValue, editAlert]); useEffect(() => { - // Logic to handle template-based form updates when a preset is selected - if (selectedPreset) { - const selectedTemplate = auditLogTemplates?.find( - (template) => template.value === selectedPreset.value - ); - - if (selectedTemplate) { - // Ensure the conditions array exists and update it - const conditions = selectedTemplate.template.conditions || []; - - conditions.forEach((condition, index) => { - // Ensure form structure is in place for 0th condition - formControl.setValue(`conditions.${index}.Property`, condition.Property || ""); - formControl.setValue(`conditions.${index}.Operator`, condition.Operator || ""); - //if Condition.Property.value is "String" then set the input value, otherwise - formControl.setValue( - condition.Property.value === "String" - ? `conditions.${index}.Input.value` - : `conditions.${index}.Input`, - condition.Property.value === "String" ? condition.Input.value : condition.Input - ); - }); - - // Set the logbook or other fields based on the template - if (selectedTemplate.template.logbook) { - formControl.setValue("logbook", selectedTemplate.template.logbook); - } - // Ensure the addedEvent array reflects the correct number of conditions - setAddedEvent( - conditions.map((_, index) => ({ - id: index, - })) - ); + if (!selectedPreset) return; + setIsLoadingPreset(true); + const selectedTemplate = auditLogTemplates?.find( + (template) => template.value === selectedPreset.value, + ); + if (!selectedTemplate) { + setIsLoadingPreset(false); + return; + } + const rawConditions = selectedTemplate.template.conditions || []; + const formattedConditions = rawConditions.map((condition) => { + const opVal = condition.Operator?.value || ""; + const lower = opVal.toLowerCase(); + const mappedOp = lower === "notin" ? "notIn" : lower; // keep UI canonical value for notIn + const normalizedOp = { ...condition.Operator, value: mappedOp }; + const isString = condition.Property?.value === "String"; + const isList = condition.Property?.value?.startsWith("List:"); + const isInSet = mappedOp === "in" || mappedOp === "notIn"; + let Input; + if (isString) { + Input = { value: condition.Input?.value ?? "" }; + } else if (isList && isInSet) { + Input = Array.isArray(condition.Input) ? condition.Input : []; + } else { + Input = condition.Input ?? (isList ? [] : ""); } + return { Property: condition.Property, Operator: normalizedOp, Input }; + }); + formControl.setValue("conditions", formattedConditions); + if (selectedTemplate.template.logbook) { + formControl.setValue("logbook", selectedTemplate.template.logbook); } + setAddedEvent(formattedConditions.map((_, i) => ({ id: i }))); + prevOperatorValuesRef.current = formattedConditions.map((c) => + (c.Operator?.value || "").toLowerCase(), + ); + // Ensure React Hook Form registers nested fields before releasing the guard + setTimeout(() => { + formattedConditions.forEach((cond, idx) => { + if (cond.Property?.value === "String") { + formControl.setValue(`conditions.${idx}.Input.value`, cond.Input?.value ?? "", { + shouldValidate: false, + }); + } else { + formControl.setValue(`conditions.${idx}.Input`, cond.Input, { shouldValidate: false }); + } + }); + setIsLoadingPreset(false); + }, 75); }, [selectedPreset]); const getAuditLogSchema = (logbook) => { @@ -244,64 +440,85 @@ const AlertWizard = () => { }; const handleAuditSubmit = (values) => { - values.conditions = values.conditions.filter((condition) => condition.Property); - apiRequest.mutate({ url: "/api/AddAlert", data: values }); + values.conditions = values.conditions.filter((condition) => condition?.Property); + apiRequest.mutate( + { url: "/api/AddAlert", data: values }, + { + onSuccess: () => { + // Prevent form reload after successful save + setHasLoadedExistingAlert(true); + }, + }, + ); }; const handleScriptSubmit = (values) => { const getInputParams = () => { if (values.command.value.requiresInput) { - return { - InputValue: values[values.command.value.inputName], - }; + if (values.command.value.multipleInput) { + // Collect all input values into InputValue object + const inputValue = {}; + values.command.value.inputs.forEach((input) => { + if (values[input.inputName] !== undefined && values[input.inputName] !== null) { + inputValue[input.inputName] = values[input.inputName]; + } + }); + return { InputValue: inputValue }; + } else { + return { + InputValue: values[values.command.value.inputName], + }; + } } return {}; }; const postObject = { RowKey: router.query.clone ? undefined : router.query.id ? router.query.id : undefined, - tenantFilter: values.tenantFilter?.value, + tenantFilter: values.tenantFilter, excludedTenants: values.excludedTenants, - Name: `${values.tenantFilter.value}: ${values.command.label}`, + Name: `${values.tenantFilter?.label || values.tenantFilter?.value}: ${values.command.label}`, Command: { value: `Get-CIPPAlert${values.command.value.name}` }, Parameters: getInputParams(), ScheduledTime: Math.floor(new Date().getTime() / 1000) + 60, + DesiredStartTime: values.startDateTime ? values.startDateTime.toString() : null, Recurrence: values.recurrence, PostExecution: values.postExecution, + AlertComment: values.AlertComment, }; - apiRequest.mutate({ url: "/api/AddScheduledItem?hidden=true", data: postObject }); + apiRequest.mutate( + { url: "/api/AddScheduledItem?hidden=true", data: postObject }, + { + onSuccess: () => { + // Prevent form reload after successful save + setHasLoadedExistingAlert(true); + }, + }, + ); }; const handleAddCondition = () => { - setAddedEvent([...addedEvent, { id: addedEvent.length + 1 }]); + const currentConditions = formControl.getValues("conditions") || []; + // Append a blank condition placeholder so indices align immediately + currentConditions.push({ Property: null, Operator: null, Input: null }); + formControl.setValue("conditions", currentConditions, { shouldValidate: false }); + setAddedEvent(currentConditions.map((_, idx) => ({ id: idx }))); }; const handleRemoveCondition = (id) => { - //remove the condition from the form const currentConditions = formControl.getValues("conditions") || []; const updatedConditions = currentConditions.filter((_, index) => index !== id); - formControl.setValue("conditions", updatedConditions); - setAddedEvent(addedEvent.filter((event) => event.id !== id)); + formControl.setValue("conditions", updatedConditions, { shouldValidate: false }); + // Rebuild addedEvent to keep ids aligned with new indices + setAddedEvent(updatedConditions.map((_, idx) => ({ id: idx }))); }; const { isValid } = useFormState({ control: formControl.control }); return ( - + + - - - {existingAlert.isLoading && } {editAlert ? "Edit" : "Add"} Alert @@ -354,6 +571,11 @@ const AlertWizard = () => { allTenants={true} label="Included Tenants for alert" includeGroups={true} + required={true} + validators={{ + validate: (value) => + value?.length > 0 || "At least one tenant must be selected", + }} /> { formControl={formControl} compareType="valueContains" compareValue="AllTenants" + clearOnHide={false} > { + } @@ -445,6 +672,18 @@ const AlertWizard = () => { formControl={formControl} label="Select property" options={getAuditLogSchema(logbookWatcher?.value)} + creatable={true} + onCreateOption={(option) => { + const propertyName = option.label || option; + + // Return the option with String type for immediate use + const newOption = { + label: propertyName, + value: "String", // Always set to String for custom properties + }; + + return newOption; + }} /> @@ -468,36 +707,99 @@ const AlertWizard = () => { /> + {/* Show textField for String properties when NOT using in/notIn operators */} - + compareType="isNotOneOf" + compareValue={[ + { value: "in", label: "In" }, + { value: "notIn", label: "Not In" }, + ]} + > + + + + {/* Show autocomplete with creatable for in/notIn operators (any property type) */} { + if (typeof inputValue === "string") { + return { label: inputValue, value: inputValue }; + } + return inputValue; + }} /> + + {/* Show autocomplete for List properties when NOT using in/notIn operators */} + + + + + @@ -505,7 +807,7 @@ const AlertWizard = () => { color="error" onClick={() => handleRemoveCondition(event.id)} > - + @@ -526,6 +828,17 @@ const AlertWizard = () => { options={actionsToTake} /> + + + @@ -556,6 +869,7 @@ const AlertWizard = () => { multiple={false} formControl={formControl} label="Included Tenants for alert" + includeGroups={true} validators={{ required: { value: true, message: "This field is required" }, }} @@ -566,6 +880,7 @@ const AlertWizard = () => { formControl={formControl} compareType="contains" compareValue="AllTenants" + clearOnHide={false} > { + } @@ -622,14 +942,58 @@ const AlertWizard = () => { /> - {commandValue?.value?.requiresInput && ( - - )} + + + + {commandValue?.value?.requiresInput && + !commandValue.value?.multipleInput && ( + + )} + {commandValue?.value?.multipleInput && + commandValue.value?.inputs?.map((input, index) => ( + 0 ? 2 : 0 }} + > + + + + + ))} { options={postExecutionOptions} /> + + + diff --git a/src/pages/tenant/administration/alert-configuration/index.js b/src/pages/tenant/administration/alert-configuration/index.js index e665b31b5228..da1d36a4fc6a 100644 --- a/src/pages/tenant/administration/alert-configuration/index.js +++ b/src/pages/tenant/administration/alert-configuration/index.js @@ -1,17 +1,22 @@ import { Button } from "@mui/material"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; // had to add an extra path here because I added an extra folder structure. We should switch to absolute pathing so we dont have to deal with relative. +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; // had to add an extra path here because I added an extra folder structure. We should switch to absolute pathing so we dont have to deal with relative. import Link from "next/link"; -import { EyeIcon } from "@heroicons/react/24/outline"; -import { CopyAll, Delete, NotificationAdd } from "@mui/icons-material"; +import { CopyAll, Delete, Edit, NotificationAdd, Visibility } from "@mui/icons-material"; const Page = () => { const pageTitle = "Alerts"; const actions = [ + { + label: "View Task Details", + link: "/cipp/scheduler/task?id=[RowKey]", + icon: , + condition: (row) => row?.EventType === "Scheduled Task", + }, { label: "Edit Alert", link: "/tenant/administration/alert-configuration/alert?id=[RowKey]", - icon: , + icon: , color: "success", target: "_self", }, @@ -58,6 +63,7 @@ const Page = () => { "Conditions", "RepeatsEvery", "Actions", + "AlertComment", "excludedTenants", ]} queryKey="ListAlertsQueue" diff --git a/src/pages/tenant/administration/app-consent-requests/index.js b/src/pages/tenant/administration/app-consent-requests/index.js index 6287465a1076..658f1996b523 100644 --- a/src/pages/tenant/administration/app-consent-requests/index.js +++ b/src/pages/tenant/administration/app-consent-requests/index.js @@ -1,22 +1,21 @@ -import { useState, useEffect, use } from "react"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Button, Accordion, AccordionSummary, AccordionDetails, Typography } from "@mui/material"; +import { useState } from "react"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { + Button, + Accordion, + AccordionSummary, + AccordionDetails, + Typography, + SvgIcon, + Stack, +} from "@mui/material"; import { Grid } from "@mui/system"; -import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; +import { Visibility, CheckCircle, ExpandMore, Security } from "@mui/icons-material"; +import { FunnelIcon, XMarkIcon } from "@heroicons/react/24/outline"; import { useForm } from "react-hook-form"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { useSettings } from "/src/hooks/use-settings"; - -const simpleColumns = [ - "Tenant", - "CippStatus", - "appDisplayName", - "requestUser", - "requestReason", - "requestStatus", - "requestDate", -]; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { useSettings } from "../../../../hooks/use-settings"; const apiUrl = "/api/ListAppConsentRequests"; const pageTitle = "App Consent Requests"; @@ -25,38 +24,140 @@ const Page = () => { const tenantFilter = useSettings().currentTenant; const formControl = useForm({ defaultValues: { - requestStatus: "All", + requestStatus: "InProgress", }, }); - const [expanded, setExpanded] = useState(false); // Accordion state - const [filterParams, setFilterParams] = useState({}); // Dynamic filter params + const [expanded, setExpanded] = useState(true); // Accordion state - start expanded since we have a default filter + const [filterEnabled, setFilterEnabled] = useState(true); // State for filter toggle - start with filter enabled + const [requestStatus, setRequestStatus] = useState("InProgress"); // State for request status filter - default to InProgress + const [requestStatusLabel, setRequestStatusLabel] = useState("Pending"); // State for displaying filter label - default label const onSubmit = (data) => { - // Handle filter application logic - const { requestStatus } = data; - const filters = {}; + // Handle the case where requestStatus could be an object {label, value} or a string + const statusValue = + typeof data.requestStatus === "object" && data.requestStatus?.value + ? data.requestStatus.value + : data.requestStatus; + const statusLabel = + typeof data.requestStatus === "object" && data.requestStatus?.label + ? data.requestStatus.label + : data.requestStatus; + + // Check if any filter is applied + const hasFilter = statusValue !== "All"; + setFilterEnabled(hasFilter); + + // Set request status filter if not "All" + setRequestStatus(hasFilter ? statusValue : null); + setRequestStatusLabel(hasFilter ? statusLabel : null); + + // Close the accordion after applying filters + setExpanded(false); + }; + + const clearFilters = () => { + formControl.reset({ + requestStatus: "All", + }); + setFilterEnabled(false); + setRequestStatus(null); + setRequestStatusLabel(null); + setExpanded(false); // Close the accordion when clearing filters + }; - if (requestStatus !== "All") { - filters.requestStatus = requestStatus; - } + const actions = [ + { + label: "Review in Entra", + link: `https://entra.microsoft.com/${tenantFilter}/#view/Microsoft_AAD_IAM/StartboardApplicationsMenuBlade/~/AccessRequests`, + color: "info", + icon: , + target: "_blank", + external: true, + }, + { + label: "Approve in Entra", + link: "[consentUrl]", + color: "info", + icon: , + target: "_blank", + external: true, + }, + ]; + + const simpleColumns = [ + "requestDate", // Request Date + "requestUser", // Requester + "appDisplayName", // Application Name + "appId", // Application ID + "requestReason", // Reason + "requestStatus", // Status + "reviewedBy", // Reviewed by + "reviewedJustification", // Reviewed Reason + "consentUrl", // Consent URL + ]; + + const filters = [ + { + filterName: "Pending requests", + value: [{ id: "requestStatus", value: "InProgress" }], + type: "column", + }, + { + filterName: "Expired requests", + value: [{ id: "requestStatus", value: "Expired" }], + type: "column", + }, + { + filterName: "Completed requests", + value: [{ id: "requestStatus", value: "Completed" }], + type: "column", + }, + ]; - setFilterParams(filters); + const offCanvas = { + extendedInfoFields: [ + "requestDate", // Request Date + "requestUser", // Requester + "appDisplayName", // Application Name + "appId", // Application ID + "requestReason", // Reason + "requestStatus", // Status + "reviewedBy", // Reviewed by + "reviewedJustification", // Reviewed Reason + "consentUrl", // Consent URL + ], + actions: actions, }; return ( setExpanded(!expanded)}> - }> - Filters + }> + + + + + + App Consent Request Filters + {filterEnabled ? ( + + ({requestStatusLabel && <>Status: {requestStatusLabel}}) + + ) : ( + + (No filters applied) + + )} + +
    {/* Request Status Filter */} - + { /> - {/* Submit Button */} - - + {/* Action Buttons */} + + + + + @@ -86,45 +210,14 @@ const Page = () => { title={pageTitle} apiUrl={apiUrl} simpleColumns={simpleColumns} - filters={[ - // Filter for showing only pending requests - { - filterName: "Pending requests", - value: [{ id: "requestStatus", value: "InProgress" }], - type: "column", - }, - ]} - queryKey={`AppConsentRequests-${JSON.stringify(filterParams)}-${tenantFilter}`} + filters={filters} + queryKey={`AppConsentRequests-${requestStatus}-${filterEnabled}-${tenantFilter}`} apiData={{ - ...filterParams, - }} - offCanvas={{ - extendedInfoFields: [ - "requestUser", // Requester - "appDisplayName", // Application Name - "appId", // Application ID - "requestReason", // Reason - "requestStatus", // Status - "reviewedBy", // Reviewed by - "reviewedJustification", // Reviewed Reason - ], + RequestStatus: requestStatus, // Pass request status filter from state + Filter: filterEnabled, // Pass filter toggle state }} - actions={[ - { - label: "Review in Entra", - link: `https://entra.microsoft.com/${tenantFilter}/#view/Microsoft_AAD_IAM/StartboardApplicationsMenuBlade/~/AccessRequests`, - color: "info", - target: "_blank", - external: true, - }, - { - label: "Approve in Entra", - link: "[consentUrl]", - color: "info", - target: "_blank", - external: true, - }, - ]} + offCanvas={offCanvas} + actions={actions} /> ); }; diff --git a/src/pages/tenant/administration/applications/app-registrations.js b/src/pages/tenant/administration/applications/app-registrations.js index ff9a643f1e92..1adcf038947c 100644 --- a/src/pages/tenant/administration/applications/app-registrations.js +++ b/src/pages/tenant/administration/applications/app-registrations.js @@ -1,19 +1,26 @@ // this page is going to need some love for accounting for filters: https://github.com/KelvinTegelaar/CIPP/blob/main/src/views/tenant/administration/ListEnterpriseApps.jsx#L83 -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Launch } from "@mui/icons-material"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { TabbedLayout } from "../../../../layouts/TabbedLayout"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { CippFormComponent } from "../../../../components/CippComponents/CippFormComponent.jsx"; +import { CertificateCredentialRemovalForm } from "../../../../components/CippComponents/CertificateCredentialRemovalForm.jsx"; +import CippPermissionPreview from "../../../../components/CippComponents/CippPermissionPreview.jsx"; +import { Launch, Delete, Key, Security, ContentCopy } from "@mui/icons-material"; +import { usePermissions } from "../../../../hooks/use-permissions.js"; import tabOptions from "./tabOptions"; const Page = () => { const pageTitle = "App Registrations"; const apiUrl = "/api/ListGraphRequest"; + const { checkPermissions } = usePermissions(); + const canWriteApplication = checkPermissions(["Tenant.Application.ReadWrite"]); + const actions = [ { icon: , label: "View App Registration", - link: `https://entra.microsoft.com/[Tenant]/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/Overview/appId/[appId]`, + link: `https://entra.microsoft.com/[Tenant]/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/Overview/appId/[appId]/isMSAApp/`, color: "info", target: "_blank", multiPost: false, @@ -22,12 +29,159 @@ const Page = () => { { icon: , label: "View API Permissions", - link: `https://entra.microsoft.com/[Tenant]/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/CallAnAPI/appId/[appId]`, + link: `https://entra.microsoft.com/[Tenant]/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/CallAnAPI/appId/[appId]/isMSAApp/`, color: "info", target: "_blank", multiPost: false, external: true, }, + { + icon: , + label: "Create Enterprise App Template (Multi-Tenant)", + type: "POST", + color: "info", + multiPost: false, + url: "/api/ExecCreateAppTemplate", + data: { + AppId: "appId", + DisplayName: "displayName", + Type: "application", + }, + fields: [ + { + type: "switch", + name: "Overwrite", + label: "Overwrite Existing Template", + }, + ], + confirmText: + "Create a deployment template from '[displayName]'? This will copy all permissions and create a reusable template. If you run this from a customer tenant, the App Registration will first be copied to the partner tenant as a multi-tenant app.", + condition: (row) => canWriteApplication && !row?.applicationTemplateId, + }, + { + icon: , + label: "Create Manifest Template (Single-Tenant)", + type: "POST", + color: "success", + multiPost: false, + url: "/api/ExecAppApprovalTemplate", + confirmText: + "Create a manifest template from '[displayName]'? This will create a reusable template that can be deployed as a single-tenant app in any tenant.", + fields: [ + { + label: "Template Name", + name: "TemplateName", + type: "textField", + placeholder: "Enter a name for the template", + required: true, + validators: { + required: { value: true, message: "Template name is required" }, + }, + }, + ], + customDataformatter: (row, action, formData) => { + const propertiesToRemove = [ + "appId", + "id", + "createdDateTime", + "deletedDateTime", + "publisherDomain", + "servicePrincipalLockConfiguration", + "identifierUris", + "applicationIdUris", + "keyCredentials", + "passwordCredentials", + "Tenant", + "CippStatus", + ]; + + const cleanManifest = { ...row }; + propertiesToRemove.forEach((prop) => { + delete cleanManifest[prop]; + }); + + return { + Action: "Save", + TemplateName: formData.TemplateName, + AppType: "ApplicationManifest", + AppName: row.displayName || row.appId, + ApplicationManifest: cleanManifest, + }; + }, + confirmText: "Are you sure you want to create a template from this app registration?", + condition: (row) => + canWriteApplication && row.signInAudience === "AzureADMyOrg" && !row?.applicationTemplateId, + }, + { + icon: , + label: "Remove Password Credentials", + type: "POST", + color: "warning", + multiPost: false, + url: "/api/ExecApplication", + data: { + Id: "id", + Type: "applications", + Action: "RemovePassword", + }, + children: ({ formHook, row }) => { + return ( + ({ + label: `${cred.displayName || "Unnamed"} (Expiration: ${new Date( + cred.endDateTime, + ).toLocaleDateString()})`, + value: cred.keyId, + })) || [] + } + /> + ); + }, + confirmText: "Are you sure you want to remove the selected password credentials?", + condition: (row) => canWriteApplication && row?.passwordCredentials?.length > 0, + }, + { + icon: , + label: "Remove Certificate Credentials", + type: "POST", + color: "warning", + multiPost: false, + url: "/api/ExecApplication", + data: { + Id: "id", + Type: "applications", + Action: "RemoveKey", + }, + children: ({ formHook, row }) => { + return ; + }, + confirmText: "Are you sure you want to remove the selected certificate credentials?", + condition: (row) => canWriteApplication && row?.keyCredentials?.length > 0, + }, + { + icon: , + label: "Delete App Registration", + type: "POST", + color: "error", + multiPost: false, + url: "/api/ExecApplication", + data: { + Id: "id", + Type: "applications", + Action: "Delete", + }, + confirmText: + "Are you sure you want to delete this application registration? This action cannot be undone.", + condition: () => canWriteApplication, + }, ]; const offCanvas = { @@ -37,14 +191,22 @@ const Page = () => { "appId", "createdDateTime", "signInAudience", + "disabledByMicrosoftStatus", "replyUrls", - "requiredResourceAccess", - "web", - "api", "passwordCredentials", "keyCredentials", ], actions: actions, + children: (row) => { + return ( + + ); + }, }; const simpleColumns = [ @@ -60,8 +222,6 @@ const Page = () => { const apiParams = { Endpoint: "applications", - $select: - "id,appId,displayName,createdDateTime,signInAudience,web,api,requiredResourceAccess,publisherDomain,replyUrls,passwordCredentials,keyCredentials", $count: true, $top: 999, }; diff --git a/src/pages/tenant/administration/applications/enterprise-apps.js b/src/pages/tenant/administration/applications/enterprise-apps.js index b7c80840c4e4..6a408ca37021 100644 --- a/src/pages/tenant/administration/applications/enterprise-apps.js +++ b/src/pages/tenant/administration/applications/enterprise-apps.js @@ -1,14 +1,32 @@ // this page is going to need some love for accounting for filters: https://github.com/KelvinTegelaar/CIPP/blob/main/src/views/tenant/administration/ListEnterpriseApps.jsx#L83 -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Launch } from "@mui/icons-material"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { TabbedLayout } from "../../../../layouts/TabbedLayout"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { CippFormComponent } from "../../../../components/CippComponents/CippFormComponent.jsx"; +import { CertificateCredentialRemovalForm } from "../../../../components/CippComponents/CertificateCredentialRemovalForm.jsx"; +import { + Launch, + Delete, + Edit, + Key, + Security, + Block, + CheckCircle, + ContentCopy, + RocketLaunch, +} from "@mui/icons-material"; +import { usePermissions } from "../../../../hooks/use-permissions.js"; import tabOptions from "./tabOptions"; +import { Button } from "@mui/material"; +import Link from "next/link"; const Page = () => { const pageTitle = "Enterprise Applications"; const apiUrl = "/api/ListGraphRequest"; + const { checkPermissions } = usePermissions(); + const canWriteApplication = checkPermissions(["Tenant.Application.ReadWrite"]); + const actions = [ { icon: , @@ -19,16 +37,149 @@ const Page = () => { multiPost: false, external: true, }, + { + icon: , + label: "Create Template from App", + type: "POST", + color: "info", + multiPost: false, + url: "/api/ExecCreateAppTemplate", + data: { + AppId: "appId", + DisplayName: "displayName", + Type: "servicePrincipal", + }, + fields: [ + { + type: "switch", + name: "Overwrite", + label: "Overwrite Existing Template", + }, + ], + confirmText: + "Create a deployment template from '[displayName]'? This will copy all permissions and create a reusable template.", + condition: (row) => canWriteApplication && row?.signInAudience === "AzureADMultipleOrgs", + }, + { + icon: , + label: "Remove Password Credentials", + type: "POST", + color: "warning", + multiPost: false, + url: "/api/ExecApplication", + data: { + Id: "id", + Type: "servicePrincipals", + Action: "RemovePassword", + }, + children: ({ formHook, row }) => { + return ( + ({ + label: `${cred.displayName || "Unnamed"} (Expiration: ${new Date( + cred.endDateTime, + ).toLocaleDateString()})`, + value: cred.keyId, + })) || [] + } + /> + ); + }, + confirmText: "Are you sure you want to remove the selected password credentials?", + condition: (row) => canWriteApplication && row?.passwordCredentials?.length > 0, + }, + { + icon: , + label: "Remove Certificate Credentials", + type: "POST", + color: "warning", + multiPost: false, + url: "/api/ExecApplication", + data: { + Id: "id", + Type: "servicePrincipals", + Action: "RemoveKey", + }, + children: ({ formHook, row }) => { + return ; + }, + confirmText: "Are you sure you want to remove the selected certificate credentials?", + condition: (row) => canWriteApplication && row?.keyCredentials?.length > 0, + }, + { + icon: , + label: "Disable Service Principal", + type: "POST", + color: "warning", + multiPost: false, + url: "/api/ExecApplication", + data: { + Id: "id", + Type: "servicePrincipals", + Action: "Update", + Payload: { + accountEnabled: false, + }, + }, + confirmText: + "Are you sure you want to disable this service principal? Users will not be able to sign in to this application.", + condition: (row) => canWriteApplication && row?.accountEnabled === true, + }, + { + icon: , + label: "Enable Service Principal", + type: "POST", + color: "success", + multiPost: false, + url: "/api/ExecApplication", + data: { + Id: "id", + Type: "servicePrincipals", + Action: "Update", + Payload: { + accountEnabled: true, + }, + }, + confirmText: "Are you sure you want to enable this service principal?", + condition: (row) => canWriteApplication && row?.accountEnabled === false, + }, + { + icon: , + label: "Delete Service Principal", + type: "POST", + color: "error", + multiPost: false, + url: "/api/ExecApplication", + data: { + Id: "id", + Type: "servicePrincipals", + Action: "Delete", + }, + confirmText: + "Are you sure you want to delete this service principal? This will remove the application from this tenant but will not affect the app registration.", + condition: () => canWriteApplication, + }, ]; const offCanvas = { extendedInfoFields: [ "displayName", "createdDateTime", + "accountEnabled", "publisherName", "replyUrls", "appOwnerOrganizationId", "tags", + "passwordCredentials", + "keyCredentials", ], actions: actions, }; @@ -37,6 +188,7 @@ const Page = () => { "info.logoUrl", "displayName", "appId", + "accountEnabled", "createdDateTime", "publisherName", "homepage", @@ -61,6 +213,13 @@ const Page = () => { actions={actions} offCanvas={offCanvas} simpleColumns={simpleColumns} + cardButton={ + <> + + + } /> ); }; diff --git a/src/pages/tenant/administration/applications/permission-sets/add.js b/src/pages/tenant/administration/applications/permission-sets/add.js index 112272d3a51e..aa189d7be95d 100644 --- a/src/pages/tenant/administration/applications/permission-sets/add.js +++ b/src/pages/tenant/administration/applications/permission-sets/add.js @@ -1,11 +1,11 @@ import { useRouter } from "next/router"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; import { useForm } from "react-hook-form"; import { ApiGetCall, ApiPostCall } from "../../../../../api/ApiCall"; -import CippAppPermissionBuilder from "/src/components/CippComponents/CippAppPermissionBuilder"; -import CippPageCard from "/src/components/CippCards/CippPageCard"; -import { Alert, CardContent, Skeleton, Stack, Typography, Button, Box } from "@mui/material"; -import { CippFormComponent } from "/src/components/CippComponents/CippFormComponent"; +import CippAppPermissionBuilder from "../../../../../components/CippComponents/CippAppPermissionBuilder"; +import CippPageCard from "../../../../../components/CippCards/CippPageCard"; +import { Alert, CardContent, Stack, Typography, Button, Box } from "@mui/material"; +import { CippFormComponent } from "../../../../../components/CippComponents/CippFormComponent"; import { useEffect, useState } from "react"; import { CopyAll } from "@mui/icons-material"; diff --git a/src/pages/tenant/administration/applications/permission-sets/edit.js b/src/pages/tenant/administration/applications/permission-sets/edit.js index e14272fb7b76..1ccb71f38380 100644 --- a/src/pages/tenant/administration/applications/permission-sets/edit.js +++ b/src/pages/tenant/administration/applications/permission-sets/edit.js @@ -1,14 +1,14 @@ import { useRouter } from "next/router"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; import { useForm } from "react-hook-form"; import { ApiGetCall, ApiPostCall } from "../../../../../api/ApiCall"; -import CippAppPermissionBuilder from "/src/components/CippComponents/CippAppPermissionBuilder"; -import CippPageCard from "/src/components/CippCards/CippPageCard"; +import CippAppPermissionBuilder from "../../../../../components/CippComponents/CippAppPermissionBuilder"; +import CippPageCard from "../../../../../components/CippCards/CippPageCard"; import { Alert, CardContent, Skeleton, Stack, Typography } from "@mui/material"; import { useEffect, useState } from "react"; import Link from "next/link"; import { Button } from "@mui/material"; -import { CippFormComponent } from "/src/components/CippComponents/CippFormComponent"; +import { CippFormComponent } from "../../../../../components/CippComponents/CippFormComponent"; const Page = () => { const router = useRouter(); diff --git a/src/pages/tenant/administration/applications/permission-sets/index.js b/src/pages/tenant/administration/applications/permission-sets/index.js index 41b02f844fc4..174a55ec6d39 100644 --- a/src/pages/tenant/administration/applications/permission-sets/index.js +++ b/src/pages/tenant/administration/applications/permission-sets/index.js @@ -1,21 +1,40 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; +import { TabbedLayout } from "../../../../../layouts/TabbedLayout"; +import { CippTablePage } from "../../../../../components/CippComponents/CippTablePage.jsx"; import { Edit, Delete, ContentCopy, Add } from "@mui/icons-material"; import tabOptions from "../tabOptions"; import { Button } from "@mui/material"; import Link from "next/link"; +import { CippPermissionSetDrawer } from "../../../../../components/CippComponents/CippPermissionSetDrawer"; +import { useRef } from "react"; const Page = () => { const pageTitle = "Permission Sets"; const apiUrl = "/api/ExecAppPermissionTemplate"; + const tableRef = useRef(); + + const handlePermissionSetSuccess = () => { + // Refresh the table after successful create/edit + if (tableRef.current) { + tableRef.current.refreshData(); + } + }; const actions = [ { icon: , label: "Edit Permission Set", color: "warning", - link: "/tenant/administration/applications/permission-sets/edit?template=[TemplateId]&name=[TemplateName]", + customComponent: (row, { drawerVisible, setDrawerVisible }) => ( + + ), + multiPost: false, }, { icon: , @@ -46,6 +65,7 @@ const Page = () => { return ( { actions={actions} offCanvas={offCanvas} cardButton={ - + } /> ); diff --git a/src/pages/tenant/administration/applications/tabOptions.json b/src/pages/tenant/administration/applications/tabOptions.json index 804316b7d5b8..05bafb200179 100644 --- a/src/pages/tenant/administration/applications/tabOptions.json +++ b/src/pages/tenant/administration/applications/tabOptions.json @@ -12,7 +12,7 @@ "path": "/tenant/administration/applications/permission-sets" }, { - "label": "Templates", + "label": "Application Templates", "path": "/tenant/administration/applications/templates" } ] \ No newline at end of file diff --git a/src/pages/tenant/administration/applications/templates/add.js b/src/pages/tenant/administration/applications/templates/add.js index 1fdbda3ca8c8..ef56de9b9fff 100644 --- a/src/pages/tenant/administration/applications/templates/add.js +++ b/src/pages/tenant/administration/applications/templates/add.js @@ -1,11 +1,11 @@ import { useRouter } from "next/router"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; import { useForm } from "react-hook-form"; import { ApiGetCall, ApiPostCall } from "../../../../../api/ApiCall"; -import CippPageCard from "/src/components/CippCards/CippPageCard"; +import CippPageCard from "../../../../../components/CippCards/CippPageCard"; import { CardContent } from "@mui/material"; -import { useEffect, useState } from "react"; -import AppApprovalTemplateForm from "/src/components/CippComponents/AppApprovalTemplateForm"; +import { useState } from "react"; +import AppApprovalTemplateForm from "../../../../../components/CippComponents/AppApprovalTemplateForm"; const Page = () => { const router = useRouter(); diff --git a/src/pages/tenant/administration/applications/templates/edit.js b/src/pages/tenant/administration/applications/templates/edit.js index 807717c763cf..bef82c603d0b 100644 --- a/src/pages/tenant/administration/applications/templates/edit.js +++ b/src/pages/tenant/administration/applications/templates/edit.js @@ -1,12 +1,12 @@ import { useRouter } from "next/router"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; import { useForm } from "react-hook-form"; import { ApiGetCall, ApiPostCall } from "../../../../../api/ApiCall"; -import CippPageCard from "/src/components/CippCards/CippPageCard"; +import CippPageCard from "../../../../../components/CippCards/CippPageCard"; import { Alert, Button, CardContent } from "@mui/material"; import { useState } from "react"; import Link from "next/link"; -import AppApprovalTemplateForm from "/src/components/CippComponents/AppApprovalTemplateForm"; +import AppApprovalTemplateForm from "../../../../../components/CippComponents/AppApprovalTemplateForm"; const Page = () => { const router = useRouter(); diff --git a/src/pages/tenant/administration/applications/templates/index.js b/src/pages/tenant/administration/applications/templates/index.js index c8e7e567a617..7878f066ef7a 100644 --- a/src/pages/tenant/administration/applications/templates/index.js +++ b/src/pages/tenant/administration/applications/templates/index.js @@ -1,14 +1,16 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Edit, Delete, ContentCopy, Add, GitHub } from "@mui/icons-material"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; +import { TabbedLayout } from "../../../../../layouts/TabbedLayout"; +import { CippTablePage } from "../../../../../components/CippComponents/CippTablePage.jsx"; +import CippPermissionPreview from "../../../../../components/CippComponents/CippPermissionPreview.jsx"; +import { Edit, Delete, ContentCopy, Add, GitHub, RocketLaunch } from "@mui/icons-material"; import tabOptions from "../tabOptions"; +import { ApiGetCall } from "../../../../../api/ApiCall"; import { Button } from "@mui/material"; +import { Stack } from "@mui/system"; import Link from "next/link"; -import { ApiGetCall } from "/src/api/ApiCall"; const Page = () => { - const pageTitle = "Templates"; + const pageTitle = "Application Templates"; const apiUrl = "/api/ListAppApprovalTemplates"; // Fetch GitHub integration status @@ -92,19 +94,115 @@ const Page = () => { ]; const offCanvas = { - extendedInfoFields: [ - "TemplateName", - "AppId", - "AppName", - "PermissionSetName", - "UpdatedBy", - "Timestamp", - ], + extendedInfoFields: ["TemplateName", "AppType", "AppId", "AppName", "UpdatedBy", "Timestamp"], actions: actions, + children: (row) => { + // Default to EnterpriseApp for backward compatibility with older templates + const appType = row.AppType || "EnterpriseApp"; + + // Determine the title based on app type + let title = "Permission Preview"; + if (appType === "GalleryTemplate") { + title = "Gallery Template Info"; + } else if (appType === "ApplicationManifest") { + title = "Application Manifest"; + } + + return ( + + ); + }, }; + const columns = [ + { + name: "TemplateName", + label: "Template Name", + sortable: true, + }, + { + name: "AppType", + label: "Type", + sortable: true, + formatter: (row) => { + // Default to EnterpriseApp for backward compatibility with older templates + const appType = row.AppType || "EnterpriseApp"; + if (appType === "GalleryTemplate") { + return "Gallery Template"; + } else if (appType === "ApplicationManifest") { + return "Application Manifest"; + } else { + return "Enterprise App"; + } + }, + }, + { + name: "AppId", + label: "App ID", + sortable: true, + }, + { + name: "AppName", + label: "App Name", + sortable: true, + }, + { + name: "PermissionSetName", + label: "Permission Set", + sortable: true, + formatter: (row) => { + // Default to EnterpriseApp for backward compatibility with older templates + const appType = row.AppType || "EnterpriseApp"; + if (appType === "GalleryTemplate") { + return "Auto-Consent"; + } else if (appType === "ApplicationManifest") { + return "Manifest-Defined"; + } else { + return row.PermissionSetName || "-"; + } + }, + }, + { + name: "UpdatedBy", + label: "Updated By", + sortable: true, + }, + { + name: "Timestamp", + label: "Last Updated", + sortable: true, + }, + ]; + const simpleColumns = [ "TemplateName", + "AppType", "AppId", "AppName", "PermissionSetName", @@ -116,19 +214,32 @@ const Page = () => { } - > - Add App Approval Template - + + + + } /> ); diff --git a/src/pages/tenant/administration/audit-logs/directory-audits.js b/src/pages/tenant/administration/audit-logs/directory-audits.js new file mode 100644 index 000000000000..8683a1221c5f --- /dev/null +++ b/src/pages/tenant/administration/audit-logs/directory-audits.js @@ -0,0 +1,46 @@ +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { TabbedLayout } from "../../../../layouts/TabbedLayout"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import CippJsonView from "../../../../components/CippFormPages/CippJSONView"; +import tabOptions from "./tabOptions.json"; + +const DirectoryAuditsPage = () => { + const offCanvas = { + children: (row) => ( + + ), + size: "xl", + }; + + return ( + + ); +}; + +DirectoryAuditsPage.getLayout = (page) => ( + + {page} + +); + +export default DirectoryAuditsPage; diff --git a/src/pages/tenant/administration/audit-logs/index.js b/src/pages/tenant/administration/audit-logs/index.js index fab698e09464..c04388b8a3cc 100644 --- a/src/pages/tenant/administration/audit-logs/index.js +++ b/src/pages/tenant/administration/audit-logs/index.js @@ -1,19 +1,27 @@ import { useState } from "react"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Button, Accordion, AccordionSummary, AccordionDetails, Typography } from "@mui/material"; +import { useRouter } from "next/router"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { TabbedLayout } from "../../../../layouts/TabbedLayout"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { + Box, + Button, + Accordion, + AccordionSummary, + AccordionDetails, + Typography, +} from "@mui/material"; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; import { useForm } from "react-hook-form"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; import { EyeIcon } from "@heroicons/react/24/outline"; import { Grid } from "@mui/system"; +import tabOptions from "./tabOptions.json"; -const simpleColumns = ["Timestamp", "Tenant", "Title", "Actions"]; - -const apiUrl = "/api/ListAuditLogs"; -const pageTitle = "Audit Logs"; - -const actions = [ +// Saved Logs Configuration +const savedLogsColumns = ["Timestamp", "Tenant", "Title", "Actions"]; +const savedLogsApiUrl = "/api/ListAuditLogs"; +const savedLogsActions = [ { label: "View Log", link: "/tenant/administration/audit-logs/log?id=[LogId]", @@ -23,22 +31,23 @@ const actions = [ ]; const Page = () => { + const router = useRouter(); + const formControl = useForm({ mode: "onChange", defaultValues: { dateFilter: "relative", - Time: 1, + Time: 7, Interval: { label: "Days", value: "d" }, }, }); - const [expanded, setExpanded] = useState(false); // Accordion state - const [relativeTime, setRelativeTime] = useState("1d"); // Relative time filter - const [startDate, setStartDate] = useState(null); // Start date filter - const [endDate, setEndDate] = useState(null); // End date filter + const [expanded, setExpanded] = useState(false); + const [relativeTime, setRelativeTime] = useState("7d"); + const [startDate, setStartDate] = useState(null); + const [endDate, setEndDate] = useState(null); const onSubmit = (data) => { - // Handle filter application logic if (data.dateFilter === "relative") { setRelativeTime(`${data.Time}${data.Interval.value}`); setStartDate(null); @@ -50,113 +59,121 @@ const Page = () => { } }; - return ( - setExpanded(!expanded)}> - }> - Search Options - - -
    - - {/* Date Filter Type */} - - - + // API parameters for saved logs + const apiParams = { + RelativeTime: relativeTime ? relativeTime : "7d", + ...(startDate && { StartDate: startDate }), + ...(endDate && { EndDate: endDate }), + }; - {/* Relative Time Filter */} - {formControl.watch("dateFilter") === "relative" && ( - <> - - - - - - - - - - - - )} + const searchFilter = ( + setExpanded(!expanded)}> + }> + Search Options + + + + + {/* Date Filter Type */} + + + - {/* Start and End Date Filters */} - {formControl.watch("dateFilter") === "startEnd" && ( - <> - + {/* Relative Time Filter */} + {formControl.watch("dateFilter") === "relative" && ( + <> + + + - + - - )} + + + + )} - {/* Submit Button */} - - + {/* Start and End Date Filters */} + {formControl.watch("dateFilter") === "startEnd" && ( + <> + + + + + - - - - - } - title={pageTitle} - apiUrl={apiUrl} + + )} + + {/* Submit Button */} + + + +
    + +
    + + ); + + return ( + ); }; /* Comment to Developer: + - This page displays saved audit logs with date filtering options. - The filter options are implemented within an Accordion for a collapsible UI. - DateFilter types are supported as 'Relative' and 'Start/End'. - Relative time is calculated based on Time and Interval inputs. @@ -164,6 +181,10 @@ const Page = () => { - Filters are dynamically applied to the table query. */ -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => ( + + {page} + +); export default Page; diff --git a/src/pages/tenant/administration/audit-logs/log.js b/src/pages/tenant/administration/audit-logs/log.js index e88d096b39a8..ce8c8554ec5d 100644 --- a/src/pages/tenant/administration/audit-logs/log.js +++ b/src/pages/tenant/administration/audit-logs/log.js @@ -1,7 +1,7 @@ import { useRouter } from "next/router"; import { useEffect, useState } from "react"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { ApiGetCall, ApiPostCall } from "/src/api/ApiCall"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { ApiGetCall } from "../../../../api/ApiCall"; import { Box, Typography, @@ -13,14 +13,14 @@ import { Divider, SvgIcon, } from "@mui/material"; -import CippFormSkeleton from "/src/components/CippFormPages/CippFormSkeleton"; -import { CippPropertyListCard } from "/src/components/CippCards/CippPropertyListCard"; +import CippFormSkeleton from "../../../../components/CippFormPages/CippFormSkeleton"; +import { CippPropertyListCard } from "../../../../components/CippCards/CippPropertyListCard"; import { getCippFormatting } from "../../../../utils/get-cipp-formatting"; import { getCippTranslation } from "../../../../utils/get-cipp-translation"; import CippGeoLocation from "../../../../components/CippComponents/CippGeoLocation"; import { Grid } from "@mui/system"; import { OpenInNew } from "@mui/icons-material"; -import auditLogTranslation from "/src/data/audit-log-translations.json"; +import auditLogTranslation from "../../../../data/audit-log-translations.json"; import { ArrowLeftIcon } from "@mui/x-date-pickers"; const Page = () => { @@ -88,7 +88,12 @@ const Page = () => { { label: "Tenant", value: data.Tenant }, { label: "User", - value: data?.Data?.RawData?.UserKey ?? data?.Data?.RawData?.AuditRecord?.userId ?? "N/A", + value: + data?.Data?.RawData?.CIPPUserKey ?? + data?.Data?.RawData?.AuditRecord?.CIPPuserId ?? + data?.Data?.RawData?.AuditRecord?.UserKey ?? + data?.Data?.RawData?.userId ?? + "N/A", }, { label: "IP Address", value: data?.Data?.IP }, { @@ -152,7 +157,7 @@ const Page = () => { {logData.Title} - + { {lookupIp && ( - + @@ -186,7 +191,7 @@ const Page = () => { )} - + { + const router = useRouter(); + const [searchId, setSearchId] = useState(null); + const [searchName, setSearchName] = useState(null); + const [isReady, setIsReady] = useState(false); + const processLogsDialog = useDialog(); + + useEffect(() => { + if (router.isReady) { + setSearchId(router.query.id || router.query.searchId); + setSearchName(router.query.name ? decodeURIComponent(router.query.name) : null); + setIsReady(true); + } + }, [router.isReady, router.query.id, router.query.searchId, router.query.name]); + + if (!isReady) { + return
    Loading...
    ; + } + + if (!searchId) { + return
    Search ID is required
    ; + } + + const pageTitle = searchName ? `${searchName}` : `Search Results - ${searchId}`; + + const handleBackClick = () => { + router.push("/tenant/administration/audit-logs/searches"); + }; + + // Process Logs API configuration + const processLogsApi = { + type: "POST", + url: "/api/ExecAuditLogSearch", + confirmText: + "Process these logs? Note: This will only alert on logs that match your Alert Configuration rules.", + relatedQueryKeys: ["AuditLogSearches"], + allowResubmit: true, + data: { + Action: "ProcessLogs", + SearchId: searchId, + }, + }; + + // Define offcanvas configuration with larger size for audit log details + const offcanvas = { + title: "Audit Log Details", + size: "xl", // Make the offcanvas extra large + children: (row) => , + }; + + return ( + <> + + + +
    + } + apiUrl="/api/ListAuditLogSearches" + apiDataKey="Results" + simpleColumns={searchResultsColumns} + queryKey={`AuditLogSearchResults-${searchId}`} + apiData={{ + Type: "SearchResults", + SearchId: searchId, + }} + offCanvas={offcanvas} + actions={[]} + /> + + + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/tenant/administration/audit-logs/searches.js b/src/pages/tenant/administration/audit-logs/searches.js new file mode 100644 index 000000000000..ffa70e4ab681 --- /dev/null +++ b/src/pages/tenant/administration/audit-logs/searches.js @@ -0,0 +1,61 @@ +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { TabbedLayout } from "../../../../layouts/TabbedLayout"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { CippAuditLogSearchDrawer } from "../../../../components/CippComponents/CippAuditLogSearchDrawer.jsx"; +import { EyeIcon } from "@heroicons/react/24/outline"; +import { ManageSearch } from "@mui/icons-material"; +import tabOptions from "./tabOptions.json"; +import { useSettings } from "../../../../hooks/use-settings"; + +const simpleColumns = ["displayName", "status", "filterStartDateTime", "filterEndDateTime"]; + +const apiUrl = "/api/ListAuditLogSearches?Type=Searches"; +const pageTitle = "Log Searches"; + +const actions = [ + { + label: "View Results", + link: "/tenant/administration/audit-logs/search-results?id=[id]&name=[displayName]", + color: "primary", + icon: , + }, + { + label: "Process Logs", + url: "/api/ExecAuditLogSearch", + confirmText: + "Process these logs? Note: This will only alert on logs that match your Alert Configuration rules.", + type: "POST", + data: { + Action: "ProcessLogs", + SearchId: "id", + }, + icon: , + }, +]; + +const Page = () => { + const currentTenant = useSettings().currentTenant; + const queryKey = `AuditLogSearches-${currentTenant}`; + + return ( + <> + } + /> + + ); +}; + +Page.getLayout = (page) => ( + + {page} + +); + +export default Page; diff --git a/src/pages/tenant/administration/audit-logs/tabOptions.json b/src/pages/tenant/administration/audit-logs/tabOptions.json new file mode 100644 index 000000000000..8c90389d9c68 --- /dev/null +++ b/src/pages/tenant/administration/audit-logs/tabOptions.json @@ -0,0 +1,14 @@ +[ + { + "label": "Saved Logs", + "path": "/tenant/administration/audit-logs" + }, + { + "label": "Log Searches", + "path": "/tenant/administration/audit-logs/searches" + }, + { + "label": "Directory Audits", + "path": "/tenant/administration/audit-logs/directory-audits" + } +] \ No newline at end of file diff --git a/src/pages/tenant/administration/authentication-methods/index.js b/src/pages/tenant/administration/authentication-methods/index.js index d86eccb0c3e6..2ceecbac8d62 100644 --- a/src/pages/tenant/administration/authentication-methods/index.js +++ b/src/pages/tenant/administration/authentication-methods/index.js @@ -1,9 +1,12 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { Check, Block } from "@mui/icons-material"; +import { UserGroupIcon } from "@heroicons/react/24/outline"; +import { useSettings } from "../../../../hooks/use-settings.js"; const Page = () => { const pageTitle = "Auth Methods"; + const tenant = useSettings().currentTenant; const apiUrl = "/api/ListGraphRequest"; // Columns configuration based on provided structure @@ -28,10 +31,58 @@ const Page = () => { confirmText: "Are you sure you want to disable this policy?", multiPost: false, }, + { + label: "Deploy to Custom Group", + type: "POST", + icon: , + url: "/api/SetAuthMethod", + confirmText: 'Select one or more groups for "[id]".', + fields: [ + { + type: "autoComplete", + name: "groupTargets", + label: "Group(s)", + multiple: true, + creatable: false, + allowResubmit: true, + validators: { required: "Please select at least one group" }, + api: { + url: "/api/ListGraphRequest", + dataKey: "Results", + queryKey: `ListAuthenticationPolicyGroups-${tenant}`, + labelField: (group) => + group.id ? `${group.displayName} (${group.id})` : group.displayName, + valueField: "id", + addedField: { + description: "description", + }, + data: { + Endpoint: "groups", + manualPagination: true, + $select: "id,displayName,description", + $orderby: "displayName", + $top: 999, + $count: true, + }, + }, + }, + ], + customDataformatter: (row, action, formData) => { + const selectedGroups = Array.isArray(formData?.groupTargets) ? formData.groupTargets : []; + const tenantFilterValue = tenant === "AllTenants" && row?.Tenant ? row.Tenant : tenant; + return { + tenantFilter: tenantFilterValue, + state: row?.state, + id: row?.id, + GroupIds: selectedGroups.map((group) => group.value).filter(Boolean), + }; + }, + multiPost: false, + }, ]; const offCanvas = { - extendedInfoFields: ["id", "state", "includeTargets", "excludeTargets"], + extendedInfoFields: ["id", "displayName", "state", "includeTargets", "excludeTargets"], actions: actions, }; diff --git a/src/pages/tenant/administration/domains/index.js b/src/pages/tenant/administration/domains/index.js new file mode 100644 index 000000000000..52bb5ec87977 --- /dev/null +++ b/src/pages/tenant/administration/domains/index.js @@ -0,0 +1,123 @@ +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { CheckCircle, Star, Delete } from "@mui/icons-material"; +import { CippAddDomainDrawer } from "../../../../components/CippComponents/CippAddDomainDrawer.jsx"; +import { CippDomainVerificationRecords } from "../../../../components/CippComponents/CippDomainVerificationRecords.jsx"; +import { CippDomainServiceConfigurationRecords } from "../../../../components/CippComponents/CippDomainServiceConfigurationRecords.jsx"; +import { Box, Typography, Divider } from "@mui/material"; +import { Stack } from "@mui/system"; +import { CippPropertyList } from "../../../../components/CippComponents/CippPropertyList"; +import { getCippFormatting } from "../../../../utils/get-cipp-formatting"; + +const Page = () => { + const pageTitle = "Domains"; + const apiUrl = "/api/ListGraphRequest"; + + // API Data configuration for the request + const apiData = { + Endpoint: "domains", + }; + + const simpleColumns = [ + "id", + "authenticationType", + "isAdminManaged", + "isDefault", + "isInitial", + "isVerified", + ]; + + const offCanvas = { + size: "lg", + children: (row) => { + const offcanvasProperties = [ + { + label: "Supported Services", + value: getCippFormatting(row?.supportedServices, "supportedServices"), + }, + ]; + return ( + + + + Domain Details for {row.id} + + + + + + + + Verification Records + + + + + + Service Configuration Records + + + + + ); + }, + }; + + return ( + + } + actions={[ + { + label: "Verify Domain", + condition: (row) => !row.isVerified, + type: "POST", + icon: , + url: "/api/ExecDomainAction", + data: { domain: "id", Action: "verify" }, + confirmText: + "Are you sure you want to verify this domain? Use one of the records below to complete verification.", + children: ({ row }) => , + size: "lg", + }, + { + label: "Set as Default", + condition: (row) => !row.isDefault && row.isVerified, + type: "POST", + icon: , + url: "/api/ExecDomainAction", + data: { domain: "id", Action: "setDefault" }, + confirmText: "Are you sure you want to set [id] as the default domain?", + multiPost: false, + hideBulk: true, + }, + { + label: "Delete Domain", + condition: (row) => !row.isDefault && !row.isInitial, + type: "POST", + icon: , + url: "/api/ExecDomainAction", + data: { domain: "id", Action: "delete" }, + confirmText: "Are you sure you want to delete [id]? This action cannot be undone.", + color: "error", + multiPost: false, + }, + ]} + /> + ); +}; + +// Adding the layout for the dashboard +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/tenant/administration/index.js b/src/pages/tenant/administration/index.js index ddd398e434f7..f2222b9e4fab 100644 --- a/src/pages/tenant/administration/index.js +++ b/src/pages/tenant/administration/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; const Page = () => { const pageTitle = "Administration"; diff --git a/src/pages/tenant/administration/partner-relationships/index.js b/src/pages/tenant/administration/partner-relationships/index.js index 82d2307a0935..7784454e8d5b 100644 --- a/src/pages/tenant/administration/partner-relationships/index.js +++ b/src/pages/tenant/administration/partner-relationships/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; // Developer Note: The "Tenant" column should be omitted if tenant is not "AllTenants". // You may handle tenant filtering or visibility at a higher level if required. diff --git a/src/pages/tenant/administration/securescore/index.js b/src/pages/tenant/administration/securescore/index.js index 79aa24619f18..3c3a3aafb1bf 100644 --- a/src/pages/tenant/administration/securescore/index.js +++ b/src/pages/tenant/administration/securescore/index.js @@ -1,5 +1,5 @@ -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { TabbedLayout } from "../../../../layouts/TabbedLayout"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; import tabOptions from "./tabOptions"; import { useSecureScore } from "../../../../hooks/use-securescore"; import { CippInfoBar } from "../../../../components/CippCards/CippInfoBar"; @@ -15,6 +15,8 @@ import { CippApiDialog } from "../../../../components/CippComponents/CippApiDial import { useDialog } from "../../../../hooks/use-dialog"; import { useState } from "react"; import { CippTableDialog } from "../../../../components/CippComponents/CippTableDialog"; +import { Menu, MenuItem, ListItemIcon, ListItemText } from "@mui/material"; +import { FilterList } from "@mui/icons-material"; import { CippImageCard } from "../../../../components/CippCards/CippImageCard"; import { useSettings } from "../../../../hooks/use-settings"; import { useRouter } from "next/navigation"; @@ -26,6 +28,8 @@ const Page = () => { const [actionData, setActionData] = useState({ data: {}, action: {}, ready: false }); const [updatesData, setUpdatesData] = useState({ data: {}, ready: false }); const cippTableDialog = useDialog(); + const [filterAnchorEl, setFilterAnchorEl] = useState(null); + const [selectedFilter, setSelectedFilter] = useState("all"); const router = useRouter(); const timeAgo = new TimeAgo("en-US"); @@ -36,6 +40,45 @@ const Page = () => { router.push(url); } }; + + const handleFilterClick = (event) => { + setFilterAnchorEl(event.currentTarget); + }; + + const handleFilterClose = () => { + setFilterAnchorEl(null); + }; + + const handleFilterSelect = (filter) => { + setSelectedFilter(filter); + handleFilterClose(); + }; + + const getFilteredControlScores = () => { + if (!secureScore.isSuccess) return []; + + const controlScores = secureScore.translatedData.controlScores || []; + + switch (selectedFilter) { + case "completed": + return controlScores.filter((score) => score.scoreInPercentage === 100); + case "zero": + return controlScores.filter((score) => score.scoreInPercentage === 0); + case "started": + return controlScores.filter( + (score) => score.scoreInPercentage > 0 && score.scoreInPercentage < 100 + ); + default: + return controlScores; + } + }; + + const filterOptions = [ + { value: "all", label: "All Recommendations" }, + { value: "completed", label: "Completed (100%)" }, + { value: "zero", label: "Not Started (0%)" }, + { value: "started", label: "In Progress (Started)" }, + ]; return ( { > {currentTenant === "AllTenants" && ( - + { )} {currentTenant !== "AllTenants" && ( <> - + + + + {filterOptions.map((option) => ( + handleFilterSelect(option.value)} + > + {option.label} + + ))} + + + { ]} /> - + { {currentTenant !== "AllTenants" && secureScore.isSuccess && - secureScore.translatedData.controlScores.map((secureScoreControl) => ( - + getFilteredControlScores().map((secureScoreControl) => ( + { createDialog.handleOpen(); }} variant="contained" + disabled={secureScoreControl.controlName.startsWith("scid_")} > Change Status diff --git a/src/pages/tenant/administration/securescore/table.js b/src/pages/tenant/administration/securescore/table.js index d4ca94ac2a91..79afdef8d532 100644 --- a/src/pages/tenant/administration/securescore/table.js +++ b/src/pages/tenant/administration/securescore/table.js @@ -1,5 +1,5 @@ -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { TabbedLayout } from "../../../../layouts/TabbedLayout"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; import tabOptions from "./tabOptions"; import CippTablePage from "../../../../components/CippComponents/CippTablePage"; import { useSecureScore } from "../../../../hooks/use-securescore"; @@ -24,7 +24,7 @@ const Page = () => { > {currentTenant === "AllTenants" && ( - + { const pageTitle = "Tenant Lookup"; diff --git a/src/pages/tenant/administration/tenants/add.js b/src/pages/tenant/administration/tenants/add.js index cdfa1b05143d..74c36bb424d0 100644 --- a/src/pages/tenant/administration/tenants/add.js +++ b/src/pages/tenant/administration/tenants/add.js @@ -2,7 +2,7 @@ import { Layout as DashboardLayout } from "../../../../layouts/index.js"; import CippWizardPage from "../../../../components/CippWizard/CippWizardPage.jsx"; import { CippWizardOptionsList } from "../../../../components/CippWizard/CippWizardOptionsList.jsx"; import { CippAddTenantForm } from "../../../../components/CippWizard/CippAddTenantForm.jsx"; -import { BuildingOfficeIcon, CloudIcon } from "@heroicons/react/24/outline"; +import { BuildingOfficeIcon } from "@heroicons/react/24/outline"; import CippWizardConfirmation from "../../../../components/CippWizard/CippWizardConfirmation.jsx"; const Page = () => { diff --git a/src/pages/tenant/administration/tenants/edit.js b/src/pages/tenant/administration/tenants/edit.js index ad43de7e7811..960e536859b1 100644 --- a/src/pages/tenant/administration/tenants/edit.js +++ b/src/pages/tenant/administration/tenants/edit.js @@ -1,17 +1,18 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; import { useForm } from "react-hook-form"; import { ApiGetCall } from "../../../../api/ApiCall"; import { useEffect, useState } from "react"; import { useRouter } from "next/router"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { Stack, Box, Tab, Tabs, Typography } from "@mui/material"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { Stack, Box, Tab, Tabs, Typography, Button } from "@mui/material"; import { Grid } from "@mui/system"; -import { CippCardTabPanel } from "/src/components/CippComponents/CippCardTabPanel"; -import CippFormSection from "/src/components/CippFormPages/CippFormSection"; +import { CippCardTabPanel } from "../../../../components/CippComponents/CippCardTabPanel"; +import CippFormSection from "../../../../components/CippFormPages/CippFormSection"; import CippPageCard from "../../../../components/CippCards/CippPageCard"; -import { CippPropertyListCard } from "/src/components/CippCards/CippPropertyListCard"; +import { CippPropertyListCard } from "../../../../components/CippCards/CippPropertyListCard"; import { getCippFormatting } from "../../../../utils/get-cipp-formatting"; -import CippCustomVariables from "/src/components/CippComponents/CippCustomVariables"; +import CippCustomVariables from "../../../../components/CippComponents/CippCustomVariables"; +import { CippOffboardingDefaultSettings } from "../../../../components/CippComponents/CippOffboardingDefaultSettings"; function tabProps(index) { return { @@ -26,6 +27,10 @@ const Page = () => { const formControl = useForm({ mode: "onChange", }); + + const offboardingFormControl = useForm({ + mode: "onChange", + }); const [value, setValue] = useState(0); const tenantDetails = ApiGetCall({ @@ -44,13 +49,75 @@ const Page = () => { value: group.Id, })) || [], }); + + // Set up offboarding defaults with default values + const tenantOffboardingDefaults = tenantDetails.data?.customProperties?.OffboardingDefaults; + const defaultOffboardingValues = { + ConvertToShared: false, + RemoveGroups: false, + HideFromGAL: false, + RemoveLicenses: false, + removeCalendarInvites: false, + RevokeSessions: false, + removePermissions: false, + RemoveRules: false, + ResetPass: false, + KeepCopy: false, + DeleteUser: false, + RemoveMobile: false, + DisableSignIn: false, + RemoveMFADevices: false, + RemoveTeamsPhoneDID: false, + ClearImmutableId: false, + }; + + let offboardingDefaults = {}; + + if (tenantOffboardingDefaults) { + try { + const parsed = JSON.parse(tenantOffboardingDefaults); + // Merge defaults with parsed values to ensure all fields are defined + offboardingDefaults = { + offboardingDefaults: { ...defaultOffboardingValues, ...parsed } + }; + } catch { + offboardingDefaults = { offboardingDefaults: defaultOffboardingValues }; + } + } else { + offboardingDefaults = { offboardingDefaults: defaultOffboardingValues }; + } + + offboardingFormControl.reset(offboardingDefaults); } - }, [tenantDetails.isSuccess, tenantDetails.data]); + }, [tenantDetails.isSuccess, tenantDetails.data, id]); const handleTabChange = (event, newValue) => { setValue(newValue); }; + const handleResetOffboardingDefaults = () => { + const defaultOffboardingValues = { + ConvertToShared: false, + RemoveGroups: false, + HideFromGAL: false, + RemoveLicenses: false, + removeCalendarInvites: false, + RevokeSessions: false, + removePermissions: false, + RemoveRules: false, + ResetPass: false, + KeepCopy: false, + DeleteUser: false, + RemoveMobile: false, + DisableSignIn: false, + RemoveMFADevices: false, + RemoveTeamsPhoneDID: false, + ClearImmutableId: false, + }; + + offboardingFormControl.reset({ offboardingDefaults: defaultOffboardingValues }); + }; + return ( { + - + { isFetching={tenantDetails.isFetching} /> - + { + + + + + Tenant-Specific Offboarding Defaults + + Configure default offboarding settings specifically for this tenant. These settings will override user defaults when offboarding users in this tenant. + + + { + const offboardingSettings = values.offboardingDefaults || values; + return { + customerId: id, + offboardingDefaults: offboardingSettings, + }; + }} + hideTitle={true} + > + + + + + + Click "Reset All to Off" to turn off all options, then click "Save" to clear tenant defaults. + + + + + + + ); diff --git a/src/pages/tenant/administration/tenants/global-variables.js b/src/pages/tenant/administration/tenants/global-variables.js new file mode 100644 index 000000000000..9ebdb7b8b5ee --- /dev/null +++ b/src/pages/tenant/administration/tenants/global-variables.js @@ -0,0 +1,21 @@ +import tabOptions from "./tabOptions"; +import { TabbedLayout } from "../../../../layouts/TabbedLayout"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippCustomVariables from "../../../../components/CippComponents/CippCustomVariables.jsx"; +import CippPageCard from "../../../../components/CippCards/CippPageCard.jsx"; + +const Page = () => { + return ( + + + + ); +}; + +Page.getLayout = (page) => ( + + {page} + +); + +export default Page; diff --git a/src/pages/tenant/administration/tenants/groups/add.js b/src/pages/tenant/administration/tenants/groups/add.js deleted file mode 100644 index 3e5729d97640..000000000000 --- a/src/pages/tenant/administration/tenants/groups/add.js +++ /dev/null @@ -1,57 +0,0 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { useForm } from "react-hook-form"; -import { ApiPostCall } from "../../../../../api/ApiCall"; -import { useRouter } from "next/router"; -import { Stack, Box, Typography } from "@mui/material"; - -import { Grid } from "@mui/system"; - -import CippPageCard from "../../../../../components/CippCards/CippPageCard"; -import { CippApiResults } from "/src/components/CippComponents/CippApiResults"; -import CippAddEditTenantGroups from "/src/components/CippComponents/CippAddEditTenantGroups"; - -const Page = () => { - const router = useRouter(); - const formControl = useForm({ - mode: "onChange", - }); - - const addGroupApi = ApiPostCall({ - urlFromData: true, - relatedQueryKeys: ["TenantGroupListPage"], - }); - - const handleAddGroup = (data) => { - addGroupApi.mutate({ - url: "/api/EditTenantGroup", - data: { - Action: "AddEdit", - groupName: data.groupName, - groupDescription: data.groupDescription, - }, - }); - }; - - return ( - - - - - - - - - - - - ); -}; - -Page.getLayout = (page) => {page}; - -export default Page; diff --git a/src/pages/tenant/administration/tenants/groups/edit.js b/src/pages/tenant/administration/tenants/groups/edit.js index bdc151beb761..f46b1d4d47ad 100644 --- a/src/pages/tenant/administration/tenants/groups/edit.js +++ b/src/pages/tenant/administration/tenants/groups/edit.js @@ -1,13 +1,11 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; import { useForm } from "react-hook-form"; -import { ApiGetCall, ApiPostCall } from "/src/api/ApiCall"; +import { ApiGetCall } from "../../../../../api/ApiCall"; import { useEffect } from "react"; import { useRouter } from "next/router"; import { Box } from "@mui/material"; -import { Grid } from "@mui/system"; -import CippPageCard from "/src/components/CippCards/CippPageCard"; -import { CippApiResults } from "/src/components/CippComponents/CippApiResults"; -import CippAddEditTenantGroups from "/src/components/CippComponents/CippAddEditTenantGroups"; +import CippFormPage from "../../../../../components/CippFormPages/CippFormPage"; +import CippAddEditTenantGroups from "../../../../../components/CippComponents/CippAddEditTenantGroups"; const Page = () => { const router = useRouter(); @@ -21,53 +19,179 @@ const Page = () => { queryKey: id ? `TenantGroupProperties_${id}` : null, }); - const updateGroupApi = ApiPostCall({ - urlFromData: true, - relatedQueryKeys: [ - `TenantGroupProperties_${id}`, - "TenantGroupListPage", - ], - }); - useEffect(() => { if (groupDetails.isSuccess && groupDetails.data) { + const groupData = groupDetails?.data?.Results?.[0]; + + // Determine if this is a dynamic or static group + const isDynamic = groupData?.GroupType === "dynamic" && groupData?.DynamicRules; + + // Format dynamic rules if they exist + let formattedDynamicRules = [{}]; + if (isDynamic && groupData.DynamicRules) { + try { + let rules; + if (Array.isArray(groupData.DynamicRules)) { + rules = groupData.DynamicRules; + } else if (typeof groupData.DynamicRules === "string") { + rules = JSON.parse(groupData.DynamicRules); + } else if (typeof groupData.DynamicRules === "object") { + rules = [groupData.DynamicRules]; + } else { + rules = []; + } + + formattedDynamicRules = rules.map((rule) => { + // Handle value - it's always an array of objects from the backend + let valueForForm; + + // Special handling for custom variables (nested structure with variableName and value) + if ( + rule.property === "customVariable" && + typeof rule.value === "object" && + rule.value?.variableName + ) { + valueForForm = { + variableName: rule.value.variableName, + value: rule.value.value, + }; + } else if (Array.isArray(rule.value)) { + // If it's an array of objects, extract all values + valueForForm = rule.value.map((item) => ({ + label: item.label || item.value || item, + value: item.value || item, + })); + // For single selection operators, take just the first item + if (rule.operator === "eq" || rule.operator === "ne") { + valueForForm = valueForForm[0]; + } + } else if (typeof rule.value === "object" && rule.value?.value) { + // If it's a single object with a value property + valueForForm = { + label: rule.value.label || rule.value.value, + value: rule.value.value, + }; + } else { + // Simple value + valueForForm = { + label: rule.value, + value: rule.value, + }; + } + + return { + property: { + label: + rule.property === "availableLicense" + ? "Available License" + : rule.property === "availableServicePlan" + ? "Available Service Plan" + : rule.property === "delegatedAccessStatus" + ? "Delegated Access Status" + : rule.property === "tenantGroupMember" + ? "Member of Tenant Group" + : rule.property === "customVariable" + ? "Custom Variable" + : rule.property, + value: rule.property, + type: + rule.property === "availableLicense" + ? "license" + : rule.property === "availableServicePlan" + ? "servicePlan" + : rule.property === "delegatedAccessStatus" + ? "delegatedAccess" + : rule.property === "tenantGroupMember" + ? "tenantGroup" + : rule.property === "customVariable" + ? "customVariable" + : "unknown", + }, + operator: { + label: + rule.operator === "eq" + ? "Equals" + : rule.operator === "ne" + ? "Not Equals" + : rule.operator === "in" + ? "In" + : rule.operator === "notIn" + ? "Not In" + : rule.operator === "like" + ? "Contains" + : rule.operator === "notlike" + ? "Does Not Contain" + : rule.operator, + value: rule.operator, + }, + value: valueForForm, + }; + }); + } catch (e) { + console.error("Error parsing dynamic rules:", e, groupData.DynamicRules); + formattedDynamicRules = [{}]; + } + } + formControl.reset({ groupId: id, - groupName: groupDetails?.data?.Results?.[0]?.Name ?? "", - groupDescription: groupDetails?.data?.Results?.[0]?.Description ?? "", - members: - groupDetails?.data?.Results?.[0]?.Members?.map((member) => ({ - label: member.displayName, - value: member.customerId, - })) || [], + groupName: groupData?.Name ?? "", + groupDescription: groupData?.Description ?? "", + groupType: isDynamic ? "dynamic" : "static", + ruleLogic: groupData?.RuleLogic || "and", + members: !isDynamic + ? groupData?.Members?.map((member) => ({ + label: member.displayName, + value: member.customerId, + })) || [] + : [], + dynamicRules: formattedDynamicRules, }); } - }, [groupDetails.isSuccess, groupDetails.data]); + }, [groupDetails.isSuccess, groupDetails.data, id]); + + const customDataFormatter = (values) => { + const formattedData = { + ...values, + Action: "AddEdit", + }; + + // If it's a dynamic group, format the rules for the backend + if (values.groupType === "dynamic" && values.dynamicRules) { + formattedData.dynamicRules = values.dynamicRules.map((rule) => ({ + property: rule.property?.value || rule.property, + operator: rule.operator?.value || rule.operator, + value: rule.value, + })); + formattedData.ruleLogic = values.ruleLogic || "and"; + } + + return formattedData; + }; return ( - - - - - - + - - - + ); }; diff --git a/src/pages/tenant/administration/tenants/groups/index.js b/src/pages/tenant/administration/tenants/groups/index.js index 8d3e4c328ceb..5095155edfef 100644 --- a/src/pages/tenant/administration/tenants/groups/index.js +++ b/src/pages/tenant/administration/tenants/groups/index.js @@ -1,23 +1,48 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../../layouts/index.js"; +import { TabbedLayout } from "../../../../../layouts/TabbedLayout"; +import { CippTablePage } from "../../../../../components/CippComponents/CippTablePage.jsx"; import tabOptions from "../tabOptions"; -import { Edit } from "@mui/icons-material"; -import { Button, SvgIcon } from "@mui/material"; -import { PlusIcon, TrashIcon } from "@heroicons/react/24/outline"; -import NextLink from "next/link"; +import { Edit, PlayArrow, GroupAdd, ViewList } from "@mui/icons-material"; +import { TrashIcon } from "@heroicons/react/24/outline"; +import { CippAddTenantGroupDrawer } from "../../../../../components/CippComponents/CippAddTenantGroupDrawer"; +import { CippApiLogsDrawer } from "../../../../../components/CippComponents/CippApiLogsDrawer"; +import { CippTenantGroupOffCanvas } from "../../../../../components/CippComponents/CippTenantGroupOffCanvas"; +import { CippApiDialog } from "../../../../../components/CippComponents/CippApiDialog.jsx"; +import { Box, Button } from "@mui/material"; +import { useDialog } from "../../../../../hooks/use-dialog.js"; +import { useState } from "react" const Page = () => { const pageTitle = "Tenant Groups"; + const createDefaultGroupsDialog = useDialog(); + const [showUsage, setShowUsage] = useState(false); - const simpleColumns = ["Name", "Description", "Members"]; + const simpleColumns = showUsage + ? ["Name", "Description", "GroupType", "Members", "Usage"] + : ["Name", "Description", "GroupType", "Members"]; + const offcanvas = { + children: (row) => { + return ; + }, + size: "xl", + }; const actions = [ { label: "Edit Group", link: "/tenant/administration/tenants/groups/edit?id=[Id]", icon: , }, + { + label: "Run Dynamic Rules", + icon: , + url: "/api/ExecRunTenantGroupRule", + type: "POST", + data: { groupId: "Id" }, + queryKey: "TenantGroupListPage", + confirmText: "Are you sure you want to run dynamic rules for [Name]?", + condition: (row) => row.GroupType === "dynamic", + }, { label: "Delete Group", icon: , @@ -26,35 +51,51 @@ const Page = () => { data: { action: "Delete", groupId: "Id" }, queryKey: "TenantGroupListPage", confirmText: "Are you sure you want to delete [Name]?", - } + }, ]; return ( - - - - } - > - Add Tenant Group - - } - /> + <> + + + + + + + } + offCanvas={offcanvas} + /> + + ); }; diff --git a/src/pages/tenant/administration/tenants/index.js b/src/pages/tenant/administration/tenants/index.js index 83e23d5504aa..b6539a5ad323 100644 --- a/src/pages/tenant/administration/tenants/index.js +++ b/src/pages/tenant/administration/tenants/index.js @@ -1,10 +1,8 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { TabbedLayout } from "/src/layouts/TabbedLayout"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Button, SvgIcon } from "@mui/material"; -import { AddBusinessOutlined, Edit } from "@mui/icons-material"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { TabbedLayout } from "../../../../layouts/TabbedLayout"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { DeleteOutline, Edit } from "@mui/icons-material"; import tabOptions from "./tabOptions"; -import NextLink from "next/link"; const Page = () => { const pageTitle = "Tenants"; @@ -15,19 +13,36 @@ const Page = () => { "portal_m365", "portal_exchange", "portal_entra", + "portal_sharepoint", "portal_teams", "portal_azure", "portal_intune", "portal_security", "portal_compliance", + "portal_platform", + "portal_bi", ]; const actions = [ { label: "Edit Tenant", - link: "/tenant/administration/tenants/edit?id=[customerId]", + link: "/tenant/manage/edit?tenantFilter=[defaultDomainName]", icon: , }, + { + label: "Configure Backup", + link: "/tenant/manage/configuration-backup?tenantFilter=[defaultDomainName]", + icon: , + }, + { + label: "Delete Capabilities Cache", + type: "GET", + url: "/api/RemoveTenantCapabilitiesCache", + data: { defaultDomainName: "defaultDomainName" }, + confirmText: "Are you sure you want to delete the capabilities cache for this tenant?", + color: "info", + icon: , + }, ]; return ( diff --git a/src/pages/tenant/administration/tenants/tabOptions.json b/src/pages/tenant/administration/tenants/tabOptions.json index 66f0af8440a1..f36fc14e96d0 100644 --- a/src/pages/tenant/administration/tenants/tabOptions.json +++ b/src/pages/tenant/administration/tenants/tabOptions.json @@ -6,5 +6,9 @@ { "label": "Groups", "path": "/tenant/administration/tenants/groups" + }, + { + "label": "Global Variables", + "path": "/tenant/administration/tenants/global-variables" } ] diff --git a/src/pages/tenant/backup/backup-wizard/add.jsx b/src/pages/tenant/backup/backup-wizard/add.jsx index fa6a9dede065..d4efe84bcbda 100644 --- a/src/pages/tenant/backup/backup-wizard/add.jsx +++ b/src/pages/tenant/backup/backup-wizard/add.jsx @@ -3,10 +3,10 @@ import { Typography } from "@mui/material"; import { Grid } from "@mui/system"; import { useForm } from "react-hook-form"; import { omit } from "lodash"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { useSettings } from "/src/hooks/use-settings"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { useSettings } from "../../../../hooks/use-settings"; import { CippFormTenantSelector } from "../../../../components/CippComponents/CippFormTenantSelector"; const CreateBackup = () => { @@ -59,7 +59,7 @@ const CreateBackup = () => { Wizard. Backups run daily or on demand by clicking the backup now button. - + { /> - + Identity - + { formControl={formControl} /> - + - + Conditional Access - + { formControl={formControl} /> - {/* Optional: Add an empty Grid item to balance the layout */} - + {/* Optional: Add an empty Grid to balance the layout */} + - + Intune - + { formControl={formControl} /> - + { formControl={formControl} /> - + { formControl={formControl} /> - {/* Add an empty Grid item to fill the second column */} - + {/* Add an empty Grid to fill the second column */} + - + Email Security - + { formControl={formControl} /> - + { /> - + CIPP - + { formControl={formControl} /> - + { formControl={formControl} /> - {/* Add an empty Grid item to fill the second column */} - + {/* Add an empty Grid to fill the second column */} + ); diff --git a/src/pages/tenant/backup/backup-wizard/index.js b/src/pages/tenant/backup/backup-wizard/index.js index f7b9e0b6b452..59b1f67b6c25 100644 --- a/src/pages/tenant/backup/backup-wizard/index.js +++ b/src/pages/tenant/backup/backup-wizard/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { Button } from "@mui/material"; import { Restore, Backup } from "@mui/icons-material"; import Link from "next/link"; diff --git a/src/pages/tenant/backup/backup-wizard/restore.jsx b/src/pages/tenant/backup/backup-wizard/restore.jsx index 566d1d6857b7..12a628ddc16f 100644 --- a/src/pages/tenant/backup/backup-wizard/restore.jsx +++ b/src/pages/tenant/backup/backup-wizard/restore.jsx @@ -1,12 +1,12 @@ -import React, { useState, useEffect } from "react"; +import { useState, useEffect } from "react"; import { Alert, Divider, Typography } from "@mui/material"; import { Grid } from "@mui/system"; -import { useForm, useWatch } from "react-hook-form"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { useSettings } from "/src/hooks/use-settings"; -import { CippFormCondition } from "/src/components/CippComponents/CippFormCondition"; +import { useForm } from "react-hook-form"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { useSettings } from "../../../../hooks/use-settings"; +import { CippFormCondition } from "../../../../components/CippComponents/CippFormCondition"; import { Chip, Stack } from "@mui/material"; const RestoreBackupForm = () => { @@ -108,7 +108,7 @@ const RestoreBackupForm = () => { {/* Backup Selector */} - + { {/* Restore Settings */} - + Restore Settings {/* Identity */} - + Identity { {/* Conditional Access */} - + Conditional Access { {/* Intune */} - + Intune { {/* Email Security */} - + Email Security { {/* CIPP */} - + CIPP { {/* Overwrite Existing Entries */} - + { compareType="is" compareValue={true} > - + Warning: Overwriting existing entries will remove the current settings and replace them with the backup settings. If you have selected to restore @@ -247,10 +247,10 @@ const RestoreBackupForm = () => { {/* Send Results To */} - + Send Restore results to: - + { formControl={formControl} /> - + - + - + {/* Review and Confirm */} - + Review and Confirm Please review the selected options before submitting. - + Selected Tenant: {tenantFilter} - + Selected Backup: {formControl.watch("backup")?.label || "None selected"} - + Overwrite Existing Configuration: {formControl.watch("overwrite") ? "Yes" : "No"} - + Send Results To: diff --git a/src/pages/tenant/conditional/deploy-vacation/add.jsx b/src/pages/tenant/conditional/deploy-vacation/add.jsx index 2e3a1bad9665..8ca5bbd67cc5 100644 --- a/src/pages/tenant/conditional/deploy-vacation/add.jsx +++ b/src/pages/tenant/conditional/deploy-vacation/add.jsx @@ -1,25 +1,25 @@ import React from "react"; -import { Box, Divider, Typography } from "@mui/material"; +import { Box, Divider, Stack, Typography } from "@mui/material"; import { Grid } from "@mui/system"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { useForm } from "react-hook-form"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { useSettings } from "/src/hooks/use-settings"; -import { CippFormUserSelector } from "/src/components/CippComponents/CippFormUserSelector"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { useForm, useWatch } from "react-hook-form"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { CippFormUserSelector } from "../../../../components/CippComponents/CippFormUserSelector"; +import { CippFormTenantSelector } from "../../../../components/CippComponents/CippFormTenantSelector"; const Page = () => { - const userSettingsDefaults = useSettings(); - const tenantDomain = userSettingsDefaults?.currentTenant; - const formControl = useForm({ mode: "onChange", defaultValues: { - tenantFilter: tenantDomain, vacation: true, }, }); + // Watch the selected tenant to update dependent fields + const selectedTenant = useWatch({ control: formControl.control, name: "tenantFilter" }); + const tenantDomain = selectedTenant?.value || selectedTenant; + return ( <> { postUrl="/api/ExecCAExclusion" customDataformatter={(values) => { const shippedValues = { - tenantFilter: tenantDomain, - UserId: values.UserId?.value, + tenantFilter: values.tenantFilter?.value || values.tenantFilter, + Users: values.Users, PolicyId: values.PolicyId?.value, StartDate: values.startDate, EndDate: values.endDate, @@ -40,40 +40,67 @@ const Page = () => { return shippedValues; }} > - + Vacation mode adds scheduled tasks to add and remove users from Conditional Access (CA) exclusions for a specific period of time. Select the CA policy and the date range. - - + + + + + {/* User Selector */} - + {/* Conditional Access Policy Selector */} - + `${option.displayName}`, - valueField: "id", - }} + api={ + tenantDomain + ? { + queryKey: `ListConditionalAccessPolicies-${tenantDomain}`, + url: "/api/ListConditionalAccessPolicies", + data: { tenantFilter: tenantDomain }, + dataKey: "Results", + labelField: (option) => `${option.displayName}`, + valueField: "id", + showRefresh: true, + } + : null + } multiple={false} formControl={formControl} validators={{ @@ -85,11 +112,12 @@ const Page = () => { }, }} required={true} + disabled={!tenantDomain} /> {/* Start Date Picker */} - + { {/* End Date Picker */} - + { /> - + ); diff --git a/src/pages/tenant/conditional/deploy-vacation/index.js b/src/pages/tenant/conditional/deploy-vacation/index.js index e1c24e2a761c..cce34f8d2dc7 100644 --- a/src/pages/tenant/conditional/deploy-vacation/index.js +++ b/src/pages/tenant/conditional/deploy-vacation/index.js @@ -1,59 +1,22 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippTablePage from "/src/components/CippComponents/CippTablePage"; -import { Button } from "@mui/material"; -import { EventAvailable } from "@mui/icons-material"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { Alert, Box, Button } from "@mui/material"; import Link from "next/link"; -import { Delete } from "@mui/icons-material"; const Page = () => { - const actions = [ - { - label: "Cancel Vacation Mode", - type: "POST", - url: "/api/RemoveScheduledItem", - data: { ID: "RowKey" }, - confirmText: - "Are you sure you want to cancel this vacation mode entry? This might mean the user will remain in vacation mode permanently.", - icon: , - multiPost: false, - }, - ]; - return ( - - - - } - title="Vacation Mode" - apiUrl="/api/ListScheduledItems?Type=Set-CIPPCAExclusion" - queryKey="VacationMode" - tenantInTitle={false} - actions={actions} - simpleColumns={[ - "Name", - "TaskState", - "ScheduledTime", - "Parameters.ExclusionType", - "Parameters.UserName", - "Parameters.PolicyId", - ]} - offCanvas={{ - extendedInfoFields: [ - "Name", - "TaskState", - "ScheduledTime", - "Parameters.UserName", - "Parameters.PolicyId", - "Tenant", - "ExecutedTime", - ], - actions: actions, - }} - /> + + + Vacation Mode has moved to{" "} + Identity Management → Administration → Vacation Mode. + + + ); }; diff --git a/src/pages/tenant/conditional/deploy/index.js b/src/pages/tenant/conditional/deploy/index.js deleted file mode 100644 index 1f9bf4feea32..000000000000 --- a/src/pages/tenant/conditional/deploy/index.js +++ /dev/null @@ -1,17 +0,0 @@ - -import { Layout as DashboardLayout } from "/src/layouts/index.js"; - -const Page = () => { - const pageTitle = "Deploy CA Policies"; - - return ( -
    -

    {pageTitle}

    -

    This is a placeholder page for the deploy ca policies section.

    -
    - ); -}; - -Page.getLayout = (page) => {page}; - -export default Page; diff --git a/src/pages/tenant/conditional/list-named-locations/add.jsx b/src/pages/tenant/conditional/list-named-locations/add.jsx index 17860bb8b882..e7ba7ebe610e 100644 --- a/src/pages/tenant/conditional/list-named-locations/add.jsx +++ b/src/pages/tenant/conditional/list-named-locations/add.jsx @@ -2,12 +2,12 @@ import React from "react"; import { Typography } from "@mui/material"; import { Grid } from "@mui/system"; import { useForm } from "react-hook-form"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import CippFormPage from "/src/components/CippFormPages/CippFormPage"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { CippFormTenantSelector } from "/src/components/CippComponents/CippFormTenantSelector"; -import { CippFormCondition } from "/src/components/CippComponents/CippFormCondition"; -import countryList from "/src/data/countryList.json"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormComponent from "../../../../components/CippComponents/CippFormComponent"; +import { CippFormTenantSelector } from "../../../../components/CippComponents/CippFormTenantSelector"; +import { CippFormCondition } from "../../../../components/CippComponents/CippFormCondition"; +import countryList from "../../../../data/countryList.json"; const DeployNamedLocationForm = () => { const formControl = useForm({ @@ -32,17 +32,19 @@ const DeployNamedLocationForm = () => {
    - + - + { /> - + { compareType="is" compareValue="IPLocation" > - + { validators={{ required: "IPs are required" }} /> - + { compareType="is" compareValue="Countries" > - + { validators={{ required: "At least one country must be selected" }} /> - + { const pageTitle = "Named Locations"; const actions = [ + { + label: "Rename named location", + type: "POST", + url: "/api/ExecNamedLocation", + icon: , + data: { + namedLocationId: "id", + change: "!rename", + }, + fields: [{ type: "textField", name: "input", label: "New Name" }], + confirmText: "Enter the new name for this named location.", + }, + { + label: "Mark as Trusted", + type: "POST", + url: "/api/ExecNamedLocation", + icon: , + data: { + namedLocationId: "id", + change: "!setTrusted", + }, + confirmText: "Are you sure you want to mark this IP location as trusted?", + condition: (row) => + row["@odata.type"] == "#microsoft.graph.ipNamedLocation" && !row.isTrusted, + }, + { + label: "Mark as Untrusted", + type: "POST", + url: "/api/ExecNamedLocation", + icon: , + data: { + namedLocationId: "id", + change: "!setUntrusted", + }, + confirmText: "Are you sure you want to mark this IP location as untrusted?", + condition: (row) => row["@odata.type"] == "#microsoft.graph.ipNamedLocation" && row.isTrusted, + }, { label: "Add location to named location", type: "POST", @@ -16,10 +61,28 @@ const Page = () => { icon: , data: { namedLocationId: "id", - change: "addLocation", + change: "!addLocation", }, - fields: [{ type: "textField", name: "input", label: "Country Code" }], - confirmText: "Enter a two-letter country code, e.g., US.", + fields: [ + { + type: "autoComplete", + name: "input", + label: "Country", + validators: { + required: { value: true, message: "Please select a country" }, + }, + options: (row) => { + const existingCountries = row?.countriesAndRegions || []; + return countryList + .filter(({ Code }) => !existingCountries.includes(Code)) + .map(({ Code, Name }) => ({ + value: Code, + label: `${Name} (${Code})`, + })); + }, + }, + ], + confirmText: "Select a country to add to this named location.", condition: (row) => row["@odata.type"] == "#microsoft.graph.countryNamedLocation", }, { @@ -29,11 +92,41 @@ const Page = () => { icon: , data: { namedLocationId: "id", - change: "removeLocation", + change: "!removeLocation", }, - fields: [{ type: "textField", name: "input", label: "Country Code" }], - confirmText: "Enter a two-letter country code, e.g., US.", - condition: (row) => row["@odata.type"] == "#microsoft.graph.countryNamedLocation", + fields: [ + { + type: "autoComplete", + name: "input", + label: "Country", + multiple: true, + validators: { + required: { value: true, message: "Please select at least one country" }, + validate: (value, formValues, row) => { + const totalCountries = row?.countriesAndRegions?.length || 0; + const selectedCount = Array.isArray(value) ? value.length : value ? 1 : 0; + if (selectedCount >= totalCountries) { + return "You must leave at least one country in the named location"; + } + return true; + }, + }, + options: (row) => { + const currentCountries = row?.countriesAndRegions || []; + return currentCountries.map((code) => { + const country = countryList.find((c) => c.Code === code); + return { + value: code, + label: country ? `${country.Name} (${code})` : code, + }; + }); + }, + }, + ], + confirmText: "Select countries to remove from this named location.", + condition: (row) => + row["@odata.type"] == "#microsoft.graph.countryNamedLocation" && + (row.countriesAndRegions?.length || 0) > 1, }, { label: "Add IP to named location", @@ -42,10 +135,49 @@ const Page = () => { icon: , data: { namedLocationId: "id", - change: "addIp", + change: "!addIp", }, - fields: [{ type: "textField", name: "input", label: "IP" }], - confirmText: "Enter an IP in CIDR format, e.g., 1.1.1.1/32.", + fields: [ + { + type: "textField", + name: "input", + label: "IP", + validators: { + required: { value: true, message: "IP address is required" }, + validate: (value) => { + if (!value) return true; + // IPv4 CIDR pattern + const ipv4Cidr = + /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(\d{1,3})$/; + // IPv6 CIDR pattern (simplified - covers most common formats) + const ipv6Cidr = + /^(?:(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,7}:|(?:[0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,5}(?::[0-9a-fA-F]{1,4}){1,2}|(?:[0-9a-fA-F]{1,4}:){1,4}(?::[0-9a-fA-F]{1,4}){1,3}|(?:[0-9a-fA-F]{1,4}:){1,3}(?::[0-9a-fA-F]{1,4}){1,4}|(?:[0-9a-fA-F]{1,4}:){1,2}(?::[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:(?::[0-9a-fA-F]{1,4}){1,6}|:(?::[0-9a-fA-F]{1,4}){1,7}|::)\/(\d{1,3})$/; + + const ipv4Match = value.match(ipv4Cidr); + const ipv6Match = value.match(ipv6Cidr); + + if (ipv4Match) { + const prefix = parseInt(ipv4Match[1], 10); + if (prefix < 9 || prefix > 32) { + return "CIDR prefix must be between /9 and /32 for IPv4"; + } + return true; + } + + if (ipv6Match) { + const prefix = parseInt(ipv6Match[1], 10); + if (prefix < 9 || prefix > 128) { + return "CIDR prefix must be between /9 and /128 for IPv6"; + } + return true; + } + + return "Invalid CIDR format. Use IPv4 (e.g., 1.1.1.1/32) or IPv6 (e.g., 2001:db8::/32)"; + }, + }, + }, + ], + confirmText: "Enter an IP in CIDR format, e.g., 1.1.1.1/32 or 2001:db8::/32.", condition: (row) => row["@odata.type"] == "#microsoft.graph.ipNamedLocation", }, { @@ -55,25 +187,59 @@ const Page = () => { icon: , data: { namedLocationId: "id", - change: "removeIp", + change: "!removeIp", }, - fields: [{ type: "textField", name: "input", label: "IP" }], - confirmText: "Enter an IP in CIDR format, e.g., 1.1.1.1/32.", - condition: (row) => row["@odata.type"] == "#microsoft.graph.ipNamedLocation", + fields: [ + { + type: "autoComplete", + name: "input", + label: "IP", + multiple: true, + validators: { + required: { value: true, message: "Please select at least one IP" }, + validate: (value, formValues, row) => { + const totalIps = row?.ipRanges?.length || 0; + const selectedCount = Array.isArray(value) ? value.length : value ? 1 : 0; + if (selectedCount >= totalIps) { + return "You must leave at least one IP in the named location"; + } + return true; + }, + }, + options: (row) => { + const ipRanges = row?.ipRanges || []; + return ipRanges.map((ip) => ({ + value: ip.cidrAddress, + label: ip.cidrAddress, + })); + }, + }, + ], + confirmText: "Select IPs to remove from this named location.", + condition: (row) => + row["@odata.type"] == "#microsoft.graph.ipNamedLocation" && + (row.ipRanges?.length || 0) > 1, + }, + { + label: "Delete named location", + type: "POST", + url: "/api/ExecNamedLocation", + icon: , + data: { + namedLocationId: "id", + change: "!delete", + }, + confirmText: + "Are you sure you want to delete this named location? This action cannot be undone.", + color: "error", }, ]; - const offCanvas = { - extendedInfoFields: ["displayName", "rangeOrLocation"], - actions: actions, - }; - return ( - + + + + } title={pageTitle} apiUrl={apiUrl} + apiDataKey="Results" actions={actions} offCanvas={offCanvas} simpleColumns={simpleColumns} @@ -132,5 +184,5 @@ const Page = () => { ); }; -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => {page}; export default Page; diff --git a/src/pages/tenant/conditional/list-template/edit.jsx b/src/pages/tenant/conditional/list-template/edit.jsx new file mode 100644 index 000000000000..9521ddae99ed --- /dev/null +++ b/src/pages/tenant/conditional/list-template/edit.jsx @@ -0,0 +1,142 @@ +import React, { useEffect, useState } from "react"; +import { Alert, Box, Typography } from "@mui/material"; +import { useForm } from "react-hook-form"; +import { useRouter } from "next/router"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import CippFormPage from "../../../../components/CippFormPages/CippFormPage"; +import CippFormSkeleton from "../../../../components/CippFormPages/CippFormSkeleton"; +import { ApiGetCall } from "../../../../api/ApiCall"; +import CippTemplateFieldRenderer from "../../../../components/CippComponents/CippTemplateFieldRenderer"; + +const EditCATemplate = () => { + const router = useRouter(); + const { GUID } = router.query; + const [templateData, setTemplateData] = useState(null); + const [originalData, setOriginalData] = useState(null); + + const formControl = useForm({ mode: "onChange" }); + + // Fetch the template data + const templateQuery = ApiGetCall({ + url: `/api/ListCATemplates?GUID=${GUID}`, + queryKey: `CATemplate-${GUID}`, + enabled: !!GUID, + }); + + useEffect(() => { + if (templateQuery.isSuccess && templateQuery.data) { + // Find the template with matching GUID + const template = Array.isArray(templateQuery.data) + ? templateQuery.data.find((t) => t.GUID === GUID) + : templateQuery.data; + + if (template) { + setTemplateData(template); + setOriginalData(template); + } + } + }, [templateQuery.isSuccess, templateQuery.data, GUID]); + + // Custom data formatter to convert autoComplete objects to values + const customDataFormatter = (values) => { + // Recursively extract values from autoComplete objects and fix @odata issues + const extractValues = (obj) => { + if (!obj) return obj; + + // If this is an autoComplete object with label/value, return just the value + if ( + obj && + typeof obj === "object" && + obj.hasOwnProperty("value") && + obj.hasOwnProperty("label") + ) { + return obj.value; + } + + // If it's an array, process each item + if (Array.isArray(obj)) { + return obj.map((item) => extractValues(item)); + } + + // If it's an object, process each property + if (typeof obj === "object") { + const result = {}; + Object.keys(obj).forEach((key) => { + const value = extractValues(obj[key]); + + // Handle @odata objects created by React Hook Form's dot notation interpretation + if (key.endsWith("@odata") && value && typeof value === "object") { + // Convert @odata objects back to dot notation properties + Object.keys(value).forEach((odataKey) => { + // Always try to restore the original @odata property, regardless of form value + const baseKey = key.replace("@odata", ""); + const originalKey = `${baseKey}@odata.${odataKey}`; + const originalValue = getOriginalValueByPath(originalData, originalKey); + if (originalValue !== undefined) { + result[originalKey] = originalValue; + } + }); + } else { + result[key] = value; + } + }); + return result; + } + + // For primitive values, return as-is + return obj; + }; + + // Helper function to get original value by dot-notation path + const getOriginalValueByPath = (obj, path) => { + const keys = path.split("."); + let current = obj; + for (const key of keys) { + if (current && typeof current === "object" && key in current) { + current = current[key]; + } else { + return undefined; + } + } + return current; + }; + + // Extract values from the entire form data and include GUID + const processedValues = extractValues(values); + + return { + GUID, + ...processedValues, + }; + }; + + return ( + + + {templateQuery.isLoading ? ( + + ) : templateQuery.isError || !templateData ? ( + Error loading template or template not found. + ) : ( + + )} + + + ); +}; + +EditCATemplate.getLayout = (page) => {page}; + +export default EditCATemplate; diff --git a/src/pages/tenant/conditional/list-template/index.js b/src/pages/tenant/conditional/list-template/index.js index 0ead857b8ea6..41221d021582 100644 --- a/src/pages/tenant/conditional/list-template/index.js +++ b/src/pages/tenant/conditional/list-template/index.js @@ -1,19 +1,47 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Button } from "@mui/material"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Button, Box } from "@mui/material"; import CippJsonView from "../../../../components/CippFormPages/CippJSONView"; -import { Delete, GitHub } from "@mui/icons-material"; -import { ApiGetCall } from "/src/api/ApiCall"; +import { Delete, GitHub, Edit, RocketLaunch } from "@mui/icons-material"; +import { ApiGetCall } from "../../../../api/ApiCall"; +import { CippPolicyImportDrawer } from "../../../../components/CippComponents/CippPolicyImportDrawer.jsx"; +import { CippCADeployDrawer } from "../../../../components/CippComponents/CippCADeployDrawer.jsx"; +import { CippApiLogsDrawer } from "../../../../components/CippComponents/CippApiLogsDrawer"; +import { PermissionButton } from "../../../../utils/permissions"; +import { useSettings } from "../../../../hooks/use-settings.js"; +import { useState } from "react"; const Page = () => { const pageTitle = "Available Conditional Access Templates"; + const [deployDrawerOpen, setDeployDrawerOpen] = useState(false); + const [selectedTemplateId, setSelectedTemplateId] = useState(null); + const tenant = useSettings().currentTenant; + const integrations = ApiGetCall({ url: "/api/ListExtensionsConfig", queryKey: "Integrations", refetchOnMount: false, refetchOnReconnect: false, }); + + const handleDeployTemplate = (row) => { + setSelectedTemplateId(row.GUID); + setDeployDrawerOpen(true); + }; const actions = [ + { + label: "Deploy Template", + customFunction: handleDeployTemplate, + noConfirm: true, + icon: , + color: "success", + }, + { + label: "Edit Template", + link: "/tenant/conditional/list-template/edit?GUID=[GUID]", + icon: , + color: "info", + }, { label: "Save to GitHub", type: "POST", @@ -70,20 +98,39 @@ const Page = () => { ]; const offCanvas = { - children: (row) => , + children: (row) => , size: "xl", }; return ( - - } - /> + <> + + + + +
    + {selectedTemplate && ( + + {selectedTemplate?.runManually && ( + + + + } + /> + )} + + + + } + label={`${compliancePercentage}% Compliant`} + variant="outlined" + size="small" + color={ + compliancePercentage === 100 + ? "success" + : compliancePercentage >= 50 + ? "warning" + : "error" + } + /> + + = 80 ? "success" : combinedScore >= 60 ? "warning" : "error" + } + /> + + )} + setFilterMenuAnchor(null)} + > + { + setFilter("all"); + setFilterMenuAnchor(null); + }} + > + All ({allCount}) + + { + setFilter("compliant"); + setFilterMenuAnchor(null); + }} + > + Compliant ({compliantCount}) + + { + setFilter("nonCompliant"); + setFilterMenuAnchor(null); + }} + > + Non-Compliant ({nonCompliantCount}) + + { + setFilter("overridden"); + setFilterMenuAnchor(null); + }} + > + Overridden ({overriddenCount}) + + { + setFilter("nonCompliantWithLicense"); + setFilterMenuAnchor(null); + }} + > + Non-Compliant (License available) ({nonCompliantWithLicenseCount}) + + { + setFilter("nonCompliantWithoutLicense"); + setFilterMenuAnchor(null); + }} + > + Non-Compliant (License not available) ({nonCompliantWithoutLicenseCount}) + + + + {comparisonApi.isError && ( + + + Error fetching comparison data + + + There was an error retrieving the comparison data. Please try running the report + again by clicking the "Run Report Once" button above. + + {comparisonApi.error && ( + + + {comparisonApi.error.message || + JSON.stringify(comparisonApi.error, null, 2)} + + + )} + + )} + + {comparisonApi.isSuccess && + (!comparisonApi.data || comparisonApi.data.length === 0) && ( + + + No comparison data is available. This might be because: + + + + โ€ข The tenant has not been scanned yet + + + โ€ข The template has no standards configured + + + โ€ข There was an issue with the comparison + + + + Try running the report by clicking the "Run Report Once" button above. + + + )} + + {filteredGroupedStandards && Object.keys(filteredGroupedStandards).length === 0 && ( + + + No standards match the selected filter criteria or search query. + + + Try selecting a different filter or modifying the search query. + + + )} + + {Object.keys(filteredGroupedStandards).map((category) => ( + + + {category} + + + {filteredGroupedStandards[category].map((standard, index) => ( + + + + + + + + {standard.complianceStatus === "Compliant" ? ( + + ) : standard.complianceStatus === "Overridden" ? ( + + ) : standard.complianceStatus === "Reporting Disabled" ? ( + + ) : ( + + )} + + + + {standard?.standardName} + + + {standard?.templateActions && + standard.templateActions.length > 0 ? ( + <> + {standard.templateActions.map((action, idx) => { + const actionLabel = + typeof action === "object" + ? action?.label || action?.value || "Unknown" + : action; + const actionValue = + typeof action === "object" ? action?.value : action; + const isRemediate = + actionLabel === "Remediate" || + actionLabel === "remediate"; + + return ( + + {actionValue === "Report" && } + {actionValue === "warn" && ( + + )} + {actionValue === "Remediate" && } + + } + /> + ); + })} + {standard?.autoRemediate && ( + } + /> + )} + + ) : ( + + )} + + + + + + + + {/* Show Expected Configuration with property-by-property breakdown */} + {standard.currentTenantValue?.ExpectedValue !== undefined ? ( + + + Expected Configuration + + {typeof standard.currentTenantValue.ExpectedValue === "object" && + standard.currentTenantValue.ExpectedValue !== null ? ( + + {Object.entries(standard.currentTenantValue.ExpectedValue).map( + ([key, val]) => ( + + + {key} + + + + {val !== undefined + ? JSON.stringify(val, null, 2) + : "Not set"} + + + + ), + )} + + ) : ( + + + {String(standard.currentTenantValue.ExpectedValue)} + + + )} + + ) : ( + + This data has not yet been collected. Collect the data by selecting + Refresh Data from the Actions dropdown on the top of the page. + + )} + + + + + + + + + + + + + + + + + + {currentTenant} + + + + + + + + + + {standard.complianceStatus} + + + {standard.currentTenantValue?.LastRefresh && ( + + + + } + size="small" + label={`${new Date( + standard.currentTenantValue.LastRefresh, + ).toLocaleString()}`} + variant="outlined" + /> + )} + + + + + + {/* Existing tenant comparison content */} + {typeof standard.currentTenantValue?.Value === "object" && + standard.currentTenantValue?.Value !== null ? ( + + {standard.complianceStatus === "Reporting Disabled" ? ( + + Reporting is disabled for this standard in the template + configuration. + + ) : ( + <> + {standard.complianceStatus === "Overridden" ? ( + + This setting is configured by template:{" "} + {standard.overridingTemplateName || + standard.overridingTemplateId} + + ) : standard.complianceStatus === "Compliant" ? ( + <> + {/* Show Current value property-by-property for compliant standards */} + {standard.currentTenantValue?.CurrentValue !== undefined ? ( + typeof standard.currentTenantValue.CurrentValue === + "object" && + standard.currentTenantValue.CurrentValue !== null ? ( + + + Current Configuration + + {Object.entries( + standard.currentTenantValue.CurrentValue, + ).map(([key, val]) => ( + + + {key} + + + + + + + {val !== undefined + ? JSON.stringify(val, null, 2) + : "Not set"} + + + + ))} + + ) : ( + + + Current Configuration + + + + {String(standard.currentTenantValue.CurrentValue)} + + + + ) + ) : null} + + ) : ( + <> + {standard.currentTenantValue?.Value === false && ( + + This setting is not configured correctly + + )} + {/* Show Current value property-by-property for non-compliant standards */} + {standard.currentTenantValue?.CurrentValue !== undefined && + (typeof standard.currentTenantValue.CurrentValue === + "object" && + standard.currentTenantValue.CurrentValue !== null ? ( + + + Current Configuration + + {Object.entries( + standard.currentTenantValue.CurrentValue, + ).map(([key, val]) => { + // Compare with expected value for this property + const expectedVal = + standard.currentTenantValue?.ExpectedValue?.[key]; + const isMatch = (() => { + if (expectedVal === undefined) return false; + // Deep comparison handling nested objects and case-insensitive strings + const compareDeep = (v1, v2) => { + if ( + typeof v1 === "string" && + typeof v2 === "string" + ) { + return v1.toLowerCase() === v2.toLowerCase(); + } + if ( + typeof v1 === "object" && + v1 !== null && + typeof v2 === "object" && + v2 !== null + ) { + return ( + JSON.stringify(v1) === JSON.stringify(v2) + ); + } + return ( + JSON.stringify(v1) === JSON.stringify(v2) + ); + }; + return compareDeep(val, expectedVal); + })(); + + return ( + + + {key} + + + {isMatch && ( + + + + )} + + {val !== undefined + ? JSON.stringify(val, null, 2) + : "Not set"} + + + + ); + })} + + ) : ( + + + Current Configuration + + + + {String(standard.currentTenantValue.CurrentValue)} + + + + ))} + + )} + + {/* Only show values if they're not simple true/false that's already covered by the alerts above */} + {!( + standard.complianceStatus === "Compliant" && + (standard.currentTenantValue?.Value === true || + standard.currentTenantValue?.Value === false) + ) && + Object.entries(standard.currentTenantValue) + .filter( + ([key]) => + key !== "LastRefresh" && + key !== "CurrentValue" && + key !== "ExpectedValue" && + // Skip showing the Value field separately if it's just true/false + !( + key === "Value" && + (standard.currentTenantValue?.Value === true || + standard.currentTenantValue?.Value === false) + ), + ) + .map(([key, value]) => { + const actualValue = key === "Value" ? value : value; + + const standardValueForKey = + standard.standardValue && + typeof standard.standardValue === "object" + ? standard.standardValue[key] + : undefined; + + const isDifferent = + standardValueForKey !== undefined && + JSON.stringify(actualValue) !== + JSON.stringify(standardValueForKey); + + // Format the display value + let displayValue; + if (typeof value === "object" && value !== null) { + displayValue = + value?.label || JSON.stringify(value, null, 2); + } else if (value === true) { + displayValue = "Enabled"; + } else if (value === false) { + displayValue = "Disabled"; + } else { + displayValue = String(value); + } + + return ( + + + {key}: + + + {displayValue} + + + ); + })} + + )} + + ) : ( + + {standard.complianceStatus === "Reporting Disabled" ? ( + + Reporting is disabled for this standard in the template + configuration. + + ) : standard.complianceStatus === "Overridden" ? ( + + This setting is configured by template:{" "} + {standard.overridingTemplateName || + standard.overridingTemplateId} + + ) : standard.complianceStatus === "Compliant" ? ( + <> + {/* Show Current value property-by-property in card view */} + {standard.currentTenantValue?.CurrentValue !== undefined ? ( + typeof standard.currentTenantValue.CurrentValue === + "object" && + standard.currentTenantValue.CurrentValue !== null ? ( + + + Current Configuration + + {Object.entries( + standard.currentTenantValue.CurrentValue, + ).map(([key, val]) => ( + + + {key} + + + + + + + {val !== undefined + ? JSON.stringify(val, null, 2) + : "Not set"} + + + + ))} + + ) : ( + + + Current Configuration + + + + {String(standard.currentTenantValue.CurrentValue)} + + + + ) + ) : null} + + ) : ( + <> + {(standard.currentTenantValue?.Value === false || + standard.currentTenantValue === false) && ( + + This setting is not configured correctly + + )} + {/* Show Current value property-by-property for non-compliant standards in card view */} + {standard.currentTenantValue?.CurrentValue !== undefined ? ( + typeof standard.currentTenantValue.CurrentValue === + "object" && + standard.currentTenantValue.CurrentValue !== null ? ( + + + Current Configuration + + {Object.entries( + standard.currentTenantValue.CurrentValue, + ).map(([key, val]) => { + // Compare with expected value for this property + const expectedVal = + standard.currentTenantValue?.ExpectedValue?.[key]; + const isMatch = (() => { + if (expectedVal === undefined) return false; + // Deep comparison handling nested objects and case-insensitive strings + const compareDeep = (v1, v2) => { + if ( + typeof v1 === "string" && + typeof v2 === "string" + ) { + return v1.toLowerCase() === v2.toLowerCase(); + } + if ( + typeof v1 === "object" && + v1 !== null && + typeof v2 === "object" && + v2 !== null + ) { + return JSON.stringify(v1) === JSON.stringify(v2); + } + return JSON.stringify(v1) === JSON.stringify(v2); + }; + return compareDeep(val, expectedVal); + })(); + + return ( + + + {key} + + + {isMatch && ( + + + + )} + + {val !== undefined + ? JSON.stringify(val, null, 2) + : "Not set"} + + + + ); + })} + + ) : ( + + + Current Configuration + + + + {String(standard.currentTenantValue.CurrentValue)} + + + + ) + ) : standard.currentTenantValue !== undefined && + standard.currentTenantValue?.Value !== true && + standard.currentTenantValue?.Value !== false ? ( + + {String( + standard.currentTenantValue?.Value !== undefined + ? standard.currentTenantValue?.Value + : standard.currentTenantValue, + )} + + ) : standard.currentTenantValue === undefined || + (standard.currentTenantValue?.Value === null && + standard.currentTenantValue?.CurrentValue === undefined && + standard.currentTenantValue?.ExpectedValue === + undefined) ? ( + + This setting is not configured, or data has not been + collected. If you are getting this after data collection, + the tenant might not be licensed for this feature + + ) : null} + + )} + + )} + + + + + {standard.complianceDetails && ( + + + + + + + theme.palette.primary.main, + textDecoration: "underline", + "&:hover": { + textDecoration: "none", + }, + }, + fontSize: "0.875rem", + lineHeight: 1.43, + "& p": { + my: 0, + }, + flex: 1, + }} + > + ( + + {children} + + ), + // Convert paragraphs to spans to avoid unwanted spacing + p: ({ children }) => {children}, + }} + > + {standard.complianceDetails} + + + + + + )} + + ))} + + ))} + + + )} + + + + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/tenant/manage/configuration-backup.js b/src/pages/tenant/manage/configuration-backup.js new file mode 100644 index 000000000000..15154dc5e258 --- /dev/null +++ b/src/pages/tenant/manage/configuration-backup.js @@ -0,0 +1,601 @@ +import { Layout as DashboardLayout } from "../../../layouts/index.js"; +import { HeaderedTabbedLayout } from "../../../layouts/HeaderedTabbedLayout"; +import { useState } from "react"; +import { useForm, useWatch } from "react-hook-form"; +import { + Button, + Box, + Typography, + Alert, + AlertTitle, + Card, + CardContent, + IconButton, + Stack, + Skeleton, + Chip, + CircularProgress, + Drawer, +} from "@mui/material"; +import { Grid } from "@mui/system"; +import { + Storage, + History, + EventRepeat, + Schedule, + SettingsBackupRestore, + Settings, + CheckCircle, + Cancel, + Delete, + Sync, + CloudDownload, + Visibility, + Close, +} from "@mui/icons-material"; +import { useSettings } from "../../../hooks/use-settings"; +import { ApiGetCall, ApiPostCall } from "../../../api/ApiCall"; +import { CippPropertyListCard } from "../../../components/CippCards/CippPropertyListCard"; +import { CippBackupScheduleDrawer } from "../../../components/CippComponents/CippBackupScheduleDrawer"; +import { CippRestoreBackupDrawer } from "../../../components/CippComponents/CippRestoreBackupDrawer"; +import { CippApiDialog } from "../../../components/CippComponents/CippApiDialog"; +import { CippTimeAgo } from "../../../components/CippComponents/CippTimeAgo"; +import { CippFormTenantSelector } from "../../../components/CippComponents/CippFormTenantSelector"; +import CippJsonView from "../../../components/CippFormPages/CippJSONView"; +import { useDialog } from "../../../hooks/use-dialog"; +import ReactTimeAgo from "react-time-ago"; +import tabOptions from "./tabOptions.json"; +import { useRouter } from "next/router"; +import { CippHead } from "../../../components/CippComponents/CippHead"; + +const Page = () => { + const router = useRouter(); + const { templateId } = router.query; + const settings = useSettings(); + const removeDialog = useDialog(); + const tenantFilterForm = useForm({ defaultValues: { tenantFilter: null } }); + const backupTenantFilter = useWatch({ control: tenantFilterForm.control, name: "tenantFilter" }); + // Prioritize URL query parameter, then fall back to settings + const currentTenant = router.query.tenantFilter || settings.currentTenant; + + const downloadAction = ApiPostCall({ + urlFromData: true, + }); + + // State to track drawer and backup preview data + const [drawerOpen, setDrawerOpen] = useState(false); + const [selectedBackup, setSelectedBackup] = useState(null); + const [backupContent, setBackupContent] = useState(null); + const [isLoadingBackup, setIsLoadingBackup] = useState(false); + + // API call to get backup files + const backupList = ApiGetCall({ + url: "/api/ExecListBackup", + data: { + tenantFilter: currentTenant, + Type: "Scheduled", + NameOnly: true, + }, + queryKey: `BackupList-${currentTenant}`, + }); + + // API call to get existing backup configuration/schedule + const existingBackupConfig = ApiGetCall({ + url: "/api/ListScheduledItems", + data: { + showHidden: true, + Type: "New-CIPPBackup", + }, + queryKey: `BackupTasks-${currentTenant}`, + }); + + // Use the actual backup files as the backup data + const filteredBackupData = Array.isArray(backupList.data) ? backupList.data : []; + // Generate backup tags from actual API response items - use raw items directly + const generateBackupTags = (backup) => { + // Use the Items array directly from the API response without any translation + if (backup.Items && Array.isArray(backup.Items)) { + return backup.Items; + } + + // Fallback if no items found + return ["Configuration"]; + }; + + const handleDownloadBackup = (backup) => { + downloadAction.mutate( + { + url: `/api/ExecListBackup?BackupName=${backup.name}&Type=Scheduled`, + data: { + tenantFilter: backup.tenantSource, + }, + }, + { + onSuccess: (data) => { + const jsonString = data?.data?.[0]?.Backup; + if (!jsonString) { + console.error("No backup data returned"); + return; + } + + const blob = new Blob([jsonString], { type: "application/json" }); + const url = URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = `${backup.name}.json`; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); + }, + }, + ); + }; + + const handleOpenBackupPreview = (backup) => { + setSelectedBackup(backup); + setDrawerOpen(true); + setIsLoadingBackup(true); + setBackupContent(null); + + // Load backup data + downloadAction.mutate( + { + url: `/api/ExecListBackup?BackupName=${backup.name}&Type=Scheduled`, + data: { + tenantFilter: backup.tenantSource, + }, + }, + { + onSuccess: (data) => { + const jsonString = data?.data?.[0]?.Backup; + if (jsonString) { + try { + const parsedData = JSON.parse(jsonString); + setBackupContent(parsedData); + } catch (error) { + console.error("Failed to parse backup data:", error); + } + } + setIsLoadingBackup(false); + }, + onError: () => { + setIsLoadingBackup(false); + }, + }, + ); + }; + + const handleCloseDrawer = () => { + setDrawerOpen(false); + setSelectedBackup(null); + setBackupContent(null); + }; + + // Filter backup data by selected tenant if in AllTenants view + const tenantFilteredBackupData = + settings.currentTenant === "AllTenants" && + backupTenantFilter && + backupTenantFilter !== "AllTenants" + ? filteredBackupData.filter((backup) => backup.TenantFilter === backupTenantFilter) + : filteredBackupData; + + const backupDisplayItems = tenantFilteredBackupData.map((backup, index) => ({ + id: backup.RowKey || index, + name: backup.BackupName || "Unnamed Backup", + timestamp: backup.Timestamp, + tenantSource: backup.TenantFilter || settings.currentTenant, + tags: generateBackupTags(backup), + })); + + // Process existing backup configuration, find tenantFilter. by comparing settings.currentTenant with Tenant.value + const currentConfig = Array.isArray(existingBackupConfig.data) + ? existingBackupConfig.data.find( + (tenant) => + tenant.Tenant.value === settings.currentTenant || tenant.Tenant.value === "AllTenants", + ) + : null; + const hasExistingConfig = currentConfig && currentConfig.Parameters?.ScheduledBackupValues; + + // Create property items for current configuration + const configPropertyItems = hasExistingConfig + ? [ + { label: "Backup Name", value: currentConfig.Name }, + { + label: "Tenant", + value: + currentConfig.Tenant?.value || + currentConfig.Tenant || + currentConfig.TenantFilter || + settings.currentTenant, + }, + { label: "Recurrence", value: currentConfig.Recurrence?.value || "Daily" }, + { label: "Task State", value: currentConfig.TaskState || "Unknown" }, + { + label: "Last Executed", + value: currentConfig.ExecutedTime ? ( + + ) : ( + "Never" + ), + }, + { + label: "Next Run", + value: currentConfig.ScheduledTime ? ( + + ) : ( + "Not scheduled" + ), + }, + ] + : []; + + // Create component status tags + const getEnabledComponents = () => { + if (!hasExistingConfig) return []; + + const values = currentConfig.Parameters.ScheduledBackupValues; + const enabledComponents = []; + + if (values.users) enabledComponents.push("Users"); + if (values.groups) enabledComponents.push("Groups"); + if (values.ca) enabledComponents.push("Conditional Access"); + if (values.intuneconfig) enabledComponents.push("Intune Configuration"); + if (values.intunecompliance) enabledComponents.push("Intune Compliance"); + if (values.intuneprotection) enabledComponents.push("Intune Protection"); + if (values.antispam) enabledComponents.push("Anti-Spam"); + if (values.antiphishing) enabledComponents.push("Anti-Phishing"); + if (values.CippWebhookAlerts) enabledComponents.push("CIPP Webhook Alerts"); + if (values.CippScriptedAlerts) enabledComponents.push("CIPP Scripted Alerts"); + if (values.CippCustomVariables) enabledComponents.push("Custom Variables"); + + return enabledComponents; + }; + + // Info bar data following CIPP patterns + const infoBarData = [ + { + icon: , + name: "Total Backups", + data: filteredBackupData?.length || 0, + }, + { + icon: , + name: "Last Backup", + data: filteredBackupData?.[0]?.Timestamp ? ( + + ) : ( + "No Backups" + ), + }, + { + icon: , + name: "Tenant Scope", + data: settings.currentTenant === "AllTenants" ? "All Tenants" : settings.currentTenant, + }, + { + icon: , + name: "Configuration", + data: hasExistingConfig ? "Configured" : "Not Configured", + }, + ]; + + const title = "Manage Backups"; + + return ( + + + + + {/* Two Side-by-Side Displays */} + + + {/* Current Configuration Header */} + + + + + + Current Configuration + + {!hasExistingConfig ? ( + { + // Refresh both queries when a backup schedule is added + setTimeout(() => { + backupList.refetch(); + existingBackupConfig.refetch(); + }, 2000); + }} + /> + ) : ( + + )} + + + + + {/* Configuration Details */} + {existingBackupConfig.isFetching ? ( + + + + + ) : hasExistingConfig ? ( + + + + + } + /> + + + + Backup Components + + + {getEnabledComponents().map((component, idx) => ( + } + /> + ))} + {getEnabledComponents().length === 0 && ( + } + /> + )} + + + + + ) : ( + + No Backup Configuration + No backup schedule is currently configured for{" "} + {settings.currentTenant === "AllTenants" ? "any tenant" : settings.currentTenant}. + Click "Add Backup Schedule" to create an automated backup configuration. + + )} + + + + + {/* Backup History */} + + + + + + + Backup History + + + {settings.currentTenant === "AllTenants" && ( + + + + )} + + + + + + + + {settings.currentTenant === "AllTenants" + ? "Viewing backups for all tenants." + : `Viewing backups for ${settings.currentTenant} and global backups.`} + + + {filteredBackupData.length === 0 && !backupList.isFetching ? ( + + No Backup History + {settings.currentTenant === "AllTenants" + ? "No backups exist for any tenant." + : `No backups found for ${settings.currentTenant}.`} + + ) : backupList.isFetching ? ( + + + + ) : ( + + + {backupDisplayItems.map((backup) => ( + + + + + + + {(() => { + const match = backup.name.match( + /.*_(\d{4}-\d{2}-\d{2})-(\d{2})(\d{2})/, + ); + return match + ? `${match[1]} @ ${match[2]}:${match[3]}` + : backup.name; + })()} + + + + + {settings.currentTenant === "AllTenants" && ( + + )} + + + + + } + /> + + + + + + ))} + + + )} + + + + + + + + {/* Backup Preview Drawer */} + + + + + Backup Preview + {selectedBackup && ( + + {(() => { + const match = selectedBackup.name.match( + /.*_(\d{4}-\d{2}-\d{2})-(\d{2})(\d{2})/, + ); + return match ? `${match[1]} @ ${match[2]}:${match[3]}` : selectedBackup.name; + })()} + + )} + + + + + + {isLoadingBackup ? ( + + + + ) : backupContent ? ( + + ) : ( + + Failed to Load Backup + Unable to load backup contents. Please try again. + + )} + + + + {/* Remove Backup Schedule Dialog */} + { + // Refresh both queries when a backup schedule is removed + setTimeout(() => { + backupList.refetch(); + existingBackupConfig.refetch(); + }, 2000); + }} + /> + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/tenant/manage/drift.js b/src/pages/tenant/manage/drift.js new file mode 100644 index 000000000000..e2ad9865383b --- /dev/null +++ b/src/pages/tenant/manage/drift.js @@ -0,0 +1,2172 @@ +import { Layout as DashboardLayout } from "../../../layouts/index.js"; +import { useRouter } from "next/router"; +import { + Check, + Warning, + ExpandMore, + CheckCircle, + Block, + CheckBox, + Cancel, + Policy, + Error, + Info, + FactCheck, + Search, + Edit, +} from "@mui/icons-material"; +import { + Box, + Stack, + Typography, + Button, + Menu, + MenuItem, + Chip, + SvgIcon, + TextField, + Divider, +} from "@mui/material"; +import { Grid } from "@mui/system"; +import { useState, useEffect, useRef } from "react"; +import { useForm } from "react-hook-form"; +import { CippBannerListCard } from "../../../components/CippCards/CippBannerListCard"; +import CippButtonCard from "../../../components/CippCards/CippButtonCard"; +import { CippHead } from "../../../components/CippComponents/CippHead"; +import { HeaderedTabbedLayout } from "../../../layouts/HeaderedTabbedLayout"; +import { ApiGetCall } from "../../../api/ApiCall"; +import { useSettings } from "../../../hooks/use-settings"; +import { CippApiDialog } from "../../../components/CippComponents/CippApiDialog"; +import { useDialog } from "../../../hooks/use-dialog"; +import tabOptions from "./tabOptions.json"; +import standardsData from "../../../data/standards.json"; +import { createDriftManagementActions } from "./driftManagementActions"; +import { ExecutiveReportButton } from "../../../components/ExecutiveReportButton"; +import { CippAutoComplete } from "../../../components/CippComponents/CippAutocomplete"; +import CippFormComponent from "../../../components/CippComponents/CippFormComponent"; + +const ManageDriftPage = () => { + const router = useRouter(); + const { templateId } = router.query; + const userSettingsDefaults = useSettings(); + // Prioritize URL query parameter, then fall back to settings + const tenantFilter = router.query.tenantFilter || userSettingsDefaults.currentTenant || ""; + const [anchorEl, setAnchorEl] = useState({}); + const [bulkActionsAnchorEl, setBulkActionsAnchorEl] = useState(null); + const createDialog = useDialog(); + const [actionData, setActionData] = useState({ data: {}, ready: false }); + const [triggerReport, setTriggerReport] = useState(false); + const reportButtonRef = useRef(null); + const [searchQuery, setSearchQuery] = useState(""); + const [sortBy, setSortBy] = useState("name"); + const [selectedItems, setSelectedItems] = useState([]); + + const filterForm = useForm({ + defaultValues: { + statusFilter: [{ label: "All Deviations", value: "all" }], + }, + }); + + const filterStatus = filterForm.watch("statusFilter") || [ + { label: "All Deviations", value: "all" }, + ]; + + // API calls for drift data + const driftApi = ApiGetCall({ + url: "/api/listTenantDrift", + data: { + tenantFilter: tenantFilter, + }, + queryKey: `TenantDrift-${tenantFilter}`, + }); + + // API call for available drift templates (for What If dropdown) + const standardsApi = ApiGetCall({ + url: "/api/listStandardTemplates", + data: { + type: "drift", + }, + queryKey: "ListDriftTemplates", + }); + + // API call to get all Intune templates for displayName lookup + const intuneTemplatesApi = ApiGetCall({ + url: "/api/ListIntuneTemplates", + queryKey: "ListIntuneTemplates", + }); + + // API call for standards comparison (when templateId is available) + const comparisonApi = ApiGetCall({ + url: "/api/ListStandardsCompare", + data: { + TemplateId: templateId, + tenantFilter: tenantFilter, + CompareToStandard: true, + }, + queryKey: `StandardsCompare-${templateId}-${tenantFilter}`, + enabled: !!templateId && !!tenantFilter, + }); + + // Process drift data for chart - filter by current tenant and aggregate + const rawDriftData = driftApi.data || []; + const tenantDriftData = Array.isArray(rawDriftData) + ? rawDriftData.filter((item) => item.tenantFilter === tenantFilter) + : []; + + // Aggregate data across all standards for this tenant + const processedDriftData = tenantDriftData.reduce( + (acc, item) => { + acc.acceptedDeviationsCount += item.acceptedDeviationsCount || 0; + acc.currentDeviationsCount += item.currentDeviationsCount || 0; + acc.alignedCount += item.alignedCount || 0; + acc.customerSpecificDeviations += item.customerSpecificDeviationsCount || 0; + acc.deniedDeviationsCount += item.deniedDeviationsCount || 0; + + // Use the API's direct arrays instead of filtering allDeviations + if (item.currentDeviations && Array.isArray(item.currentDeviations)) { + acc.currentDeviations.push(...item.currentDeviations.filter((dev) => dev !== null)); + } + if (item.acceptedDeviations && Array.isArray(item.acceptedDeviations)) { + acc.acceptedDeviations.push(...item.acceptedDeviations.filter((dev) => dev !== null)); + } + if (item.customerSpecificDeviations && Array.isArray(item.customerSpecificDeviations)) { + acc.customerSpecificDeviationsList.push( + ...item.customerSpecificDeviations.filter((dev) => dev !== null), + ); + } + if (item.deniedDeviations && Array.isArray(item.deniedDeviations)) { + acc.deniedDeviationsList.push(...item.deniedDeviations.filter((dev) => dev !== null)); + } + + // Extract compliant standards from ComparisonDetails in driftSettings + if ( + item.driftSettings?.ComparisonDetails && + Array.isArray(item.driftSettings.ComparisonDetails) + ) { + const compliantStandards = item.driftSettings.ComparisonDetails.filter( + (detail) => detail.Compliant === true, + ) + .map((detail) => { + // Strip "standards." prefix if present + let standardName = detail.StandardName; + if (standardName.startsWith("standards.")) { + standardName = standardName.substring("standards.".length); + } + + let displayName = null; + + // For template types, extract the display name from standardSettings + if (standardName.startsWith("IntuneTemplate.")) { + const guid = standardName.substring("IntuneTemplate.".length); + + // First try to find in standardSettings + const intuneTemplates = item.driftSettings?.standardSettings?.IntuneTemplate; + if (Array.isArray(intuneTemplates)) { + const template = intuneTemplates.find((t) => t.TemplateList?.value === guid); + if (template?.TemplateList?.label) { + displayName = template.TemplateList.label; + } + } + + // If not found in standardSettings, look up in all Intune templates (for tag templates) + if (!displayName && intuneTemplatesApi.data) { + const template = intuneTemplatesApi.data.find((t) => t.GUID === guid); + if (template?.Displayname) { + displayName = template.Displayname; + } + } + + // If template not found, return null to filter it out later + if (!displayName) { + return null; + } + } else if (standardName.startsWith("ConditionalAccessTemplate.")) { + const guid = standardName.substring("ConditionalAccessTemplate.".length); + const caTemplates = item.driftSettings?.standardSettings?.ConditionalAccessTemplate; + if (Array.isArray(caTemplates)) { + const template = caTemplates.find((t) => t.TemplateList?.value === guid); + if (template?.TemplateList?.label) { + displayName = template.TemplateList.label; + } + } + // If template not found, return null to filter it out later + if (!displayName) { + return null; + } + } else { + // For non-template standards, keep the "standards." prefix for lookup + standardName = detail.StandardName; + } + + return { + standardName: standardName, + standardDisplayName: displayName, // Set display name if found from templates + state: "aligned", + Status: "Aligned", + ComplianceStatus: detail.ComplianceStatus, + StandardValue: detail.StandardValue, + ReportingDisabled: detail.ReportingDisabled, + ExpectedValue: detail.ExpectedValue, + CurrentValue: detail.CurrentValue, + expectedValue: detail.ExpectedValue || "Compliant with template", + receivedValue: detail.CurrentValue || detail.StandardValue, + }; + }) + .filter((item) => item !== null); // Filter out null items where templates weren't found + acc.alignedStandards.push(...compliantStandards); + } + + // Use the latest data collection timestamp + if ( + item.latestDataCollection && + (!acc.latestDataCollection || + new Date(item.latestDataCollection) > new Date(acc.latestDataCollection)) + ) { + acc.latestDataCollection = item.latestDataCollection; + } + + return acc; + }, + { + acceptedDeviationsCount: 0, + currentDeviationsCount: 0, + alignedCount: 0, + customerSpecificDeviations: 0, + deniedDeviationsCount: 0, + currentDeviations: [], + acceptedDeviations: [], + customerSpecificDeviationsList: [], + deniedDeviationsList: [], + alignedStandards: [], + latestDataCollection: null, + }, + ); + + // Transform currentDeviations into deviation items for display + const getDeviationIcon = (state) => { + switch (state?.toLowerCase()) { + case "current": + return ; + case "denied": + return ; + case "denieddelete": + case "denied - delete": + return ; + case "deniedremediate": + case "denied - remediate": + return ; + case "accepted": + return ; + case "customerspecific": + return ; + case "aligned": + case "compliant": + return ; + default: + return ; + } + }; + + const getDeviationColor = (state) => { + switch (state?.toLowerCase()) { + case "current": + return "warning.main"; + case "denied": + return "error.main"; + case "denieddelete": + case "denied - delete": + return "error.main"; + case "deniedremediate": + case "denied - remediate": + return "error.main"; + case "accepted": + return "success.main"; + case "customerspecific": + return "info.main"; + case "aligned": + case "compliant": + return "success.main"; + default: + return "warning.main"; + } + }; + + const getDeviationStatusText = (state) => { + switch (state?.toLowerCase()) { + case "current": + return "Current Deviation"; + case "denied": + return "Denied Deviation"; + case "denieddelete": + case "denied - delete": + return "Denied - Delete"; + case "deniedremediate": + case "denied - remediate": + return "Denied - Remediate"; + case "accepted": + return "Accepted Deviation"; + case "customerspecific": + return "Customer Specific"; + case "aligned": + case "compliant": + return "Compliant"; + default: + return "Deviation"; + } + }; + + // Helper function to get pretty name from standards.json + const getStandardPrettyName = (standardName) => { + if (!standardName) return "Unknown Standard"; + + // Find the standard in standards.json by name + const standard = standardsData.find((s) => s.name === standardName); + if (standard && standard.label) { + return standard.label; + } + + // If not found in standards.json, try using standardDisplayName from the deviation object + // This will be handled in the createDeviationItems function + return null; + }; + + // Helper function to get description from standards.json + const getStandardDescription = (standardName) => { + if (!standardName) return null; + + // Find the standard in standards.json by name + const standard = standardsData.find((s) => s.name === standardName); + if (standard) { + return standard.helpText || standard.docsDescription || standard.executiveText || null; + } + + return null; + }; + + // Helper function to compare JSON objects and find differences + const compareJsonObjects = (expected, current) => { + if (!expected || !current) return null; + + try { + const expectedObj = typeof expected === "string" ? JSON.parse(expected) : expected; + const currentObj = typeof current === "string" ? JSON.parse(current) : current; + + // Deep comparison - if they're equal, return null (no diff) + if (JSON.stringify(expectedObj) === JSON.stringify(currentObj)) { + return null; // No differences + } + + // Find differences + const differences = {}; + const allKeys = new Set([...Object.keys(expectedObj), ...Object.keys(currentObj)]); + + allKeys.forEach((key) => { + const expectedVal = expectedObj[key]; + const currentVal = currentObj[key]; + + if (JSON.stringify(expectedVal) !== JSON.stringify(currentVal)) { + differences[key] = { + expected: expectedVal, + current: currentVal, + }; + } + }); + + return Object.keys(differences).length > 0 ? differences : null; + } catch (e) { + console.error("Error comparing JSON objects:", e); + return null; + } + }; + + // Helper function to format differences for display + const formatDifferences = (differences) => { + if (!differences || typeof differences !== "object") return null; + + const formatted = []; + Object.entries(differences).forEach(([key, value]) => { + formatted.push({ + property: key, + expected: + value.expected !== undefined ? JSON.stringify(value.expected, null, 2) : "Not set", + current: value.current !== undefined ? JSON.stringify(value.current, null, 2) : "Not set", + }); + }); + + return formatted; + }; + + // Helper function to format matching properties for compliant items + const formatCompliantProperties = (value) => { + if (!value) return null; + + try { + const obj = typeof value === "string" ? JSON.parse(value) : value; + + if (typeof obj !== "object" || obj === null) return null; + + const formatted = []; + Object.entries(obj).forEach(([key, val]) => { + formatted.push({ + property: key, + value: val !== undefined ? JSON.stringify(val, null, 2) : "Not set", + }); + }); + + return formatted.length > 0 ? formatted : null; + } catch (e) { + return null; + } + }; + + // Helper function to format policy objects for display + const formatPolicyValue = (value) => { + if (!value) return "N/A"; + + // If it's already a string, return it + if (typeof value === "string") { + // Check if it's a JSON string and try to parse it + try { + const parsed = JSON.parse(value); + return formatPolicyValue(parsed); + } catch { + return value; + } + } + + // If it's an object (policy object from API) + if (typeof value === "object" && value !== null) { + // Pretty-print the object as JSON + return JSON.stringify(value, null, 2); + } + + return String(value); + }; + + // Helper function to create deviation items + const createDeviationItems = (deviations, statusOverride = null) => { + return (deviations || []) + .filter((deviation) => { + // Filter out template deviations where the template cannot be found + // (these will have null/undefined standardDisplayName) + if ( + deviation.standardName && + (deviation.standardName.startsWith("IntuneTemplate.") || + deviation.standardName.startsWith("ConditionalAccessTemplate.")) + ) { + // For templates, we must have a standardDisplayName + return !!deviation.standardDisplayName; + } + // For non-template standards, always include + return true; + }) + .map((deviation, index) => { + // Check if this should be skipped due to missing license + const isLicenseSkipped = deviation.LicenseAvailable === false; + + // Check if we have both ExpectedValue and CurrentValue for comparison + let isActuallyCompliant = false; + let jsonDifferences = null; + + if (deviation.ExpectedValue && deviation.CurrentValue) { + jsonDifferences = compareJsonObjects(deviation.ExpectedValue, deviation.CurrentValue); + // If there are no differences, this is actually compliant + if (jsonDifferences === null) { + isActuallyCompliant = true; + } + } + + // Prioritize standardDisplayName from drift data (which has user-friendly names for templates) + // then fallback to standards.json lookup, then raw name + const prettyName = + deviation.standardDisplayName || + getStandardPrettyName(deviation.standardName) || + deviation.standardName || + "Unknown Standard"; + + // Get description from standards.json first, then fallback to standardDescription from deviation + const description = + getStandardDescription(deviation.standardName) || + deviation.standardDescription || + "No description available"; + + // Determine the actual status + // If actually compliant (values match), mark as aligned regardless of input status + // If license is skipped, mark as skipped + // Otherwise use the provided status + const actualStatus = isActuallyCompliant + ? "aligned" + : isLicenseSkipped + ? "skipped" + : statusOverride || deviation.Status || deviation.state; + const actualStatusText = isActuallyCompliant + ? "Compliant" + : isLicenseSkipped + ? "Skipped - No License Available" + : getDeviationStatusText(actualStatus); + + // For skipped items, show different expected/received values + let displayExpectedValue = deviation.ExpectedValue || deviation.expectedValue; + let displayReceivedValue = deviation.CurrentValue || deviation.receivedValue; + + // If we have JSON differences, format them for display + let formattedDifferences = null; + let formattedCompliantProps = null; + + if (jsonDifferences && !isLicenseSkipped && !isActuallyCompliant) { + formattedDifferences = formatDifferences(jsonDifferences); + } else if ((isActuallyCompliant || actualStatus === "aligned") && displayExpectedValue) { + // For compliant items, format the properties to show them matching + formattedCompliantProps = formatCompliantProperties(displayExpectedValue); + } + + return { + id: statusOverride ? `${statusOverride}-${index + 1}` : `current-${index + 1}`, + cardLabelBox: { + cardLabelBoxHeader: getDeviationIcon(actualStatus), + }, + text: prettyName, + subtext: description, + statusColor: isLicenseSkipped ? "text.secondary" : getDeviationColor(actualStatus), + statusText: actualStatusText, + standardName: deviation.standardName, // Store the original standardName for action handlers + receivedValue: deviation.receivedValue, // Store the original receivedValue for action handlers + expectedValue: deviation.expectedValue, // Store the original expectedValue for action handlers + originalDeviation: deviation, // Store the complete original deviation object for reference + isLicenseSkipped: isLicenseSkipped, // Flag for filtering and disabling actions + isActuallyCompliant: isActuallyCompliant, // Flag to move to compliant section + children: ( + + {description && description !== "No description available" && ( + + {description} + + )} + + {isLicenseSkipped && ( + + + โš ๏ธ This standard was skipped because the required license is not available for + this tenant. + + + )} + + {formattedDifferences && formattedDifferences.length > 0 ? ( + + + Property Differences + + {formattedDifferences.map((diff, idx) => ( + + + {diff.property} + + + + + Expected + + + + + + + {diff.expected} + + + + + + Current + + + + + + + {diff.current} + + + + + + ))} + + ) : formattedCompliantProps && formattedCompliantProps.length > 0 ? ( + + + Compliant Properties + + {formattedCompliantProps.map((prop, idx) => ( + + + {prop.property} + + + + + Expected + + + + + + + {prop.value} + + + + + + Current + + + + + + + {prop.value} + + + + + + ))} + + ) : displayExpectedValue || displayReceivedValue ? ( + + {displayExpectedValue && ( + + + Expected + + + {(isActuallyCompliant || actualStatus === "aligned") && ( + + + + )} + + {displayExpectedValue === "Compliant with template" + ? displayReceivedValue || "Compliant" + : displayExpectedValue} + + + + )} + + {displayReceivedValue && ( + + + Current + + + {(isActuallyCompliant || actualStatus === "aligned") && ( + + + + )} + + {displayReceivedValue} + + + + )} + + ) : null} + + {(deviation.Reason || + deviation.lastChangedByUser || + processedDriftData.latestDataCollection) && ( + <> + + + {deviation.Reason && ( + + + Reason + + {deviation.Reason} + + )} + {deviation.lastChangedByUser && ( + + + Changed By + + {deviation.lastChangedByUser} + + )} + {processedDriftData.latestDataCollection && ( + + + Last Updated + + + {new Date(processedDriftData.latestDataCollection).toLocaleString()} + + + )} + + + )} + + ), + }; + }); + }; + + const deviationItems = createDeviationItems(processedDriftData.currentDeviations); + const acceptedDeviationItems = createDeviationItems( + processedDriftData.acceptedDeviations, + "accepted", + ); + const customerSpecificDeviationItems = createDeviationItems( + processedDriftData.customerSpecificDeviationsList, + "customerspecific", + ); + const deniedDeviationItems = createDeviationItems( + processedDriftData.deniedDeviationsList, + "denied", + ); + const alignedStandardItems = createDeviationItems(processedDriftData.alignedStandards, "aligned"); + + // Separate items by their actual status + const licenseSkippedItems = deviationItems.filter((item) => item.isLicenseSkipped); + const compliantFromDeviations = deviationItems.filter((item) => item.isActuallyCompliant); + const actualDeviationItems = deviationItems.filter( + (item) => !item.isLicenseSkipped && !item.isActuallyCompliant, + ); + + // Combine compliant items from both sources + const allAlignedItems = [...alignedStandardItems, ...compliantFromDeviations]; + + const handleMenuClick = (event, itemId) => { + setAnchorEl((prev) => ({ ...prev, [itemId]: event.currentTarget })); + }; + + const handleMenuClose = (itemId) => { + setAnchorEl((prev) => ({ ...prev, [itemId]: null })); + }; + + const handleAction = (action, itemId) => { + const deviation = processedDriftData.currentDeviations[itemId - 1]; + if (!deviation) return; + + let status; + let actionText; + switch (action) { + case "accept-customer-specific": + status = "CustomerSpecific"; + actionText = "accept as customer specific"; + break; + case "accept": + status = "Accepted"; + actionText = "accept"; + break; + case "deny-delete": + status = "DeniedDelete"; + actionText = "deny and delete"; + break; + case "deny-remediate": + status = "DeniedRemediate"; + actionText = "deny and remediate to align with template"; + break; + default: + return; + } + + // Set action data for CippApiDialog + setActionData({ + data: { + deviations: [ + { + standardName: deviation.standardName, + status: status, + receivedValue: deviation.receivedValue, + }, + ], + tenantFilter: tenantFilter, + }, + action: { + text: actionText, + type: "single", + }, + ready: true, + }); + + createDialog.handleOpen(); + handleMenuClose(itemId); + }; + + const handleDeviationAction = (action, deviation) => { + if (!deviation) return; + + let status; + let actionText; + switch (action) { + case "accept-customer-specific": + status = "CustomerSpecific"; + actionText = "accept as customer specific"; + break; + case "accept": + status = "Accepted"; + actionText = "accept"; + break; + case "deny": + status = "Denied"; + actionText = "deny"; + break; + case "deny-delete": + status = "DeniedDelete"; + actionText = "deny and delete"; + break; + case "deny-remediate": + status = "DeniedRemediate"; + actionText = "deny and remediate to align with template"; + break; + default: + return; + } + + // Set action data for CippApiDialog + setActionData({ + data: { + deviations: [ + { + standardName: deviation.standardName, // Use the standardName from the original deviation data + status: status, + receivedValue: deviation.receivedValue, + }, + ], + tenantFilter: tenantFilter, + }, + action: { + text: actionText, + type: "single", + }, + ready: true, + }); + + createDialog.handleOpen(); + }; + + const handleBulkAction = (action) => { + if (!selectedItems || selectedItems.length === 0) { + setBulkActionsAnchorEl(null); + return; + } + + let status; + let actionText; + switch (action) { + case "accept-all-customer-specific": + status = "CustomerSpecific"; + actionText = "accept selected deviations as customer specific"; + break; + case "accept-all": + status = "Accepted"; + actionText = "accept selected deviations"; + break; + case "deny-all": + status = "Denied"; + actionText = "deny selected deviations"; + break; + case "deny-all-delete": + status = "DeniedDelete"; + actionText = "deny selected deviations and delete"; + break; + case "deny-all-remediate": + status = "DeniedRemediate"; + actionText = "deny selected deviations and remediate to align with template"; + break; + default: + setBulkActionsAnchorEl(null); + return; + } + + // Map selected item IDs back to their deviation data + // IDs are in format: "current-1", "accepted-2", etc. + const allDeviations = [ + ...deviationItemsWithActions, + ...acceptedDeviationItemsWithActions, + ...customerSpecificDeviationItemsWithActions, + ...deniedDeviationItemsWithActions, + ]; + + const selectedDeviations = selectedItems + .map((itemId) => { + const item = allDeviations.find((d) => d.id === itemId); + return item ? item.originalDeviation : null; + }) + .filter(Boolean); + + if (selectedDeviations.length === 0) { + setBulkActionsAnchorEl(null); + return; + } + + const deviations = selectedDeviations.map((deviation) => ({ + standardName: deviation.standardName, + status: status, + receivedValue: deviation.receivedValue, + })); + + // Set action data for CippApiDialog + setActionData({ + data: { + deviations: deviations, + tenantFilter: tenantFilter, + receivedValues: deviations.map((d) => d.receivedValue), + }, + action: { + text: actionText, + type: "bulk", + count: deviations.length, + }, + ready: true, + }); + + createDialog.handleOpen(); + setBulkActionsAnchorEl(null); + }; + + const handleRemoveDriftCustomization = () => { + // Set action data for CippApiDialog + setActionData({ + data: { + RemoveDriftCustomization: true, + tenantFilter: tenantFilter, + }, + action: { + text: "remove all drift customizations", + type: "reset", + }, + ready: true, + }); + + createDialog.handleOpen(); + setBulkActionsAnchorEl(null); + }; + + // Get current tenant info for report generation + const currentTenantInfo = ApiGetCall({ + url: "/api/ListTenants", + queryKey: "ListTenants", + }); + + // Find current tenant data + const currentTenantData = currentTenantInfo.data?.find( + (tenant) => tenant.defaultDomainName === tenantFilter, + ); + + // Actions for the ActionsMenu + const actions = createDriftManagementActions({ + templateId, + onRefresh: () => { + driftApi.refetch(); + standardsApi.refetch(); + if (templateId) { + comparisonApi.refetch(); + } + }, + onGenerateReport: () => { + setTriggerReport(true); + }, + currentTenant: tenantFilter, + }); + + // Effect to trigger the ExecutiveReportButton when needed + useEffect(() => { + if (triggerReport && reportButtonRef.current) { + // Trigger the button click to open the dialog + reportButtonRef.current.click(); + setTriggerReport(false); + } + }, [triggerReport]); + + // Effect to refetch APIs when templateId changes (needed for shallow routing) + useEffect(() => { + if (templateId) { + comparisonApi.refetch(); + } + }, [templateId]); + + // Effect to clear selected items when tenant changes + useEffect(() => { + setSelectedItems([]); + }, [tenantFilter]); + + // Add action buttons to each deviation item + const deviationItemsWithActions = actualDeviationItems.map((item) => { + return { + ...item, + cardLabelBoxActions: ( + + ), + }; + }); + + // Add action buttons to accepted deviation items + const acceptedDeviationItemsWithActions = acceptedDeviationItems.map((item) => { + return { + ...item, + cardLabelBoxActions: ( + + ), + }; + }); + + // Add action buttons to customer specific deviation items + const customerSpecificDeviationItemsWithActions = customerSpecificDeviationItems.map((item) => { + return { + ...item, + cardLabelBoxActions: ( + + ), + }; + }); + + // Add action buttons to denied deviation items + const deniedDeviationItemsWithActions = deniedDeviationItems.map((item) => ({ + ...item, + cardLabelBoxActions: ( + + ), + })); + + // Calculate compliance metrics for badges + // Accepted and Customer Specific deviations count as compliant since they are user-approved + // Denied deviations are included in total but not in compliant count (they haven't been fixed yet) + const totalPolicies = + processedDriftData.alignedCount + + processedDriftData.currentDeviationsCount + + processedDriftData.acceptedDeviationsCount + + processedDriftData.customerSpecificDeviations + + processedDriftData.deniedDeviationsCount; + + const compliantCount = + processedDriftData.alignedCount + + processedDriftData.acceptedDeviationsCount + + processedDriftData.customerSpecificDeviations; + + // Alignment Score: Only actual compliance (excluding license-missing items) + const compliancePercentage = + totalPolicies > 0 ? Math.round((compliantCount / totalPolicies) * 100) : 0; + + // Calculate missing license percentage + const missingLicensePercentage = + totalPolicies > 0 ? Math.round((licenseSkippedItems.length / totalPolicies) * 100) : 0; + + // Total Score: Alignment + License Missing (represents addressable compliance) + const combinedScore = compliancePercentage + missingLicensePercentage; + + // Helper function to get category from standardName + const getCategory = (standardName) => { + if (!standardName) return "Other Standards"; + if (standardName.includes("ConditionalAccessTemplate")) return "Conditional Access Policies"; + if (standardName.includes("IntuneTemplate")) return "Intune Policies"; + + // For other standards, look up category in standards.json + const standard = standardsData.find((s) => s.name === standardName); + if (standard && standard.cat) { + return standard.cat; + } + + return "Other Standards"; + }; + + // Apply search and sort filters + const applyFilters = (items) => { + let filtered = [...items]; + + if (searchQuery) { + filtered = filtered.filter( + (item) => + item.text?.toLowerCase().includes(searchQuery.toLowerCase()) || + item.subtext?.toLowerCase().includes(searchQuery.toLowerCase()) || + item.standardName?.toLowerCase().includes(searchQuery.toLowerCase()), + ); + } + + if (sortBy === "name") { + filtered.sort((a, b) => (a.text || "").localeCompare(b.text || "")); + } else if (sortBy === "status") { + filtered.sort((a, b) => (a.statusText || "").localeCompare(b.statusText || "")); + } else if (sortBy === "category") { + // Sort by category, then by name within each category + filtered.sort((a, b) => { + const catA = getCategory(a.standardName); + const catB = getCategory(b.standardName); + if (catA !== catB) { + return catA.localeCompare(catB); + } + return (a.text || "").localeCompare(b.text || ""); + }); + } + + return filtered; + }; + + const filteredDeviationItems = applyFilters(deviationItemsWithActions); + const filteredAcceptedItems = applyFilters(acceptedDeviationItemsWithActions); + const filteredCustomerSpecificItems = applyFilters(customerSpecificDeviationItemsWithActions); + const filteredDeniedItems = applyFilters(deniedDeviationItemsWithActions); + const filteredAlignedItems = applyFilters(allAlignedItems); + const filteredLicenseSkippedItems = applyFilters(licenseSkippedItems); + + // Helper function to render items grouped by category when category sort is active + const renderItemsByCategory = (items) => { + if (sortBy !== "category" || items.length === 0) { + return ( + + ); + } + + // Group items by category and collect unique categories + const groupedItems = {}; + items.forEach((item) => { + const category = getCategory(item.standardName); + if (!groupedItems[category]) { + groupedItems[category] = []; + } + groupedItems[category].push(item); + }); + + // Sort categories alphabetically + const categories = Object.keys(groupedItems).sort(); + + return ( + + {categories.map((category) => { + if (groupedItems[category].length === 0) return null; + return ( + + + {category} + + + + ); + })} + + ); + }; + + // Simple filter for drift templates + const driftTemplateOptions = standardsApi.data + ? standardsApi.data + .filter((template) => template.type === "drift" || template.Type === "drift") + .map((template) => ({ + label: + template.displayName || + template.templateName || + template.name || + `Template ${template.GUID}`, + value: template.GUID, + })) + : []; + + // Find currently selected template + const selectedTemplateOption = + templateId && driftTemplateOptions.length + ? driftTemplateOptions.find((option) => option.value === templateId) || null + : null; + const title = "Manage Drift"; + const subtitle = []; + + return ( + + + + {/* Check if there's no drift data */} + {!driftApi.isFetching && + (!rawDriftData || rawDriftData.length === 0 || tenantDriftData.length === 0) ? ( + + + No Drift Data Available + + + This standard does not have any drift entries, or it is not a drift compatible + standard. + + + To enable drift monitoring for this tenant, please ensure: + + + + A drift template has been created and assigned to this tenant + + + The standard is configured for drift monitoring + + + Drift data collection has been completed for this tenant + + + + ) : ( + + {/* Left side - Alignment Score & Filters */} + + + {/* Stats Card */} + + + + + Aligned + + + + + + Current + + + + + + Accepted + + + + + + Customer Specific + + + + + + Denied + + + + + + Skipped (No License) + + + + + + + Total + + + + + + Alignment Score + + + + + + Total Score + + = 80 + ? "warning" + : combinedScore >= 30 + ? "warning" + : "error" + } + variant="outlined" + /> + + + + + {/* Filters Card */} + + + { + const query = { ...router.query }; + if (selectedTemplate && selectedTemplate.value) { + query.templateId = selectedTemplate.value; + } else { + delete query.templateId; + } + router.replace( + { + pathname: router.pathname, + query: query, + }, + undefined, + { shallow: true }, + ); + }} + placeholder="Select a drift template..." + disableClearable={true} + customAction={{ + icon: , + link: selectedTemplateOption?.value + ? `/tenant/standards/templates/template?id=${selectedTemplateOption.value}&type=drift` + : undefined, + tooltip: "Edit Template", + position: "inside", + }} + /> + + setSearchQuery(e.target.value)} + /> + + + + setSortBy(newValue?.value || "name")} + multiple={false} + /> + + + + + + {/* Right side - Deviation Management */} + + + {/* Current Deviations Section */} + {(!filterStatus || + filterStatus.length === 0 || + filterStatus.some((f) => f.value === "all" || f.value === "current")) && ( + + {/* Header with bulk actions */} + + New Deviations + {selectedItems.length > 0 && ( + + {/* Bulk Actions Dropdown */} + + setBulkActionsAnchorEl(null)} + > + handleBulkAction("accept-all-customer-specific")} + > + + Accept All Deviations - Customer Specific + + handleBulkAction("accept-all")}> + + Accept All Deviations + + {/* Only show delete option if there are template deviations that support deletion */} + {processedDriftData.currentDeviations.some( + (deviation) => + (deviation.standardName?.includes("ConditionalAccessTemplate") || + deviation.standardName?.includes("IntuneTemplate")) && + deviation.expectedValue === + "This policy only exists in the tenant, not in the template.", + ) && ( + handleBulkAction("deny-all-delete")}> + + Deny All Deviations - Delete + + )} + handleBulkAction("deny-all-remediate")}> + + Deny All Deviations - Remediate to align with template + + + + Remove Drift Customization + + + + )} + + {renderItemsByCategory(filteredDeviationItems)} + + )} + + {/* Accepted Deviations Section */} + {(!filterStatus || + filterStatus.length === 0 || + filterStatus.some((f) => f.value === "all" || f.value === "accepted")) && + filteredAcceptedItems.length > 0 && ( + + + Accepted Deviations + + {renderItemsByCategory(filteredAcceptedItems)} + + )} + + {/* Customer Specific Deviations Section */} + {(!filterStatus || + filterStatus.length === 0 || + filterStatus.some((f) => f.value === "all" || f.value === "customerspecific")) && + filteredCustomerSpecificItems.length > 0 && ( + + + Accepted Deviations - Customer Specific + + {renderItemsByCategory(filteredCustomerSpecificItems)} + + )} + + {/* Denied Deviations Section */} + {(!filterStatus || + filterStatus.length === 0 || + filterStatus.some((f) => f.value === "all" || f.value === "denied")) && + filteredDeniedItems.length > 0 && ( + + + Denied Deviations + + {renderItemsByCategory(filteredDeniedItems)} + + )} + + {/* Compliant Standards Section - Only shown when filtered by All or Compliant */} + {(!filterStatus || + filterStatus.length === 0 || + filterStatus.some((f) => f.value === "all" || f.value === "compliant")) && + filteredAlignedItems.length > 0 && ( + + + Compliant Standards + + + + )} + + {/* License Skipped Section - Always at the end */} + {filteredLicenseSkippedItems.length > 0 && ( + + + Skipped - No License Available + + + These standards were skipped because the required licenses are not available + for this tenant. + + + + )} + + + + )} + + {actionData.ready && ( + { + // Clear selected items after successful action + setSelectedItems([]); + }, + }} + row={actionData.data} + relatedQueryKeys={[`TenantDrift-${tenantFilter}`]} + /> + )} + + {/* Render all Menu components outside of card structure */} + {deviationItemsWithActions.map((item) => { + const supportsDelete = + (item.standardName?.includes("ConditionalAccessTemplate") || + item.standardName?.includes("IntuneTemplate")) && + item.expectedValue === "This policy only exists in the tenant, not in the template."; + return ( + handleMenuClose(item.id)} + > + { + handleDeviationAction("accept-customer-specific", item); + handleMenuClose(item.id); + }} + > + + Accept Deviation - Customer Specific + + { + handleDeviationAction("accept", item); + handleMenuClose(item.id); + }} + > + + Accept Deviation + + {supportsDelete && ( + { + handleDeviationAction("deny-delete", item); + handleMenuClose(item.id); + }} + > + + Deny Deviation - Delete Policy + + )} + { + handleDeviationAction("deny-remediate", item); + handleMenuClose(item.id); + }} + > + + Deny Deviation - Remediate to align with template + + + ); + })} + + {acceptedDeviationItemsWithActions.map((item) => { + const supportsDelete = + (item.standardName?.includes("ConditionalAccessTemplate") || + item.standardName?.includes("IntuneTemplate")) && + item.expectedValue === "This policy only exists in the tenant, not in the template."; + return ( + handleMenuClose(`accepted-${item.id}`)} + > + {supportsDelete && ( + { + handleDeviationAction("deny-delete", item); + handleMenuClose(`accepted-${item.id}`); + }} + > + + Deny - Delete Policy + + )} + { + handleDeviationAction("deny-remediate", item); + handleMenuClose(`accepted-${item.id}`); + }} + > + + Deny - Remediate to align with template + + { + handleDeviationAction("accept-customer-specific", item); + handleMenuClose(`accepted-${item.id}`); + }} + > + + Accept - Customer Specific + + + ); + })} + + {customerSpecificDeviationItemsWithActions.map((item) => { + const supportsDelete = + (item.standardName?.includes("ConditionalAccessTemplate") || + item.standardName?.includes("IntuneTemplate")) && + item.expectedValue === "This policy only exists in the tenant, not in the template."; + return ( + handleMenuClose(`customer-${item.id}`)} + > + {supportsDelete && ( + { + handleDeviationAction("deny-delete", item); + handleMenuClose(`customer-${item.id}`); + }} + > + + Deny - Delete + + )} + { + handleDeviationAction("deny-remediate", item); + handleMenuClose(`customer-${item.id}`); + }} + > + + Deny - Remediate to align with template + + { + handleDeviationAction("accept", item); + handleMenuClose(`customer-${item.id}`); + }} + > + + Accept + + + ); + })} + + {deniedDeviationItemsWithActions.map((item) => ( + handleMenuClose(`denied-${item.id}`)} + > + { + handleDeviationAction("accept", item); + handleMenuClose(`denied-${item.id}`); + }} + > + + Accept + + { + handleDeviationAction("accept-customer-specific", item); + handleMenuClose(`denied-${item.id}`); + }} + > + + Accept - Customer Specific + + + ))} + + {/* Hidden ExecutiveReportButton that gets triggered programmatically */} + + + + + ); +}; + +ManageDriftPage.getLayout = (page) => {page}; + +export default ManageDriftPage; diff --git a/src/pages/tenant/manage/driftManagementActions.js b/src/pages/tenant/manage/driftManagementActions.js new file mode 100644 index 000000000000..5d7cd8e80488 --- /dev/null +++ b/src/pages/tenant/manage/driftManagementActions.js @@ -0,0 +1,97 @@ +import React from "react"; +import { Edit, Sync, PlayArrow, PictureAsPdf } from "@mui/icons-material"; + +/** + * Creates the standard drift management actions array + * @param {Object} options - Configuration options + * @param {string} options.templateId - The template ID for conditional actions + * @param {Function} options.onRefresh - Function to call when refresh is triggered + * @param {Function} options.onGenerateReport - Function to call when generate report is triggered (optional) + * @returns {Array} Array of action objects + */ +export const createDriftManagementActions = ({ + templateId, + templateType = "classic", + showEditTemplate = false, + onRefresh, + onGenerateReport, + currentTenant, +}) => { + const actions = [ + { + label: "Refresh Data", + icon: , + noConfirm: true, + customFunction: onRefresh, + }, + ]; + + // Add Generate Report action if handler is provided + if (onGenerateReport) { + actions.push({ + label: "Generate Report", + icon: , + noConfirm: true, + customFunction: onGenerateReport, + }); + } + + // Add template-specific actions if templateId is available + if (templateId) { + // Conditionally add Edit Template action + if (showEditTemplate) { + actions.push({ + label: "Edit Template", + icon: , + color: "info", + noConfirm: true, + customFunction: () => { + // Use Next.js router for internal navigation + import("next/router") + .then(({ default: router }) => { + router.push( + `/tenant/standards/templates/template?id=${templateId}&type=${templateType}` + ); + }) + .catch(() => { + // Fallback to window.location if router is not available + window.location.href = `/tenant/standards/templates/template?id=${templateId}&type=${templateType}`; + }); + }, + }); + } + + actions.push( + { + label: `Run Standard Now (${currentTenant || "Currently Selected Tenant"})`, + type: "GET", + url: "/api/ExecStandardsRun", + icon: , + data: { + TemplateId: templateId, + }, + confirmText: "Are you sure you want to force a run of this standard?", + multiPost: false, + }, + { + label: "Run Standard Now (All Tenants in Template)", + type: "GET", + url: "/api/ExecStandardsRun", + icon: , + data: { + TemplateId: templateId, + tenantFilter: "allTenants", + }, + confirmText: "Are you sure you want to force a run of this standard?", + multiPost: false, + } + ); + } + + return actions; +}; + +/** + * Default export for backward compatibility + */ +export default createDriftManagementActions; diff --git a/src/pages/tenant/manage/edit.js b/src/pages/tenant/manage/edit.js new file mode 100644 index 000000000000..b96994fe7069 --- /dev/null +++ b/src/pages/tenant/manage/edit.js @@ -0,0 +1,356 @@ +import { Layout as DashboardLayout } from "../../../layouts/index.js"; +import { HeaderedTabbedLayout } from "../../../layouts/HeaderedTabbedLayout"; +import { useForm, useFormState } from "react-hook-form"; +import { ApiGetCall, ApiPostCall } from "../../../api/ApiCall"; +import { useEffect } from "react"; +import { useRouter } from "next/router"; +import CippFormComponent from "../../../components/CippComponents/CippFormComponent"; +import { Stack, Box, Typography, Button, Card, CardContent } from "@mui/material"; +import { Grid } from "@mui/system"; +import { CippPropertyListCard } from "../../../components/CippCards/CippPropertyListCard"; +import CippButtonCard from "../../../components/CippCards/CippButtonCard"; +import { getCippFormatting } from "../../../utils/get-cipp-formatting"; +import CippCustomVariables from "../../../components/CippComponents/CippCustomVariables"; +import { CippOffboardingDefaultSettings } from "../../../components/CippComponents/CippOffboardingDefaultSettings"; +import { CippApiResults } from "../../../components/CippComponents/CippApiResults"; +import { useSettings } from "../../../hooks/use-settings"; +import { Business, Save } from "@mui/icons-material"; +import tabOptions from "./tabOptions.json"; +import { CippHead } from "../../../components/CippComponents/CippHead"; + +const Page = () => { + const router = useRouter(); + const { templateId } = router.query; + const settings = useSettings(); + // Prioritize URL query parameter, then fall back to settings + const currentTenant = router.query.tenantFilter || settings.currentTenant; + + const formControl = useForm({ + mode: "onChange", + }); + + const offboardingFormControl = useForm({ + mode: "onChange", + }); + + // API call for updating tenant properties + const updateTenant = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: [ + `TenantProperties_${currentTenant}`, + "ListTenants-notAllTenants", + "TenantSelector", + ], + }); + + // API call for updating offboarding defaults + const updateOffboardingDefaults = ApiPostCall({ + urlFromData: true, + relatedQueryKeys: [`TenantProperties_${currentTenant}`, "CustomVariables*"], + }); + + const { isValid: isFormValid } = useFormState({ control: formControl.control }); + const { isValid: isOffboardingFormValid } = useFormState({ + control: offboardingFormControl.control, + }); + + const tenantDetails = ApiGetCall({ + url: + currentTenant && currentTenant !== "AllTenants" + ? `/api/ListTenantDetails?tenantFilter=${currentTenant}` + : null, + queryKey: + currentTenant && currentTenant !== "AllTenants" ? `TenantProperties_${currentTenant}` : null, + }); + + useEffect(() => { + if (tenantDetails.isSuccess && tenantDetails.data && currentTenant !== "AllTenants") { + formControl.reset({ + customerId: currentTenant, + Alias: tenantDetails?.data?.customProperties?.Alias ?? "", + Groups: + tenantDetails.data.Groups?.map((group) => ({ + label: group.Name, + value: group.Id, + })) || [], + }); + + // Set up offboarding defaults with default values + const tenantOffboardingDefaults = tenantDetails.data?.customProperties?.OffboardingDefaults; + const defaultOffboardingValues = { + ConvertToShared: false, + RemoveGroups: false, + HideFromGAL: false, + RemoveLicenses: false, + removeCalendarInvites: false, + RevokeSessions: false, + removePermissions: false, + RemoveRules: false, + ResetPass: false, + KeepCopy: false, + DeleteUser: false, + RemoveMobile: false, + DisableSignIn: false, + RemoveMFADevices: false, + RemoveTeamsPhoneDID: false, + ClearImmutableId: false, + }; + + let offboardingDefaults = {}; + + if (tenantOffboardingDefaults) { + try { + const parsed = JSON.parse(tenantOffboardingDefaults); + offboardingDefaults = { + offboardingDefaults: { ...defaultOffboardingValues, ...parsed }, + }; + } catch { + offboardingDefaults = { offboardingDefaults: defaultOffboardingValues }; + } + } else { + offboardingDefaults = { offboardingDefaults: defaultOffboardingValues }; + } + + offboardingFormControl.reset(offboardingDefaults); + } + }, [tenantDetails.isSuccess, tenantDetails.data, currentTenant]); + + const handleResetOffboardingDefaults = () => { + const defaultOffboardingValues = { + ConvertToShared: false, + RemoveGroups: false, + HideFromGAL: false, + RemoveLicenses: false, + removeCalendarInvites: false, + RevokeSessions: false, + removePermissions: false, + RemoveRules: false, + ResetPass: false, + KeepCopy: false, + DeleteUser: false, + RemoveMobile: false, + DisableSignIn: false, + RemoveMFADevices: false, + RemoveTeamsPhoneDID: false, + ClearImmutableId: false, + }; + + offboardingFormControl.reset({ offboardingDefaults: defaultOffboardingValues }); + + updateOffboardingDefaults.mutate({ + url: "/api/EditTenantOffboardingDefaults", + data: { + customerId: tenantDetails.data?.id || currentTenant, + defaultDomainName: tenantDetails.data?.defaultDomainName || currentTenant, + offboardingDefaults: null, + }, + }); + }; + + const title = "Manage Tenant"; + + // Show message for AllTenants + if (currentTenant === "AllTenants") { + return ( + + + + + + + + + Select a Specific Tenant + + + Tenant editing is not available when "All Tenants" is selected. Please select a + specific tenant to edit its configuration. + + + + + + + ); + } + + return ( + + + + + {/* First Row - Tenant Details and Edit Form */} + + + + + + } + onClick={formControl.handleSubmit((values) => { + const formattedValues = { + tenantAlias: values.Alias, + tenantGroups: values.Groups.map((group) => ({ + groupId: group.value, + groupName: group.label, + })), + customerId: tenantDetails.data?.id, + }; + updateTenant.mutate({ + url: "/api/EditTenant", + data: formattedValues, + }); + })} + disabled={updateTenant.isPending || !isFormValid || tenantDetails.isFetching} + > + {updateTenant.isPending ? "Saving..." : "Save Changes"} + + } + isFetching={tenantDetails.isFetching} + > + + + + + + + + + {/* Second Row - Offboarding Defaults and Custom Variables */} + + } + onClick={offboardingFormControl.handleSubmit((values) => { + const offboardingSettings = values.offboardingDefaults || values; + const formattedValues = { + customerId: tenantDetails.data?.id || currentTenant, + defaultDomainName: tenantDetails.data?.defaultDomainName || currentTenant, + offboardingDefaults: offboardingSettings, + }; + updateOffboardingDefaults.mutate({ + url: "/api/EditTenantOffboardingDefaults", + data: formattedValues, + }); + })} + disabled={ + updateOffboardingDefaults.isPending || + !isOffboardingFormValid || + tenantDetails.isFetching + } + > + {updateOffboardingDefaults.isPending ? "Saving..." : "Save Changes"} + + } + isFetching={tenantDetails.isFetching} + > + + + Configure default offboarding settings specifically for this tenant. These + settings will override user defaults when offboarding users in this tenant. + + + + + + + + Click "Reset All to Off" to turn off all options, then click "Save" to clear + tenant defaults. + + + + + + + + + + + + + Custom Variables + + + + + + + + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/tenant/manage/history.js b/src/pages/tenant/manage/history.js new file mode 100644 index 000000000000..129fcad963b4 --- /dev/null +++ b/src/pages/tenant/manage/history.js @@ -0,0 +1,313 @@ +import { useState, useEffect } from "react"; +import { + Box, + Stack, + Typography, + Button, + Chip, + Card, + CardContent, + CircularProgress, + Alert, + Link, +} from "@mui/material"; +import { + Timeline, + TimelineItem, + TimelineSeparator, + TimelineConnector, + TimelineContent, + TimelineDot, + TimelineOppositeContent, +} from "@mui/lab"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; +import { HeaderedTabbedLayout } from "../../../layouts/HeaderedTabbedLayout"; +import { ApiGetCall } from "../../../api/ApiCall"; +import { useRouter } from "next/router"; +import { + Policy, + Error as ErrorIcon, + Warning as WarningIcon, + Info as InfoIcon, + CheckCircle as SuccessIcon, + ExpandMore, + Sync, +} from "@mui/icons-material"; +import tabOptions from "./tabOptions.json"; +import { useSettings } from "../../../hooks/use-settings"; + +const Page = () => { + const router = useRouter(); + const { templateId } = router.query; + const [daysToLoad, setDaysToLoad] = useState(5); + const userSettings = useSettings(); + // Prioritize URL query parameter, then fall back to settings + const tenant = router.query.tenantFilter || userSettings.currentTenant; + const [expandedMessages, setExpandedMessages] = useState(new Set()); + + // Toggle message expansion + const toggleMessageExpansion = (index) => { + const newExpanded = new Set(expandedMessages); + if (newExpanded.has(index)) { + newExpanded.delete(index); + } else { + newExpanded.add(index); + } + setExpandedMessages(newExpanded); + }; + + // Truncate message if too long + const truncateMessage = (message, maxLength = 256) => { + if (!message || message.length <= maxLength) { + return { text: message, isTruncated: false }; + } + return { + text: message.substring(0, maxLength) + "...", + fullText: message, + isTruncated: true, + }; + }; + + // Calculate date range for API call + const getDateRange = (days) => { + const endDate = new Date(); + const startDate = new Date(); + startDate.setDate(endDate.getDate() - days); + + return { + startDate: startDate.toISOString().split("T")[0].replace(/-/g, ""), + endDate: endDate.toISOString().split("T")[0].replace(/-/g, ""), + }; + }; + + const { startDate, endDate } = getDateRange(daysToLoad); + + const logsData = ApiGetCall({ + url: `/api/Listlogs?tenant=${tenant}&StartDate=${startDate}&EndDate=${endDate}&Filter=true`, + queryKey: `Listlogs-${tenant}-${startDate}-${endDate}`, + }); + + // Get severity icon and color + const getSeverityConfig = (severity) => { + const severityLower = severity?.toLowerCase(); + switch (severityLower) { + case "error": + return { icon: , color: "error", chipColor: "error" }; + case "warning": + return { icon: , color: "warning", chipColor: "warning" }; + case "info": + return { icon: , color: "info", chipColor: "info" }; + case "success": + return { icon: , color: "success", chipColor: "success" }; + default: + return { icon: , color: "grey", chipColor: "default" }; + } + }; + + // Format date for display + const formatDate = (dateString) => { + const date = new Date(dateString); + return { + time: date.toLocaleTimeString("en-US", { + hour: "2-digit", + minute: "2-digit", + hour12: false, + }), + date: date.toLocaleDateString("en-US", { + month: "short", + day: "numeric", + year: "numeric", + }), + }; + }; + + // Load more days + const handleLoadMore = () => { + setDaysToLoad((prev) => prev + 7); + }; + + // Actions for the ActionsMenu - just refresh for history page + const actions = [ + { + label: "Refresh Data", + icon: , + noConfirm: true, + customFunction: () => { + logsData.refetch(); + }, + }, + ]; + + const title = "View History"; + // Sort logs by date (newest first) + const sortedLogs = logsData.data + ? [...logsData.data].sort((a, b) => new Date(b.DateTime) - new Date(a.DateTime)) + : []; + + return ( + + + + Activity Timeline + + This timeline shows the history of actions taken on this tenant, by CIPP for the last{" "} + {daysToLoad} days. + + + {logsData.isLoading && ( + + + + )} + + {logsData.isError && ( + Failed to load activity logs. Please try again. + )} + + {logsData.data && sortedLogs.length === 0 && ( + No activity logs found for the selected time period. + )} + + {logsData.data && sortedLogs.length > 0 && ( + + + + {sortedLogs.map((log, index) => { + const { icon, color, chipColor } = getSeverityConfig(log.Severity); + const { time, date } = formatDate(log.DateTime); + const { text, fullText, isTruncated } = truncateMessage(log.Message); + const isExpanded = expandedMessages.has(index); + + return ( + + + + {date} + + + {time} + + + + + + {icon} + + {index < sortedLogs.length - 1 && } + + + + + + + + {log.IP && ( + + )} + + + + + {isExpanded ? fullText : text} + + {isTruncated && ( + toggleMessageExpansion(index)} + sx={{ + mt: 0.5, + display: "block", + textAlign: "left", + fontSize: "0.75rem", + }} + > + {isExpanded ? "Show less" : "Show more"} + + )} + + + {log.User && ( + + User: {log.User} + + )} + + + + ); + })} + + + + + + + + )} + + + + ); +}; + +Page.getLayout = (page) => {page}; + +export default Page; diff --git a/src/pages/tenant/manage/policies-deployed.js b/src/pages/tenant/manage/policies-deployed.js new file mode 100644 index 000000000000..d38f68d03698 --- /dev/null +++ b/src/pages/tenant/manage/policies-deployed.js @@ -0,0 +1,605 @@ +import { Layout as DashboardLayout } from "../../../layouts/index.js"; +import { useRouter } from "next/router"; +import { Policy, Security, AdminPanelSettings, Devices, ExpandMore } from "@mui/icons-material"; +import { + Box, + Stack, + Typography, + Accordion, + AccordionSummary, + AccordionDetails, + Chip, +} from "@mui/material"; +import { HeaderedTabbedLayout } from "../../../layouts/HeaderedTabbedLayout"; +import tabOptions from "./tabOptions.json"; +import { CippDataTable } from "../../../components/CippTable/CippDataTable"; +import { CippHead } from "../../../components/CippComponents/CippHead"; +import { ApiGetCall } from "../../../api/ApiCall"; +import standardsData from "../../../data/standards.json"; +import { createDriftManagementActions } from "./driftManagementActions"; +import { useSettings } from "../../../hooks/use-settings"; +import { CippAutoComplete } from "../../../components/CippComponents/CippAutocomplete"; +import { useEffect } from "react"; + +const PoliciesDeployedPage = () => { + const userSettingsDefaults = useSettings(); + const router = useRouter(); + const { templateId } = router.query; + const tenantFilter = router.query.tenantFilter || userSettingsDefaults.tenantFilter; + const currentTenant = userSettingsDefaults.currentTenant; + + // API call to get standards template data + const standardsApi = ApiGetCall({ + url: "/api/listStandardTemplates", + queryKey: "ListStandardsTemplates-Drift", + }); + + // API call to get standards comparison data + const comparisonApi = ApiGetCall({ + url: "/api/ListStandardsCompare", + data: { + TemplateId: templateId, + TenantFilter: tenantFilter, + CompareToStandard: true, + }, + queryKey: `StandardsCompare-${templateId}-${tenantFilter}`, + enabled: !!templateId && !!tenantFilter, + }); + + // API call to get drift data for deviation statuses + const driftApi = ApiGetCall({ + url: "/api/listTenantDrift", + data: { + tenantFilter: tenantFilter, + standardsId: templateId, + }, + queryKey: `TenantDrift-${templateId}-${tenantFilter}`, + enabled: !!templateId && !!tenantFilter, + }); + + // API call to get all Intune templates for displayName lookup + const intuneTemplatesApi = ApiGetCall({ + url: "/api/ListIntuneTemplates", + queryKey: "ListIntuneTemplates", + }); + + // Find the current template from standards data + const currentTemplate = (standardsApi.data || []).find( + (template) => template.GUID === templateId + ); + const templateStandards = currentTemplate?.standards || {}; + const comparisonData = comparisonApi.data?.[0] || {}; + + // Helper function to get status from comparison data with deviation status + const getStatus = (standardKey, templateValue = null, templateType = null) => { + const comparisonKey = `standards.${standardKey}`; + const comparisonItem = comparisonData[comparisonKey]; + const value = comparisonItem?.Value; + + // If value is true, it's deployed and compliant + if (value === true) { + return "Deployed"; + } + + // Check if ExpectedValue and CurrentValue match (like drift.js does) + if (comparisonItem?.ExpectedValue && comparisonItem?.CurrentValue) { + try { + const expectedStr = JSON.stringify(comparisonItem.ExpectedValue); + const currentStr = JSON.stringify(comparisonItem.CurrentValue); + if (expectedStr === currentStr) { + return "Deployed"; + } + } catch (e) { + console.error("Error comparing values:", e); + } + } + + // If value is explicitly false, it means not deployed (not a deviation) + if (value === false) { + return "Not Deployed"; + } + + // If value is null/undefined, check drift data for deviation status + const driftData = Array.isArray(driftApi.data) ? driftApi.data : []; + + // For templates, we need to match against the full template path + let searchKeys = [standardKey, `standards.${standardKey}`]; + + // Add template-specific search keys + if (templateValue && templateType) { + searchKeys.push( + `standards.${templateType}.${templateValue}`, + `${templateType}.${templateValue}`, + templateValue + ); + } + + const deviation = driftData.find((item) => + searchKeys.some( + (key) => + item.standardName === key || + item.policyName === key || + item.standardName?.includes(key) || + item.policyName?.includes(key) + ) + ); + + if (deviation && deviation.Status) { + return `Deviation - ${deviation.Status}`; + } + + // Only return "Deviation - New" if we have comparison data but value is null + if (comparisonItem) { + return "Deviation - New"; + } + + return "Not Configured"; + }; + + // Helper function to get display name from drift data + const getDisplayNameFromDrift = (standardKey, templateValue = null, templateType = null) => { + const driftData = Array.isArray(driftApi.data) ? driftApi.data : []; + + // For templates, we need to match against the full template path + let searchKeys = [standardKey, `standards.${standardKey}`]; + + // Add template-specific search keys + if (templateValue && templateType) { + searchKeys.push( + `standards.${templateType}.${templateValue}`, + `${templateType}.${templateValue}`, + templateValue + ); + } + + const deviation = driftData.find((item) => + searchKeys.some( + (key) => + item.standardName === key || + item.policyName === key || + item.standardName?.includes(key) || + item.policyName?.includes(key) + ) + ); + + // If found in drift data, return the display name + if (deviation?.standardDisplayName) { + return deviation.standardDisplayName; + } + + // If not found in drift data and this is an Intune template, look it up in the Intune templates API + if (templateType === "IntuneTemplate" && templateValue && intuneTemplatesApi.data) { + const template = intuneTemplatesApi.data.find((t) => t.GUID === templateValue); + if (template?.Displayname) { + return template.Displayname; + } + } + + return null; + }; + + // Helper function to get last refresh date + const getLastRefresh = (standardKey) => { + const comparisonKey = `standards.${standardKey}`; + const lastRefresh = comparisonData[comparisonKey]?.LastRefresh; + return lastRefresh ? new Date(lastRefresh).toLocaleDateString() : "N/A"; + }; + + // Helper function to get standard name from standards.json + const getStandardName = (standardKey) => { + const standardName = `standards.${standardKey}`; + const standard = standardsData.find((s) => s.name === standardName); + return standard?.label || standardKey.replace(/([A-Z])/g, " $1").trim(); + }; + + // Helper function to get template label from standards API data + const getTemplateLabel = (templateValue, templateType) => { + if (!templateValue || !currentTemplate) return "Unknown Template"; + + // Search through all templates in the current template data + const allTemplates = currentTemplate.standards || {}; + + // Look for the template in the specific type array + if (allTemplates[templateType] && Array.isArray(allTemplates[templateType])) { + const template = allTemplates[templateType].find( + (t) => t.TemplateList?.value === templateValue + ); + if (template?.TemplateList?.label) { + return template.TemplateList.label; + } + } + + // If not found in the specific type, search through all template types + for (const [key, templates] of Object.entries(allTemplates)) { + if (Array.isArray(templates)) { + const template = templates.find((t) => t.TemplateList?.value === templateValue); + if (template?.TemplateList?.label) { + return template.TemplateList.label; + } + } + } + + return "Unknown Template"; + }; + + // Process Security Standards (everything NOT IntuneTemplates or ConditionalAccessTemplates) + const deployedStandards = Object.entries(templateStandards) + .filter(([key]) => key !== "IntuneTemplate" && key !== "ConditionalAccessTemplate") + .map(([key, value], index) => ({ + id: index + 1, + name: getStandardName(key), + category: "Security Standard", + status: getStatus(key), + lastModified: getLastRefresh(key), + standardKey: key, + })); + + // Process Intune Templates + const intunePolices = []; + (templateStandards.IntuneTemplate || []).forEach((template, index) => { + console.log("Processing IntuneTemplate in policies-deployed:", template); + + // Check if this template has TemplateList-Tags (try both property formats) + const templateListTags = template["TemplateList-Tags"] || template.TemplateListTags; + + // Check if this template has TemplateList-Tags and expand them + if (templateListTags?.value && templateListTags?.addedFields?.templates) { + console.log( + "Found TemplateList-Tags for IntuneTemplate in policies-deployed:", + templateListTags + ); + console.log("Templates to expand:", templateListTags.addedFields.templates); + + // Expand TemplateList-Tags into multiple template items + templateListTags.addedFields.templates.forEach((expandedTemplate, expandedIndex) => { + console.log("Expanding IntuneTemplate in policies-deployed:", expandedTemplate); + const standardKey = `IntuneTemplate.${expandedTemplate.GUID}`; + const driftDisplayName = getDisplayNameFromDrift( + standardKey, + expandedTemplate.GUID, + "IntuneTemplate" + ); + const packageTagName = templateListTags.value; + const templateName = + expandedTemplate.displayName || expandedTemplate.name || "Unknown Template"; + + intunePolices.push({ + id: intunePolices.length + 1, + name: `${driftDisplayName || templateName} (via ${packageTagName})`, + category: "Intune Template", + platform: "Multi-Platform", + status: getStatus(standardKey, expandedTemplate.GUID, "IntuneTemplate"), + lastModified: getLastRefresh(standardKey), + assignedGroups: template.AssignTo || "N/A", + templateValue: expandedTemplate.GUID, + }); + }); + } else { + // Regular TemplateList processing + const templateGuid = template.TemplateList?.value; + const standardKey = `IntuneTemplate.${templateGuid}`; + const driftDisplayName = getDisplayNameFromDrift(standardKey, templateGuid, "IntuneTemplate"); + + // Try multiple fallbacks for the name + let templateName = driftDisplayName; + if (!templateName) { + const templateLabel = getTemplateLabel(templateGuid, "IntuneTemplate"); + if (templateLabel !== "Unknown Template") { + templateName = `Intune - ${templateLabel}`; + } + } + // If still no name, try looking up directly in intuneTemplatesApi by GUID + if (!templateName && templateGuid && intuneTemplatesApi.data) { + const intuneTemplate = intuneTemplatesApi.data.find((t) => t.GUID === templateGuid); + if (intuneTemplate?.Displayname) { + templateName = intuneTemplate.Displayname; + } + } + // Final fallback + if (!templateName) { + templateName = `Intune - ${templateGuid || "Unknown Template"}`; + } + + intunePolices.push({ + id: intunePolices.length + 1, + name: templateName, + category: "Intune Template", + platform: "Multi-Platform", + status: getStatus(standardKey, templateGuid, "IntuneTemplate"), + lastModified: getLastRefresh(standardKey), + assignedGroups: template.AssignTo || "N/A", + templateValue: templateGuid, + }); + } + }); + + // Add any templates from comparison data that weren't in template standards (e.g., from tags) + // Check for IntuneTemplate entries in comparison data + Object.keys(comparisonData).forEach((key) => { + if (key.startsWith("standards.IntuneTemplate.")) { + const guid = key.replace("standards.IntuneTemplate.", ""); + // Check if this GUID is already in our list + const alreadyExists = intunePolices.some((p) => p.templateValue === guid); + if (!alreadyExists && comparisonData[key]?.Value === true) { + const standardKey = `IntuneTemplate.${guid}`; + const driftDisplayName = getDisplayNameFromDrift(standardKey, guid, "IntuneTemplate"); + + intunePolices.push({ + id: intunePolices.length + 1, + name: driftDisplayName || `Intune - ${guid}`, + category: "Intune Template", + platform: "Multi-Platform", + status: getStatus(standardKey, guid, "IntuneTemplate"), + lastModified: getLastRefresh(standardKey), + assignedGroups: "N/A", + templateValue: guid, + }); + } + } + }); + + // Process Conditional Access Templates + const conditionalAccessPolicies = []; + (templateStandards.ConditionalAccessTemplate || []).forEach((template, index) => { + console.log("Processing ConditionalAccessTemplate in policies-deployed:", template); + + // Check if this template has TemplateList-Tags (try both property formats) + const templateListTags = template["TemplateList-Tags"] || template.TemplateListTags; + + // Check if this template has TemplateList-Tags and expand them + if (templateListTags?.value && templateListTags?.addedFields?.templates) { + console.log( + "Found TemplateList-Tags for ConditionalAccessTemplate in policies-deployed:", + templateListTags + ); + console.log("Templates to expand:", templateListTags.addedFields.templates); + + // Expand TemplateList-Tags into multiple template items + templateListTags.addedFields.templates.forEach((expandedTemplate, expandedIndex) => { + console.log("Expanding ConditionalAccessTemplate in policies-deployed:", expandedTemplate); + const standardKey = `ConditionalAccessTemplate.${expandedTemplate.GUID}`; + const driftDisplayName = getDisplayNameFromDrift( + standardKey, + expandedTemplate.GUID, + "ConditionalAccessTemplate" + ); + const packageTagName = templateListTags.value; + const templateName = + expandedTemplate.displayName || expandedTemplate.name || "Unknown Template"; + + conditionalAccessPolicies.push({ + id: conditionalAccessPolicies.length + 1, + name: `${driftDisplayName || templateName} (via ${packageTagName})`, + state: template.state || "Unknown", + conditions: "Conditional Access Policy", + controls: "Access Control", + lastModified: getLastRefresh(standardKey), + status: getStatus(standardKey, expandedTemplate.GUID, "ConditionalAccessTemplate"), + templateValue: expandedTemplate.GUID, + }); + }); + } else { + // Regular TemplateList processing + const standardKey = `ConditionalAccessTemplate.${template.TemplateList?.value}`; + const driftDisplayName = getDisplayNameFromDrift( + standardKey, + template.TemplateList?.value, + "ConditionalAccessTemplate" + ); + const templateLabel = getTemplateLabel( + template.TemplateList?.value, + "ConditionalAccessTemplate" + ); + + conditionalAccessPolicies.push({ + id: conditionalAccessPolicies.length + 1, + name: driftDisplayName || `Conditional Access - ${templateLabel}`, + state: template.state || "Unknown", + conditions: "Conditional Access Policy", + controls: "Access Control", + lastModified: getLastRefresh(standardKey), + status: getStatus(standardKey, template.TemplateList?.value, "ConditionalAccessTemplate"), + templateValue: template.TemplateList?.value, + }); + } + }); + + // Add any CA templates from comparison data that weren't in template standards + Object.keys(comparisonData).forEach((key) => { + if (key.startsWith("standards.ConditionalAccessTemplate.")) { + const guid = key.replace("standards.ConditionalAccessTemplate.", ""); + // Check if this GUID is already in our list + const alreadyExists = conditionalAccessPolicies.some((p) => p.templateValue === guid); + if (!alreadyExists && comparisonData[key]?.Value === true) { + const standardKey = `ConditionalAccessTemplate.${guid}`; + const driftDisplayName = getDisplayNameFromDrift( + standardKey, + guid, + "ConditionalAccessTemplate" + ); + + conditionalAccessPolicies.push({ + id: conditionalAccessPolicies.length + 1, + name: driftDisplayName || `Conditional Access - ${guid}`, + state: "Unknown", + conditions: "Conditional Access Policy", + controls: "Access Control", + lastModified: getLastRefresh(standardKey), + status: getStatus(standardKey, guid, "ConditionalAccessTemplate"), + templateValue: guid, + }); + } + } + }); + + // Simple filter for all templates (no type filtering) + const templateOptions = standardsApi.data + ? standardsApi.data.map((template) => ({ + label: + template.displayName || + template.templateName || + template.name || + `Template ${template.GUID}`, + value: template.GUID, + })) + : []; + + // Find currently selected template + const selectedTemplateOption = + templateId && templateOptions.length + ? templateOptions.find((option) => option.value === templateId) || null + : null; + + // Effect to refetch APIs when templateId changes (needed for shallow routing) + useEffect(() => { + if (templateId) { + comparisonApi.refetch(); + driftApi.refetch(); + } + }, [templateId]); + + const actions = createDriftManagementActions({ + templateId, + templateType: currentTemplate?.type || "classic", + showEditTemplate: true, + onRefresh: () => { + standardsApi.refetch(); + comparisonApi.refetch(); + driftApi.refetch(); + }, + currentTenant, + }); + const title = "View Deployed Policies"; + const subtitle = []; + + return ( + + + + {/* Filters Section */} + + { + const query = { ...router.query }; + if (selectedTemplate && selectedTemplate.value) { + query.templateId = selectedTemplate.value; + } else { + delete query.templateId; + } + router.replace( + { + pathname: router.pathname, + query: query, + }, + undefined, + { shallow: true } + ); + }} + sx={{ width: 300 }} + placeholder="Select template..." + /> + + + + {/* Standards Section */} + + }> + + + Security Standards + + + + + + + + + {/* Intune Policies Section */} + + }> + + + Intune Policies + + + + + + + + + {/* Conditional Access Policies Section */} + + }> + + + Conditional Access Policies + + + + + + + + + + + ); +}; + +PoliciesDeployedPage.getLayout = (page) => {page}; + +export default PoliciesDeployedPage; diff --git a/src/pages/tenant/manage/tabOptions.json b/src/pages/tenant/manage/tabOptions.json new file mode 100644 index 000000000000..adf60d405b09 --- /dev/null +++ b/src/pages/tenant/manage/tabOptions.json @@ -0,0 +1,30 @@ +[ + { + "label": "Edit Tenant", + "path": "/tenant/manage/edit" + }, + { + "label": "Manage Drift", + "path": "/tenant/manage/drift" + }, + { + "label": "Configuration Backup", + "path": "/tenant/manage/configuration-backup" + }, + { + "label": "Applied Standards Report", + "path": "/tenant/manage/applied-standards" + }, + { + "label": "Policies and Settings Deployed", + "path": "/tenant/manage/policies-deployed" + }, + { + "label": "User Defaults", + "path": "/tenant/manage/user-defaults" + }, + { + "label": "History", + "path": "/tenant/manage/history" + } +] diff --git a/src/pages/tenant/manage/user-defaults.js b/src/pages/tenant/manage/user-defaults.js new file mode 100644 index 000000000000..08979dd2ed50 --- /dev/null +++ b/src/pages/tenant/manage/user-defaults.js @@ -0,0 +1,258 @@ +import { Layout as DashboardLayout } from "../../../layouts/index.js"; +import { TabbedLayout } from "../../../layouts/TabbedLayout"; +import { CippTablePage } from "../../../components/CippComponents/CippTablePage.jsx"; +import { Button } from "@mui/material"; +import { Delete, Add, Edit } from "@mui/icons-material"; +import { useDialog } from "../../../hooks/use-dialog"; +import { CippApiDialog } from "../../../components/CippComponents/CippApiDialog"; +import countryList from "../../../data/countryList.json"; +import tabOptions from "./tabOptions.json"; +import { useSettings } from "../../../hooks/use-settings"; + +const Page = () => { + const pageTitle = "New User Default Templates"; + const createDialog = useDialog(); + const userSettings = useSettings(); + + const templateFields = [ + { + label: "Template Name", + name: "templateName", + type: "textField", + required: true, + }, + { + label: "Default for Tenant", + name: "defaultForTenant", + type: "switch", + }, + { + label: "Display Name Suffix (e.g., ' - Contractor' or ' (External)')", + name: "displayName", + type: "textField", + }, + { + label: "Username Format", + name: "usernameFormat", + type: "autoComplete", + options: [ + { label: "%FirstName%.%LastName% (john.doe)", value: "%FirstName%.%LastName%" }, + { label: "%FirstName%%LastName% (johndoe)", value: "%FirstName%%LastName%" }, + { label: "%LastName%.%FirstName% (doe.john)", value: "%LastName%.%FirstName%" }, + { label: "%LastName%%FirstName% (doejohn)", value: "%LastName%%FirstName%" }, + { label: "%FirstName%_%LastName% (john_doe)", value: "%FirstName%_%LastName%" }, + { label: "%LastName%_%FirstName% (doe_john)", value: "%LastName%_%FirstName%" }, + { label: "%FirstName%-%LastName% (john-doe)", value: "%FirstName%-%LastName%" }, + { label: "%LastName%-%FirstName% (doe-john)", value: "%LastName%-%FirstName%" }, + { label: "%FirstName[1]%%LastName% (jdoe)", value: "%FirstName[1]%%LastName%" }, + { label: "%FirstName[2]%%LastName% (jodoe)", value: "%FirstName[2]%%LastName%" }, + { label: "%FirstName[3]%%LastName% (johdoe)", value: "%FirstName[3]%%LastName%" }, + { label: "%FirstName%.%LastName[1]% (john.d)", value: "%FirstName%.%LastName[1]%" }, + { label: "%FirstName%%LastName[1]% (johnd)", value: "%FirstName%%LastName[1]%" }, + { label: "%FirstName[1]%.%LastName% (j.doe)", value: "%FirstName[1]%.%LastName%" }, + { label: "%LastName% (doe)", value: "%LastName%" }, + { label: "%FirstName% (john)", value: "%FirstName%" }, + ], + multiple: false, + creatable: true, + }, + { + label: "Primary Domain", + name: "primDomain", + type: "autoComplete", + api: { + url: "/api/ListDomains", + labelField: "id", + valueField: "id", + queryKey: "ListDomains", + }, + multiple: false, + creatable: false, + }, + { + label: "Add Aliases", + name: "addedAliases", + type: "textField", + multiline: true, + rows: 4, + }, + { + label: "Usage Location", + name: "usageLocation", + type: "autoComplete", + options: countryList.map(({ Code, Name }) => ({ + label: Name, + value: Code, + })), + multiple: false, + creatable: false, + }, + { + label: "Licenses", + name: "licenses", + type: "autoComplete", + api: { + url: "/api/ListLicenses", + labelField: (option) => + `${option.License || option.skuPartNumber} (${ + option.AvailableUnits || 0 + } available)`, + valueField: "skuId", + queryKey: "ListLicenses", + }, + multiple: true, + creatable: false, + }, + { + label: "Job Title", + name: "jobTitle", + type: "textField", + }, + { + label: "Street", + name: "streetAddress", + type: "textField", + }, + { + label: "City", + name: "city", + type: "textField", + }, + { + label: "State/Province", + name: "state", + type: "textField", + }, + { + label: "Postal Code", + name: "postalCode", + type: "textField", + }, + { + label: "Country", + name: "country", + type: "textField", + }, + { + label: "Company Name", + name: "companyName", + type: "textField", + }, + { + label: "Department", + name: "department", + type: "textField", + }, + { + label: "Mobile #", + name: "mobilePhone", + type: "textField", + }, + { + label: "Business #", + name: "businessPhones[0]", + type: "textField", + }, + ]; + + const actions = [ + { + label: "Edit Template", + type: "POST", + url: "/api/AddUserDefaults", + icon: , + setDefaultValues: true, + data: { GUID: "GUID", tenantFilter: "tenantFilter" }, + confirmText: "Edit the template and click Confirm to save.", + relatedQueryKeys: [`ListNewUserDefaults-${userSettings.currentTenant}`], + fields: templateFields, + }, + { + label: "Delete Template", + type: "POST", + url: "/api/RemoveUserDefaultTemplate", + icon: , + data: { ID: "GUID" }, + confirmText: "Do you want to delete this User Default template?", + multiPost: false, + }, + ]; + + const offCanvas = { + extendedInfoFields: [ + "templateName", + "defaultForTenant", + "displayName", + "usernameFormat", + "primDomain", + "usageLocation", + "licenses", + "jobTitle", + "streetAddress", + "city", + "state", + "postalCode", + "country", + "companyName", + "department", + "mobilePhone", + "businessPhones", + ], + actions: actions, + }; + + const createTemplateAction = { + label: "Create User Default Template", + type: "POST", + url: "/api/AddUserDefaults", + + relatedQueryKeys: [`ListNewUserDefaults-${userSettings.currentTenant}`], + }; + + return ( + <> + } onClick={createDialog.handleOpen} sx={{ mr: 1 }}> + Add Template + + } + /> + + + + ); +}; + +Page.getLayout = (page) => ( + + {page} + +); + +export default Page; diff --git a/src/pages/tenant/reports/application-consent/index.js b/src/pages/tenant/reports/application-consent/index.js index c6524f8345e6..3270740aa766 100644 --- a/src/pages/tenant/reports/application-consent/index.js +++ b/src/pages/tenant/reports/application-consent/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; const simpleColumns = ["Tenant", "Name", "ApplicationID", "ObjectID", "Scope", "StartTime"]; diff --git a/src/pages/tenant/reports/index.js b/src/pages/tenant/reports/index.js index 095383995762..cb5872a4486b 100644 --- a/src/pages/tenant/reports/index.js +++ b/src/pages/tenant/reports/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; const Page = () => { const pageTitle = "Reports"; diff --git a/src/pages/tenant/reports/list-csp-licenses/index.jsx b/src/pages/tenant/reports/list-csp-licenses/index.jsx index b046b6ea275c..6cf2cacd9f44 100644 --- a/src/pages/tenant/reports/list-csp-licenses/index.jsx +++ b/src/pages/tenant/reports/list-csp-licenses/index.jsx @@ -1,35 +1,35 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; import { MinusIcon, PlusIcon } from "@heroicons/react/24/outline"; import { DeleteForever, ShoppingCart } from "@mui/icons-material"; import { Button } from "@mui/material"; import Link from "next/link"; const Page = () => { - const pageTitle = "CSP Licenses Report"; + const pageTitle = "CSP Licences Report"; const apiUrl = "/api/listCSPLicenses"; const actions = [ { - label: "Increase license count by 1", + label: "Increase licence count by 1", type: "POST", icon: , url: "/api/ExecCSPLicense", data: { Action: "!Add", sku: "sku", add: 1 }, - confirmText: "Are you sure you want to buy 1 extra license?", + confirmText: "Are you sure you want to buy 1 extra licence?", multiPost: false, }, { - label: "Decrease license count by 1", + label: "Decrease licence count by 1", type: "POST", icon: , url: "/api/ExecCSPLicense", data: { Action: "!Remove", sku: "sku", Remove: 1 }, - confirmText: "Are you sure you want to decrease the license count by 1?", + confirmText: "Are you sure you want to decrease the licence count by 1?", multiPost: false, }, { - label: "Increase license count", + label: "Increase licence count", type: "POST", icon: , url: "/api/ExecCSPLicense", @@ -38,15 +38,15 @@ const Page = () => { { type: "textField", name: "add", - label: "The number of licenses to add", + label: "The number of licences to add", multiple: false, }, ], - confirmText: "Enter the amount of licenses to buy, and press confirm.", + confirmText: "Enter the amount of licences to buy, and press confirm.", multiPost: false, }, { - label: "Decrease license count", + label: "Decrease licence count", type: "POST", icon: , url: "/api/ExecCSPLicense", @@ -59,7 +59,7 @@ const Page = () => { }, ], data: { Action: "!Remove", sku: "sku" }, - confirmText: "Enter the number of licenses to remove. This must be a number greater than 0.", + confirmText: "Enter the number of licences to remove. This must be a number greater than 0.", multiPost: false, }, { diff --git a/src/pages/tenant/reports/list-licenses/index.js b/src/pages/tenant/reports/list-licenses/index.js index 417e1ef16910..35d61ea16158 100644 --- a/src/pages/tenant/reports/list-licenses/index.js +++ b/src/pages/tenant/reports/list-licenses/index.js @@ -1,8 +1,8 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; const Page = () => { - const pageTitle = "Licenses Report"; + const pageTitle = "Licences Report"; const apiUrl = "/api/ListLicenses"; const simpleColumns = [ @@ -11,6 +11,8 @@ const Page = () => { "CountUsed", "CountAvailable", "TotalLicenses", + "AssignedUsers", + "AssignedGroups", "TermInfo", // TODO TermInfo is not showing as a clickable json object in the table, like CApolicies does in the mfa report. IDK how to fix it. -Bobby ]; diff --git a/src/pages/tenant/standards/alignment/index.js b/src/pages/tenant/standards/alignment/index.js new file mode 100644 index 000000000000..1e7470d2dd44 --- /dev/null +++ b/src/pages/tenant/standards/alignment/index.js @@ -0,0 +1,68 @@ +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { TabbedLayout } from "../../../../layouts/TabbedLayout"; +import { Delete, Add } from "@mui/icons-material"; +import { EyeIcon } from "@heroicons/react/24/outline"; +import tabOptions from "../tabOptions.json"; + +const Page = () => { + const pageTitle = "Standard & Drift Alignment"; + + const actions = [ + { + label: "View Tenant Report", + link: "/tenant/manage/applied-standards/?tenantFilter=[tenantFilter]&templateId=[standardId]", + icon: , + color: "info", + target: "_self", + }, + { + label: "Manage Drift", + link: "/tenant/manage/drift?templateId=[standardId]&tenantFilter=[tenantFilter]", + icon: , + color: "info", + target: "_self", + condition: (row) => row.standardType === "drift", + }, + { + label: "Remove Drift Customization", + type: "POST", + url: "/api/ExecUpdateDriftDeviation", + icon: , + data: { + RemoveDriftCustomization: "true", + tenantFilter: "tenantFilter", + }, + confirmText: + "Are you sure you want to remove all drift customizations? This resets the Drift Standard to the default template, and will generate alerts for the drifted items.", + multiPost: false, + condition: (row) => row.standardType === "drift", + }, + ]; + + return ( + + ); +}; + +Page.getLayout = (page) => ( + + {page} + +); + +export default Page; diff --git a/src/pages/tenant/standards/bpa-report/builder.js b/src/pages/tenant/standards/bpa-report/builder.js index e0947b38961f..3e7cf6f56475 100644 --- a/src/pages/tenant/standards/bpa-report/builder.js +++ b/src/pages/tenant/standards/bpa-report/builder.js @@ -1,4 +1,4 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; import { Box, Container, Typography, Button, IconButton, Stack, SvgIcon } from "@mui/material"; import { Grid } from "@mui/system"; import { useEffect, useState } from "react"; @@ -187,25 +187,10 @@ const Page = () => { - - - - {pageTitle} @@ -223,23 +208,23 @@ const Page = () => { > {/* First item for Report Name and Layout Mode */} - + - + - + @@ -255,8 +240,11 @@ const Page = () => { {blockCards.map((block, index) => ( {
    {/* Report Style - Full Width */} - + - + { type="textField" /> - + { compareValue={true} formControl={formControl} > - + { compareValue={"Graph"} formControl={formControl} > - + - + - + { compareValue={"Exchange"} formControl={formControl} > - + - + { compareValue={"CIPPFunction"} formControl={formControl} > - + - + { /> - + { type="autoComplete" /> - + { /> - + - + {layoutMode === "Table" ? null : ( { compareValue={true} formControl={formControl} > - + { compareValue={false} formControl={formControl} > - + {layoutMode === "Table" ? null : ( { const pageTitle = "Best Practice Reports"; diff --git a/src/pages/tenant/standards/bpa-report/view.js b/src/pages/tenant/standards/bpa-report/view.js index 4f954d2bf021..f85fb633a3a3 100644 --- a/src/pages/tenant/standards/bpa-report/view.js +++ b/src/pages/tenant/standards/bpa-report/view.js @@ -1,4 +1,4 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; import { Box, Container, Typography, Button, Stack, SvgIcon, Skeleton, Chip, Alert } from "@mui/material"; import { Grid } from "@mui/system"; import Head from "next/head"; @@ -133,7 +133,7 @@ const Page = () => { - + {pageTitle} @@ -144,7 +144,7 @@ const Page = () => { {currentTenant === "AllTenants" && layoutMode !== "Table" ? ( - + { <> {blockCards.map((block, index) => ( diff --git a/src/pages/tenant/standards/compare/index.js b/src/pages/tenant/standards/compare/index.js deleted file mode 100644 index c64ff14a4bbb..000000000000 --- a/src/pages/tenant/standards/compare/index.js +++ /dev/null @@ -1,1003 +0,0 @@ -import React, { useState, useEffect, useMemo } from "react"; -import { - Button, - Card, - Stack, - Typography, - Box, - Divider, - Chip, - Skeleton, - Alert, - IconButton, - Tooltip, - ButtonGroup, - TextField, - InputAdornment, -} from "@mui/material"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { - CheckCircle, - Cancel, - Info, - Microsoft, - Sync, - FilterAlt, - Close, - Search, - FactCheck, -} from "@mui/icons-material"; -import { ArrowLeftIcon } from "@mui/x-date-pickers"; -import standards from "/src/data/standards.json"; -import { CippApiDialog } from "../../../../components/CippComponents/CippApiDialog"; -import { SvgIcon } from "@mui/material"; -import { useForm } from "react-hook-form"; -import { useSettings } from "../../../../hooks/use-settings"; -import { ApiGetCall, ApiPostCall } from "../../../../api/ApiCall"; -import { useRouter } from "next/router"; -import { useDialog } from "../../../../hooks/use-dialog"; -import { Grid } from "@mui/system"; -import DOMPurify from "dompurify"; -import { ClockIcon } from "@heroicons/react/24/outline"; - -const Page = () => { - const router = useRouter(); - const { templateId } = router.query; - const [comparisonData, setComparisonData] = useState(null); - const settings = useSettings(); - const currentTenant = settings?.currentTenant; - const formControl = useForm({ - mode: "onBlur", - defaultValues: { - comparisonMode: "standard", - }, - }); - const runReportDialog = useDialog(); - const [filter, setFilter] = useState("all"); - const [searchQuery, setSearchQuery] = useState(""); - - const templateDetails = ApiGetCall({ - url: `/api/listStandardTemplates`, - queryKey: `listStandardTemplates-reports`, - }); - - // Run the report once - const runReport = ApiPostCall({ relatedQueryKeys: ["ListStandardsCompare"] }); - - // Dialog configuration for Run Report Once - const runReportApi = { - type: "GET", - url: "/api/ExecStandardsRun", - data: { - TemplateId: templateId, - }, - confirmText: "Are you sure you want to run this standard report?", - }; - - // Get comparison data - const comparisonApi = ApiGetCall({ - url: "/api/ListStandardsCompare", - data: { - TemplateId: templateId, - tenantFilter: currentTenant, - CompareToStandard: true, // Always compare to standard, even in tenant comparison mode - }, - queryKey: `ListStandardsCompare-${templateId}-${ - formControl.watch("compareTenantId") || "standard" - }-${currentTenant}`, - enabled: !!templateId, // Only run the query if templateId is available - }); - - useEffect(() => { - if (templateId && templateDetails.isSuccess && templateDetails.data) { - const selectedTemplate = templateDetails.data.find( - (template) => template.GUID === templateId - ); - - if (selectedTemplate && comparisonApi.isSuccess && comparisonApi.data) { - const tenantData = comparisonApi.data; - - // Find the current tenant's data by matching tenantFilter with currentTenant - const currentTenantObj = tenantData.find((t) => t.tenantFilter === currentTenant); - const currentTenantData = currentTenantObj ? currentTenantObj.standardsResults || [] : []; - - const allStandards = []; - if (selectedTemplate.standards) { - Object.entries(selectedTemplate.standards).forEach(([standardKey, standardConfig]) => { - // Special handling for IntuneTemplate which is an array of items - if (standardKey === "IntuneTemplate" && Array.isArray(standardConfig)) { - // Process each IntuneTemplate item separately - standardConfig.forEach((templateItem, index) => { - const templateId = templateItem.TemplateList?.value; - if (templateId) { - const standardId = `standards.IntuneTemplate.${templateId}`; - const standardInfo = standards.find((s) => s.name === `standards.IntuneTemplate`); - - // Find the tenant's value for this specific template - const currentTenantStandard = currentTenantData.find( - (s) => s.standardId === standardId - ); - - // Get the direct standard value from the tenant object - const directStandardValue = currentTenantObj?.[standardId]; - - // Determine compliance status - let isCompliant = false; - - // For IntuneTemplate, the value is true if compliant, or an object with comparison data if not compliant - if (directStandardValue === true) { - isCompliant = true; - } else if ( - directStandardValue !== undefined && - typeof directStandardValue !== "object" - ) { - isCompliant = true; - } else if (currentTenantStandard) { - isCompliant = currentTenantStandard.value === true; - } - - // Create a standardValue object that contains the template settings - const templateSettings = { - templateId, - Template: templateItem.TemplateList?.label || "Unknown Template", - "Assign to": templateItem.AssignTo || "On", - "Excluded Group": templateItem.excludeGroup || "", - "Included Group": templateItem.customGroup || "", - }; - - allStandards.push({ - standardId, - standardName: `Intune Template: ${ - templateItem.TemplateList?.label || templateId - }`, - currentTenantValue: - directStandardValue !== undefined - ? directStandardValue - : currentTenantStandard?.value, - standardValue: templateSettings, // Use the template settings object instead of true - complianceStatus: isCompliant ? "Compliant" : "Non-Compliant", - complianceDetails: - standardInfo?.docsDescription || standardInfo?.helpText || "", - standardDescription: standardInfo?.helpText || "", - standardImpact: standardInfo?.impact || "Medium Impact", - standardImpactColour: standardInfo?.impactColour || "warning", - templateName: selectedTemplate?.templateName || "Standard Template", - templateActions: templateItem.action || [], - }); - } - }); - } else { - // Regular handling for other standards - const standardId = `standards.${standardKey}`; - const standardInfo = standards.find((s) => s.name === standardId); - const standardSettings = standardConfig.standards?.[standardKey] || {}; - //console.log(standardInfo); - - // Check if reporting is enabled for this standard by checking the action property - // The standard should be reportable if there's an action with value === 'Report' - const actions = standardConfig?.action ?? []; - const reportingEnabled = - actions.filter((action) => action?.value === "Report").length > 0; - - // Find the tenant's value for this standard - const currentTenantStandard = currentTenantData.find( - (s) => s.standardId === standardId - ); - - // Determine compliance status - let isCompliant = false; - let reportingDisabled = !reportingEnabled; - - // Check if the standard is directly in the tenant object (like "standards.AuditLog": true) - const standardIdWithoutPrefix = standardId.replace("standards.", ""); - const directStandardValue = currentTenantObj?.[standardId]; - - // Special case for boolean standards that are true in the tenant - if (directStandardValue === true) { - // If the standard is directly in the tenant and is true, it's compliant - isCompliant = true; - } else if (directStandardValue !== undefined) { - // For non-boolean values, use strict equality - isCompliant = - JSON.stringify(directStandardValue) === JSON.stringify(standardSettings); - } else if (currentTenantStandard) { - // Fall back to the previous logic if the standard is not directly in the tenant object - if (typeof standardSettings === "boolean" && standardSettings === true) { - isCompliant = currentTenantStandard.value === true; - } else { - isCompliant = - JSON.stringify(currentTenantStandard.value) === - JSON.stringify(standardSettings); - } - } - - // Determine compliance status text based on reporting flag - const complianceStatus = reportingDisabled - ? "Reporting Disabled" - : isCompliant - ? "Compliant" - : "Non-Compliant"; - - // Use the direct standard value from the tenant object if it exists - allStandards.push({ - standardId, - standardName: standardInfo?.label || standardKey, - currentTenantValue: - directStandardValue !== undefined - ? directStandardValue - : currentTenantStandard?.value, - standardValue: standardSettings, - complianceStatus, - reportingDisabled, - complianceDetails: standardInfo?.docsDescription || standardInfo?.helpText || "", - standardDescription: standardInfo?.helpText || "", - standardImpact: standardInfo?.impact || "Medium Impact", - standardImpactColour: standardInfo?.impactColour || "warning", - templateName: selectedTemplate.templateName || "Standard Template", - templateActions: standardConfig.action || [], - }); - } - }); - } - - setComparisonData(allStandards); - } else { - setComparisonData([]); - } - } else if (comparisonApi.isError) { - setComparisonData([]); - } - }, [ - templateId, - templateDetails.isSuccess, - templateDetails.data, - comparisonApi.isSuccess, - comparisonApi.data, - comparisonApi.isError, - ]); - const comparisonModeOptions = [{ label: "Compare Tenant to Standard", value: "standard" }]; - - // Group standards by category - const groupedStandards = useMemo(() => { - if (!comparisonData) return {}; - - const result = {}; - - comparisonData.forEach((standard) => { - // Find the standard info in the standards.json data - const standardInfo = standards.find((s) => standard.standardId.includes(s.name)); - - // Use the category from standards.json, or default to "Other Standards" - const category = standardInfo?.cat || "Other Standards"; - - if (!result[category]) { - result[category] = []; - } - - result[category].push(standard); - }); - - // Sort standards within each category - Object.keys(result).forEach((category) => { - result[category].sort((a, b) => a.standardName.localeCompare(b.standardName)); - }); - - return result; - }, [comparisonData]); - - const filteredGroupedStandards = useMemo(() => { - if (!groupedStandards) return {}; - - if (!searchQuery && filter === "all") { - return groupedStandards; - } - - const result = {}; - const searchLower = searchQuery.toLowerCase(); - - Object.keys(groupedStandards).forEach((category) => { - const categoryMatchesSearch = !searchQuery || category.toLowerCase().includes(searchLower); - - const filteredStandards = groupedStandards[category].filter((standard) => { - const matchesFilter = - filter === "all" || - (filter === "compliant" && standard.complianceStatus === "Compliant") || - (filter === "nonCompliant" && standard.complianceStatus === "Non-Compliant"); - - const matchesSearch = - !searchQuery || - categoryMatchesSearch || - standard.standardName.toLowerCase().includes(searchLower) || - standard.standardDescription.toLowerCase().includes(searchLower); - - return matchesFilter && matchesSearch; - }); - - if (filteredStandards.length > 0) { - result[category] = filteredStandards; - } - }); - - return result; - }, [groupedStandards, searchQuery, filter]); - - const allCount = comparisonData?.length || 0; - const compliantCount = - comparisonData?.filter((standard) => standard.complianceStatus === "Compliant").length || 0; - const nonCompliantCount = - comparisonData?.filter((standard) => standard.complianceStatus === "Non-Compliant").length || 0; - const reportingDisabledCount = - comparisonData?.filter((standard) => standard.complianceStatus === "Reporting Disabled") - .length || 0; - const compliancePercentage = - allCount > 0 - ? Math.round((compliantCount / (allCount - reportingDisabledCount || 1)) * 100) - : 0; - - return ( - - - - - - - - - { - templateDetails?.data?.filter((template) => template.GUID === templateId)?.[0] - ?.templateName - } - - - comparisonApi.refetch()}> - - - - - - {comparisonApi.data?.find((comparison) => comparison.RowKey === currentTenant) && ( - - - - - } - label={`${compliancePercentage}% Compliant`} - variant="outlined" - size="small" - color={ - compliancePercentage === 100 - ? "success" - : compliancePercentage >= 50 - ? "warning" - : "error" - } - sx={{ ml: 2 }} - /> - - - - } - size="small" - label={`Updated on ${new Date( - comparisonApi.data.find( - (comparison) => comparison.RowKey === currentTenant - ).LastRefresh - ).toLocaleString()}`} - /> - - )} - - {templateDetails?.data?.filter((template) => template.GUID === templateId)?.[0] - ?.description && ( - theme.palette.primary.main, - textDecoration: "underline", - }, - color: "text.secondary", - fontSize: "0.875rem", - "& p": { - my: 0, - }, - mt: 2, - }} - dangerouslySetInnerHTML={{ - __html: DOMPurify.sanitize( - templateDetails?.data?.filter((template) => template.GUID === templateId)[0] - .description - ), - }} - /> - )} - - {comparisonApi.isFetching && ( - <> - {[1, 2, 3].map((item) => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ))} - - )} - - - - - setSearchQuery(e.target.value)} - slotProps={{ - input: { - startAdornment: ( - - - - ), - endAdornment: searchQuery && ( - - - setSearchQuery("")} - aria-label="Clear search" - > - - - - - ), - }, - }} - /> - - - - - - - - - {comparisonApi.isError && ( - - - Error fetching comparison data - - - There was an error retrieving the comparison data. Please try running the report again - by clicking the "Run Report Once" button above. - - {comparisonApi.error && ( - - - {comparisonApi.error.message || JSON.stringify(comparisonApi.error, null, 2)} - - - )} - - )} - - {comparisonApi.isSuccess && (!comparisonApi.data || comparisonApi.data.length === 0) && ( - - - No comparison data is available. This might be because: - - - - โ€ข The tenant has not been scanned yet - - - โ€ข The template has no standards configured - - - โ€ข There was an issue with the comparison - - - - Try running the report by clicking the "Run Report Once" button above. - - - )} - - {filteredGroupedStandards && Object.keys(filteredGroupedStandards).length === 0 && ( - - - No standards match the selected filter criteria or search query. - - - Try selecting a different filter or modifying the search query. - - - )} - - {Object.keys(filteredGroupedStandards).map((category) => ( - - - {category} - - - {filteredGroupedStandards[category].map((standard, index) => ( - - - - - - - - {standard.complianceStatus === "Compliant" ? ( - - ) : standard.complianceStatus === "Reporting Disabled" ? ( - - ) : ( - - )} - - - {standard?.standardName} - - - - - - - - - - {!standard.standardValue ? ( - - This data has not yet been collected. Collect the data by pressing the - report button on the top of the page. - - ) : ( - - - - {standard.standardValue && - typeof standard.standardValue === "object" && - Object.keys(standard.standardValue).length > 0 ? ( - Object.entries(standard.standardValue).map(([key, value]) => ( - - - {key}: - - - {typeof value === "object" && value !== null - ? value?.label || JSON.stringify(value) - : value === true - ? "Enabled" - : value === false - ? "Disabled" - : String(value)} - - - )) - ) : ( - - {standard.standardValue === true ? ( - - This setting is configured correctly - - ) : standard.standardValue === false ? ( - - This setting is not configured correctly - - ) : standard.standardValue !== undefined ? ( - typeof standard.standardValue === "object" ? ( - "No settings configured" - ) : ( - String(standard.standardValue) - ) - ) : ( - - This setting is not configured, or data has not been - collected. If you are getting this after data collection, the - tenant might not be licensed for this feature - - )} - - )} - - - - )} - - - - - - - - - - - - - - - - - - {currentTenant} - - - - - - - - - {standard.complianceStatus} - - - - - - - {/* Existing tenant comparison content */} - {typeof standard.currentTenantValue === "object" && - standard.currentTenantValue !== null ? ( - - {standard.complianceStatus === "Reporting Disabled" ? ( - - Reporting is disabled for this standard in the template configuration. - - ) : ( - Object.entries(standard.currentTenantValue).map(([key, value]) => { - const standardValueForKey = - standard.standardValue && typeof standard.standardValue === "object" - ? standard.standardValue[key] - : undefined; - - const isDifferent = - standardValueForKey !== undefined && - JSON.stringify(value) !== JSON.stringify(standardValueForKey); - - return ( - - - {key}: - - - {standard.complianceStatus === "Compliant" && value === true - ? "Compliant" - : typeof value === "object" && value !== null - ? value?.label || JSON.stringify(value) - : value === true - ? "Enabled" - : value === false - ? "Disabled" - : String(value)} - - - ); - }) - )} - - ) : ( - - {standard.complianceStatus === "Reporting Disabled" ? ( - - Reporting is disabled for this standard in the template configuration. - - ) : standard.complianceStatus === "Compliant" && - standard.currentTenantValue === true ? ( - - This setting is configured correctly - - ) : standard.currentTenantValue === false ? ( - - This setting is not configured correctly - - ) : standard.currentTenantValue !== undefined ? ( - String(standard.currentTenantValue) - ) : ( - - This setting is not configured, or data has not been collected. If you - are getting this after data collection, the tenant might not be - licensed for this feature - - )} - - )} - - - - - {standard.complianceDetails && ( - - - - - - - {standard.complianceDetails} - - - - )} - - ))} - - ))} - - - - - ); -}; - -Page.getLayout = (page) => {page}; - -export default Page; diff --git a/src/pages/tenant/standards/domains-analyser/index.js b/src/pages/tenant/standards/domains-analyser/index.js index c90254aab4df..aef98643e21c 100644 --- a/src/pages/tenant/standards/domains-analyser/index.js +++ b/src/pages/tenant/standards/domains-analyser/index.js @@ -1,24 +1,45 @@ -import { Button, Container } from "@mui/material"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; // had to add an extra path here because I added an extra folder structure. We should switch to absolute pathing so we dont have to deal with relative. +import { Button } from "@mui/material"; +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; // had to add an extra path here because I added an extra folder structure. We should switch to absolute pathing so we dont have to deal with relative. import Link from "next/link"; import { ApiGetCall } from "../../../../api/ApiCall"; import { useSettings } from "../../../../hooks/use-settings"; import { CippApiResults } from "../../../../components/CippComponents/CippApiResults"; import { CippDomainCards } from "../../../../components/CippCards/CippDomainCards"; -import { DeleteForever, TravelExplore, Refresh } from "@mui/icons-material"; +import { DeleteForever, TravelExplore, Refresh, Settings } from "@mui/icons-material"; +import { DomainAnalyserDialog } from "../../../../components/CippComponents/DomainAnalyserDialog"; +import { useDialog } from "../../../../hooks/use-dialog"; const Page = () => { const currentTenant = useSettings().currentTenant; const pageTitle = "Domains Analyser"; + const analyserDialog = useDialog(); const apiGetCall = ApiGetCall({ url: "/api/ExecDomainAnalyser", waiting: false, }); const actions = [ + { + label: "Add/Modify DKIM Selectors", + type: "POST", + icon: , + url: "/api/ExecDnsConfig", + data: { Action: "!SetDkimConfig", Domain: "Domain" }, + confirmText: "Enter the DKIM selectors for [Domain] (comma-separated)", + fields: [ + { + type: "textField", + name: "Selector", + label: "DKIM Selectors", + placeholder: "selector1, selector2, selector3", + required: true, + }, + ], + multiPost: false, + }, { label: "Delete from analyser", - type: "GET", + type: "POST", icon: , url: "/api/ExecDnsConfig", data: { Action: "!RemoveDomain", Domain: "Domain" }, @@ -31,41 +52,43 @@ const Page = () => { children: (extendedData) => , }; return ( - - - {/* This needs to be replaced with a CippApiDialog. */} - - - } - prependComponents={} - queryKey={`ListDomains-${currentTenant}`} - simpleColumns={[ - "Domain", - "ScorePercentage", - "MailProvider", - "SPFPassAll", - "MXPassTest", - "DMARCPresent", - "DMARCActionPolicy", - "DMARCPercentagePass", - "DNSSECPresent", - "DKIMEnabled", - ]} - offCanvas={offCanvas} - actions={actions} - /> + <> + + + + + } + prependComponents={} + queryKey={`ListDomains-${currentTenant}`} + simpleColumns={[ + "Domain", + "ScorePercentage", + "MailProvider", + "SPFPassAll", + "MXPassTest", + "DMARCPresent", + "DMARCActionPolicy", + "DMARCPercentagePass", + "DNSSECPresent", + "DKIMEnabled", + ]} + offCanvas={offCanvas} + actions={actions} + /> + + ); }; diff --git a/src/pages/tenant/standards/index.js b/src/pages/tenant/standards/index.js deleted file mode 100644 index 5f8bc65212d6..000000000000 --- a/src/pages/tenant/standards/index.js +++ /dev/null @@ -1,17 +0,0 @@ - -import { Layout as DashboardLayout } from "/src/layouts/index.js"; - -const Page = () => { - const pageTitle = "Standards"; - - return ( -
    -

    {pageTitle}

    -

    This is a placeholder page for the standards section.

    -
    - ); -}; - -Page.getLayout = (page) => {page}; - -export default Page; diff --git a/src/pages/tenant/standards/list-applied-standards/index.js b/src/pages/tenant/standards/list-applied-standards/index.js deleted file mode 100644 index 6937c0fd745f..000000000000 --- a/src/pages/tenant/standards/list-applied-standards/index.js +++ /dev/null @@ -1,17 +0,0 @@ - -import { Layout as DashboardLayout } from "/src/layouts/index.js"; - -const Page = () => { - const pageTitle = "Edit Standards"; - - return ( -
    -

    {pageTitle}

    -

    This is a placeholder page for the edit standards section.

    -
    - ); -}; - -Page.getLayout = (page) => {page}; - -export default Page; diff --git a/src/pages/tenant/standards/tabOptions.json b/src/pages/tenant/standards/tabOptions.json new file mode 100644 index 000000000000..26c6c751dc1a --- /dev/null +++ b/src/pages/tenant/standards/tabOptions.json @@ -0,0 +1,10 @@ +[ + { + "label": "Standard & Drift Alignment", + "path": "/tenant/standards/alignment" + }, + { + "label": "Templates", + "path": "/tenant/standards/templates" + } +] \ No newline at end of file diff --git a/src/pages/tenant/standards/list-standards/index.js b/src/pages/tenant/standards/templates/index.js similarity index 65% rename from src/pages/tenant/standards/list-standards/index.js rename to src/pages/tenant/standards/templates/index.js index 2f0c84037842..b23752c50d9b 100644 --- a/src/pages/tenant/standards/list-standards/index.js +++ b/src/pages/tenant/standards/templates/index.js @@ -1,12 +1,17 @@ import { Alert, Button } from "@mui/material"; -import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; // had to add an extra path here because I added an extra folder structure. We should switch to absolute pathing so we dont have to deal with relative. +import { CippTablePage } from "../../../../components/CippComponents/CippTablePage.jsx"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; // had to add an extra path here because I added an extra folder structure. We should switch to absolute pathing so we dont have to deal with relative. +import { TabbedLayout } from "../../../../layouts/TabbedLayout"; import Link from "next/link"; -import { CopyAll, Delete, PlayArrow, AddBox, Edit, GitHub } from "@mui/icons-material"; +import { CopyAll, Delete, PlayArrow, AddBox, Edit, GitHub, ContentCopy } from "@mui/icons-material"; import { ApiGetCall, ApiPostCall } from "../../../../api/ApiCall"; import { Grid } from "@mui/system"; import { CippApiResults } from "../../../../components/CippComponents/CippApiResults"; import { EyeIcon } from "@heroicons/react/24/outline"; +import tabOptions from "../tabOptions.json"; +import { useSettings } from "../../../../hooks/use-settings.js"; +import { CippPolicyImportDrawer } from "../../../../components/CippComponents/CippPolicyImportDrawer.jsx"; +import { PermissionButton } from "../../../../utils/permissions.js"; const Page = () => { const oldStandards = ApiGetCall({ url: "/api/ListStandards", queryKey: "ListStandards-legacy" }); @@ -16,11 +21,14 @@ const Page = () => { refetchOnMount: false, refetchOnReconnect: false, }); - const pageTitle = "Standard Templates"; + + const currentTenant = useSettings().currentTenant; + const pageTitle = "Templates"; + const cardButtonPermissions = ["Tenant.Standards.ReadWrite"]; const actions = [ { label: "View Tenant Report", - link: "/tenant/standards/compare?templateId=[GUID]", + link: "/tenant/manage/applied-standards/?templateId=[GUID]", icon: , color: "info", target: "_self", @@ -28,20 +36,33 @@ const Page = () => { { label: "Edit Template", //when using a link it must always be the full path /identity/administration/users/[id] for example. - link: "/tenant/standards/template?id=[GUID]", + link: "/tenant/standards/templates/template?id=[GUID]&type=[type]", icon: , color: "success", target: "_self", }, { label: "Clone & Edit Template", - link: "/tenant/standards/template?id=[GUID]&clone=true", + link: "/tenant/standards/templates/template?id=[GUID]&clone=true&type=[type]", icon: , color: "success", target: "_self", }, { - label: "Run Template Now (Currently Selected Tenant only)", + label: "Create Drift Clone", + type: "POST", + url: "/api/ExecDriftClone", + icon: , + color: "warning", + data: { + id: "GUID", + }, + confirmText: + "Are you sure you want to create a drift clone of [templateName]? This will create a new drift template based on this template.", + multiPost: false, + }, + { + label: `Run Template Now (${currentTenant || "Currently Selected Tenant"})`, type: "GET", url: "/api/ExecStandardsRun", icon: , @@ -130,25 +151,25 @@ const Page = () => {
    {oldStandards.isSuccess && oldStandards.data.length !== 0 && ( - + - + You have legacy standards available. Press the button to convert these standards to the new format. This will create a new template for each standard you had, but will disable the schedule. After conversion, please check the new templates to ensure they are correct and re-enable the schedule. - + - + @@ -161,14 +182,36 @@ const Page = () => { apiUrl="/api/listStandardTemplates" tenantInTitle={false} cardButton={ - + <> + + + + } actions={actions} tableFilter={tableFilter} simpleColumns={[ "templateName", + "type", "tenantFilter", "excludedTenants", "updatedAt", @@ -181,6 +224,10 @@ const Page = () => { ); }; -Page.getLayout = (page) => {page}; +Page.getLayout = (page) => ( + + {page} + +); export default Page; diff --git a/src/pages/tenant/standards/template.jsx b/src/pages/tenant/standards/templates/template.jsx similarity index 58% rename from src/pages/tenant/standards/template.jsx rename to src/pages/tenant/standards/templates/template.jsx index 66bb78c9e842..19cf27c788f2 100644 --- a/src/pages/tenant/standards/template.jsx +++ b/src/pages/tenant/standards/templates/template.jsx @@ -1,21 +1,25 @@ import { Box, Button, Container, Stack, Typography, SvgIcon, Skeleton } from "@mui/material"; import { Grid } from "@mui/system"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; import { useForm, useWatch } from "react-hook-form"; import { useRouter } from "next/router"; import { Add, SaveRounded } from "@mui/icons-material"; import { useEffect, useState, useCallback, useMemo, useRef, lazy, Suspense } from "react"; -import standards from "/src/data/standards"; -import CippStandardAccordion from "../../../components/CippStandards/CippStandardAccordion"; +import standards from "../../../../data/standards"; +import CippStandardAccordion from "../../../../components/CippStandards/CippStandardAccordion"; // Lazy load the dialog to improve initial page load performance -const CippStandardDialog = lazy(() => - import("../../../components/CippStandards/CippStandardDialog") +const CippStandardDialog = lazy( + () => import("../../../../components/CippStandards/CippStandardDialog"), ); -import CippStandardsSideBar from "../../../components/CippStandards/CippStandardsSideBar"; +import CippStandardsSideBar from "../../../../components/CippStandards/CippStandardsSideBar"; import { ArrowLeftIcon } from "@mui/x-date-pickers"; -import { useDialog } from "../../../hooks/use-dialog"; -import { ApiGetCall } from "../../../api/ApiCall"; +import { useDialog } from "../../../../hooks/use-dialog"; +import { ApiGetCall } from "../../../../api/ApiCall"; import _ from "lodash"; +import { createDriftManagementActions } from "../../manage/driftManagementActions"; +import { ActionsMenu } from "../../../../components/actions-menu"; +import { useSettings } from "../../../../hooks/use-settings"; +import { CippHead } from "../../../../components/CippComponents/CippHead"; const Page = () => { const router = useRouter(); @@ -29,8 +33,21 @@ const Page = () => { const [updatedAt, setUpdatedAt] = useState(false); const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false); const [currentStep, setCurrentStep] = useState(0); + const [hasDriftConflict, setHasDriftConflict] = useState(false); const initialStandardsRef = useRef({}); + const currentTenant = useSettings().currentTenant; + + // Check if this is drift mode + const isDriftMode = router.query.type === "drift"; + + // Set drift mode flag in form when in drift mode + useEffect(() => { + if (isDriftMode) { + formControl.setValue("isDriftTemplate", true); + } + }, [isDriftMode, formControl]); + // Watch form values to check valid configuration const watchForm = useWatch({ control: formControl.control }); @@ -60,14 +77,14 @@ const Page = () => { const completedSteps = Object.values(stepsStatus).filter(Boolean).length; setCurrentStep(completedSteps); - }, [selectedStandards, watchForm]); + }, [selectedStandards, watchForm, isDriftMode]); // Handle route change events const handleRouteChange = useCallback( (url) => { if (hasUnsavedChanges) { const confirmLeave = window.confirm( - "You have unsaved changes. Are you sure you want to leave this page?" + "You have unsaved changes. Are you sure you want to leave this page?", ); if (!confirmLeave) { router.events.emit("routeChangeError"); @@ -75,7 +92,7 @@ const Page = () => { } } }, - [hasUnsavedChanges, router] + [hasUnsavedChanges, router], ); // Handle browser back/forward navigation or tab close @@ -101,6 +118,10 @@ const Page = () => { // Track form changes useEffect(() => { + // Compare the current form values with the initial values to check for real changes + const currentValues = formControl.getValues(); + const initialValues = initialStandardsRef.current; + if ( formState.isDirty || JSON.stringify(selectedStandards) !== JSON.stringify(initialStandardsRef.current) @@ -109,7 +130,7 @@ const Page = () => { } else { setHasUnsavedChanges(false); } - }, [formState.isDirty, selectedStandards]); + }, [formState.isDirty, selectedStandards, formControl]); useEffect(() => { if (router.query.id) { @@ -123,7 +144,7 @@ const Page = () => { Object.keys(apiData.standards).forEach((key) => { if (Array.isArray(apiData.standards[key])) { apiData.standards[key] = apiData.standards[key].filter( - (value) => value !== null && value !== undefined + (value) => value !== null && value !== undefined, ); } }); @@ -186,7 +207,7 @@ const Page = () => { standard.label.toLowerCase().includes(searchQuery.toLowerCase()) || standard.helpText.toLowerCase().includes(searchQuery.toLowerCase()) || (standard.tag && - standard.tag.some((tag) => tag.toLowerCase().includes(searchQuery.toLowerCase()))) + standard.tag.some((tag) => tag.toLowerCase().includes(searchQuery.toLowerCase()))), ); const handleToggleStandard = (standardName) => { @@ -215,21 +236,47 @@ const Page = () => { }; const handleRemoveStandard = (standardName) => { - setSelectedStandards((prev) => { - const newSelected = { ...prev }; - delete newSelected[standardName]; - return newSelected; - }); - const arrayPattern = /(.*)\[(\d+)\]$/; const match = standardName.match(arrayPattern); if (match) { - const [_, baseName, index] = match; + const baseName = match[1]; + const removedIndex = parseInt(match[2]); + + // Remove the item from the form array const currentArray = formControl.getValues(baseName) || []; - const updatedArray = currentArray.filter((_, i) => i !== parseInt(index)); + const updatedArray = currentArray.filter((_, i) => i !== removedIndex); formControl.setValue(baseName, updatedArray); + + // Re-index selectedStandards to keep indices contiguous + const escapedBaseName = baseName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + const reindexPattern = new RegExp(`^${escapedBaseName}\\[(\\d+)\\]$`); + + setSelectedStandards((prev) => { + const newSelected = {}; + Object.keys(prev).forEach((key) => { + const keyMatch = key.match(reindexPattern); + if (keyMatch) { + const idx = parseInt(keyMatch[1]); + if (idx < removedIndex) { + newSelected[key] = prev[key]; + } else if (idx > removedIndex) { + // Shift higher indices down by 1 + newSelected[`${baseName}[${idx - 1}]`] = prev[key]; + } + // Skip the removed index + } else { + newSelected[key] = prev[key]; + } + }); + return newSelected; + }); } else { + setSelectedStandards((prev) => { + const newSelected = { ...prev }; + delete newSelected[standardName]; + return newSelected; + }); formControl.unregister(standardName); } }; @@ -247,10 +294,28 @@ const Page = () => { }; // Determine if save button should be disabled based on configuration - const isSaveDisabled = - !_.get(watchForm, "tenantFilter") || - !_.get(watchForm, "tenantFilter").length || - currentStep < 3; + const isSaveDisabled = isDriftMode + ? !_.get(watchForm, "tenantFilter") || + !_.get(watchForm, "tenantFilter").length || + currentStep < 4 || + hasDriftConflict // For drift mode, require all steps and no drift conflicts + : !_.get(watchForm, "tenantFilter") || + !_.get(watchForm, "tenantFilter").length || + currentStep < 4; + + // Create drift management actions (excluding refresh) + const driftActions = useMemo(() => { + if (!editMode || !router.query.id) return []; + + const allActions = createDriftManagementActions({ + templateId: router.query.id, + onRefresh: () => {}, // Empty function since we're filtering out refresh + currentTenant: currentTenant, + }); + + // Filter out the refresh action + return allActions.filter((action) => action.label !== "Refresh Data"); + }, [editMode, router.query.id, currentTenant]); const actions = []; @@ -264,7 +329,7 @@ const Page = () => { const handleSafeNavigation = (url) => { if (hasUnsavedChanges) { const confirmLeave = window.confirm( - "You have unsaved changes. Are you sure you want to leave this page?" + "You have unsaved changes. Are you sure you want to leave this page?", ); if (confirmLeave) { router.push(url); @@ -275,64 +340,70 @@ const Page = () => { }; return ( - - - - + + + + + + + {editMode + ? isDriftMode + ? "Edit Drift Template" + : "Edit Standards Template" + : isDriftMode + ? "Add Drift Template" + : "Add Standards Template"} + + + + {/* Drift management actions */} + {driftActions.length > 0 && ( + + )} - - - {editMode ? "Edit Standards Template" : "Add Standards Template"} - - - - - - + - + + {/* Left Column for Accordions */} - + { selectedStandards={selectedStandards} edit={editMode} updatedAt={updatedAt} - onSaveSuccess={() => setHasUnsavedChanges(false)} + isDriftMode={isDriftMode} + onDriftConflictChange={setHasDriftConflict} + onSaveSuccess={() => { + // Reset unsaved changes flag + setHasUnsavedChanges(false); + // Update reference for future change detection + initialStandardsRef.current = { ...selectedStandards }; + }} /> - - + + {/* Show accordions based on selectedStandards (which is populated by API when editing) */} {existingTemplate.isLoading ? ( @@ -358,29 +436,31 @@ const Page = () => { handleRemoveStandard={handleRemoveStandard} handleAddMultipleStandard={handleAddMultipleStandard} // Pass the handler for adding multiple formControl={formControl} + editMode={editMode} + isDriftMode={isDriftMode} /> )} - - - {/* Only render the dialog when it's needed */} - {dialogOpen && ( - }> - - - )} - + + + + {/* Only render the dialog when it's needed */} + {dialogOpen && ( + }> + + + )} ); }; diff --git a/src/pages/tenant/tools/appapproval/index.js b/src/pages/tenant/tools/appapproval/index.js index 52e6040e62f9..b05b6938415d 100644 --- a/src/pages/tenant/tools/appapproval/index.js +++ b/src/pages/tenant/tools/appapproval/index.js @@ -1,8 +1,7 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; -import { CippWizardConfirmation } from "/src/components/CippWizard/CippWizardConfirmation"; -import CippWizardPage from "/src/components/CippWizard/CippWizardPage.jsx"; -import { CippTenantStep } from "/src/components/CippWizard/CippTenantStep.jsx"; -import { useSettings } from "../../../../hooks/use-settings"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; +import { CippWizardConfirmation } from "../../../../components/CippWizard/CippWizardConfirmation"; +import CippWizardPage from "../../../../components/CippWizard/CippWizardPage.jsx"; +import { CippTenantStep } from "../../../../components/CippWizard/CippTenantStep.jsx"; import { CippWizardAppApproval } from "../../../../components/CippWizard/CippWizardAppApproval"; import { Alert } from "@mui/material"; diff --git a/src/pages/tenant/tools/bpa-report-builder/index.js b/src/pages/tenant/tools/bpa-report-builder/index.js index 082890d4c7f8..337f594354ee 100644 --- a/src/pages/tenant/tools/bpa-report-builder/index.js +++ b/src/pages/tenant/tools/bpa-report-builder/index.js @@ -1,5 +1,5 @@ -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; const Page = () => { const pageTitle = "BPA Report Builder"; diff --git a/src/pages/tenant/tools/geoiplookup/index.js b/src/pages/tenant/tools/geoiplookup/index.js index 31aa5967367d..162e93a3b5a1 100644 --- a/src/pages/tenant/tools/geoiplookup/index.js +++ b/src/pages/tenant/tools/geoiplookup/index.js @@ -1,6 +1,6 @@ -import { Box, Button, Container, Skeleton } from "@mui/material"; +import { Box, Button, Container } from "@mui/material"; import { Grid, Stack } from "@mui/system"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../../layouts/index.js"; import { useForm, useWatch } from "react-hook-form"; import CippButtonCard from "../../../../components/CippCards/CippButtonCard"; import { Add, Delete, Search } from "@mui/icons-material"; @@ -67,7 +67,7 @@ const Page = () => { IP: ip, State: "Trusted", tenantFilter: currentTenant, - } + }, }); }; @@ -78,7 +78,7 @@ const Page = () => { IP: ip, State: "NotTrusted", tenantFilter: currentTenant, - } + }, }); }; @@ -86,18 +86,17 @@ const Page = () => { - + - + { required /> - + - - - - - - {/* Results Card */} - {getTenant.isFetching ? ( - - - - - - - - - - ) : getTenant.data ? ( - - - - - - Tenant Name: {domain} - - - Tenant Id: {getTenant.data?.GraphRequest?.tenantId} - - - Default Domain Name:{" "} - {getTenant.data?.GraphRequest?.defaultDomainName} - - - Tenant Brand Name :{" "} - {getTenant.data?.GraphRequest?.federationBrandName - ? getTenant.data?.GraphRequest?.federationBrandName - : "N/A"} - - - - - domains: - - - {getTenant.data?.Domains?.map((domain) => ( -
  • - - {domain} - -
  • - ))} -
    -
    -
    -
    -
    - ) : null} -
    +
    ); diff --git a/src/pages/tools/breachlookup/index.js b/src/pages/tools/breachlookup/index.js index e632397030af..04aed11e72ed 100644 --- a/src/pages/tools/breachlookup/index.js +++ b/src/pages/tools/breachlookup/index.js @@ -10,17 +10,17 @@ import { Alert, } from "@mui/material"; import { Grid } from "@mui/system"; -import { Layout as DashboardLayout } from "/src/layouts/index.js"; +import { Layout as DashboardLayout } from "../../../layouts/index.js"; import { useForm, useWatch } from "react-hook-form"; -import CippButtonCard from "/src/components/CippCards/CippButtonCard"; +import CippButtonCard from "../../../components/CippCards/CippButtonCard"; import { Search } from "@mui/icons-material"; -import CippFormComponent from "/src/components/CippComponents/CippFormComponent"; -import { ApiGetCall } from "/src/api/ApiCall"; +import CippFormComponent from "../../../components/CippComponents/CippFormComponent"; +import { ApiGetCall } from "../../../api/ApiCall"; import DOMPurify from "dompurify"; -import { getCippTranslation } from "/src/utils/get-cipp-translation"; +import { getCippTranslation } from "../../../utils/get-cipp-translation"; import { useRouter } from "next/router"; import { useEffect } from "react"; -import CippCsvExportButton from "/src/components/CippComponents/CippCsvExportButton"; +import CippCsvExportButton from "../../../components/CippComponents/CippCsvExportButton"; import { CippCopyToClipBoard } from "../../../components/CippComponents/CippCopyToClipboard"; const Page = () => { @@ -52,8 +52,8 @@ const Page = () => { > - - + + This page is in beta and may not always give expected results. @@ -62,7 +62,7 @@ const Page = () => { - + { required /> - + - - } - /> + <> + + + + } + /> + + ); }; diff --git a/src/pages/unauthenticated.js b/src/pages/unauthenticated.js index 0c1808459687..a544ff4c5aa4 100644 --- a/src/pages/unauthenticated.js +++ b/src/pages/unauthenticated.js @@ -3,7 +3,7 @@ import { Grid } from "@mui/system"; import Head from "next/head"; import { CippImageCard } from "../components/CippCards/CippImageCard"; import { ApiGetCall } from "../api/ApiCall"; -import { useState, useEffect } from "react"; +import { useMemo } from "react"; const Page = () => { const orgData = ApiGetCall({ @@ -19,16 +19,13 @@ const Page = () => { }); const blockedRoles = ["anonymous", "authenticated"]; - const [userRoles, setUserRoles] = useState([]); - - useEffect(() => { - if (orgData.isSuccess) { - const roles = orgData.data?.clientPrincipal?.userRoles.filter( - (role) => !blockedRoles.includes(role) - ); - setUserRoles(roles ?? []); + // Use useMemo to derive userRoles directly + const userRoles = useMemo(() => { + if (orgData.isSuccess && orgData.data?.clientPrincipal?.userRoles) { + return orgData.data.clientPrincipal.userRoles.filter((role) => !blockedRoles.includes(role)); } - }, [orgData, blockedRoles]); + return []; + }, [orgData.isSuccess, orgData.data?.clientPrincipal?.userRoles]); return ( <> @@ -50,12 +47,15 @@ const Page = () => { alignItems="center" // Center vertically sx={{ height: "100%" }} // Ensure the container takes full height > - + {(orgData.isSuccess || swaStatus.isSuccess) && Array.isArray(userRoles) && ( 0 diff --git a/src/sections/dashboard/components/onboarding/wizard.js b/src/sections/dashboard/components/onboarding/wizard.js index 3751be751059..c4427d22d105 100644 --- a/src/sections/dashboard/components/onboarding/wizard.js +++ b/src/sections/dashboard/components/onboarding/wizard.js @@ -1,5 +1,4 @@ import { useCallback, useMemo, useState } from "react"; -import PropTypes from "prop-types"; import { Card, CardContent, Container, Stack } from "@mui/material"; import { WizardBusinessStep } from "../../../../components/CippWizard/CippWizardOptionsList"; import { WizardConfirmationStep } from "../../../../components/CippWizard/CippWizardConfirmation"; diff --git a/src/sections/dashboard/components/stats/stats-2.js b/src/sections/dashboard/components/stats/stats-2.js index f58463294fb1..273abb3e1522 100644 --- a/src/sections/dashboard/components/stats/stats-2.js +++ b/src/sections/dashboard/components/stats/stats-2.js @@ -1,4 +1,5 @@ -import { Box, Typography, Unstable_Grid2 as Grid } from '@mui/material'; +import { Box, Typography } from '@mui/material'; +import { Grid } from "@mui/system"; const data = [ { diff --git a/src/sections/dashboard/invoices/invoices-stats.js b/src/sections/dashboard/invoices/invoices-stats.js index 78521a117f2f..895c96d6d883 100644 --- a/src/sections/dashboard/invoices/invoices-stats.js +++ b/src/sections/dashboard/invoices/invoices-stats.js @@ -1,6 +1,7 @@ import PropTypes from 'prop-types'; import numeral from 'numeral'; -import { Box, Card, CardContent, Stack, Typography, Unstable_Grid2 as Grid } from '@mui/material'; +import { Box, Card, CardContent, Stack, Typography } from '@mui/material'; +import { Grid } from "@mui/system"; import { alpha, useTheme } from '@mui/material/styles'; import { Chart } from '../../../components/chart'; diff --git a/src/sections/dashboard/products/products-stats.js b/src/sections/dashboard/products/products-stats.js index dec86105255a..6e64f9ba23a5 100644 --- a/src/sections/dashboard/products/products-stats.js +++ b/src/sections/dashboard/products/products-stats.js @@ -2,7 +2,8 @@ import CheckCircleIcon from "@heroicons/react/24/outline/CheckCircleIcon"; import CurrencyDollarIcon from "@heroicons/react/24/outline/CurrencyDollarIcon"; import ShoppingCartIcon from "@heroicons/react/24/outline/ShoppingCartIcon"; import XCircleIcon from "@heroicons/react/24/outline/XCircleIcon"; -import { Card, Stack, SvgIcon, Typography, Unstable_Grid2 as Grid } from "@mui/material"; +import { Card, Stack, Typography } from "@mui/material"; +import { Grid } from "@mui/system"; const stats = [ { diff --git a/src/theme/light/create-components.js b/src/theme/light/create-components.js index ea98aad0e13b..c985fd94b8f9 100644 --- a/src/theme/light/create-components.js +++ b/src/theme/light/create-components.js @@ -42,7 +42,7 @@ export const createComponents = ({ palette }) => { styleOverrides: { root: { [`&.${paperClasses.elevation1}`]: { - boxShadow: `0px 0px 1px ${palette.neutral[200]}, 0px 1px 3px ${alpha( + boxShadow: `0px 0px 1px ${alpha(palette.neutral[400], 0.3)}, 0px 1px 4px ${alpha( palette.neutral[800], 0.08 )}`, @@ -70,14 +70,15 @@ export const createComponents = ({ palette }) => { styleOverrides: { root: { backgroundColor: palette.background.paper, - borderColor: palette.neutral[300], - boxShadow: `0px 1px 2px 0px ${alpha(palette.neutral[800], 0.08)}`, + borderColor: alpha(palette.neutral[400], 0.2), + boxShadow: `0px 1px 3px 0px ${alpha(palette.neutral[800], 0.06)}`, "&:hover": { backgroundColor: palette.background.paper, + borderColor: alpha(palette.neutral[400], 0.3), }, [`&.${filledInputClasses.disabled}`]: { - backgroundColor: palette.action.disabledBackground, - borderColor: palette.neutral[300], + backgroundColor: alpha(palette.neutral[100], 0.5), + borderColor: alpha(palette.neutral[300], 0.2), boxShadow: "none", }, [`&.${filledInputClasses.focused}`]: { @@ -150,7 +151,7 @@ export const createComponents = ({ palette }) => { MuiSkeleton: { styleOverrides: { root: { - backgroundColor: palette.neutral[100], + backgroundColor: palette.neutral[200], }, }, }, @@ -191,12 +192,13 @@ export const createComponents = ({ palette }) => { MuiTableHead: { styleOverrides: { root: { - backgroundColor: palette.neutral[50], + backgroundColor: alpha(palette.neutral[200], 0.4), borderBottomWidth: 1, borderBottomStyle: "solid", borderBottomColor: palette.divider, [`.${tableCellClasses.root}`]: { - color: palette.text.secondary, + color: palette.text.primary, + fontWeight: 600, }, }, }, @@ -206,7 +208,7 @@ export const createComponents = ({ palette }) => { root: { [`&.${tableRowClasses.hover}`]: { "&:hover": { - backgroundColor: palette.neutral[50], + backgroundColor: alpha(palette.neutral[200], 0.3), }, }, }, diff --git a/src/theme/light/create-palette.js b/src/theme/light/create-palette.js index 5626cc6bdc69..39c3af0cbee6 100644 --- a/src/theme/light/create-palette.js +++ b/src/theme/light/create-palette.js @@ -16,10 +16,10 @@ export const createPalette = (config) => { selected: alpha(neutral[900], 0.12) }, background: { - default: contrast === 'high' ? '#FCFCFD' : common.white, - paper: common.white + default: contrast === 'high' ? '#F4F5F7' : '#F0F2F5', + paper: '#FAFBFC' }, - divider: '#F2F4F7', + divider: alpha(neutral[400], 0.2), error, info, mode: 'light', diff --git a/src/theme/light/create-shadows.js b/src/theme/light/create-shadows.js index fea93a0be27f..71af131a402d 100644 --- a/src/theme/light/create-shadows.js +++ b/src/theme/light/create-shadows.js @@ -2,8 +2,8 @@ import { alpha } from '@mui/material/styles'; export const createShadows = (config) => { const { palette } = config; - const layer1Color = palette.neutral[200]; - const layer2Color = alpha(palette.neutral[800], 0.08); + const layer1Color = palette.neutral[250] || alpha(palette.neutral[300], 0.7); + const layer2Color = alpha(palette.neutral[800], 0.06); return [ 'none', diff --git a/src/utils/backupValidation.js b/src/utils/backupValidation.js new file mode 100644 index 000000000000..fe3880bd2558 --- /dev/null +++ b/src/utils/backupValidation.js @@ -0,0 +1,384 @@ +/** + * CIPP Backup Validation Utility + * Validates and attempts to repair corrupted backup JSON files + */ + +export class BackupValidationError extends Error { + constructor(message, details = {}) { + super(message); + this.name = "BackupValidationError"; + this.details = details; + } +} + +export const BackupValidator = { + /** + * Validates a backup file before attempting to parse + * @param {string} jsonString - Raw JSON string from file + * @returns {Object} - Validation result with status and data/errors + */ + validateBackup(jsonString) { + const result = { + isValid: false, + data: null, + errors: [], + warnings: [], + repaired: false, + validRows: 0, + totalRows: 0, + }; + + try { + // Step 1: Basic checks + if (!jsonString || jsonString.trim().length === 0) { + result.errors.push("Backup file is empty"); + return result; + } + + // Step 2: Try to parse JSON directly first + let parsedData; + try { + parsedData = JSON.parse(jsonString); + } catch (parseError) { + result.warnings.push(`Initial JSON parsing failed: ${parseError.message}`); + + // Step 3: Try basic repair + const repairResult = this._attemptBasicRepair(jsonString); + if (repairResult.success) { + try { + parsedData = JSON.parse(repairResult.repairedJson); + result.repaired = true; + result.warnings.push("Backup file was repaired during validation"); + } catch (secondParseError) { + result.errors.push( + `JSON parsing failed even after repair: ${secondParseError.message}` + ); + return result; + } + } else { + result.errors.push(...repairResult.errors); + return result; + } + } + + // Step 4: Validate we have importable data + const dataValidation = this._validateImportableData(parsedData); + result.data = dataValidation.cleanData; + result.validRows = dataValidation.validRows; + result.totalRows = dataValidation.totalRows; + result.warnings.push(...dataValidation.warnings); + + // Accept the backup if we have at least some valid rows + if (dataValidation.validRows > 0) { + result.isValid = true; + if (dataValidation.skippedRows > 0) { + result.warnings.push( + `${dataValidation.skippedRows} corrupted rows will be skipped during import` + ); + } + } else { + result.errors.push("No valid rows found for import"); + } + } catch (error) { + result.errors.push(`Validation failed: ${error.message}`); + } + + return result; + }, + + /** + * Attempts basic repair of common JSON issues + */ + _attemptBasicRepair(jsonString) { + const result = { success: false, repairedJson: jsonString, errors: [] }; + + try { + let repaired = jsonString; + + // Fix 1: Remove trailing commas + repaired = repaired.replace(/,(\s*[}\]])/g, "$1"); + + // Fix 2: Basic bracket closure (skip newline repair for now) + const openBraces = (repaired.match(/\{/g) || []).length; + const closeBraces = (repaired.match(/\}/g) || []).length; + const openBrackets = (repaired.match(/\[/g) || []).length; + const closeBrackets = (repaired.match(/\]/g) || []).length; + + if (openBraces - closeBraces > 0 && openBraces - closeBraces < 3) { + repaired += "}".repeat(openBraces - closeBraces); + } + if (openBrackets - closeBrackets > 0 && openBrackets - closeBrackets < 3) { + repaired += "]".repeat(openBrackets - closeBrackets); + } + + // Test if repair worked + try { + JSON.parse(repaired); + result.success = true; + result.repairedJson = repaired; + } catch (parseError) { + // If basic repair failed, try advanced repair for corrupted entries + const advancedResult = this._attemptAdvancedRepair(repaired, parseError); + if (advancedResult.success) { + result.success = true; + result.repairedJson = advancedResult.repairedJson; + } else { + result.errors.push(`Basic repair failed: ${parseError.message}`); + result.errors.push(...advancedResult.errors); + } + } + } catch (error) { + result.errors.push(`Repair process failed: ${error.message}`); + } + + return result; + }, + + /** + * Advanced repair for severely corrupted entries + * Attempts to isolate and fix/remove corrupted entries that break the entire JSON + */ + _attemptAdvancedRepair(jsonString, parseError) { + const result = { success: false, repairedJson: jsonString, errors: [] }; + + try { + // If the error message indicates a specific position, try to isolate the corruption + const positionMatch = parseError.message.match(/position (\d+)/); + if (positionMatch) { + const errorPosition = parseInt(positionMatch[1]); + result.errors.push(`Attempting to repair corruption at position ${errorPosition}`); + + // Strategy 1: Try to find and isolate the corrupted entry + const isolatedResult = this._isolateCorruptedEntry(jsonString, errorPosition); + if (isolatedResult.success) { + result.success = true; + result.repairedJson = isolatedResult.repairedJson; + return result; + } + result.errors.push(...isolatedResult.errors); + } + + // Strategy 2: Try to extract valid entries before corruption + const truncateResult = this._extractValidEntries(jsonString, parseError); + if (truncateResult.success) { + result.success = true; + result.repairedJson = truncateResult.repairedJson; + return result; + } + result.errors.push(...truncateResult.errors); + } catch (error) { + result.errors.push(`Advanced repair failed: ${error.message}`); + } + + return result; + }, + + /** + * Attempts to isolate and remove/fix a corrupted entry + */ + _isolateCorruptedEntry(jsonString, errorPosition) { + const result = { success: false, repairedJson: jsonString, errors: [] }; + + try { + // Find the object that contains the corruption + const beforeError = jsonString.substring(0, errorPosition); + const afterError = jsonString.substring(errorPosition); + + // Look for the last complete object boundary before the error + const lastObjectStart = beforeError.lastIndexOf('{\n "PartitionKey"'); + const nextObjectStart = afterError.indexOf('\n },\n {\n "PartitionKey"'); + + if (lastObjectStart !== -1 && nextObjectStart !== -1) { + const beforeCorrupted = jsonString.substring(0, lastObjectStart); + const afterCorrupted = jsonString.substring(errorPosition + nextObjectStart); + + // Try to reconstruct without the corrupted entry + let repaired = beforeCorrupted + afterCorrupted; + + // Clean up any resulting syntax issues + repaired = repaired.replace(/,(\s*[}\]])/g, "$1"); + repaired = repaired.replace(/\{\s*,/g, "{"); + repaired = repaired.replace(/,\s*,/g, ","); + + try { + JSON.parse(repaired); + result.success = true; + result.repairedJson = repaired; + result.errors.push("Successfully isolated and removed corrupted entry"); + return result; + } catch (stillError) { + result.errors.push(`Isolation attempt failed: ${stillError.message}`); + } + } + } catch (error) { + result.errors.push(`Corruption isolation failed: ${error.message}`); + } + + return result; + }, + + /** + * Extracts valid entries up to the point of corruption + */ + _extractValidEntries(jsonString, parseError) { + const result = { success: false, repairedJson: jsonString, errors: [] }; + + try { + const positionMatch = parseError.message.match(/position (\d+)/); + if (!positionMatch) { + result.errors.push("Cannot determine corruption position"); + return result; + } + + const errorPosition = parseInt(positionMatch[1]); + const beforeError = jsonString.substring(0, errorPosition); + + // Find the last complete object before the error + const lastCompleteObject = beforeError.lastIndexOf("\n }"); + + if (lastCompleteObject !== -1) { + // Extract everything up to the last complete object + let validPortion = jsonString.substring(0, lastCompleteObject + 6); // Include the \n } + + // Ensure proper JSON array closure + if (!validPortion.trim().endsWith("]")) { + validPortion += "\n]"; + } + + try { + const parsed = JSON.parse(validPortion); + if (Array.isArray(parsed) && parsed.length > 0) { + result.success = true; + result.repairedJson = validPortion; + result.errors.push(`Extracted ${parsed.length} valid entries before corruption`); + return result; + } + } catch (stillError) { + result.errors.push(`Valid portion extraction failed: ${stillError.message}`); + } + } + } catch (error) { + result.errors.push(`Entry extraction failed: ${error.message}`); + } + + return result; + }, + + /** + * Validates that we have importable data rows + * Filters out corrupted entries but keeps valid ones + */ + _validateImportableData(data) { + const result = { + cleanData: null, + validRows: 0, + totalRows: 0, + skippedRows: 0, + warnings: [], + }; + + // Handle non-array data + if (!Array.isArray(data)) { + if (data && typeof data === "object") { + // Single object - wrap in array + data = [data]; + result.warnings.push("Single object detected, converted to array format"); + } else { + result.warnings.push("Data is not in expected array format"); + result.cleanData = []; + return result; + } + } + + result.totalRows = data.length; + const cleanRows = []; + + // Check each row for importability + data.forEach((row, index) => { + if (this._isValidImportRow(row)) { + cleanRows.push(row); + result.validRows++; + } else { + result.skippedRows++; + result.warnings.push(`Row ${index + 1} skipped: ${this._getRowSkipReason(row)}`); + } + }); + + result.cleanData = cleanRows; + return result; + }, + + /** + * Checks if a row is valid for import into CIPP tables + */ + _isValidImportRow(row) { + // Must be an object + if (!row || typeof row !== "object") { + return false; + } + + // Must have all three required properties for CIPP table storage + const hasTable = row.table && typeof row.table === "string"; + const hasPartitionKey = row.PartitionKey && typeof row.PartitionKey === "string"; + const hasRowKey = row.RowKey && typeof row.RowKey === "string"; + + // All three are required for valid CIPP backup row + if (!hasTable || !hasPartitionKey || !hasRowKey) { + return false; + } + + // Additional checks for obvious corruption + const rowJson = JSON.stringify(row); + + // Skip rows that are way too large (likely corrupted) + if (rowJson.length > 10000000) { + // 10MB limit + return false; + } + + // Skip rows with null bytes (always corruption) + if (rowJson.includes("\0")) { + return false; + } + + return true; + }, + + /** + * Gets a human-readable reason why a row was skipped + */ + _getRowSkipReason(row) { + if (!row || typeof row !== "object") { + return "Not a valid object"; + } + + // Check for missing required CIPP backup properties + const missingFields = []; + if (!row.table || typeof row.table !== "string") { + missingFields.push("table"); + } + if (!row.PartitionKey || typeof row.PartitionKey !== "string") { + missingFields.push("PartitionKey"); + } + if (!row.RowKey || typeof row.RowKey !== "string") { + missingFields.push("RowKey"); + } + + if (missingFields.length > 0) { + return `Missing required fields: ${missingFields.join(", ")}`; + } + + const rowJson = JSON.stringify(row); + if (rowJson.length > 10000000) { + return "Row too large (likely corrupted)"; + } + + if (rowJson.includes("\0")) { + return "Contains null bytes (corrupted)"; + } + + return "Unknown validation failure"; + }, +}; + +export default BackupValidator; diff --git a/src/utils/backupValidationTests.js b/src/utils/backupValidationTests.js new file mode 100644 index 000000000000..df24fcd826cd --- /dev/null +++ b/src/utils/backupValidationTests.js @@ -0,0 +1,144 @@ +/** + * Test suite for CIPP Backup Validation + */ +import { BackupValidator } from "../utils/backupValidation.js"; + +// Test cases based on the bad-json.json patterns +const testCases = { + validBackup: { + name: "Valid Backup", + data: JSON.stringify([ + { + PartitionKey: "TestKey", + RowKey: "TestRow", + table: "TestTable", + data: "test data", + }, + ]), + expectedValid: true, + }, + + emptyFile: { + name: "Empty File", + data: "", + expectedValid: false, + }, + + truncatedEscapes: { + name: "Truncated Escape Sequences", + data: '[{"PartitionKey":"Test","value":"truncated\\",,"RowKey":"test"]', + expectedValid: false, + }, + + unclosedBrackets: { + name: "Unclosed Brackets", + data: '[{"PartitionKey":"Test","RowKey":"test","data":{"nested":"value"', + expectedValid: false, + }, + + trailingCommas: { + name: "Trailing Commas", + data: '[{"PartitionKey":"Test","RowKey":"test",}]', + expectedValid: false, + }, + + corruptedMiddle: { + name: "Corrupted in Middle", + data: '[{"PartitionKey":"Test1","RowKey":"test1"},{"PartitionKey":"Test2\\",,"RowKey":"incomplete"},{"PartitionKey":"Test3","RowKey":"test3"}]', + expectedValid: false, + }, + + malformedJson: { + name: "Malformed JSON Structure", + data: '{"not": "an array", "but": "object"}', + expectedValid: true, // Should warn but still be valid + }, + + duplicateEntries: { + name: "Duplicate Entries", + data: JSON.stringify([ + { PartitionKey: "Test", RowKey: "duplicate", table: "TestTable" }, + { PartitionKey: "Test", RowKey: "duplicate", table: "TestTable" }, + ]), + expectedValid: true, // Should warn but still be valid + }, +}; + +/** + * Run all test cases and log results + */ +export function runBackupValidationTests() { + console.log("๐Ÿงช Running CIPP Backup Validation Tests...\n"); + + let passed = 0; + let failed = 0; + + Object.entries(testCases).forEach(([key, testCase]) => { + console.log(`Testing: ${testCase.name}`); + + try { + const result = BackupValidator.validateBackup(testCase.data); + + const testPassed = result.isValid === testCase.expectedValid; + + if (testPassed) { + console.log(`โœ… PASS - Valid: ${result.isValid}, Repaired: ${result.repaired}`); + passed++; + } else { + console.log(`โŒ FAIL - Expected: ${testCase.expectedValid}, Got: ${result.isValid}`); + failed++; + } + + if (result.errors.length > 0) { + console.log(` Errors: ${result.errors.join(", ")}`); + } + + if (result.warnings.length > 0) { + console.log(` Warnings: ${result.warnings.join(", ")}`); + } + } catch (error) { + console.log(`โŒ FAIL - Exception: ${error.message}`); + failed++; + } + + console.log(""); + }); + + console.log(`\n๐Ÿ“Š Test Results: ${passed} passed, ${failed} failed`); + + if (failed === 0) { + console.log("๐ŸŽ‰ All tests passed!"); + } else { + console.log("โš ๏ธ Some tests failed - check implementation"); + } +} + +/** + * Test with actual corrupted data from bad-json.json pattern + */ +export function testWithCorruptedSample() { + console.log("๐Ÿ” Testing with corrupted sample data...\n"); + + // Simulate the corrupted pattern from the bad-json.json file + const corruptedSample = `[{"PartitionKey":"CIPP-SAM","RowKey":"CIPP-SAM","Permissions":"{\\"00000003-0000-0000-c000-000000000000\\":{\\"delegatedPermissions\\":[{\\"id\\":\\"bdfbf15f-ee85-4955-8675-146e8e5296b5\\",\\"value\\":\\"Application.ReadWrite.All\\"}],\\"applicationPermissions\\":[{\\"id\\":\\"1bfefb4e-e0b5-418b-a88f-73c46d2cc8e9\\",\\"val`; + + const result = BackupValidator.validateBackup(corruptedSample); + + console.log("Validation Result:"); + console.log(`- Valid: ${result.isValid}`); + console.log(`- Repaired: ${result.repaired}`); + console.log(`- Errors: ${result.errors.length > 0 ? result.errors.join(", ") : "None"}`); + console.log(`- Warnings: ${result.warnings.length > 0 ? result.warnings.join(", ") : "None"}`); + + if (result.data) { + console.log( + `- Parsed entries: ${Array.isArray(result.data) ? result.data.length : "Not array"}` + ); + } +} + +// Export for console testing +if (typeof window !== "undefined") { + window.testBackupValidation = runBackupValidationTests; + window.testCorruptedSample = testWithCorruptedSample; +} diff --git a/src/utils/cipp-license-backfill-manager.js b/src/utils/cipp-license-backfill-manager.js new file mode 100644 index 000000000000..8df50b94d83b --- /dev/null +++ b/src/utils/cipp-license-backfill-manager.js @@ -0,0 +1,160 @@ +/** + * Global license backfill manager + * Tracks missing licenses and triggers batch API calls to fetch them + */ + +import { getMissingFromCache, addLicensesToCache } from "./cipp-license-cache"; + +class LicenseBackfillManager { + constructor() { + this.pendingSkuIds = new Set(); + this.isBackfilling = false; + this.backfillTimeout = null; + this.callbacks = new Set(); + this.BATCH_DELAY = 500; // Wait 500ms to batch multiple requests + } + + /** + * Add a callback to be notified when backfill completes + */ + addCallback(callback) { + this.callbacks.add(callback); + return () => this.callbacks.delete(callback); + } + + /** + * Notify all callbacks + */ + notifyCallbacks() { + this.callbacks.forEach((callback) => { + try { + callback(); + } catch (error) { + console.error("Error in backfill callback:", error); + } + }); + } + + /** + * Add missing skuIds to the queue + */ + addMissingSkuIds(skuIds) { + if (!Array.isArray(skuIds)) return; + + let added = false; + skuIds.forEach((skuId) => { + if (skuId && !this.pendingSkuIds.has(skuId)) { + this.pendingSkuIds.add(skuId); + added = true; + } + }); + + if (added && !this.isBackfilling) { + this.scheduleBatchBackfill(); + } + } + + /** + * Schedule a batch backfill with debouncing + */ + scheduleBatchBackfill() { + // Clear existing timeout to debounce + if (this.backfillTimeout) { + clearTimeout(this.backfillTimeout); + } + + // Schedule new backfill + this.backfillTimeout = setTimeout(() => { + this.executeBatchBackfill(); + }, this.BATCH_DELAY); + } + + /** + * Execute the batch backfill + */ + async executeBatchBackfill() { + if (this.isBackfilling || this.pendingSkuIds.size === 0) { + return; + } + + // Get all pending skuIds + const skuIdsToFetch = Array.from(this.pendingSkuIds); + this.pendingSkuIds.clear(); + this.isBackfilling = true; + + try { + // Import axios dynamically to avoid circular dependencies + const axios = (await import("axios")).default; + const { buildVersionedHeaders } = await import("./cippVersion"); + + console.log(`[License Backfill] Fetching ${skuIdsToFetch.length} licenses...`); + + const response = await axios.post( + "/api/ExecLicenseSearch", + { skuIds: skuIdsToFetch }, + { headers: await buildVersionedHeaders() } + ); + + if (response.data && Array.isArray(response.data)) { + console.log(`[License Backfill] Received ${response.data.length} licenses`); + addLicensesToCache(response.data); + + // Notify all callbacks that backfill completed + this.notifyCallbacks(); + } + } catch (error) { + console.error("[License Backfill] Error fetching licenses:", error); + + // Re-add failed skuIds back to pending if we want to retry + // Commenting this out to avoid infinite retry loops + // skuIdsToFetch.forEach(skuId => this.pendingSkuIds.add(skuId)); + } finally { + this.isBackfilling = false; + + // If more skuIds were added during backfill, schedule another batch + if (this.pendingSkuIds.size > 0) { + this.scheduleBatchBackfill(); + } + } + } + + /** + * Check skuIds and add missing ones to backfill queue + */ + checkAndQueueMissing(skuIds) { + const missing = getMissingFromCache(skuIds); + if (missing.length > 0) { + this.addMissingSkuIds(missing); + return true; + } + return false; + } + + /** + * Get current backfill status + */ + getStatus() { + return { + isBackfilling: this.isBackfilling, + pendingCount: this.pendingSkuIds.size, + }; + } + + /** + * Clear all pending requests (useful for cleanup/testing) + */ + clear() { + if (this.backfillTimeout) { + clearTimeout(this.backfillTimeout); + this.backfillTimeout = null; + } + this.pendingSkuIds.clear(); + this.isBackfilling = false; + this.callbacks.clear(); + } +} + +// Global singleton instance +const licenseBackfillManager = new LicenseBackfillManager(); + +export default licenseBackfillManager; diff --git a/src/utils/cipp-license-cache.js b/src/utils/cipp-license-cache.js new file mode 100644 index 000000000000..089a09a7d4ef --- /dev/null +++ b/src/utils/cipp-license-cache.js @@ -0,0 +1,109 @@ +/** + * License cache manager for dynamically loaded licenses + * Uses localStorage to permanently cache licenses fetched from the API + * Cache only grows (appends missing licenses) and never expires + */ + +const CACHE_KEY = "cipp_dynamic_licenses"; +const CACHE_VERSION = "1.0"; + +/** + * Get the license cache from localStorage + * @returns {Object} Cache object with version, timestamp, and licenses map + */ +const getCache = () => { + try { + const cached = localStorage.getItem(CACHE_KEY); + if (!cached) { + return { version: CACHE_VERSION, timestamp: Date.now(), licenses: {} }; + } + + const parsed = JSON.parse(cached); + + // Check cache version - clear if outdated + if (parsed.version !== CACHE_VERSION) { + localStorage.removeItem(CACHE_KEY); + return { version: CACHE_VERSION, timestamp: Date.now(), licenses: {} }; + } + + return parsed; + } catch (error) { + console.error("Error reading license cache:", error); + return { version: CACHE_VERSION, timestamp: Date.now(), licenses: {} }; + } +}; + +/** + * Save the license cache to localStorage + * @param {Object} cache - Cache object to save + */ +const saveCache = (cache) => { + try { + localStorage.setItem(CACHE_KEY, JSON.stringify(cache)); + } catch (error) { + console.error("Error saving license cache:", error); + } +}; + +/** + * Get a license from the cache by skuId + * @param {string} skuId - The license skuId (GUID) + * @returns {string|null} The display name if found, null otherwise + */ +export const getCachedLicense = (skuId) => { + if (!skuId) return null; + + const cache = getCache(); + return cache.licenses[skuId.toLowerCase()] || null; +}; + +/** + * Add licenses to the cache + * @param {Array} licenses - Array of license objects with skuId and displayName + */ +export const addLicensesToCache = (licenses) => { + if (!Array.isArray(licenses) || licenses.length === 0) return; + + const cache = getCache(); + + licenses.forEach((license) => { + if (license.skuId && license.displayName) { + cache.licenses[license.skuId.toLowerCase()] = license.displayName; + } + }); + + cache.timestamp = Date.now(); + saveCache(cache); +}; + +/** + * Check if licenses exist in cache + * @param {Array} skuIds - Array of skuIds to check + * @returns {Array} Array of skuIds that are NOT in cache + */ +export const getMissingFromCache = (skuIds) => { + if (!Array.isArray(skuIds) || skuIds.length === 0) return []; + + const cache = getCache(); + return skuIds.filter((skuId) => !cache.licenses[skuId.toLowerCase()]); +}; + +/** + * Clear the entire license cache + */ +export const clearLicenseCache = () => { + try { + localStorage.removeItem(CACHE_KEY); + } catch (error) { + console.error("Error clearing license cache:", error); + } +}; + +/** + * Get all cached licenses + * @returns {Object} Map of skuId -> displayName + */ +export const getAllCachedLicenses = () => { + const cache = getCache(); + return cache.licenses; +}; diff --git a/src/utils/cippVersion.js b/src/utils/cippVersion.js new file mode 100644 index 000000000000..ed64050c0759 --- /dev/null +++ b/src/utils/cippVersion.js @@ -0,0 +1,37 @@ +let cachedVersion = null; +let fetchPromise = null; + +// Attempt to derive version from public/version.json (client) or env/package (SSR fallback) +export async function getCippVersion() { + if (cachedVersion) return cachedVersion; + + // Server-side fallback (no window) + if (typeof window === "undefined") { + return "unknown"; + } + + if (!fetchPromise) { + fetchPromise = fetch("/version.json") + .then((r) => (r.ok ? r.json() : null)) + .then((j) => { + // Support multiple possible keys + cachedVersion = j?.version || "unknown"; + return cachedVersion; + }) + .catch(() => { + cachedVersion = "unknown"; + return cachedVersion; + }); + } + return fetchPromise; +} + +// Build headers including X-CIPP-Version. Accept extra headers to merge. +export async function buildVersionedHeaders(extra = {}) { + const version = await getCippVersion(); + return { + "Content-Type": "application/json", + "X-CIPP-Version": version, + ...extra, + }; +} diff --git a/src/utils/get-cipp-filter-variant.js b/src/utils/get-cipp-filter-variant.js index 375b470e7bf3..539fbd464cfb 100644 --- a/src/utils/get-cipp-filter-variant.js +++ b/src/utils/get-cipp-filter-variant.js @@ -1,4 +1,18 @@ -export const getCippFilterVariant = (providedColumnKeys) => { +import { getCippUniqueLicenses } from "./get-cipp-unique-licenses"; + +export const getCippFilterVariant = (providedColumnKeys, arg) => { + // Back-compat + new options mode + const isOptions = + arg && + typeof arg === "object" && + (Object.prototype.hasOwnProperty.call(arg, "sampleValue") || + Array.isArray(arg?.values) || + typeof arg?.getValue === "function"); + + const sampleValue = isOptions ? arg.sampleValue : arg; + const values = isOptions && Array.isArray(arg.values) ? arg.values : undefined; + const tailKey = providedColumnKeys?.split(".").pop() ?? providedColumnKeys; + const timeAgoArray = [ "ExecutedTime", "ScheduledTime", @@ -19,39 +33,109 @@ export const getCippFilterVariant = (providedColumnKeys) => { "WhenCreated", "WhenChanged", ]; - const matchDateTime = /[dD]ate[tT]ime/; - if (timeAgoArray.includes(providedColumnKeys) || matchDateTime.test(providedColumnKeys)) { - return { - filterVariant: "datetime-range", - sortingFn: "dateTimeNullsLast", - filterFn: "betweenInclusive", - }; - } + const matchDateTime = + /[dD]ate(?:[tT]ime)?|(?:^|\.)(?:updatedAt|createdAt|LastRun|LastRefresh|Expires)$/; - switch (providedColumnKeys) { + const typeOf = typeof sampleValue; + //First key based filters + switch (tailKey) { case "assignedLicenses": + // Extract unique licenses from the data if available + let filterSelectOptions = []; + if (isOptions && arg.dataArray && Array.isArray(arg.dataArray)) { + const uniqueLicenses = getCippUniqueLicenses(arg.dataArray); + filterSelectOptions = uniqueLicenses.map((license) => ({ + label: license.displayName, + value: license.skuId, + })); + } + + // Add "No Licenses Assigned" option at beginning + filterSelectOptions.unshift({ + label: "No Licenses Assigned", + value: "__no_license__", + }); + return { filterVariant: "multi-select", sortingFn: "alphanumeric", - filterFn: "arrIncludesSome", + filterFn: (row, columnId, filterValue) => { + const userLicenses = row.original.assignedLicenses; + if (!filterValue || !Array.isArray(filterValue) || filterValue.length === 0) { + return true; + } + + const hasNoLicenseFilter = filterValue.includes("__no_license__"); + const otherFilters = filterValue.filter((v) => v !== "__no_license__"); + const isUnlicensed = !userLicenses || !Array.isArray(userLicenses) || userLicenses.length === 0; + + // If user selected "No Licenses Assigned" and this user is unlicensed โ†’ match + if (hasNoLicenseFilter && isUnlicensed) { + return true; + } + + // If only "No Licenses Assigned" is selected and user has licenses โ†’ no match + if (hasNoLicenseFilter && otherFilters.length === 0 && !isUnlicensed) { + return false; + } + + // Check other license filters + if (isUnlicensed) { + return false; + } + + const userSkuIds = userLicenses.map((license) => license.skuId).filter(Boolean); + return otherFilters.some((selectedSkuId) => userSkuIds.includes(selectedSkuId)); + }, + filterSelectOptions: filterSelectOptions, }; - case "Tenant": + case "accountEnabled": return { - filterVariant: "multi-select", + filterVariant: "select", sortingFn: "alphanumeric", - filterFn: "arrIncludesSome", + filterFn: "equals", }; - case "accountEnabled": + case "primDomain": return { filterVariant: "select", + sortingFn: "alphanumeric", + filterFn: "includes", }; - case "primDomain": - return "select"; case "number": - return "range"; + return { + filterVariant: "range", + sortingFn: "number", + filterFn: "betweenInclusive", + }; case "id": - return "text"; - default: - return { filterVariant: "text" }; + return { + filterVariant: "text", + sortingFn: "alphanumeric", + filterFn: "includes", + }; + } + //Type based filters + if (typeOf === "boolean") { + return { + filterVariant: "select", + sortingFn: "boolean", + filterFn: "equals", + }; + } + + if (typeOf === "number") { + return { + filterVariant: "range", + sortingFn: "number", + filterFn: "betweenInclusive", + }; + } + + if (timeAgoArray.includes(tailKey) || matchDateTime.test(providedColumnKeys)) { + return { + filterVariant: "datetime-range", + sortingFn: "dateTimeNullsLast", + filterFn: "betweenInclusive", + }; } }; diff --git a/src/utils/get-cipp-formatting.js b/src/utils/get-cipp-formatting.js index a011415698fd..79139e2b2347 100644 --- a/src/utils/get-cipp-formatting.js +++ b/src/utils/get-cipp-formatting.js @@ -7,8 +7,11 @@ import { Shield, Description, GroupOutlined, + PrecisionManufacturing, + BarChart, } from "@mui/icons-material"; import { Chip, Link, SvgIcon } from "@mui/material"; +import { alpha } from "@mui/material/styles"; import { Box } from "@mui/system"; import { CippCopyToClipBoard } from "../components/CippComponents/CippCopyToClipboard"; import { getCippLicenseTranslation } from "./get-cipp-license-translation"; @@ -29,6 +32,13 @@ import { getCippTranslation } from "./get-cipp-translation"; import DOMPurify from "dompurify"; import { getSignInErrorCodeTranslation } from "./get-cipp-signin-errorcode-translation"; import { CollapsibleChipList } from "../components/CippComponents/CollapsibleChipList"; +import countryList from "../data/countryList.json"; + +// Helper function to convert country codes to country names +const getCountryNameFromCode = (countryCode) => { + const country = countryList.find((c) => c.Code === countryCode); + return country ? country.Name : countryCode; +}; export const getCippFormatting = (data, cellName, type, canReceive, flatten = true) => { const isText = type === "text"; @@ -54,6 +64,8 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr portal_security: Shield, portal_compliance: CompassCalibration, portal_sharepoint: Description, + portal_platform: PrecisionManufacturing, + portal_bi: BarChart, }; // Create a helper function to render chips with CollapsibleChipList @@ -94,11 +106,22 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr if (Array.isArray(data)) { return isText ? data.join(", ") : renderChipList(data); } else { - return isText ? ( - data - ) : ( - - ); + if (isText) return data.label ?? data; + const label = data.label ?? data; + const severityColor = { + info: "info", + informational: "info", + warn: "warning", + warning: "warning", + error: "error", + critical: "error", + alert: "warning", + debug: "default", + medium: "warning", + high: "error", + }; + const color = severityColor[String(label).toLowerCase()] ?? "info"; + return ; } } @@ -144,6 +167,7 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr "ExecutedTime", "ScheduledTime", "Timestamp", + "timestamp", "DateTime", "LastRun", "LastRefresh", @@ -167,9 +191,12 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr "LastOccurrence", "NotBefore", "NotAfter", + "latestDataCollection", + "requestDate", // App Consent Requests + "reviewedDate", // App Consent Requests ]; - const matchDateTime = /[dD]ate[tT]ime/; + const matchDateTime = /([dD]ate[tT]ime|[Ee]xpiration|[Tt]imestamp|[sS]tart[Dd]ate)/; if (timeAgoArray.includes(cellName) || matchDateTime.test(cellName)) { return isText && canReceive === false ? ( new Date(data).toLocaleString() // This runs if canReceive is false and isText is true @@ -186,6 +213,43 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr return isText ? "Password hidden" : ; } + // Handle hardware hash fields + const hardwareHashFields = ["hardwareHash", "Hardware Hash"]; + if ( + typeof data === "string" && + (hardwareHashFields.includes(cellName) || cellNameLower.includes("hardware")) + ) { + if (data.length > 15) { + return isText ? data : `${data.substring(0, 15)}...`; + } + return isText ? data : data; + } + + // Handle log message field + const messageFields = ["Message"]; + if (messageFields.includes(cellName)) { + if (typeof data === "string" && data.length > 120) { + return isText ? data : `${data.substring(0, 120)}...`; + } + return isText ? data : data; + } + + if (cellName === "alignmentScore" || cellName === "combinedAlignmentScore") { + // Handle alignment score, return a percentage with a label + return isText ? ( + `${data}%` + ) : ( + + ); + } + + if (cellName === "LicenseMissingPercentage") { + return isText ? ( + `${data}%` + ) : ( + + ); + } if (cellName === "RepeatsEvery") { //convert 1d to "Every 1 day", 1w to "Every 1 week" etc. const match = data.match(/(\d+)([a-zA-Z]+)/); @@ -196,14 +260,14 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr unit === "d" ? "day" : unit === "h" - ? "hour" - : unit === "w" - ? "week" - : unit === "m" - ? "minutes" - : unit === "y" - ? "year" - : unit; + ? "hour" + : unit === "w" + ? "week" + : unit === "m" + ? "minutes" + : unit === "y" + ? "year" + : unit; return isText ? `Every ${value} ${unitText}` : `Every ${value} ${unitText}`; } } @@ -230,10 +294,6 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr return isText ? `${data}%` : ; } - if (cellName === "DMARCPercentagePass") { - return isText ? `${data}%` : ; - } - if (cellName === "ScoreExplanation") { return isText ? data : ; } @@ -257,14 +317,31 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr } //if the cellName is tenantFilter, return a chip with the tenant name. This can sometimes be an array, sometimes be a single item. - if (cellName === "tenantFilter" || cellName === "Tenant") { + if ( + cellName === "tenantFilter" || + cellName === "Tenant" || + cellName === "Tenants" || + cellName === "AllowedTenants" || + cellName === "BlockedTenants" + ) { //check if data is an array. if (Array.isArray(data)) { + // Filter out null/undefined values and map the valid items + const validItems = data.filter((item) => item !== null && item !== undefined); + + if (validItems.length === 0) { + return isText ? ( + "No data" + ) : ( + + ); + } + return isText - ? data.join(", ") + ? validItems.map((item) => (item?.label !== undefined ? item.label : item)).join(", ") : renderChipList( - data.map((item, key) => { - const itemText = item?.label ? item.label : item; + validItems.map((item, key) => { + const itemText = item?.label !== undefined ? item.label : item; let icon = null; if (item?.type === "Group") { @@ -286,14 +363,35 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr icon: icon, key: key, }; - }) + }), ); } else { - return isText ? ( - data - ) : ( - - ); + // Handle null/undefined single element + if (data === null || data === undefined) { + return isText ? ( + "No data" + ) : ( + + ); + } + + const itemText = data?.label !== undefined ? data.label : data; + let icon = null; + + if (data?.type === "Group") { + icon = ( + + + + ); + } else { + icon = ( + + + + ); + } + return isText ? itemText : ; } } @@ -314,11 +412,49 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr )); } } + if (cellName === "standardType") { + return isText ? ( + data + ) : ( + + ); + } - if (cellName === "ClientId" || cellName === "role") { + if (cellName === "type" && data === "drift") { + return isText ? ( + "Drift Standard" + ) : ( + + ); + } + + if ( + cellName === "ClientId" || + cellName === "role" || + cellName === "appId" || + cellName === "SID" + ) { return isText ? data : ; } + if (cellName === "countriesAndRegions") { + if (Array.isArray(data)) { + const countryNames = data + .filter((item) => item !== null && item !== undefined) + .map((countryCode) => getCountryNameFromCode(countryCode)); + + return isText ? countryNames.join(", ") : renderChipList(countryNames); + } else { + const countryName = getCountryNameFromCode(data); + return isText ? countryName : ; + } + } + if (cellName === "excludedTenants") { // Handle null or undefined data if (data === null || data === undefined) { @@ -339,7 +475,7 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr : renderChipList( data .filter((item) => item) - .map((item) => (typeof item === "object" && item?.label ? item.label : item)) + .map((item) => (typeof item === "object" && item?.label ? item.label : item)), ); } } @@ -371,13 +507,56 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr } if (cellName === "state") { - data = - data === "enabled" + if (typeof data !== "string") { + return isText ? data : ; + } + + const normalized = data.trim().toLowerCase(); + const label = + normalized === "enabled" ? "Enabled" - : data === "enabledForReportingButNotEnforced" - ? "Report Only" - : data; - return isText ? data : ; + : normalized === "disabled" + ? "Disabled" + : normalized === "enabledforreportingbutnotenforced" || + normalized === "report-only" || + normalized === "reportonly" + ? "Report Only" + : data.charAt(0).toUpperCase() + data.slice(1); + + if (isText) { + return label; + } + + const chipProps = { + size: "small", + label, + variant: "filled", + color: "info", + }; + + if (normalized === "enabled") { + chipProps.color = "info"; + } else if (normalized === "disabled") { + chipProps.color = "default"; + chipProps.sx = (theme) => ({ + bgcolor: + theme.palette.mode === "dark" + ? alpha(theme.palette.common.white, 0.12) + : alpha(theme.palette.text.primary, 0.08), + color: theme.palette.text.primary, + borderColor: "transparent", + }); + } else if ( + normalized === "enabledforreportingbutnotenforced" || + normalized === "report-only" || + normalized === "reportonly" + ) { + chipProps.color = "warning"; + } else { + chipProps.variant = "outlined"; + } + + return ; } if (cellName === "Parameters.ScheduledBackupValues") { @@ -398,8 +577,8 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr const accessRights = Array.isArray(data) ? data.flatMap((item) => (typeof item === "string" ? item.split(", ") : [])) : typeof data === "string" - ? data.split(", ") - : []; + ? data.split(", ") + : []; return isText ? accessRights.join(", ") : renderChipList(accessRights); } @@ -472,6 +651,51 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr ); } + // Handle businessPhones + if (cellName === "businessPhones") { + if (!Array.isArray(data)) { + data = [data]; + } + + if (data.length === 0) { + return isText ? ( + "No data" + ) : ( + + ); + } + + return isText ? data.join(", ") : renderChipList(data); + } + + //handle assignedUsers + if (cellName === "AssignedUsers" || cellName === "assignedUsers") { + //show the display name in text. otherwise, just return the obj. + return isText ? ( + Array.isArray(data) ? ( + data.map((user) => user.displayName).join(",") + ) : ( + data.displayName + ) + ) : ( + + ); + } + + // handle assignedGroups + if (cellName === "AssignedGroups" || cellName === "assignedGroups") { + //show the display name in text. otherwise, just return the obj. + return isText ? ( + Array.isArray(data) ? ( + data.map((group) => group.displayName).join(",") + ) : ( + data.displayName + ) + ) : ( + + ); + } + // Handle assigned licenses if (cellName === "assignedLicenses") { var translatedLicenses = getCippLicenseTranslation(data); @@ -480,8 +704,37 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr ? translatedLicenses.join(", ") : translatedLicenses : Array.isArray(translatedLicenses) - ? renderChipList(translatedLicenses) - : translatedLicenses; + ? renderChipList(translatedLicenses) + : translatedLicenses; + } + + // Handle license assignment states + if (cellName === "licenseAssignmentStates") { + if (!Array.isArray(data) || data.length === 0) { + return []; + } + + // Transform the array to replace skuId with translated name and remove disabledPlans + const transformedData = data.map((license) => { + const translatedLicense = getCippLicenseTranslation([license]); + const licenseName = Array.isArray(translatedLicense) + ? translatedLicense[0] + : translatedLicense; + + // Return new object with skuId replaced by License and without disabledPlans + const { skuId, disabledPlans, ...rest } = license; + return { + License: licenseName, + ...rest, + }; + }); + + // Render as a table + return isText ? ( + JSON.stringify(transformedData) + ) : ( + + ); } if (cellName === "unifiedRoles") { @@ -635,8 +888,62 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr /> ); } + if (cellName === "Status" || cellName === "Risk" || cellName === "UserImpact") { + let color = "default"; + let label = data; + + switch (data.toLowerCase()) { + case "success": + color = "success"; + break; + case "passed": + color = "success"; + break; + case "failed": + case "high": + color = "error"; + break; + case "in progress": + color = "info"; + break; + case "not started": + color = "default"; + break; + case "investigate": + case "medium": + case "warning": + case "skipped": + color = "warning"; + break; + case "active": + color = "warning"; + break; + case "inprogress": + color = "warning"; + break; + case "resolved": + color = "success"; + break; + case "redirected": + color = "success"; + break; + default: + color = "default"; + } + return isText ? label : ; + } - const durationArray = ["autoExtendDuration"]; + // ISO 8601 Duration Formatting + // Add property names here to automatically format ISO 8601 duration strings (e.g., "PT1H23M30S") + // into human-readable format (e.g., "1 hour 23 minutes 30 seconds") across all CIPP tables. + // This works for any API response property that contains ISO 8601 duration format. + const durationArray = [ + "autoExtendDuration", // GDAP page (/tenant/gdap-management/relationships) + "deploymentDuration", // AutoPilot deployments (/endpoint/reports/autopilot-deployment) + "deploymentTotalDuration", // AutoPilot deployments (/endpoint/reports/autopilot-deployment) + "deviceSetupDuration", // AutoPilot deployments (/endpoint/reports/autopilot-deployment) + "accountSetupDuration", // AutoPilot deployments (/endpoint/reports/autopilot-deployment) + ]; if (durationArray.includes(cellName)) { isoDuration.setLocales( { @@ -644,7 +951,7 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr }, { fallbackLocale: "en", - } + }, ); const duration = isoDuration(data); return duration.humanize("en"); @@ -699,7 +1006,7 @@ export const getCippFormatting = (data, cellName, type, canReceive, flatten = tr return { label: item.label, }; - }) + }), ); } diff --git a/src/utils/get-cipp-license-translation.js b/src/utils/get-cipp-license-translation.js index 9e36c5cc7db1..0397585d927a 100644 --- a/src/utils/get-cipp-license-translation.js +++ b/src/utils/get-cipp-license-translation.js @@ -1,7 +1,17 @@ -import M365Licenses from "../data/M365Licenses.json"; +import M365LicensesDefault from "../data/M365Licenses.json"; +import M365LicensesAdditional from "../data/M365Licenses-additional.json"; +import { getCachedLicense } from "./cipp-license-cache"; +import licenseBackfillManager from "./cipp-license-backfill-manager"; export const getCippLicenseTranslation = (licenseArray) => { + //combine M365LicensesDefault and M365LicensesAdditional to one array + const M365Licenses = [...M365LicensesDefault, ...M365LicensesAdditional]; let licenses = []; + let missingSkuIds = []; + + if (Array.isArray(licenseArray) && typeof licenseArray[0] === "string") { + return licenseArray; + } if (!Array.isArray(licenseArray) && typeof licenseArray === "object") { licenseArray = [licenseArray]; @@ -13,22 +23,47 @@ export const getCippLicenseTranslation = (licenseArray) => { licenseArray?.forEach((licenseAssignment) => { let found = false; + + // First, check static JSON files for (let x = 0; x < M365Licenses.length; x++) { if (licenseAssignment.skuId === M365Licenses[x].GUID) { licenses.push( M365Licenses[x].Product_Display_Name ? M365Licenses[x].Product_Display_Name - : licenseAssignment.skuPartNumber + : licenseAssignment.skuPartNumber, ); found = true; break; } } + + // Second, check dynamic cache + if (!found && licenseAssignment.skuId) { + const cachedName = getCachedLicense(licenseAssignment.skuId); + if (cachedName) { + licenses.push(cachedName); + found = true; + } + } + + // Finally, fall back to skuPartNumber, then skuId, then "Unknown License" if (!found) { - licenses.push(licenseAssignment.skuPartNumber); + const fallbackName = + licenseAssignment.skuPartNumber || licenseAssignment.skuId || "Unknown License"; + licenses.push(fallbackName); + + // Queue this skuId for backfill if we have it + if (licenseAssignment.skuId) { + missingSkuIds.push(licenseAssignment.skuId); + } } }); + // Trigger backfill for missing licenses + if (missingSkuIds.length > 0) { + licenseBackfillManager.addMissingSkuIds(missingSkuIds); + } + if (!licenses || licenses.length === 0) { return ["No Licenses Assigned"]; } diff --git a/src/utils/get-cipp-signin-errorcode-translation.js b/src/utils/get-cipp-signin-errorcode-translation.js index 00f0074e05f5..b73e73aeac52 100644 --- a/src/utils/get-cipp-signin-errorcode-translation.js +++ b/src/utils/get-cipp-signin-errorcode-translation.js @@ -1,4 +1,4 @@ -import SignInErrorCodes from "/src/data/signinErrorCodes"; +import SignInErrorCodes from "../data/signinErrorCodes"; export const getSignInErrorCodeTranslation = (errorCode) => { if (SignInErrorCodes.hasOwnProperty(String(errorCode))) { diff --git a/src/utils/get-cipp-tenant-group-options.js b/src/utils/get-cipp-tenant-group-options.js new file mode 100644 index 000000000000..08774854e2aa --- /dev/null +++ b/src/utils/get-cipp-tenant-group-options.js @@ -0,0 +1,232 @@ +import M365LicensesDefault from "../data/M365Licenses.json"; +import M365LicensesAdditional from "../data/M365Licenses-additional.json"; + +/** + * Get all available licenses for tenant group dynamic rules + * @returns {Array} Array of license options with label and value (SKU) + */ +export const getTenantGroupLicenseOptions = () => { + // Combine both license files + const allLicenses = [...M365LicensesDefault, ...M365LicensesAdditional]; + + // Create unique licenses map using String_Id as key for better deduplication + const uniqueLicensesMap = new Map(); + + allLicenses.forEach((license) => { + if (license.String_Id && license.Product_Display_Name && license.GUID) { + // Use String_Id as the unique key since that's what we send to backend + const key = license.String_Id; + if (!uniqueLicensesMap.has(key)) { + uniqueLicensesMap.set(key, { + label: license.Product_Display_Name, + value: license.String_Id, + guid: license.GUID, + }); + } + } + }); + + // Convert to array and filter out incomplete entries + const licenseOptions = Array.from(uniqueLicensesMap.values()).filter( + (license) => license.label && license.value + ); + + // Additional deduplication by label to handle cases where different String_Ids have same display name + const uniqueByLabelMap = new Map(); + licenseOptions.forEach((license) => { + if (!uniqueByLabelMap.has(license.label)) { + uniqueByLabelMap.set(license.label, license); + } + }); + + return Array.from(uniqueByLabelMap.values()).sort((a, b) => a.label.localeCompare(b.label)); +}; + +/** + * Get all available service plans for tenant group dynamic rules + * @returns {Array} Array of unique service plan options with label and value + */ +export const getTenantGroupServicePlanOptions = () => { + // Combine both license files + const allLicenses = [...M365LicensesDefault, ...M365LicensesAdditional]; + + // Create unique service plans map using Service_Plan_Name as key for better deduplication + const uniqueServicePlansMap = new Map(); + + allLicenses.forEach((license) => { + if ( + license.Service_Plan_Name && + license.Service_Plans_Included_Friendly_Names && + license.Service_Plan_Id + ) { + // Use Service_Plan_Name as the unique key since that's what we send to backend + const key = license.Service_Plan_Name; + if (!uniqueServicePlansMap.has(key)) { + uniqueServicePlansMap.set(key, { + label: license.Service_Plans_Included_Friendly_Names, + value: license.Service_Plan_Name, + id: license.Service_Plan_Id, + }); + } + } + }); + + // Convert to array and sort by display name, then deduplicate by label as well + const serviceOptions = Array.from(uniqueServicePlansMap.values()).filter( + (plan) => plan.label && plan.value + ); // Filter out any incomplete entries + + // Additional deduplication by label to handle cases where different service plan names have same friendly name + const uniqueByLabelMap = new Map(); + serviceOptions.forEach((plan) => { + if (!uniqueByLabelMap.has(plan.label)) { + uniqueByLabelMap.set(plan.label, plan); + } + }); + + return Array.from(uniqueByLabelMap.values()).sort((a, b) => a.label.localeCompare(b.label)); +}; + +/** + * Get delegated access status options for tenant group dynamic rules + * @returns {Array} Array of delegated access status options + */ +export const getTenantGroupDelegatedAccessOptions = () => { + return [ + { + label: "Granular Delegated Admin Privileges", + value: "granularDelegatedAdminPrivileges", + }, + { + label: "Direct Tenant", + value: "directTenant", + }, + ]; +}; + +/** + * Get all property options for dynamic tenant group rules + * @returns {Array} Array of property options for the rule builder + */ +export const getTenantGroupPropertyOptions = () => { + return [ + { + label: "Available License", + value: "availableLicense", + type: "license", + }, + { + label: "Available Service Plan", + value: "availableServicePlan", + type: "servicePlan", + }, + { + label: "Delegated Access Status", + value: "delegatedAccessStatus", + type: "delegatedAccess", + }, + { + label: "Member of Tenant Group", + value: "tenantGroupMember", + type: "tenantGroup", + }, + { + label: "Custom Variable", + value: "customVariable", + type: "customVariable", + }, + ]; +}; + +/** + * Get operator options for dynamic tenant group rules + * @returns {Array} Array of operator options + */ +export const getTenantGroupOperatorOptions = (propertyType) => { + const baseOperators = [ + { + label: "Equals", + value: "eq", + }, + { + label: "Not Equals", + value: "ne", + }, + ]; + + const arrayOperators = [ + { + label: "In", + value: "in", + }, + { + label: "Not In", + value: "notIn", + }, + ]; + + const textOperators = [ + { + label: "Contains", + value: "like", + }, + { + label: "Does Not Contain", + value: "notlike", + }, + ]; + + // Custom Variable supports text comparison + if (propertyType === "customVariable") { + return [...baseOperators, ...textOperators]; + } + + // Delegated Access Status only supports equals/not equals + if (propertyType === "delegatedAccess") { + return baseOperators; + } + + // Tenant group only supports in/notin + if (propertyType === "tenantGroup") { + return arrayOperators; + } + + // License and Service Plan support all operators + return [...baseOperators, ...arrayOperators]; +}; + +/** + * Get value options based on the selected property type + * @param {string} propertyType - The type of property (license, servicePlan, delegatedAccess, tenantGroup) + * @returns {Array} Array of value options for the selected property type + */ +export const getTenantGroupValueOptions = (propertyType) => { + switch (propertyType) { + case "license": + return getTenantGroupLicenseOptions(); + case "servicePlan": + return getTenantGroupServicePlanOptions(); + case "delegatedAccess": + return getTenantGroupDelegatedAccessOptions(); + case "tenantGroup": + // Return empty array - will be populated dynamically via API + return []; + case "customVariable": + // Return empty array - uses free-text input with variable name + return []; + default: + return []; + } +}; + +/** + * Get tenant group options query configuration for use with ApiGetCallWithPagination + * This should be used with ApiGetCallWithPagination hook in components + * Uses the same query key as the Tenant Group table list for cache consistency + * @returns {Object} Query configuration object for ApiGetCallWithPagination + */ +export const getTenantGroupsQuery = () => ({ + url: "/api/ListTenantGroups", + queryKey: "TenantGroupListPage", + waiting: true, +}); diff --git a/src/utils/get-cipp-unique-licenses.js b/src/utils/get-cipp-unique-licenses.js new file mode 100644 index 000000000000..fcb68de559a0 --- /dev/null +++ b/src/utils/get-cipp-unique-licenses.js @@ -0,0 +1,86 @@ +import { getCippLicenseTranslation } from "./get-cipp-license-translation"; + +/** + * Extracts unique licenses from assignedLicenses data + * @param {Array} dataArray - Array of user data containing assignedLicenses + * @returns {Array} Array of unique license objects with skuId and translated name + */ +export const getCippUniqueLicenses = (dataArray) => { + if (!Array.isArray(dataArray) || dataArray.length === 0) { + return []; + } + + const uniqueLicensesMap = new Map(); + + // Iterate through all users and their assigned licenses + dataArray.forEach((user) => { + if (user.assignedLicenses && Array.isArray(user.assignedLicenses)) { + user.assignedLicenses.forEach((license) => { + if (license && license.skuId) { + // Use skuId as the unique key + if (!uniqueLicensesMap.has(license.skuId)) { + // Get the translated name for this license + const translatedName = getCippLicenseTranslation([license]); + const displayName = Array.isArray(translatedName) ? translatedName[0] : translatedName; + + uniqueLicensesMap.set(license.skuId, { + skuId: license.skuId, + displayName: displayName, + // Store the original license object for reference + originalLicense: license, + }); + } + } + }); + } + }); + + // Convert map to array and sort by display name + return Array.from(uniqueLicensesMap.values()).sort((a, b) => { + const nameA = a?.displayName || ''; + const nameB = b?.displayName || ''; + return nameA.localeCompare(nameB); + }); +}; + +/** + * Checks if a user has all the specified licenses + * @param {Array} userLicenses - User's assigned licenses array + * @param {Array} requiredLicenseSkuIds - Array of required license skuIds + * @returns {boolean} True if user has all required licenses + */ +export const userHasAllLicenses = (userLicenses, requiredLicenseSkuIds) => { + if (!Array.isArray(userLicenses) || !Array.isArray(requiredLicenseSkuIds)) { + return false; + } + + if (requiredLicenseSkuIds.length === 0) { + return true; // No licenses required + } + + const userSkuIds = userLicenses.map((license) => license.skuId).filter(Boolean); + + // Check if user has all required licenses + return requiredLicenseSkuIds.every((requiredSkuId) => userSkuIds.includes(requiredSkuId)); +}; + +/** + * Checks if a user has any of the specified licenses + * @param {Array} userLicenses - User's assigned licenses array + * @param {Array} licenseSkuIds - Array of license skuIds to check + * @returns {boolean} True if user has any of the specified licenses + */ +export const userHasAnyLicense = (userLicenses, licenseSkuIds) => { + if (!Array.isArray(userLicenses) || !Array.isArray(licenseSkuIds)) { + return false; + } + + if (licenseSkuIds.length === 0) { + return true; // No licenses specified + } + + const userSkuIds = userLicenses.map((license) => license.skuId).filter(Boolean); + + // Check if user has any of the specified licenses + return licenseSkuIds.some((licenseSkuId) => userSkuIds.includes(licenseSkuId)); +}; diff --git a/src/utils/get-cipp-validator.js b/src/utils/get-cipp-validator.js index 3b42fb6c5101..867113f8110d 100644 --- a/src/utils/get-cipp-validator.js +++ b/src/utils/get-cipp-validator.js @@ -12,7 +12,7 @@ export const getCippValidator = (value, type) => { return "This is invalid JSON"; } case "email": - return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value) || "This is not a valid email"; + return /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(value) || "This is not a valid email"; case "url": return /^(http|https):\/\/[^ "]+$/.test(value) || "This is not a valid URL"; case "string": @@ -40,8 +40,6 @@ export const getCippValidator = (value, type) => { return /^(\*\.)?([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?(\.\*)?$/.test(value) || /^(\*)?[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?(\*)?(\.[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?)*$/.test(value) || "This is not a valid domain pattern"; case "wildcardUrl": return /^(https?:\/\/)?(\*\.)?([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?(\.\*)?([\/\?\*][a-zA-Z0-9\-\.\~\*\/\?=&%]*)?$/.test(value) || "This is not a valid URL pattern"; - case "emailAddress": - return /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(value) || "This is not a valid email address"; case "senderEntry": return ( /^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$/.test(value) || diff --git a/src/utils/permissions.js b/src/utils/permissions.js new file mode 100644 index 000000000000..46e6a539864a --- /dev/null +++ b/src/utils/permissions.js @@ -0,0 +1,227 @@ +import Button from "@mui/material/Button"; +import { usePermissions } from "../hooks/use-permissions.js"; +/** + * Permission Helper Utilities + * + * This module provides utilities for checking user permissions with pattern matching support. + * It uses the same logic as the navigation system to ensure consistency across the application. + */ + +/** + * Check if user has permission using pattern matching + * @param {string[]} userPermissions - Array of user permissions + * @param {string[]} requiredPermissions - Array of required permissions (can include wildcards) + * @returns {boolean} - True if user has at least one of the required permissions + */ +export const hasPermission = (userPermissions, requiredPermissions) => { + if (!userPermissions || !requiredPermissions) { + return false; + } + + if (!Array.isArray(userPermissions) || !Array.isArray(requiredPermissions)) { + return false; + } + + if (requiredPermissions.length === 0) { + return true; // No permissions required + } + + return userPermissions.some((userPerm) => { + return requiredPermissions.some((requiredPerm) => { + // Exact match + if (userPerm === requiredPerm) { + return true; + } + + // Pattern matching - check if required permission contains wildcards + if (requiredPerm.includes("*")) { + // Convert wildcard pattern to regex + const regexPattern = requiredPerm + .replace(/\./g, "\\.") // Escape dots + .replace(/\*/g, ".*"); // Convert * to .* + const regex = new RegExp(`^${regexPattern}$`); + return regex.test(userPerm); + } + + return false; + }); + }); +}; + +/** + * Check if user has any of the required roles + * @param {string[]} userRoles - Array of user roles + * @param {string[]} requiredRoles - Array of required roles + * @returns {boolean} - True if user has at least one of the required roles + */ +export const hasRole = (userRoles, requiredRoles) => { + if (!userRoles || !requiredRoles) { + return false; + } + + if (!Array.isArray(userRoles) || !Array.isArray(requiredRoles)) { + return false; + } + + if (requiredRoles.length === 0) { + return true; // No roles required + } + + return requiredRoles.some((requiredRole) => userRoles.includes(requiredRole)); +}; + +/** + * Check if user has access based on both permissions and roles + * @param {Object} config - Configuration object + * @param {string[]} config.userPermissions - Array of user permissions + * @param {string[]} config.userRoles - Array of user roles + * @param {string[]} config.requiredPermissions - Array of required permissions (can include wildcards) + * @param {string[]} config.requiredRoles - Array of required roles + * @returns {boolean} - True if user has access + */ +export const hasAccess = ({ + userPermissions, + userRoles, + requiredPermissions = [], + requiredRoles = [], +}) => { + // Check roles first (if any are required) + if (requiredRoles.length > 0) { + const hasRequiredRole = hasRole(userRoles, requiredRoles); + if (!hasRequiredRole) { + return false; + } + } + + // Check permissions (if any are required) + if (requiredPermissions.length > 0) { + const hasRequiredPermission = hasPermission(userPermissions, requiredPermissions); + if (!hasRequiredPermission) { + return false; + } + } + + return true; +}; + +/** + * Hook for checking permissions in React components + * @param {string[]} requiredPermissions - Array of required permissions (can include wildcards) + * @param {string[]} requiredRoles - Array of required roles + * @returns {boolean} - True if user has access + */ +export const useHasAccess = (requiredPermissions = [], requiredRoles = []) => { + // This would typically use a context or hook to get current user permissions + // For now, we'll return a function that can be called with user data + return (userPermissions, userRoles) => { + return hasAccess({ + userPermissions, + userRoles, + requiredPermissions, + requiredRoles, + }); + }; +}; + +/** + * Higher-order component to conditionally render based on permissions + * @param {Object} config - Configuration object + * @param {React.Component} config.component - Component to render if user has access + * @param {string[]} config.requiredPermissions - Array of required permissions + * @param {string[]} config.requiredRoles - Array of required roles + * @param {React.Component} config.fallback - Component to render if user doesn't have access + * @returns {React.Component} - Conditional component + */ +export const withPermissions = ({ + component: Component, + requiredPermissions = [], + requiredRoles = [], + fallback = null, +}) => { + return (props) => { + const { userPermissions, userRoles, ...restProps } = props; + + const hasRequiredAccess = hasAccess({ + userPermissions, + userRoles, + requiredPermissions, + requiredRoles, + }); + + if (hasRequiredAccess) { + return ; + } + + return fallback; + }; +}; + +/** + * Permission-aware Button component + * @param {Object} props - Button props + * @param {string[]} props.requiredPermissions - Array of required permissions + * @param {string[]} props.requiredRoles - Array of required roles + * @param {boolean} props.hideIfNoAccess - Hide button if user doesn't have access (default: false) + * @returns {React.Component} - Permission-aware button + */ +export const PermissionButton = ({ + requiredPermissions = [], + requiredRoles = [], + hideIfNoAccess = false, + children, + ...buttonProps +}) => { + const { userPermissions, userRoles, isAuthenticated } = usePermissions(); + + const hasRequiredAccess = + isAuthenticated && + hasAccess({ + userPermissions, + userRoles, + requiredPermissions, + requiredRoles, + }); + + if (!hasRequiredAccess && hideIfNoAccess) { + return null; + } + + return ( + + ); +}; + +/** + * Permission-aware conditional rendering component + * @param {Object} props - Component props + * @param {string[]} props.requiredPermissions - Array of required permissions + * @param {string[]} props.requiredRoles - Array of required roles + * @param {React.ReactNode} props.children - Content to render if user has access + * @param {React.ReactNode} props.fallback - Content to render if user doesn't have access + * @returns {React.Component} - Conditional component + */ +export const PermissionCheck = ({ + requiredPermissions = [], + requiredRoles = [], + children, + fallback = null, +}) => { + const { userPermissions, userRoles, isAuthenticated } = usePermissions(); + + const hasRequiredAccess = + isAuthenticated && + hasAccess({ + userPermissions, + userRoles, + requiredPermissions, + requiredRoles, + }); + + if (hasRequiredAccess) { + return children; + } + + return fallback; +}; diff --git a/version_latest.txt b/version_latest.txt deleted file mode 100644 index 5e39348ef037..000000000000 --- a/version_latest.txt +++ /dev/null @@ -1 +0,0 @@ -99.99.99 \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 3c47f75cfe6d..388c3f43e078 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,284 +2,281 @@ # yarn lockfile v1 -"@ampproject/remapping@^2.2.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" - integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.26.2": - version "7.26.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" - integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" + integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== dependencies: - "@babel/helper-validator-identifier" "^7.25.9" + "@babel/helper-validator-identifier" "^7.28.5" js-tokens "^4.0.0" - picocolors "^1.0.0" + picocolors "^1.1.1" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.26.8": - version "7.26.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367" - integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== - -"@babel/core@^7.21.3": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.10.tgz#5c876f83c8c4dcb233ee4b670c0606f2ac3000f9" - integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.10" - "@babel/helper-compilation-targets" "^7.26.5" - "@babel/helper-module-transforms" "^7.26.0" - "@babel/helpers" "^7.26.10" - "@babel/parser" "^7.26.10" - "@babel/template" "^7.26.9" - "@babel/traverse" "^7.26.10" - "@babel/types" "^7.26.10" +"@babel/compat-data@^7.28.6", "@babel/compat-data@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d" + integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg== + +"@babel/core@^7.21.3", "@babel/core@^7.24.4": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322" + integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA== + dependencies: + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helpers" "^7.28.6" + "@babel/parser" "^7.29.0" + "@babel/template" "^7.28.6" + "@babel/traverse" "^7.29.0" + "@babel/types" "^7.29.0" + "@jridgewell/remapping" "^2.3.5" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.26.10", "@babel/generator@^7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.0.tgz#764382b5392e5b9aff93cadb190d0745866cbc2c" - integrity sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw== +"@babel/generator@^7.29.0": + version "7.29.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50" + integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw== dependencies: - "@babel/parser" "^7.27.0" - "@babel/types" "^7.27.0" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" + "@babel/parser" "^7.29.0" + "@babel/types" "^7.29.0" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" -"@babel/helper-annotate-as-pure@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" - integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== +"@babel/helper-annotate-as-pure@^7.27.1", "@babel/helper-annotate-as-pure@^7.27.3": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" + integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== dependencies: - "@babel/types" "^7.25.9" + "@babel/types" "^7.27.3" -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9", "@babel/helper-compilation-targets@^7.26.5": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz#de0c753b1cd1d9ab55d473c5a5cf7170f0a81880" - integrity sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA== +"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25" + integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== dependencies: - "@babel/compat-data" "^7.26.8" - "@babel/helper-validator-option" "^7.25.9" + "@babel/compat-data" "^7.28.6" + "@babel/helper-validator-option" "^7.27.1" browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.25.9", "@babel/helper-create-class-features-plugin@^7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz#518fad6a307c6a96f44af14912b2c20abe9bfc30" - integrity sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-member-expression-to-functions" "^7.25.9" - "@babel/helper-optimise-call-expression" "^7.25.9" - "@babel/helper-replace-supers" "^7.26.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" - "@babel/traverse" "^7.27.0" +"@babel/helper-create-class-features-plugin@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz#611ff5482da9ef0db6291bcd24303400bca170fb" + integrity sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-member-expression-to-functions" "^7.28.5" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/helper-replace-supers" "^7.28.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/traverse" "^7.28.6" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.9": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.0.tgz#0e41f7d38c2ebe06ebd9cf0e02fb26019c77cd95" - integrity sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1", "@babel/helper-create-regexp-features-plugin@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz#7c1ddd64b2065c7f78034b25b43346a7e19ed997" + integrity sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - regexpu-core "^6.2.0" + "@babel/helper-annotate-as-pure" "^7.27.3" + regexpu-core "^6.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.6.3", "@babel/helper-define-polyfill-provider@^0.6.4": - version "0.6.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz#15e8746368bfa671785f5926ff74b3064c291fab" - integrity sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw== +"@babel/helper-define-polyfill-provider@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz#cf1e4462b613f2b54c41e6ff758d5dfcaa2c85d1" + integrity sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA== dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + debug "^4.4.3" lodash.debounce "^4.0.8" - resolve "^1.14.2" - -"@babel/helper-member-expression-to-functions@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3" - integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" - integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" - integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== - dependencies: - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - "@babel/traverse" "^7.25.9" - -"@babel/helper-optimise-call-expression@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e" - integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ== - dependencies: - "@babel/types" "^7.25.9" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35" - integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg== - -"@babel/helper-remap-async-to-generator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92" - integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-wrap-function" "^7.25.9" - "@babel/traverse" "^7.25.9" - -"@babel/helper-replace-supers@^7.25.9", "@babel/helper-replace-supers@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz#6cb04e82ae291dae8e72335dfe438b0725f14c8d" - integrity sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.25.9" - "@babel/helper-optimise-call-expression" "^7.25.9" - "@babel/traverse" "^7.26.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9" - integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" + resolve "^1.22.11" + +"@babel/helper-globals@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== + +"@babel/helper-member-expression-to-functions@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz#f3e07a10be37ed7a63461c63e6929575945a6150" + integrity sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg== + dependencies: + "@babel/traverse" "^7.28.5" + "@babel/types" "^7.28.5" + +"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c" + integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== + dependencies: + "@babel/traverse" "^7.28.6" + "@babel/types" "^7.28.6" + +"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" + integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== + dependencies: + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-validator-identifier" "^7.28.5" + "@babel/traverse" "^7.28.6" + +"@babel/helper-optimise-call-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" + integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== + dependencies: + "@babel/types" "^7.27.1" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz#6f13ea251b68c8532e985fd532f28741a8af9ac8" + integrity sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug== + +"@babel/helper-remap-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz#4601d5c7ce2eb2aea58328d43725523fcd362ce6" + integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-wrap-function" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/helper-replace-supers@^7.27.1", "@babel/helper-replace-supers@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz#94aa9a1d7423a00aead3f204f78834ce7d53fe44" + integrity sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.28.5" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/traverse" "^7.28.6" + +"@babel/helper-skip-transparent-expression-wrappers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" + integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== + +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + +"@babel/helper-wrap-function@^7.27.1": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz#4e349ff9222dab69a93a019cc296cdd8442e279a" + integrity sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ== + dependencies: + "@babel/template" "^7.28.6" + "@babel/traverse" "^7.28.6" + "@babel/types" "^7.28.6" + +"@babel/helpers@^7.28.6": + version "7.29.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.29.2.tgz#9cfbccb02b8e229892c0b07038052cc1a8709c49" + integrity sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw== + dependencies: + "@babel/template" "^7.28.6" + "@babel/types" "^7.29.0" -"@babel/helper-string-parser@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" - integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== - -"@babel/helper-validator-identifier@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" - integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== - -"@babel/helper-validator-option@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" - integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== - -"@babel/helper-wrap-function@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0" - integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g== - dependencies: - "@babel/template" "^7.25.9" - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helpers@^7.26.10": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.0.tgz#53d156098defa8243eab0f32fa17589075a1b808" - integrity sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg== - dependencies: - "@babel/template" "^7.27.0" - "@babel/types" "^7.27.0" - -"@babel/parser@^7.26.10", "@babel/parser@^7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.0.tgz#3d7d6ee268e41d2600091cbd4e145ffee85a44ec" - integrity sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg== +"@babel/parser@^7.24.4", "@babel/parser@^7.28.6", "@babel/parser@^7.29.0": + version "7.29.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.2.tgz#58bd50b9a7951d134988a1ae177a35ef9a703ba1" + integrity sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA== dependencies: - "@babel/types" "^7.27.0" - -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" - integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g== + "@babel/types" "^7.29.0" + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz#fbde57974707bbfa0376d34d425ff4fa6c732421" + integrity sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/traverse" "^7.25.9" - -"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz#af9e4fb63ccb8abcb92375b2fcfe36b60c774d30" - integrity sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw== + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.28.5" + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz#43f70a6d7efd52370eefbdf55ae03d91b293856d" + integrity sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz#e8dc26fcd616e6c5bf2bd0d5a2c151d4f92a9137" - integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz#beb623bd573b8b6f3047bd04c32506adc3e58a72" + integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz#807a667f9158acac6f6164b4beb85ad9ebc9e1d1" - integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd" + integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" - "@babel/plugin-transform-optional-chaining" "^7.25.9" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz#de7093f1e7deaf68eadd7cc6b07f2ab82543269e" - integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz#0e8289cec28baaf05d54fd08d81ae3676065f69f" + integrity sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/traverse" "^7.28.6" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== -"@babel/plugin-syntax-import-assertions@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz#620412405058efa56e4a564903b79355020f445f" - integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg== +"@babel/plugin-syntax-import-assertions@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz#ae9bc1923a6ba527b70104dd2191b0cd872c8507" + integrity sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-syntax-import-attributes@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" - integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== +"@babel/plugin-syntax-import-attributes@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz#b71d5914665f60124e133696f17cd7669062c503" + integrity sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-syntax-jsx@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" - integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== +"@babel/plugin-syntax-jsx@^7.27.1", "@babel/plugin-syntax-jsx@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz#f8ca28bbd84883b5fea0e447c635b81ba73997ee" + integrity sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-syntax-typescript@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" - integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== +"@babel/plugin-syntax-typescript@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz#c7b2ddf1d0a811145b1de800d1abd146af92e3a2" + integrity sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -289,517 +286,528 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845" - integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg== +"@babel/plugin-transform-arrow-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a" + integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-async-generator-functions@^7.26.8": - version "7.26.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz#5e3991135e3b9c6eaaf5eff56d1ae5a11df45ff8" - integrity sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg== +"@babel/plugin-transform-async-generator-functions@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz#63ed829820298f0bf143d5a4a68fb8c06ffd742f" + integrity sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/helper-remap-async-to-generator" "^7.25.9" - "@babel/traverse" "^7.26.8" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-remap-async-to-generator" "^7.27.1" + "@babel/traverse" "^7.29.0" -"@babel/plugin-transform-async-to-generator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71" - integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== +"@babel/plugin-transform-async-to-generator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz#bd97b42237b2d1bc90d74bcb486c39be5b4d7e77" + integrity sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g== dependencies: - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-remap-async-to-generator" "^7.25.9" + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-remap-async-to-generator" "^7.27.1" -"@babel/plugin-transform-block-scoped-functions@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz#3dc4405d31ad1cbe45293aa57205a6e3b009d53e" - integrity sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ== +"@babel/plugin-transform-block-scoped-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz#558a9d6e24cf72802dd3b62a4b51e0d62c0f57f9" + integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-block-scoping@^7.25.9": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.0.tgz#acc2c0d98a7439bbde4244588ddbd4904701d47f" - integrity sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ== +"@babel/plugin-transform-block-scoping@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz#e1ef5633448c24e76346125c2534eeb359699a99" + integrity sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-class-properties@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f" - integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q== +"@babel/plugin-transform-class-properties@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz#d274a4478b6e782d9ea987fda09bdb6d28d66b72" + integrity sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-class-static-block@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz#6c8da219f4eb15cae9834ec4348ff8e9e09664a0" - integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ== +"@babel/plugin-transform-class-static-block@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz#1257491e8259c6d125ac4d9a6f39f9d2bf3dba70" + integrity sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-classes@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52" - integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg== +"@babel/plugin-transform-classes@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz#8f6fb79ba3703978e701ce2a97e373aae7dda4b7" + integrity sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-replace-supers" "^7.25.9" - "@babel/traverse" "^7.25.9" - globals "^11.1.0" + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-globals" "^7.28.0" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-replace-supers" "^7.28.6" + "@babel/traverse" "^7.28.6" -"@babel/plugin-transform-computed-properties@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b" - integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA== +"@babel/plugin-transform-computed-properties@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz#936824fc71c26cb5c433485776d79c8e7b0202d2" + integrity sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/template" "^7.25.9" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/template" "^7.28.6" -"@babel/plugin-transform-destructuring@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1" - integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ== +"@babel/plugin-transform-destructuring@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz#b8402764df96179a2070bb7b501a1586cf8ad7a7" + integrity sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.28.5" -"@babel/plugin-transform-dotall-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz#bad7945dd07734ca52fe3ad4e872b40ed09bb09a" - integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA== +"@babel/plugin-transform-dotall-regex@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz#def31ed84e0fb6e25c71e53c124e7b76a4ab8e61" + integrity sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-duplicate-keys@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz#8850ddf57dce2aebb4394bb434a7598031059e6d" - integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw== +"@babel/plugin-transform-duplicate-keys@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz#f1fbf628ece18e12e7b32b175940e68358f546d1" + integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz#6f7259b4de127721a08f1e5165b852fcaa696d31" - integrity sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz#8014b8a6cfd0e7b92762724443bf0d2400f26df1" + integrity sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-dynamic-import@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz#23e917de63ed23c6600c5dd06d94669dce79f7b8" - integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg== +"@babel/plugin-transform-dynamic-import@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz#4c78f35552ac0e06aa1f6e3c573d67695e8af5a4" + integrity sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-exponentiation-operator@^7.26.3": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz#e29f01b6de302c7c2c794277a48f04a9ca7f03bc" - integrity sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ== +"@babel/plugin-transform-explicit-resource-management@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz#dd6788f982c8b77e86779d1d029591e39d9d8be7" + integrity sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/plugin-transform-destructuring" "^7.28.5" -"@babel/plugin-transform-export-namespace-from@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz#90745fe55053394f554e40584cda81f2c8a402a2" - integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww== +"@babel/plugin-transform-exponentiation-operator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz#5e477eb7eafaf2ab5537a04aaafcf37e2d7f1091" + integrity sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-for-of@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz#27231f79d5170ef33b5111f07fe5cafeb2c96a56" - integrity sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg== +"@babel/plugin-transform-export-namespace-from@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz#71ca69d3471edd6daa711cf4dfc3400415df9c23" + integrity sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-function-name@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97" - integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA== +"@babel/plugin-transform-for-of@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz#bc24f7080e9ff721b63a70ac7b2564ca15b6c40a" + integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw== dependencies: - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-json-strings@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz#c86db407cb827cded902a90c707d2781aaa89660" - integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw== +"@babel/plugin-transform-function-name@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7" + integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-transform-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz#1a1c6b4d4aa59bc4cad5b6b3a223a0abd685c9de" - integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ== +"@babel/plugin-transform-json-strings@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz#4c8c15b2dc49e285d110a4cf3dac52fd2dfc3038" + integrity sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-logical-assignment-operators@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz#b19441a8c39a2fda0902900b306ea05ae1055db7" - integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q== +"@babel/plugin-transform-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24" + integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-member-expression-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz#63dff19763ea64a31f5e6c20957e6a25e41ed5de" - integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA== +"@babel/plugin-transform-logical-assignment-operators@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz#53028a3d77e33c50ef30a8fce5ca17065936e605" + integrity sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-modules-amd@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz#49ba478f2295101544abd794486cd3088dddb6c5" - integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw== +"@babel/plugin-transform-member-expression-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz#37b88ba594d852418e99536f5612f795f23aeaf9" + integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ== dependencies: - "@babel/helper-module-transforms" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-commonjs@^7.26.3": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz#8f011d44b20d02c3de44d8850d971d8497f981fb" - integrity sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ== +"@babel/plugin-transform-modules-amd@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz#a4145f9d87c2291fe2d05f994b65dba4e3e7196f" + integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA== dependencies: - "@babel/helper-module-transforms" "^7.26.0" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-systemjs@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz#8bd1b43836269e3d33307151a114bcf3ba6793f8" - integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA== +"@babel/plugin-transform-modules-commonjs@^7.27.1", "@babel/plugin-transform-modules-commonjs@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz#c0232e0dfe66a734cc4ad0d5e75fc3321b6fdef1" + integrity sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA== dependencies: - "@babel/helper-module-transforms" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-modules-umd@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz#6710079cdd7c694db36529a1e8411e49fcbf14c9" - integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw== +"@babel/plugin-transform-modules-systemjs@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz#e458a95a17807c415924106a3ff188a3b8dee964" + integrity sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ== dependencies: - "@babel/helper-module-transforms" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-validator-identifier" "^7.28.5" + "@babel/traverse" "^7.29.0" -"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a" - integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA== +"@babel/plugin-transform-modules-umd@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz#63f2cf4f6dc15debc12f694e44714863d34cd334" + integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-new-target@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz#42e61711294b105c248336dcb04b77054ea8becd" - integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ== +"@babel/plugin-transform-named-capturing-groups-regex@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz#a26cd51e09c4718588fc4cce1c5d1c0152102d6a" + integrity sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-nullish-coalescing-operator@^7.26.6": - version "7.26.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz#fbf6b3c92cb509e7b319ee46e3da89c5bedd31fe" - integrity sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw== +"@babel/plugin-transform-new-target@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz#259c43939728cad1706ac17351b7e6a7bea1abeb" + integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-numeric-separator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1" - integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== +"@babel/plugin-transform-nullish-coalescing-operator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz#9bc62096e90ab7a887f3ca9c469f6adec5679757" + integrity sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-object-rest-spread@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz#0203725025074164808bcf1a2cfa90c652c99f18" - integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg== +"@babel/plugin-transform-numeric-separator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz#1310b0292762e7a4a335df5f580c3320ee7d9e9f" + integrity sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w== dependencies: - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/plugin-transform-parameters" "^7.25.9" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-object-super@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz#385d5de135162933beb4a3d227a2b7e52bb4cf03" - integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A== +"@babel/plugin-transform-object-rest-spread@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz#fdd4bc2d72480db6ca42aed5c051f148d7b067f7" + integrity sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-replace-supers" "^7.25.9" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/plugin-transform-destructuring" "^7.28.5" + "@babel/plugin-transform-parameters" "^7.27.7" + "@babel/traverse" "^7.28.6" -"@babel/plugin-transform-optional-catch-binding@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz#10e70d96d52bb1f10c5caaac59ac545ea2ba7ff3" - integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g== +"@babel/plugin-transform-object-super@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz#1c932cd27bf3874c43a5cac4f43ebf970c9871b5" + integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" -"@babel/plugin-transform-optional-chaining@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd" - integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A== +"@babel/plugin-transform-optional-catch-binding@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz#75107be14c78385978201a49c86414a150a20b4c" + integrity sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-parameters@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257" - integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g== +"@babel/plugin-transform-optional-chaining@^7.27.1", "@babel/plugin-transform-optional-chaining@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz#926cf150bd421fc8362753e911b4a1b1ce4356cd" + integrity sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-private-methods@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz#847f4139263577526455d7d3223cd8bda51e3b57" - integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw== +"@babel/plugin-transform-parameters@^7.27.7": + version "7.27.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz#1fd2febb7c74e7d21cf3b05f7aebc907940af53a" + integrity sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-private-property-in-object@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz#9c8b73e64e6cc3cbb2743633885a7dd2c385fe33" - integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw== +"@babel/plugin-transform-private-methods@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz#c76fbfef3b86c775db7f7c106fff544610bdb411" + integrity sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-property-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz#d72d588bd88b0dec8b62e36f6fda91cedfe28e3f" - integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA== +"@babel/plugin-transform-private-property-in-object@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz#4fafef1e13129d79f1d75ac180c52aafefdb2811" + integrity sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-property-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz#07eafd618800591e88073a0af1b940d9a42c6424" + integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" "@babel/plugin-transform-react-constant-elements@^7.21.3": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.9.tgz#08a1de35a301929b60fdf2788a54b46cd8ecd0ef" - integrity sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow== + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz#6c6b50424e749a6e48afd14cf7b92f98cb9383f9" + integrity sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-react-display-name@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz#4b79746b59efa1f38c8695065a92a9f5afb24f7d" - integrity sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ== +"@babel/plugin-transform-react-display-name@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz#6f20a7295fea7df42eb42fed8f896813f5b934de" + integrity sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-react-jsx-development@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz#8fd220a77dd139c07e25225a903b8be8c829e0d7" - integrity sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw== +"@babel/plugin-transform-react-jsx-development@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz#47ff95940e20a3a70e68ad3d4fcb657b647f6c98" + integrity sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q== dependencies: - "@babel/plugin-transform-react-jsx" "^7.25.9" + "@babel/plugin-transform-react-jsx" "^7.27.1" -"@babel/plugin-transform-react-jsx@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz#06367940d8325b36edff5e2b9cbe782947ca4166" - integrity sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw== +"@babel/plugin-transform-react-jsx@^7.27.1": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz#f51cb70a90b9529fbb71ee1f75ea27b7078eed62" + integrity sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/plugin-syntax-jsx" "^7.25.9" - "@babel/types" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/plugin-syntax-jsx" "^7.28.6" + "@babel/types" "^7.28.6" -"@babel/plugin-transform-react-pure-annotations@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz#ea1c11b2f9dbb8e2d97025f43a3b5bc47e18ae62" - integrity sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg== +"@babel/plugin-transform-react-pure-annotations@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz#339f1ce355eae242e0649f232b1c68907c02e879" + integrity sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-regenerator@^7.25.9": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.0.tgz#822feebef43d6a59a81f696b2512df5b1682db31" - integrity sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA== +"@babel/plugin-transform-regenerator@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz#dec237cec1b93330876d6da9992c4abd42c9d18b" + integrity sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" - regenerator-transform "^0.15.2" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-regexp-modifiers@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz#2f5837a5b5cd3842a919d8147e9903cc7455b850" - integrity sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw== +"@babel/plugin-transform-regexp-modifiers@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz#7ef0163bd8b4a610481b2509c58cf217f065290b" + integrity sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-reserved-words@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz#0398aed2f1f10ba3f78a93db219b27ef417fb9ce" - integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg== +"@babel/plugin-transform-reserved-words@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz#40fba4878ccbd1c56605a4479a3a891ac0274bb4" + integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-shorthand-properties@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2" - integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng== +"@babel/plugin-transform-shorthand-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" + integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-spread@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9" - integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A== +"@babel/plugin-transform-spread@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz#40a2b423f6db7b70f043ad027a58bcb44a9757b6" + integrity sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-sticky-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32" - integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA== +"@babel/plugin-transform-sticky-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280" + integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-template-literals@^7.26.8": - version "7.26.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz#966b15d153a991172a540a69ad5e1845ced990b5" - integrity sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q== +"@babel/plugin-transform-template-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz#1a0eb35d8bb3e6efc06c9fd40eb0bcef548328b8" + integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-typeof-symbol@^7.26.7": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.0.tgz#044a0890f3ca694207c7826d0c7a65e5ac008aae" - integrity sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w== +"@babel/plugin-transform-typeof-symbol@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz#70e966bb492e03509cf37eafa6dcc3051f844369" + integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-typescript@^7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz#a29fd3481da85601c7e34091296e9746d2cccba8" - integrity sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg== +"@babel/plugin-transform-typescript@^7.28.5": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz#1e93d96da8adbefdfdade1d4956f73afa201a158" + integrity sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-create-class-features-plugin" "^7.27.0" - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" - "@babel/plugin-syntax-typescript" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-syntax-typescript" "^7.28.6" -"@babel/plugin-transform-unicode-escapes@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz#a75ef3947ce15363fccaa38e2dd9bc70b2788b82" - integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q== +"@babel/plugin-transform-unicode-escapes@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz#3e3143f8438aef842de28816ece58780190cf806" + integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-property-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz#a901e96f2c1d071b0d1bb5dc0d3c880ce8f53dd3" - integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg== +"@babel/plugin-transform-unicode-property-regex@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz#63a7a6c21a0e75dae9b1861454111ea5caa22821" + integrity sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-unicode-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1" - integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA== +"@babel/plugin-transform-unicode-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz#25948f5c395db15f609028e370667ed8bae9af97" + integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-sets-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz#65114c17b4ffc20fa5b163c63c70c0d25621fabe" - integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ== +"@babel/plugin-transform-unicode-sets-regex@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz#924912914e5df9fe615ec472f88ff4788ce04d4e" + integrity sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/preset-env@^7.20.2": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.26.9.tgz#2ec64e903d0efe743699f77a10bdf7955c2123c3" - integrity sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ== - dependencies: - "@babel/compat-data" "^7.26.8" - "@babel/helper-compilation-targets" "^7.26.5" - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/helper-validator-option" "^7.25.9" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.9" - "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.9" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.9" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.9" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.9" + version "7.29.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.29.2.tgz#5a173f22c7d8df362af1c9fe31facd320de4a86c" + integrity sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw== + dependencies: + "@babel/compat-data" "^7.29.0" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.28.5" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.28.6" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions" "^7.26.0" - "@babel/plugin-syntax-import-attributes" "^7.26.0" + "@babel/plugin-syntax-import-assertions" "^7.28.6" + "@babel/plugin-syntax-import-attributes" "^7.28.6" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.25.9" - "@babel/plugin-transform-async-generator-functions" "^7.26.8" - "@babel/plugin-transform-async-to-generator" "^7.25.9" - "@babel/plugin-transform-block-scoped-functions" "^7.26.5" - "@babel/plugin-transform-block-scoping" "^7.25.9" - "@babel/plugin-transform-class-properties" "^7.25.9" - "@babel/plugin-transform-class-static-block" "^7.26.0" - "@babel/plugin-transform-classes" "^7.25.9" - "@babel/plugin-transform-computed-properties" "^7.25.9" - "@babel/plugin-transform-destructuring" "^7.25.9" - "@babel/plugin-transform-dotall-regex" "^7.25.9" - "@babel/plugin-transform-duplicate-keys" "^7.25.9" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.9" - "@babel/plugin-transform-dynamic-import" "^7.25.9" - "@babel/plugin-transform-exponentiation-operator" "^7.26.3" - "@babel/plugin-transform-export-namespace-from" "^7.25.9" - "@babel/plugin-transform-for-of" "^7.26.9" - "@babel/plugin-transform-function-name" "^7.25.9" - "@babel/plugin-transform-json-strings" "^7.25.9" - "@babel/plugin-transform-literals" "^7.25.9" - "@babel/plugin-transform-logical-assignment-operators" "^7.25.9" - "@babel/plugin-transform-member-expression-literals" "^7.25.9" - "@babel/plugin-transform-modules-amd" "^7.25.9" - "@babel/plugin-transform-modules-commonjs" "^7.26.3" - "@babel/plugin-transform-modules-systemjs" "^7.25.9" - "@babel/plugin-transform-modules-umd" "^7.25.9" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.9" - "@babel/plugin-transform-new-target" "^7.25.9" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.26.6" - "@babel/plugin-transform-numeric-separator" "^7.25.9" - "@babel/plugin-transform-object-rest-spread" "^7.25.9" - "@babel/plugin-transform-object-super" "^7.25.9" - "@babel/plugin-transform-optional-catch-binding" "^7.25.9" - "@babel/plugin-transform-optional-chaining" "^7.25.9" - "@babel/plugin-transform-parameters" "^7.25.9" - "@babel/plugin-transform-private-methods" "^7.25.9" - "@babel/plugin-transform-private-property-in-object" "^7.25.9" - "@babel/plugin-transform-property-literals" "^7.25.9" - "@babel/plugin-transform-regenerator" "^7.25.9" - "@babel/plugin-transform-regexp-modifiers" "^7.26.0" - "@babel/plugin-transform-reserved-words" "^7.25.9" - "@babel/plugin-transform-shorthand-properties" "^7.25.9" - "@babel/plugin-transform-spread" "^7.25.9" - "@babel/plugin-transform-sticky-regex" "^7.25.9" - "@babel/plugin-transform-template-literals" "^7.26.8" - "@babel/plugin-transform-typeof-symbol" "^7.26.7" - "@babel/plugin-transform-unicode-escapes" "^7.25.9" - "@babel/plugin-transform-unicode-property-regex" "^7.25.9" - "@babel/plugin-transform-unicode-regex" "^7.25.9" - "@babel/plugin-transform-unicode-sets-regex" "^7.25.9" + "@babel/plugin-transform-arrow-functions" "^7.27.1" + "@babel/plugin-transform-async-generator-functions" "^7.29.0" + "@babel/plugin-transform-async-to-generator" "^7.28.6" + "@babel/plugin-transform-block-scoped-functions" "^7.27.1" + "@babel/plugin-transform-block-scoping" "^7.28.6" + "@babel/plugin-transform-class-properties" "^7.28.6" + "@babel/plugin-transform-class-static-block" "^7.28.6" + "@babel/plugin-transform-classes" "^7.28.6" + "@babel/plugin-transform-computed-properties" "^7.28.6" + "@babel/plugin-transform-destructuring" "^7.28.5" + "@babel/plugin-transform-dotall-regex" "^7.28.6" + "@babel/plugin-transform-duplicate-keys" "^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.29.0" + "@babel/plugin-transform-dynamic-import" "^7.27.1" + "@babel/plugin-transform-explicit-resource-management" "^7.28.6" + "@babel/plugin-transform-exponentiation-operator" "^7.28.6" + "@babel/plugin-transform-export-namespace-from" "^7.27.1" + "@babel/plugin-transform-for-of" "^7.27.1" + "@babel/plugin-transform-function-name" "^7.27.1" + "@babel/plugin-transform-json-strings" "^7.28.6" + "@babel/plugin-transform-literals" "^7.27.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.28.6" + "@babel/plugin-transform-member-expression-literals" "^7.27.1" + "@babel/plugin-transform-modules-amd" "^7.27.1" + "@babel/plugin-transform-modules-commonjs" "^7.28.6" + "@babel/plugin-transform-modules-systemjs" "^7.29.0" + "@babel/plugin-transform-modules-umd" "^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.29.0" + "@babel/plugin-transform-new-target" "^7.27.1" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.28.6" + "@babel/plugin-transform-numeric-separator" "^7.28.6" + "@babel/plugin-transform-object-rest-spread" "^7.28.6" + "@babel/plugin-transform-object-super" "^7.27.1" + "@babel/plugin-transform-optional-catch-binding" "^7.28.6" + "@babel/plugin-transform-optional-chaining" "^7.28.6" + "@babel/plugin-transform-parameters" "^7.27.7" + "@babel/plugin-transform-private-methods" "^7.28.6" + "@babel/plugin-transform-private-property-in-object" "^7.28.6" + "@babel/plugin-transform-property-literals" "^7.27.1" + "@babel/plugin-transform-regenerator" "^7.29.0" + "@babel/plugin-transform-regexp-modifiers" "^7.28.6" + "@babel/plugin-transform-reserved-words" "^7.27.1" + "@babel/plugin-transform-shorthand-properties" "^7.27.1" + "@babel/plugin-transform-spread" "^7.28.6" + "@babel/plugin-transform-sticky-regex" "^7.27.1" + "@babel/plugin-transform-template-literals" "^7.27.1" + "@babel/plugin-transform-typeof-symbol" "^7.27.1" + "@babel/plugin-transform-unicode-escapes" "^7.27.1" + "@babel/plugin-transform-unicode-property-regex" "^7.28.6" + "@babel/plugin-transform-unicode-regex" "^7.27.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.28.6" "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.11.0" - babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.40.0" + babel-plugin-polyfill-corejs2 "^0.4.15" + babel-plugin-polyfill-corejs3 "^0.14.0" + babel-plugin-polyfill-regenerator "^0.6.6" + core-js-compat "^3.48.0" semver "^6.3.1" "@babel/preset-modules@0.1.6-no-external-plugins": @@ -812,84 +820,82 @@ esutils "^2.0.2" "@babel/preset-react@^7.18.6": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.26.3.tgz#7c5e028d623b4683c1f83a0bd4713b9100560caa" - integrity sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw== + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.28.5.tgz#6fcc0400fa79698433d653092c3919bb4b0878d9" + integrity sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-validator-option" "^7.25.9" - "@babel/plugin-transform-react-display-name" "^7.25.9" - "@babel/plugin-transform-react-jsx" "^7.25.9" - "@babel/plugin-transform-react-jsx-development" "^7.25.9" - "@babel/plugin-transform-react-pure-annotations" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-transform-react-display-name" "^7.28.0" + "@babel/plugin-transform-react-jsx" "^7.27.1" + "@babel/plugin-transform-react-jsx-development" "^7.27.1" + "@babel/plugin-transform-react-pure-annotations" "^7.27.1" "@babel/preset-typescript@^7.21.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.27.0.tgz#4dcb8827225975f4290961b0b089f9c694ca50c7" - integrity sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ== - dependencies: - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/helper-validator-option" "^7.25.9" - "@babel/plugin-syntax-jsx" "^7.25.9" - "@babel/plugin-transform-modules-commonjs" "^7.26.3" - "@babel/plugin-transform-typescript" "^7.27.0" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.25.0", "@babel/runtime@^7.25.7", "@babel/runtime@^7.26.0", "@babel/runtime@^7.26.10", "@babel/runtime@^7.26.7", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.0.tgz#fbee7cf97c709518ecc1f590984481d5460d4762" - integrity sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/template@^7.25.9", "@babel/template@^7.26.9", "@babel/template@^7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.0.tgz#b253e5406cc1df1c57dcd18f11760c2dbf40c0b4" - integrity sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/parser" "^7.27.0" - "@babel/types" "^7.27.0" - -"@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10", "@babel/traverse@^7.26.5", "@babel/traverse@^7.26.8", "@babel/traverse@^7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.0.tgz#11d7e644779e166c0442f9a07274d02cd91d4a70" - integrity sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.27.0" - "@babel/parser" "^7.27.0" - "@babel/template" "^7.27.0" - "@babel/types" "^7.27.0" + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz#540359efa3028236958466342967522fd8f2a60c" + integrity sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-syntax-jsx" "^7.27.1" + "@babel/plugin-transform-modules-commonjs" "^7.27.1" + "@babel/plugin-transform-typescript" "^7.28.5" + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.27.6", "@babel/runtime@^7.28.3", "@babel/runtime@^7.28.4", "@babel/runtime@^7.28.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.29.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.2.tgz#9a6e2d05f4b6692e1801cd4fb176ad823930ed5e" + integrity sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g== + +"@babel/template@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" + integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== + dependencies: + "@babel/code-frame" "^7.28.6" + "@babel/parser" "^7.28.6" + "@babel/types" "^7.28.6" + +"@babel/traverse@^7.27.1", "@babel/traverse@^7.28.5", "@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a" + integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== + dependencies: + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.29.0" + "@babel/template" "^7.28.6" + "@babel/types" "^7.29.0" debug "^4.3.1" - globals "^11.1.0" -"@babel/types@^7.21.3", "@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.0", "@babel/types@^7.4.4": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.0.tgz#ef9acb6b06c3173f6632d993ecb6d4ae470b4559" - integrity sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg== +"@babel/types@^7.21.3", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.29.0", "@babel/types@^7.4.4": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" + integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== dependencies: - "@babel/helper-string-parser" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" -"@emnapi/core@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.3.1.tgz#9c62d185372d1bddc94682b87f376e03dfac3f16" - integrity sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog== +"@emnapi/core@^1.4.3": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.9.1.tgz#2143069c744ca2442074f8078462e51edd63c7bd" + integrity sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA== dependencies: - "@emnapi/wasi-threads" "1.0.1" + "@emnapi/wasi-threads" "1.2.0" tslib "^2.4.0" -"@emnapi/runtime@^1.2.0", "@emnapi/runtime@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.3.1.tgz#0fcaa575afc31f455fd33534c19381cfce6c6f60" - integrity sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw== +"@emnapi/runtime@^1.4.3", "@emnapi/runtime@^1.7.0": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.9.1.tgz#115ff2a0d589865be6bd8e9d701e499c473f2a8d" + integrity sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA== dependencies: tslib "^2.4.0" -"@emnapi/wasi-threads@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz#d7ae71fd2166b1c916c6cd2d0df2ef565a2e1a5b" - integrity sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw== +"@emnapi/wasi-threads@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz#a19d9772cc3d195370bf6e2a805eec40aa75e18e" + integrity sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg== dependencies: tslib "^2.4.0" @@ -910,7 +916,7 @@ source-map "^0.5.7" stylis "4.2.0" -"@emotion/cache@*", "@emotion/cache@11.14.0", "@emotion/cache@^11.13.5", "@emotion/cache@^11.14.0": +"@emotion/cache@11.14.0", "@emotion/cache@^11.14.0": version "11.14.0" resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.14.0.tgz#ee44b26986eeb93c8be82bb92f1f7a9b21b2ed76" integrity sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA== @@ -927,9 +933,9 @@ integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g== "@emotion/is-prop-valid@^1.3.0": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz#8d5cf1132f836d7adbe42cf0b49df7816fc88240" - integrity sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw== + version "1.4.0" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.4.0.tgz#e9ad47adff0b5c94c72db3669ce46de33edf28c0" + integrity sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw== dependencies: "@emotion/memoize" "^0.9.0" @@ -952,7 +958,7 @@ "@emotion/weak-memoize" "^0.4.0" hoist-non-react-statics "^3.3.1" -"@emotion/serialize@*", "@emotion/serialize@^1.3.3": +"@emotion/serialize@^1.3.3": version "1.3.3" resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.3.tgz#d291531005f17d704d0463a032fe679f376509e8" integrity sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA== @@ -978,10 +984,10 @@ resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.4.0.tgz#c9299c34d248bc26e82563735f78953d2efca83c" integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg== -"@emotion/styled@11.14.0": - version "11.14.0" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.14.0.tgz#f47ca7219b1a295186d7661583376fcea95f0ff3" - integrity sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA== +"@emotion/styled@11.14.1": + version "11.14.1" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.14.1.tgz#8c34bed2948e83e1980370305614c20955aacd1c" + integrity sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw== dependencies: "@babel/runtime" "^7.18.3" "@emotion/babel-plugin" "^11.13.5" @@ -1000,7 +1006,7 @@ resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz#8a8cb77b590e09affb960f4ff1e9a89e532738bf" integrity sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg== -"@emotion/utils@*", "@emotion/utils@^1.2.1", "@emotion/utils@^1.4.2": +"@emotion/utils@^1.2.1", "@emotion/utils@^1.4.2": version "1.4.2" resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.2.tgz#6df6c45881fcb1c412d6688a311a98b7f59c1b52" integrity sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA== @@ -1010,98 +1016,93 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6" integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.5.1" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz#b0fc7e06d0c94f801537fd4237edc2706d3b8e4c" - integrity sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w== +"@eslint-community/eslint-utils@^4.8.0", "@eslint-community/eslint-utils@^4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz#4e90af67bc51ddee6cdef5284edf572ec376b595" + integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ== dependencies: eslint-visitor-keys "^3.4.3" -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": - version "4.12.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" - integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== +"@eslint-community/regexpp@^4.12.1", "@eslint-community/regexpp@^4.12.2": + version "4.12.2" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" + integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== -"@eslint/config-array@^0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.2.tgz#3060b809e111abfc97adb0bb1172778b90cb46aa" - integrity sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w== +"@eslint/config-array@^0.21.1": + version "0.21.2" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.2.tgz#f29e22057ad5316cf23836cee9a34c81fffcb7e6" + integrity sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw== dependencies: - "@eslint/object-schema" "^2.1.6" + "@eslint/object-schema" "^2.1.7" debug "^4.3.1" - minimatch "^3.1.2" + minimatch "^3.1.5" -"@eslint/config-helpers@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.1.0.tgz#62f1b7821e9d9ced1b3f512c7ea731825765d1cc" - integrity sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA== +"@eslint/config-helpers@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.4.2.tgz#1bd006ceeb7e2e55b2b773ab318d300e1a66aeda" + integrity sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw== + dependencies: + "@eslint/core" "^0.17.0" -"@eslint/core@^0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.12.0.tgz#5f960c3d57728be9f6c65bd84aa6aa613078798e" - integrity sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg== +"@eslint/core@^0.17.0": + version "0.17.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.17.0.tgz#77225820413d9617509da9342190a2019e78761c" + integrity sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ== dependencies: "@types/json-schema" "^7.0.15" -"@eslint/eslintrc@^3.3.0": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964" - integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== +"@eslint/eslintrc@^3.3.1": + version "3.3.5" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.5.tgz#c131793cfc1a7b96f24a83e0a8bbd4b881558c60" + integrity sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg== dependencies: - ajv "^6.12.4" + ajv "^6.14.0" debug "^4.3.2" espree "^10.0.1" globals "^14.0.0" ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" + js-yaml "^4.1.1" + minimatch "^3.1.5" strip-json-comments "^3.1.1" -"@eslint/js@9.22.0": - version "9.22.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.22.0.tgz#4ff53649ded7cbce90b444b494c234137fa1aa3d" - integrity sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ== +"@eslint/js@9.39.2": + version "9.39.2" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.39.2.tgz#2d4b8ec4c3ea13c1b3748e0c97ecd766bdd80599" + integrity sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA== -"@eslint/object-schema@^2.1.6": - version "2.1.6" - resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" - integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== +"@eslint/object-schema@^2.1.7": + version "2.1.7" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.7.tgz#6e2126a1347e86a4dedf8706ec67ff8e107ebbad" + integrity sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA== -"@eslint/plugin-kit@^0.2.7": - version "0.2.7" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz#9901d52c136fb8f375906a73dcc382646c3b6a27" - integrity sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g== +"@eslint/plugin-kit@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz#9779e3fd9b7ee33571a57435cf4335a1794a6cb2" + integrity sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA== dependencies: - "@eslint/core" "^0.12.0" + "@eslint/core" "^0.17.0" levn "^0.4.1" -"@floating-ui/core@^1.6.0": - version "1.6.9" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.9.tgz#64d1da251433019dafa091de9b2886ff35ec14e6" - integrity sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw== +"@floating-ui/core@^1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.5.tgz#d4af157a03330af5a60e69da7a4692507ada0622" + integrity sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ== dependencies: - "@floating-ui/utils" "^0.2.9" + "@floating-ui/utils" "^0.2.11" "@floating-ui/dom@^1.0.0": - version "1.6.13" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.13.tgz#a8a938532aea27a95121ec16e667a7cbe8c59e34" - integrity sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w== + version "1.7.6" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.6.tgz#f915bba5abbb177e1f227cacee1b4d0634b187bf" + integrity sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ== dependencies: - "@floating-ui/core" "^1.6.0" - "@floating-ui/utils" "^0.2.9" + "@floating-ui/core" "^1.7.5" + "@floating-ui/utils" "^0.2.11" -"@floating-ui/react-dom@^2.1.1": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz#a1349bbf6a0e5cb5ded55d023766f20a4d439a31" - integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A== - dependencies: - "@floating-ui/dom" "^1.0.0" - -"@floating-ui/utils@^0.2.9": - version "0.2.9" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.9.tgz#50dea3616bc8191fb8e112283b49eaff03e78429" - integrity sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg== +"@floating-ui/utils@^0.2.11": + version "0.2.11" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.11.tgz#a269e055e40e2f45873bae9d1a2fdccbd314ea3f" + integrity sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg== "@heroicons/react@2.2.0": version "2.2.0" @@ -1114,148 +1115,184 @@ integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== "@humanfs/node@^0.16.6": - version "0.16.6" - resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" - integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== + version "0.16.7" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.7.tgz#822cb7b3a12c5a240a24f621b5a2413e27a45f26" + integrity sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ== dependencies: "@humanfs/core" "^0.19.1" - "@humanwhocodes/retry" "^0.3.0" + "@humanwhocodes/retry" "^0.4.0" "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/retry@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" - integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== +"@humanwhocodes/retry@^0.4.0", "@humanwhocodes/retry@^0.4.2": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" + integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== -"@humanwhocodes/retry@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.2.tgz#1860473de7dfa1546767448f333db80cb0ff2161" - integrity sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ== +"@img/colour@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@img/colour/-/colour-1.1.0.tgz#b0c2c2fa661adf75effd6b4964497cd80010bb9d" + integrity sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ== -"@img/sharp-darwin-arm64@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz#ef5b5a07862805f1e8145a377c8ba6e98813ca08" - integrity sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ== +"@img/sharp-darwin-arm64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz#6e0732dcade126b6670af7aa17060b926835ea86" + integrity sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w== optionalDependencies: - "@img/sharp-libvips-darwin-arm64" "1.0.4" + "@img/sharp-libvips-darwin-arm64" "1.2.4" -"@img/sharp-darwin-x64@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz#e03d3451cd9e664faa72948cc70a403ea4063d61" - integrity sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q== +"@img/sharp-darwin-x64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz#19bc1dd6eba6d5a96283498b9c9f401180ee9c7b" + integrity sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw== optionalDependencies: - "@img/sharp-libvips-darwin-x64" "1.0.4" + "@img/sharp-libvips-darwin-x64" "1.2.4" -"@img/sharp-libvips-darwin-arm64@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz#447c5026700c01a993c7804eb8af5f6e9868c07f" - integrity sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg== +"@img/sharp-libvips-darwin-arm64@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz#2894c0cb87d42276c3889942e8e2db517a492c43" + integrity sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g== -"@img/sharp-libvips-darwin-x64@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz#e0456f8f7c623f9dbfbdc77383caa72281d86062" - integrity sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ== +"@img/sharp-libvips-darwin-x64@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz#e63681f4539a94af9cd17246ed8881734386f8cc" + integrity sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg== -"@img/sharp-libvips-linux-arm64@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz#979b1c66c9a91f7ff2893556ef267f90ebe51704" - integrity sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA== +"@img/sharp-libvips-linux-arm64@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz#b1b288b36864b3bce545ad91fa6dadcf1a4ad318" + integrity sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw== -"@img/sharp-libvips-linux-arm@1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz#99f922d4e15216ec205dcb6891b721bfd2884197" - integrity sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g== +"@img/sharp-libvips-linux-arm@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz#b9260dd1ebe6f9e3bdbcbdcac9d2ac125f35852d" + integrity sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A== -"@img/sharp-libvips-linux-s390x@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz#f8a5eb1f374a082f72b3f45e2fb25b8118a8a5ce" - integrity sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA== +"@img/sharp-libvips-linux-ppc64@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz#4b83ecf2a829057222b38848c7b022e7b4d07aa7" + integrity sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA== -"@img/sharp-libvips-linux-x64@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz#d4c4619cdd157774906e15770ee119931c7ef5e0" - integrity sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw== +"@img/sharp-libvips-linux-riscv64@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz#880b4678009e5a2080af192332b00b0aaf8a48de" + integrity sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA== -"@img/sharp-libvips-linuxmusl-arm64@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz#166778da0f48dd2bded1fa3033cee6b588f0d5d5" - integrity sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA== +"@img/sharp-libvips-linux-s390x@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz#74f343c8e10fad821b38f75ced30488939dc59ec" + integrity sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ== -"@img/sharp-libvips-linuxmusl-x64@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz#93794e4d7720b077fcad3e02982f2f1c246751ff" - integrity sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw== +"@img/sharp-libvips-linux-x64@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz#df4183e8bd8410f7d61b66859a35edeab0a531ce" + integrity sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw== -"@img/sharp-linux-arm64@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz#edb0697e7a8279c9fc829a60fc35644c4839bb22" - integrity sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA== +"@img/sharp-libvips-linuxmusl-arm64@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz#c8d6b48211df67137541007ee8d1b7b1f8ca8e06" + integrity sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw== + +"@img/sharp-libvips-linuxmusl-x64@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz#be11c75bee5b080cbee31a153a8779448f919f75" + integrity sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg== + +"@img/sharp-linux-arm64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz#7aa7764ef9c001f15e610546d42fce56911790cc" + integrity sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg== optionalDependencies: - "@img/sharp-libvips-linux-arm64" "1.0.4" + "@img/sharp-libvips-linux-arm64" "1.2.4" -"@img/sharp-linux-arm@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz#422c1a352e7b5832842577dc51602bcd5b6f5eff" - integrity sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ== +"@img/sharp-linux-arm@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz#5fb0c3695dd12522d39c3ff7a6bc816461780a0d" + integrity sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw== optionalDependencies: - "@img/sharp-libvips-linux-arm" "1.0.5" + "@img/sharp-libvips-linux-arm" "1.2.4" -"@img/sharp-linux-s390x@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz#f5c077926b48e97e4a04d004dfaf175972059667" - integrity sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q== +"@img/sharp-linux-ppc64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz#9c213a81520a20caf66978f3d4c07456ff2e0813" + integrity sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA== optionalDependencies: - "@img/sharp-libvips-linux-s390x" "1.0.4" + "@img/sharp-libvips-linux-ppc64" "1.2.4" -"@img/sharp-linux-x64@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz#d806e0afd71ae6775cc87f0da8f2d03a7c2209cb" - integrity sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA== +"@img/sharp-linux-riscv64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz#cdd28182774eadbe04f62675a16aabbccb833f60" + integrity sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw== optionalDependencies: - "@img/sharp-libvips-linux-x64" "1.0.4" + "@img/sharp-libvips-linux-riscv64" "1.2.4" -"@img/sharp-linuxmusl-arm64@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz#252975b915894fb315af5deea174651e208d3d6b" - integrity sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g== +"@img/sharp-linux-s390x@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz#93eac601b9f329bb27917e0e19098c722d630df7" + integrity sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg== optionalDependencies: - "@img/sharp-libvips-linuxmusl-arm64" "1.0.4" + "@img/sharp-libvips-linux-s390x" "1.2.4" -"@img/sharp-linuxmusl-x64@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz#3f4609ac5d8ef8ec7dadee80b560961a60fd4f48" - integrity sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw== +"@img/sharp-linux-x64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz#55abc7cd754ffca5002b6c2b719abdfc846819a8" + integrity sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ== optionalDependencies: - "@img/sharp-libvips-linuxmusl-x64" "1.0.4" + "@img/sharp-libvips-linux-x64" "1.2.4" -"@img/sharp-wasm32@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz#6f44f3283069d935bb5ca5813153572f3e6f61a1" - integrity sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg== +"@img/sharp-linuxmusl-arm64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz#d6515ee971bb62f73001a4829b9d865a11b77086" + integrity sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg== + optionalDependencies: + "@img/sharp-libvips-linuxmusl-arm64" "1.2.4" + +"@img/sharp-linuxmusl-x64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz#d97978aec7c5212f999714f2f5b736457e12ee9f" + integrity sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q== + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64" "1.2.4" + +"@img/sharp-wasm32@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz#2f15803aa626f8c59dd7c9d0bbc766f1ab52cfa0" + integrity sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw== dependencies: - "@emnapi/runtime" "^1.2.0" + "@emnapi/runtime" "^1.7.0" + +"@img/sharp-win32-arm64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz#3706e9e3ac35fddfc1c87f94e849f1b75307ce0a" + integrity sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g== -"@img/sharp-win32-ia32@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz#1a0c839a40c5351e9885628c85f2e5dfd02b52a9" - integrity sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ== +"@img/sharp-win32-ia32@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz#0b71166599b049e032f085fb9263e02f4e4788de" + integrity sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg== -"@img/sharp-win32-x64@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz#56f00962ff0c4e0eb93d34a047d29fa995e3e342" - integrity sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg== +"@img/sharp-win32-x64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz#a81ffb00e69267cd0a1d626eaedb8a8430b2b2f8" + integrity sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw== -"@jridgewell/gen-mapping@^0.3.5": - version "0.3.8" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" - integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== +"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/remapping@^2.3.5": + version "2.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/remapping/-/remapping-2.3.5.tgz#375c476d1972947851ba1e15ae8f123047445aa1" + integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" "@jridgewell/resolve-uri@^3.1.0": @@ -1263,28 +1300,23 @@ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" - integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== -"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.28": + version "0.3.31" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" "@monaco-editor/loader@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.5.0.tgz#dcdbc7fe7e905690fb449bed1c251769f325c55d" - integrity sha512-hKoGSM+7aAc7eRTRjpqAZucPmoNOC4UUbknb/VNoTkEIkCPhqV8LfbsgM1webRM7S/z21eHEx9Fkwx8Z/C/+Xw== + version "1.7.0" + resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.7.0.tgz#967aaa4601b19e913627688dfe8159d57549e793" + integrity sha512-gIwR1HrJrrx+vfyOhYmCZ0/JcWqG5kbfG7+d3f/C1LXk2EvzAbHSg3MQ5lO2sMlo9izoAZ04shohfKLVT6crVA== dependencies: state-local "^1.0.6" @@ -1295,221 +1327,294 @@ dependencies: "@monaco-editor/loader" "^1.5.0" -"@mui/base@5.0.0-beta.69": - version "5.0.0-beta.69" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.69.tgz#fc3635818c6a9fb954b1ee00870109e7e266149d" - integrity sha512-r2YyGUXpZxj8rLAlbjp1x2BnMERTZ/dMqd9cClKj2OJ7ALAuiv/9X5E9eHfRc9o/dGRuLSMq/WTjREktJVjxVA== - dependencies: - "@babel/runtime" "^7.26.0" - "@floating-ui/react-dom" "^2.1.1" - "@mui/types" "^7.2.21" - "@mui/utils" "^6.4.1" - "@popperjs/core" "^2.11.8" - clsx "^2.1.1" - prop-types "^15.8.1" - -"@mui/core-downloads-tracker@^6.4.7": - version "6.4.9" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-6.4.9.tgz#6f9f6a220b22ee24a70bbe73e5ec6cb7222a0713" - integrity sha512-3UvsvOjqZJcokHKSzA1lskj2XMM/G5GBgge6ykwmAij2pGGxydGxAXirQlLaeoMwTKDS6BcrLqPZyPVwzri20A== +"@mui/core-downloads-tracker@^7.3.7": + version "7.3.9" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.9.tgz#d944e385f8f7f5e680e5ba479b39ff8602bd4939" + integrity sha512-MOkOCTfbMJwLshlBCKJ59V2F/uaLYfmKnN76kksj6jlGUVdI25A9Hzs08m+zjBRdLv+sK7Rqdsefe8X7h/6PCw== -"@mui/icons-material@6.4.7": - version "6.4.7" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-6.4.7.tgz#078406b61c7d17230b8633643dbb458f89e02059" - integrity sha512-Rk8cs9ufQoLBw582Rdqq7fnSXXZTqhYRbpe1Y5SAz9lJKZP3CIdrj0PfG8HJLGw1hrsHFN/rkkm70IDzhJsG1g== +"@mui/icons-material@7.3.7": + version "7.3.7" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-7.3.7.tgz#01a6019c552e27c7f8a3451bcb47171ede8b34ac" + integrity sha512-3Q+ulAqG+A1+R4ebgoIs7AccaJhIGy+Xi/9OnvX376jQ6wcy+rz4geDGrxQxCGzdjOQr4Z3NgyFSZCz4T999lA== dependencies: - "@babel/runtime" "^7.26.0" + "@babel/runtime" "^7.28.4" -"@mui/lab@6.0.0-beta.30": - version "6.0.0-beta.30" - resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-6.0.0-beta.30.tgz#650973b4d04965f18b3d3390e2dd90e772a4f461" - integrity sha512-ayDYkzTlkm5cnDGa10bvuFygX+2b9Hm1T4QZYMqV8+nSx3frKE0TLAbE7/qQ4vInOO5E4aOkHVBwZjyO+UbMTA== +"@mui/lab@7.0.0-beta.17": + version "7.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-7.0.0-beta.17.tgz#0629b4388d16520ed95712bc2995679c2af849be" + integrity sha512-H8tSINm6Xgbi7o49MplAwks4tAEE6SpFNd9l7n4NURl0GSpOv0CZvgXKSJt4+6TmquDhE7pomHpHWJiVh/2aCg== dependencies: - "@babel/runtime" "^7.26.0" - "@mui/base" "5.0.0-beta.69" - "@mui/system" "^6.4.7" - "@mui/types" "^7.2.21" - "@mui/utils" "^6.4.6" + "@babel/runtime" "^7.28.3" + "@mui/system" "^7.3.2" + "@mui/types" "^7.4.6" + "@mui/utils" "^7.3.2" clsx "^2.1.1" prop-types "^15.8.1" -"@mui/material@6.4.7": - version "6.4.7" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-6.4.7.tgz#887f1efe4a1c244ef7aeebb7d95a6f061f50b89b" - integrity sha512-K65StXUeGAtFJ4ikvHKtmDCO5Ab7g0FZUu2J5VpoKD+O6Y3CjLYzRi+TMlI3kaL4CL158+FccMoOd/eaddmeRQ== +"@mui/material@7.3.7": + version "7.3.7" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-7.3.7.tgz#50fc9b9f8645a4d26a48d7c5f7fa0c9876a8c679" + integrity sha512-6bdIxqzeOtBAj2wAsfhWCYyMKPLkRO9u/2o5yexcL0C3APqyy91iGSWgT3H7hg+zR2XgE61+WAu12wXPON8b6A== dependencies: - "@babel/runtime" "^7.26.0" - "@mui/core-downloads-tracker" "^6.4.7" - "@mui/system" "^6.4.7" - "@mui/types" "^7.2.21" - "@mui/utils" "^6.4.6" + "@babel/runtime" "^7.28.4" + "@mui/core-downloads-tracker" "^7.3.7" + "@mui/system" "^7.3.7" + "@mui/types" "^7.4.10" + "@mui/utils" "^7.3.7" "@popperjs/core" "^2.11.8" "@types/react-transition-group" "^4.4.12" clsx "^2.1.1" - csstype "^3.1.3" + csstype "^3.2.3" prop-types "^15.8.1" - react-is "^19.0.0" + react-is "^19.2.3" react-transition-group "^4.4.5" -"@mui/private-theming@^6.4.6", "@mui/private-theming@^6.4.8": - version "6.4.8" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-6.4.8.tgz#210d1a1ab4501f6cf31f1abdf1b0a37fbdfc2991" - integrity sha512-sWwQoNSn6elsPTAtSqCf+w5aaGoh7AASURNmpy+QTTD/zwJ0Jgwt0ZaaP6mXq2IcgHxYnYloM/+vJgHPMkRKTQ== +"@mui/private-theming@^7.3.2", "@mui/private-theming@^7.3.9": + version "7.3.9" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-7.3.9.tgz#c785dc429b7ed62cf3952140be703cbe95704a13" + integrity sha512-ErIyRQvsiQEq7Yvcvfw9UDHngaqjMy9P3JDPnRAaKG5qhpl2C4tX/W1S4zJvpu+feihmZJStjIyvnv6KDbIrlw== dependencies: - "@babel/runtime" "^7.26.0" - "@mui/utils" "^6.4.8" + "@babel/runtime" "^7.28.6" + "@mui/utils" "^7.3.9" prop-types "^15.8.1" -"@mui/styled-engine@^6.4.6", "@mui/styled-engine@^6.4.9": - version "6.4.9" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-6.4.9.tgz#d6d6b5f180466001284f897ff7d7010a8e329497" - integrity sha512-qZRWO0cT407NI4ZRjZcH+1SOu8f3JzLHqdMlg52GyEufM9pkSZFnf7xjpwnlvkixcGjco6wLlMD0VB43KRcBuA== +"@mui/styled-engine@^7.3.2", "@mui/styled-engine@^7.3.9": + version "7.3.9" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-7.3.9.tgz#e425ca7b5cb559bde01b8fa4a7a842e9b5916f53" + integrity sha512-JqujWt5bX4okjUPGpVof/7pvgClqh7HvIbsIBIOOlCh2u3wG/Bwp4+E1bc1dXSwkrkp9WUAoNdI5HEC+5HKvMw== dependencies: - "@babel/runtime" "^7.26.0" - "@emotion/cache" "^11.13.5" + "@babel/runtime" "^7.28.6" + "@emotion/cache" "^11.14.0" "@emotion/serialize" "^1.3.3" "@emotion/sheet" "^1.4.0" - csstype "^3.1.3" + csstype "^3.2.3" prop-types "^15.8.1" -"@mui/system@6.4.7": - version "6.4.7" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-6.4.7.tgz#a4a8e541a2f1efef1c85a338723aa2f2d0a31e8e" - integrity sha512-7wwc4++Ak6tGIooEVA9AY7FhH2p9fvBMORT4vNLMAysH3Yus/9B9RYMbrn3ANgsOyvT3Z7nE+SP8/+3FimQmcg== +"@mui/system@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-7.3.2.tgz#e838097fc6cb0a2e4c1822478950db89affb116a" + integrity sha512-9d8JEvZW+H6cVkaZ+FK56R53vkJe3HsTpcjMUtH8v1xK6Y1TjzHdZ7Jck02mGXJsE6MQGWVs3ogRHTQmS9Q/rA== dependencies: - "@babel/runtime" "^7.26.0" - "@mui/private-theming" "^6.4.6" - "@mui/styled-engine" "^6.4.6" - "@mui/types" "^7.2.21" - "@mui/utils" "^6.4.6" + "@babel/runtime" "^7.28.3" + "@mui/private-theming" "^7.3.2" + "@mui/styled-engine" "^7.3.2" + "@mui/types" "^7.4.6" + "@mui/utils" "^7.3.2" clsx "^2.1.1" csstype "^3.1.3" prop-types "^15.8.1" -"@mui/system@^6.4.7": - version "6.4.9" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-6.4.9.tgz#19575feb3fc7b465b082c65c9c737e1a40ed06ef" - integrity sha512-JOj7efXGtZn+NIzX8KDyMpO1QKc0DhilPBsxvci1xAvI1e5AtAtfzrEuV5ZvN+lz2BDuzngCWlllnqQ/cg40RQ== +"@mui/system@^7.3.2", "@mui/system@^7.3.7": + version "7.3.9" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-7.3.9.tgz#d8181dd9ad8c5e9afdf50eb7009062c506976ab1" + integrity sha512-aL1q9am8XpRrSabv9qWf5RHhJICJql34wnrc1nz0MuOglPRYF/liN+c8VqZdTvUn9qg+ZjRVbKf4sJVFfIDtmg== dependencies: - "@babel/runtime" "^7.26.0" - "@mui/private-theming" "^6.4.8" - "@mui/styled-engine" "^6.4.9" - "@mui/types" "~7.2.24" - "@mui/utils" "^6.4.8" + "@babel/runtime" "^7.28.6" + "@mui/private-theming" "^7.3.9" + "@mui/styled-engine" "^7.3.9" + "@mui/types" "^7.4.12" + "@mui/utils" "^7.3.9" clsx "^2.1.1" - csstype "^3.1.3" + csstype "^3.2.3" prop-types "^15.8.1" -"@mui/types@^7.2.21": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.4.0.tgz#2304bab870721de1842c9ee0ff13fe8be6b8d0ed" - integrity sha512-TxJ4ezEeedWHBjOmLtxI203a9DII9l4k83RXmz1PYSAmnyEcK2PglTNmJGxswC/wM5cdl9ap2h8lnXvt2swAGQ== +"@mui/types@^7.4.10", "@mui/types@^7.4.12", "@mui/types@^7.4.6": + version "7.4.12" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.4.12.tgz#e4eba37a7506419ea5c5e0604322ba82b271bf46" + integrity sha512-iKNAF2u9PzSIj40CjvKJWxFXJo122jXVdrmdh0hMYd+FR+NuJMkr/L88XwWLCRiJ5P1j+uyac25+Kp6YC4hu6w== dependencies: - "@babel/runtime" "^7.26.10" + "@babel/runtime" "^7.28.6" -"@mui/types@~7.2.24": - version "7.2.24" - resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.24.tgz#5eff63129d9c29d80bbf2d2e561bd0690314dec2" - integrity sha512-3c8tRt/CbWZ+pEg7QpSwbdxOk36EfmhbKf6AGZsD1EcLDLTSZoxxJ86FVtcjxvjuhdyBiWKSTGZFaXCnidO2kw== - -"@mui/utils@^5.16.6 || ^6.0.0", "@mui/utils@^6.4.1", "@mui/utils@^6.4.6", "@mui/utils@^6.4.8": - version "6.4.8" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-6.4.8.tgz#f80ee0c0ac47f1cd47c2031a5fb87243322b6bf3" - integrity sha512-C86gfiZ5BfZ51KqzqoHi1WuuM2QdSKoFhbkZeAfQRB+jCc4YNhhj11UXFVMMsqBgZ+Zy8IHNJW3M9Wj/LOwRXQ== +"@mui/utils@^7.3.2", "@mui/utils@^7.3.5", "@mui/utils@^7.3.7", "@mui/utils@^7.3.9": + version "7.3.9" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-7.3.9.tgz#8af5093fc93c2e582fa3d047f561c7b690509bc2" + integrity sha512-U6SdZaGbfb65fqTsH3V5oJdFj9uYwyLE2WVuNvmbggTSDBb8QHrFsqY8BN3taK9t3yJ8/BPHD/kNvLNyjwM7Yw== dependencies: - "@babel/runtime" "^7.26.0" - "@mui/types" "~7.2.24" - "@types/prop-types" "^15.7.14" + "@babel/runtime" "^7.28.6" + "@mui/types" "^7.4.12" + "@types/prop-types" "^15.7.15" clsx "^2.1.1" prop-types "^15.8.1" - react-is "^19.0.0" + react-is "^19.2.3" -"@mui/x-date-pickers@7.27.3": - version "7.27.3" - resolved "https://registry.yarnpkg.com/@mui/x-date-pickers/-/x-date-pickers-7.27.3.tgz#61171daf74802c17f9d861068eab422231389502" - integrity sha512-igfKTPC4ZVCmS5j/NXcXBtj/hHseQHzRpCpIB1PMnJGhMdRYXnz8qZz5XhlNBKlzJVXkGu6Uil+obZpCLNj1xg== +"@mui/x-date-pickers@^8.27.2": + version "8.27.2" + resolved "https://registry.yarnpkg.com/@mui/x-date-pickers/-/x-date-pickers-8.27.2.tgz#5ada1fb3adffff3e0fd0fee7702fba7f770dca68" + integrity sha512-06LFkHFRXJ2O9DMXtWAA3kY0jpbL7XH8iqa8L5cBlN+8bRx/UVLKlZYlhGv06C88jF9kuZWY1bUgrv/EoY/2Ww== dependencies: - "@babel/runtime" "^7.25.7" - "@mui/utils" "^5.16.6 || ^6.0.0" - "@mui/x-internals" "7.26.0" - "@types/react-transition-group" "^4.4.11" + "@babel/runtime" "^7.28.4" + "@mui/utils" "^7.3.5" + "@mui/x-internals" "8.26.0" + "@types/react-transition-group" "^4.4.12" clsx "^2.1.1" prop-types "^15.8.1" react-transition-group "^4.4.5" -"@mui/x-internals@7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@mui/x-internals/-/x-internals-7.26.0.tgz#e8c3060582c102127ab55b0a93e881930dac107b" - integrity sha512-VxTCYQcZ02d3190pdvys2TDg9pgbvewAVakEopiOgReKAUhLdRlgGJHcOA/eAuGLyK1YIo26A6Ow6ZKlSRLwMg== +"@mui/x-internals@8.26.0": + version "8.26.0" + resolved "https://registry.yarnpkg.com/@mui/x-internals/-/x-internals-8.26.0.tgz#49caacac954c29a1b10425c67418310ceb9c8cfa" + integrity sha512-B9OZau5IQUvIxwpJZhoFJKqRpmWf5r0yMmSXjQuqb5WuqM755EuzWJOenY48denGoENzMLT8hQpA0hRTeU2IPA== dependencies: - "@babel/runtime" "^7.25.7" - "@mui/utils" "^5.16.6 || ^6.0.0" + "@babel/runtime" "^7.28.4" + "@mui/utils" "^7.3.5" + reselect "^5.1.1" + use-sync-external-store "^1.6.0" "@musement/iso-duration@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@musement/iso-duration/-/iso-duration-1.0.0.tgz#b45ba8acb0b998488744e41da15a391e5f550c48" integrity sha512-gTJOmIXfsh5AyOdsUwkYcAIdWd9fCa/e0dV7mfV/B+oDOoJne5ciNMazDdQacylbWTQpF5aMdp2xrHVEwiryfg== -"@napi-rs/wasm-runtime@^0.2.7": - version "0.2.7" - resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.7.tgz#288f03812a408bc53c2c3686c65f38fe90f295eb" - integrity sha512-5yximcFK5FNompXfJFoWanu5l8v1hNGqNHh9du1xETp9HWk/B/PzvchX55WYOPaIeNglG8++68AAiauBAtbnzw== +"@napi-rs/wasm-runtime@^0.2.11": + version "0.2.12" + resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz#3e78a8b96e6c33a6c517e1894efbd5385a7cb6f2" + integrity sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ== dependencies: - "@emnapi/core" "^1.3.1" - "@emnapi/runtime" "^1.3.1" - "@tybys/wasm-util" "^0.9.0" + "@emnapi/core" "^1.4.3" + "@emnapi/runtime" "^1.4.3" + "@tybys/wasm-util" "^0.10.0" -"@next/env@15.2.4": - version "15.2.4" - resolved "https://registry.yarnpkg.com/@next/env/-/env-15.2.4.tgz#060f8d8ddb02be5c825eab4ccd9ab619001efffb" - integrity sha512-+SFtMgoiYP3WoSswuNmxJOCwi06TdWE733D+WPjpXIe4LXGULwEaofiiAy6kbS0+XjM5xF5n3lKuBwN2SnqD9g== +"@next/env@16.2.0": + version "16.2.0" + resolved "https://registry.yarnpkg.com/@next/env/-/env-16.2.0.tgz#0efff26856a93f3ee8306117051d4e704849b724" + integrity sha512-OZIbODWWAi0epQRCRjNe1VO45LOFBzgiyqmTLzIqWq6u1wrxKnAyz1HH6tgY/Mc81YzIjRPoYsPAEr4QV4l9TA== -"@next/eslint-plugin-next@15.2.2": - version "15.2.2" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-15.2.2.tgz#55fa96486f9e163ca689d441d31f4431ef423aef" - integrity sha512-1+BzokFuFQIfLaRxUKf2u5In4xhPV7tUgKcK53ywvFl6+LXHWHpFkcV7VNeKlyQKUotwiq4fy/aDNF9EiUp4RQ== +"@next/eslint-plugin-next@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-16.1.6.tgz#73b56b01c9db506998bd1e2d303c2605b0a1b7b0" + integrity sha512-/Qq3PTagA6+nYVfryAtQ7/9FEr/6YVyvOtl6rZnGsbReGLf0jZU6gkpr1FuChAQpvV46a78p4cmHOVP8mbfSMQ== dependencies: fast-glob "3.3.1" -"@next/swc-darwin-arm64@15.2.4": - version "15.2.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.4.tgz#3a54f67aa2e0096a9147bd24dff1492e151819ae" - integrity sha512-1AnMfs655ipJEDC/FHkSr0r3lXBgpqKo4K1kiwfUf3iE68rDFXZ1TtHdMvf7D0hMItgDZ7Vuq3JgNMbt/+3bYw== - -"@next/swc-darwin-x64@15.2.4": - version "15.2.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.4.tgz#9b540f24afde1b7878623fdba9695344d26b7d67" - integrity sha512-3qK2zb5EwCwxnO2HeO+TRqCubeI/NgCe+kL5dTJlPldV/uwCnUgC7VbEzgmxbfrkbjehL4H9BPztWOEtsoMwew== - -"@next/swc-linux-arm64-gnu@15.2.4": - version "15.2.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.4.tgz#417a234c9f4dc5495094a8979859ac528c0f1f58" - integrity sha512-HFN6GKUcrTWvem8AZN7tT95zPb0GUGv9v0d0iyuTb303vbXkkbHDp/DxufB04jNVD+IN9yHy7y/6Mqq0h0YVaQ== - -"@next/swc-linux-arm64-musl@15.2.4": - version "15.2.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.4.tgz#9bca76375508a175956f2d51f8547d0d6f9ffa64" - integrity sha512-Oioa0SORWLwi35/kVB8aCk5Uq+5/ZIumMK1kJV+jSdazFm2NzPDztsefzdmzzpx5oGCJ6FkUC7vkaUseNTStNA== - -"@next/swc-linux-x64-gnu@15.2.4": - version "15.2.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.4.tgz#c3d5041d53a5b228bf521ed49649e0f2a7aff947" - integrity sha512-yb5WTRaHdkgOqFOZiu6rHV1fAEK0flVpaIN2HB6kxHVSy/dIajWbThS7qON3W9/SNOH2JWkVCyulgGYekMePuw== - -"@next/swc-linux-x64-musl@15.2.4": - version "15.2.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.4.tgz#b2a51a108b1c412c69a504556cde0517631768c7" - integrity sha512-Dcdv/ix6srhkM25fgXiyOieFUkz+fOYkHlydWCtB0xMST6X9XYI3yPDKBZt1xuhOytONsIFJFB08xXYsxUwJLw== - -"@next/swc-win32-arm64-msvc@15.2.4": - version "15.2.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.4.tgz#7d687b42512abd36f44c2c787d58a1590f174b69" - integrity sha512-dW0i7eukvDxtIhCYkMrZNQfNicPDExt2jPb9AZPpL7cfyUo7QSNl1DjsHjmmKp6qNAqUESyT8YFl/Aw91cNJJg== - -"@next/swc-win32-x64-msvc@15.2.4": - version "15.2.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.4.tgz#779a0ea272fa4f509387f3b320e2d70803943a95" - integrity sha512-SbnWkJmkS7Xl3kre8SdMF6F/XDh1DTFEhp0jRTj/uB8iPKoU2bb2NDfcu+iifv1+mxQEd1g2vvSxcZbXSKyWiQ== +"@next/swc-darwin-arm64@16.2.0": + version "16.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.0.tgz#e9d1de855fa0cf9a261bfbcee43bda3904ce0556" + integrity sha512-/JZsqKzKt01IFoiLLAzlNqys7qk2F3JkcUhj50zuRhKDQkZNOz9E5N6wAQWprXdsvjRP4lTFj+/+36NSv5AwhQ== + +"@next/swc-darwin-x64@16.2.0": + version "16.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.0.tgz#e19aba36e6914c162d880f8eb6715715bae4fb0b" + integrity sha512-/hV8erWq4SNlVgglUiW5UmQ5Hwy5EW/AbbXlJCn6zkfKxTy/E/U3V8U1Ocm2YCTUoFgQdoMxRyRMOW5jYy4ygg== + +"@next/swc-linux-arm64-gnu@16.2.0": + version "16.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.0.tgz#e855c6f937825d32aef2d8385aaefc167b6c17e8" + integrity sha512-GkjL/Q7MWOwqWR9zoxu1TIHzkOI2l2BHCf7FzeQG87zPgs+6WDh+oC9Sw9ARuuL/FUk6JNCgKRkA6rEQYadUaw== + +"@next/swc-linux-arm64-musl@16.2.0": + version "16.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.0.tgz#5fce15413e1e925114757868815b3bfd1a74461e" + integrity sha512-1ffhC6KY5qWLg5miMlKJp3dZbXelEfjuXt1qcp5WzSCQy36CV3y+JT7OC1WSFKizGQCDOcQbfkH/IjZP3cdRNA== + +"@next/swc-linux-x64-gnu@16.2.0": + version "16.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.0.tgz#d422604981eb2da25a47a32f2bc259181c0f8f57" + integrity sha512-FmbDcZQ8yJRq93EJSL6xaE0KK/Rslraf8fj1uViGxg7K4CKBCRYSubILJPEhjSgZurpcPQq12QNOJQ0DRJl6Hg== + +"@next/swc-linux-x64-musl@16.2.0": + version "16.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.0.tgz#8e3f50bbd15e0f95fe8884e9743d35b2e36008e5" + integrity sha512-HzjIHVkmGAwRbh/vzvoBWWEbb8BBZPxBvVbDQDvzHSf3D8RP/4vjw7MNLDXFF9Q1WEzeQyEj2zdxBtVAHu5Oyw== + +"@next/swc-win32-arm64-msvc@16.2.0": + version "16.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.0.tgz#1bde3c1d4cfe418a3e00d3e5122b843c05e90961" + integrity sha512-UMiFNQf5H7+1ZsZPxEsA064WEuFbRNq/kEXyepbCnSErp4f5iut75dBA8UeerFIG3vDaQNOfCpevnERPp2V+nA== + +"@next/swc-win32-x64-msvc@16.2.0": + version "16.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.0.tgz#fd13d36726ac09a15da3fab1e00934e090c643e9" + integrity sha512-DRrNJKW+/eimrZgdhVN1uvkN1OI4j6Lpefwr44jKQ0YQzztlmOBUUzHuV5GxOMPK3nmodAYElUVCY8ZXo/IWeA== + +"@nivo/colors@0.99.0": + version "0.99.0" + resolved "https://registry.yarnpkg.com/@nivo/colors/-/colors-0.99.0.tgz#f844a0f0de0597b35829405541e145f6db50c830" + integrity sha512-hyYt4lEFIfXOUmQ6k3HXm3KwhcgoJpocmoGzLUqzk7DzuhQYJo+4d5jIGGU0N/a70+9XbHIdpKNSblHAIASD3w== + dependencies: + "@nivo/core" "0.99.0" + "@nivo/theming" "0.99.0" + "@types/d3-color" "^3.0.0" + "@types/d3-scale" "^4.0.8" + "@types/d3-scale-chromatic" "^3.0.0" + d3-color "^3.1.0" + d3-scale "^4.0.2" + d3-scale-chromatic "^3.0.0" + lodash "^4.17.21" + +"@nivo/core@0.99.0", "@nivo/core@^0.99.0": + version "0.99.0" + resolved "https://registry.yarnpkg.com/@nivo/core/-/core-0.99.0.tgz#91ccf3d2419fcfb5f740dba468f0d6f059933af4" + integrity sha512-olCItqhPG3xHL5ei+vg52aB6o+6S+xR2idpkd9RormTTUniZb8U2rOdcQojOojPY5i9kVeQyLFBpV4YfM7OZ9g== + dependencies: + "@nivo/theming" "0.99.0" + "@nivo/tooltip" "0.99.0" + "@react-spring/web" "9.4.5 || ^9.7.2 || ^10.0" + "@types/d3-shape" "^3.1.6" + d3-color "^3.1.0" + d3-format "^1.4.4" + d3-interpolate "^3.0.1" + d3-scale "^4.0.2" + d3-scale-chromatic "^3.0.0" + d3-shape "^3.2.0" + d3-time-format "^3.0.0" + lodash "^4.17.21" + react-virtualized-auto-sizer "^1.0.26" + use-debounce "^10.0.4" + +"@nivo/legends@0.99.0": + version "0.99.0" + resolved "https://registry.yarnpkg.com/@nivo/legends/-/legends-0.99.0.tgz#4f1fede8c450dad942b851a9a429838e343aea1b" + integrity sha512-P16FjFqNceuTTZphINAh5p0RF0opu3cCKoWppe2aRD9IuVkvRm/wS5K1YwMCxDzKyKh5v0AuTlu9K6o3/hk8hA== + dependencies: + "@nivo/colors" "0.99.0" + "@nivo/core" "0.99.0" + "@nivo/text" "0.99.0" + "@nivo/theming" "0.99.0" + "@types/d3-scale" "^4.0.8" + d3-scale "^4.0.2" + +"@nivo/sankey@^0.99.0": + version "0.99.0" + resolved "https://registry.yarnpkg.com/@nivo/sankey/-/sankey-0.99.0.tgz#58aa360a7bb37cf950b9e4fb2d052eb6bd302bf3" + integrity sha512-u5hySywsachjo9cHdUxCR9qwD6gfRVPEAcpuIUKiA0WClDjdGbl3vkrQcQcFexJUBThqSSbwGCDWR+2INXSbTw== + dependencies: + "@nivo/colors" "0.99.0" + "@nivo/core" "0.99.0" + "@nivo/legends" "0.99.0" + "@nivo/text" "0.99.0" + "@nivo/theming" "0.99.0" + "@nivo/tooltip" "0.99.0" + "@react-spring/web" "9.4.5 || ^9.7.2 || ^10.0" + "@types/d3-sankey" "^0.11.2" + "@types/d3-shape" "^3.1.6" + d3-sankey "^0.12.3" + d3-shape "^3.2.0" + lodash "^4.17.21" + +"@nivo/text@0.99.0": + version "0.99.0" + resolved "https://registry.yarnpkg.com/@nivo/text/-/text-0.99.0.tgz#b52f37d903e731f60027c814658e271676fafdf8" + integrity sha512-ho3oZpAZApsJNjsIL5WJSAdg/wjzTBcwo1KiHBlRGUmD+yUWO8qp7V+mnYRhJchwygtRVALlPgZ/rlcW2Xr/MQ== + dependencies: + "@nivo/core" "0.99.0" + "@nivo/theming" "0.99.0" + "@react-spring/web" "9.4.5 || ^9.7.2 || ^10.0" + +"@nivo/theming@0.99.0": + version "0.99.0" + resolved "https://registry.yarnpkg.com/@nivo/theming/-/theming-0.99.0.tgz#89de03832081153093dcfc2eb2fdaaf3424da963" + integrity sha512-KvXlf0nqBzh/g2hAIV9bzscYvpq1uuO3TnFN3RDXGI72CrbbZFTGzprPju3sy/myVsauv+Bb+V4f5TZ0jkYKRg== + dependencies: + lodash "^4.17.21" + +"@nivo/tooltip@0.99.0": + version "0.99.0" + resolved "https://registry.yarnpkg.com/@nivo/tooltip/-/tooltip-0.99.0.tgz#63a1bc3b428cb2a07a7f763ad8547e39dd4bcf13" + integrity sha512-weoEGR3xAetV4k2P6k96cdamGzKQ5F2Pq+uyDaHr1P3HYArM879Pl+x+TkU0aWjP6wgUZPx/GOBiV1Hb1JxIqg== + dependencies: + "@nivo/core" "0.99.0" + "@nivo/theming" "0.99.0" + "@react-spring/web" "9.4.5 || ^9.7.2 || ^10.0" "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1537,7 +1642,7 @@ resolved "https://registry.yarnpkg.com/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz#3dc35ba0f1e66b403c00b39344f870298ebb1c8e" integrity sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA== -"@popperjs/core@^2.11.8", "@popperjs/core@^2.9.0": +"@popperjs/core@^2.11.8": version "2.11.8" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== @@ -1552,43 +1657,43 @@ resolved "https://registry.yarnpkg.com/@react-pdf/fns/-/fns-3.1.2.tgz#9ce7351d9fdf1cdb6e9c6ffd6801bc65f29f991c" integrity sha512-qTKGUf0iAMGg2+OsUcp9ffKnKi41RukM/zYIWMDJ4hRVYSr89Q7e3wSDW/Koqx3ea3Uy/z3h2y3wPX6Bdfxk6g== -"@react-pdf/font@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@react-pdf/font/-/font-4.0.2.tgz#58ede51937bb57025dcf221b107e248d0ea9d60b" - integrity sha512-/dAWu7Y2RD1RxarDZ9SkYPHgBYOhmcDnet4W/qN/m8k+A2Hr3ja54GymSR7GGxWBtxjKtNauVKrTa9LS1n8WUw== +"@react-pdf/font@^4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@react-pdf/font/-/font-4.0.4.tgz#7b5bed082fb159e582f22fe4c56e9a8c46736835" + integrity sha512-8YtgGtL511txIEc9AjiilpZ7yjid8uCd8OGUl6jaL3LIHnrToUupSN4IzsMQpVTCMYiDLFnDNQzpZsOYtRS/Pg== dependencies: - "@react-pdf/pdfkit" "^4.0.3" - "@react-pdf/types" "^2.9.0" + "@react-pdf/pdfkit" "^4.1.0" + "@react-pdf/types" "^2.9.2" fontkit "^2.0.2" is-url "^1.2.4" -"@react-pdf/image@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@react-pdf/image/-/image-3.0.3.tgz#bfdb9e782c361c9d9e0f81c31ef98554bc4e928c" - integrity sha512-lvP5ryzYM3wpbO9bvqLZYwEr5XBDX9jcaRICvtnoRqdJOo7PRrMnmB4MMScyb+Xw10mGeIubZAAomNAG5ONQZQ== +"@react-pdf/image@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@react-pdf/image/-/image-3.0.4.tgz#ee9c8928843d9680279a512138c5f597b3aae616" + integrity sha512-z0ogVQE0bKqgXQ5smgzIU857rLV7bMgVdrYsu3UfXDDLSzI7QPvzf6MFTFllX6Dx2rcsF13E01dqKPtJEM799g== dependencies: "@react-pdf/png-js" "^3.0.0" jay-peg "^1.1.1" -"@react-pdf/layout@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@react-pdf/layout/-/layout-4.4.0.tgz#26ddf73951ab0ce923689730d3b8eaf0b0db4841" - integrity sha512-Aq+Cc6JYausWLoks2FvHe3PwK9cTuvksB2uJ0AnkKJEUtQbvCq8eCRb1bjbbwIji9OzFRTTzZij7LzkpKHjIeA== +"@react-pdf/layout@^4.4.2": + version "4.4.2" + resolved "https://registry.yarnpkg.com/@react-pdf/layout/-/layout-4.4.2.tgz#30bde1e460ec8ead6a0aed85eca41279ed6f0ed8" + integrity sha512-gNu2oh8MiGR+NJZYTJ4c4q0nWCESBI6rKFiodVhE7OeVAjtzZzd6l65wsN7HXdWJqOZD3ttD97iE+tf5SOd/Yg== dependencies: "@react-pdf/fns" "3.1.2" - "@react-pdf/image" "^3.0.3" + "@react-pdf/image" "^3.0.4" "@react-pdf/primitives" "^4.1.1" - "@react-pdf/stylesheet" "^6.1.0" - "@react-pdf/textkit" "^6.0.0" - "@react-pdf/types" "^2.9.0" - emoji-regex "^10.3.0" + "@react-pdf/stylesheet" "^6.1.2" + "@react-pdf/textkit" "^6.1.0" + "@react-pdf/types" "^2.9.2" + emoji-regex-xs "^1.0.0" queue "^6.0.1" yoga-layout "^3.2.1" -"@react-pdf/pdfkit@^4.0.3": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@react-pdf/pdfkit/-/pdfkit-4.0.3.tgz#8b8a0e7e2aadbbada738a1c164f06ffff2947c8b" - integrity sha512-k+Lsuq8vTwWsCqTp+CCB4+2N+sOTFrzwGA7aw3H9ix/PDWR9QksbmNg0YkzGbLAPI6CeawmiLHcf4trZ5ecLPQ== +"@react-pdf/pdfkit@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@react-pdf/pdfkit/-/pdfkit-4.1.0.tgz#2a32cb4bfa36e887747395d8c13ac425459eda0a" + integrity sha512-Wm/IOAv0h/U5Ra94c/PltFJGcpTUd/fwVMVeFD6X9tTTPCttIwg0teRG1Lqq617J8K4W7jpL/B0HTH0mjp3QpQ== dependencies: "@babel/runtime" "^7.20.13" "@react-pdf/png-js" "^3.0.0" @@ -1611,86 +1716,133 @@ resolved "https://registry.yarnpkg.com/@react-pdf/primitives/-/primitives-4.1.1.tgz#c7bfb7e83173661b6ec50ada4aba8dc9e94d0563" integrity sha512-IuhxYls1luJb7NUWy6q5avb1XrNaVj9bTNI40U9qGRuS6n7Hje/8H8Qi99Z9UKFV74bBP3DOf3L1wV2qZVgVrQ== -"@react-pdf/reconciler@^1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@react-pdf/reconciler/-/reconciler-1.1.4.tgz#62395cf5c8786a1c3465e2cf6315562543b663c5" - integrity sha512-oTQDiR/t4Z/Guxac88IavpU2UgN7eR0RMI9DRKvKnvPz2DUasGjXfChAdMqDNmJJxxV26mMy9xQOUV2UU5/okg== +"@react-pdf/reconciler@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@react-pdf/reconciler/-/reconciler-2.0.0.tgz#d53ba53d5418c275c1fe1b150f0e9822243b799a" + integrity sha512-7zaPRujpbHSmCpIrZ+b9HSTJHthcVZzX0Wx7RzvQGsGBUbHP4p6s5itXrAIOuQuPvDepoHGNOvf6xUuMVvdoyw== dependencies: object-assign "^4.1.1" scheduler "0.25.0-rc-603e6108-20241029" -"@react-pdf/render@^4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@react-pdf/render/-/render-4.3.0.tgz#454542e87db70a3319323f8fbc5d1003db4e8c1e" - integrity sha512-MdWfWaqO6d7SZD75TZ2z5L35V+cHpyA43YNRlJNG0RJ7/MeVGDQv12y/BXOJgonZKkeEGdzM3EpAt9/g4E22WA== +"@react-pdf/render@^4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@react-pdf/render/-/render-4.3.2.tgz#ae24c363fc25c46eb25fe85a13b28e693ba97635" + integrity sha512-el5KYM1sH/PKcO4tRCIm8/AIEmhtraaONbwCrBhFdehoGv6JtgnXiMxHGAvZbI5kEg051GbyP+XIU6f6YbOu6Q== dependencies: "@babel/runtime" "^7.20.13" "@react-pdf/fns" "3.1.2" "@react-pdf/primitives" "^4.1.1" - "@react-pdf/textkit" "^6.0.0" - "@react-pdf/types" "^2.9.0" + "@react-pdf/textkit" "^6.1.0" + "@react-pdf/types" "^2.9.2" abs-svg-path "^0.1.1" color-string "^1.9.1" normalize-svg-path "^1.1.0" parse-svg-path "^0.1.2" svg-arc-to-cubic-bezier "^3.2.0" -"@react-pdf/renderer@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@react-pdf/renderer/-/renderer-4.3.0.tgz#21a41e0cf0db703e3cc54f6eb7d6cd78b460de06" - integrity sha512-28gpA69fU9ZQrDzmd5xMJa1bDf8t0PT3ApUKBl2PUpoE/x4JlvCB5X66nMXrfFrgF2EZrA72zWQAkvbg7TE8zw== +"@react-pdf/renderer@^4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@react-pdf/renderer/-/renderer-4.3.2.tgz#6a08d9f19cb1221ef377fb15586db4547d59434d" + integrity sha512-EhPkj35gO9rXIyyx29W3j3axemvVY5RigMmlK4/6Ku0pXB8z9PEE/sz4ZBOShu2uot6V4xiCR3aG+t9IjJJlBQ== dependencies: "@babel/runtime" "^7.20.13" "@react-pdf/fns" "3.1.2" - "@react-pdf/font" "^4.0.2" - "@react-pdf/layout" "^4.4.0" - "@react-pdf/pdfkit" "^4.0.3" + "@react-pdf/font" "^4.0.4" + "@react-pdf/layout" "^4.4.2" + "@react-pdf/pdfkit" "^4.1.0" "@react-pdf/primitives" "^4.1.1" - "@react-pdf/reconciler" "^1.1.4" - "@react-pdf/render" "^4.3.0" - "@react-pdf/types" "^2.9.0" + "@react-pdf/reconciler" "^2.0.0" + "@react-pdf/render" "^4.3.2" + "@react-pdf/types" "^2.9.2" events "^3.3.0" object-assign "^4.1.1" prop-types "^15.6.2" queue "^6.0.1" -"@react-pdf/stylesheet@^6.1.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@react-pdf/stylesheet/-/stylesheet-6.1.0.tgz#ca6b5b0f7cc749b36379379d943f648f8527d71a" - integrity sha512-BGZ2sYNUp38VJUegjva/jsri3iiRGnVNjWI+G9dTwAvLNOmwFvSJzqaCsEnqQ/DW5mrTBk/577FhDY7pv6AidA== +"@react-pdf/stylesheet@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@react-pdf/stylesheet/-/stylesheet-6.1.2.tgz#6ef21e2851ee7c2dc30582e7c01efb14f0308525" + integrity sha512-E3ftGRYUQGKiN3JOgtGsLDo0hGekA6dmkmi/MYACytmPTKxQRBSO3126MebmCq+t1rgU9uRlREIEawJ+8nzSbw== dependencies: "@react-pdf/fns" "3.1.2" - "@react-pdf/types" "^2.9.0" + "@react-pdf/types" "^2.9.2" color-string "^1.9.1" hsl-to-hex "^1.0.0" media-engine "^1.0.3" postcss-value-parser "^4.1.0" -"@react-pdf/textkit@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@react-pdf/textkit/-/textkit-6.0.0.tgz#87cd29aba8b0d81133dbbd61c52d8647fdf11616" - integrity sha512-fDt19KWaJRK/n2AaFoVm31hgGmpygmTV7LsHGJNGZkgzXcFyLsx+XUl63DTDPH3iqxj3xUX128t104GtOz8tTw== +"@react-pdf/textkit@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@react-pdf/textkit/-/textkit-6.1.0.tgz#ff7667b4a67c98fecefbeabff221de4bafa37979" + integrity sha512-sFlzDC9CDFrJsnL3B/+NHrk9+Advqk7iJZIStiYQDdskbow8GF/AGYrpIk+vWSnh35YxaGbHkqXq53XOxnyrjQ== dependencies: "@react-pdf/fns" "3.1.2" bidi-js "^1.0.2" hyphen "^1.6.4" unicode-properties "^1.4.1" -"@react-pdf/types@^2.9.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@react-pdf/types/-/types-2.9.0.tgz#a2721a847cb1ace2c31ca29b0303c7b51a2241c2" - integrity sha512-ckj80vZLlvl9oYrQ4tovEaqKWP3O06Eb1D48/jQWbdwz1Yh7Y9v1cEmwlP8ET+a1Whp8xfdM0xduMexkuPANCQ== +"@react-pdf/types@^2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@react-pdf/types/-/types-2.9.2.tgz#92aefa900b25bd3d0e87bb139346af545ed1ddfc" + integrity sha512-dufvpKId9OajLLbgn9q7VLUmyo1Jf+iyGk2ZHmCL8nIDtL8N1Ejh9TH7+pXXrR0tdie1nmnEb5Bz9U7g4hI4/g== dependencies: - "@react-pdf/font" "^4.0.2" + "@react-pdf/font" "^4.0.4" "@react-pdf/primitives" "^4.1.1" - "@react-pdf/stylesheet" "^6.1.0" - -"@reduxjs/toolkit@2.6.1": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-2.6.1.tgz#532ef3d3f1656461b421f0ba0a4fa1628163a0c5" - integrity sha512-SSlIqZNYhqm/oMkXbtofwZSt9lrncblzo6YcZ9zoX+zLngRBrCOjK4lNLdkNucJF58RHOWrD9txT3bT3piH7Zw== - dependencies: - immer "^10.0.3" + "@react-pdf/stylesheet" "^6.1.2" + +"@react-spring/animated@~10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-10.0.3.tgz#b42f7041a51d38f395e9ba5fb53ca68c34cd324f" + integrity sha512-7MrxADV3vaUADn2V9iYhaIL6iOWRx9nCJjYrsk2AHD2kwPr6fg7Pt0v+deX5RnCDmCKNnD6W5fasiyM8D+wzJQ== + dependencies: + "@react-spring/shared" "~10.0.3" + "@react-spring/types" "~10.0.3" + +"@react-spring/core@~10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-10.0.3.tgz#3b4f3991f5902ce46770c2c1ef05c8e53c3a0f73" + integrity sha512-D4DwNO68oohDf/0HG2G0Uragzb9IA1oXblxrd6MZAcBcUQG2EHUWXewjdECMPLNmQvlYVyyBRH6gPxXM5DX7DQ== + dependencies: + "@react-spring/animated" "~10.0.3" + "@react-spring/shared" "~10.0.3" + "@react-spring/types" "~10.0.3" + +"@react-spring/rafz@~10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@react-spring/rafz/-/rafz-10.0.3.tgz#9b328c3992b23d6317452998670636d6b783f2c4" + integrity sha512-Ri2/xqt8OnQ2iFKkxKMSF4Nqv0LSWnxXT4jXFzBDsHgeeH/cHxTLupAWUwmV9hAGgmEhBmh5aONtj3J6R/18wg== + +"@react-spring/shared@~10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-10.0.3.tgz#654d03c74d3277bae1a565aff981979536be6002" + integrity sha512-geCal66nrkaQzUVhPkGomylo+Jpd5VPK8tPMEDevQEfNSWAQP15swHm+MCRG4wVQrQlTi9lOzKzpRoTL3CA84Q== + dependencies: + "@react-spring/rafz" "~10.0.3" + "@react-spring/types" "~10.0.3" + +"@react-spring/types@~10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@react-spring/types/-/types-10.0.3.tgz#0c2d7a7e783a6f652bcd24cac80ed569bc2ad8d9" + integrity sha512-H5Ixkd2OuSIgHtxuHLTt7aJYfhMXKXT/rK32HPD/kSrOB6q6ooeiWAXkBy7L8F3ZxdkBb9ini9zP9UwnEFzWgQ== + +"@react-spring/web@9.4.5 || ^9.7.2 || ^10.0": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-10.0.3.tgz#ae3a9ea2362b1d70d2ec36a1e2747c6cee2540a9" + integrity sha512-ndU+kWY81rHsT7gTFtCJ6mrVhaJ6grFmgTnENipzmKqot4HGf5smPNK+cZZJqoGeDsj9ZsiWPW4geT/NyD484A== + dependencies: + "@react-spring/animated" "~10.0.3" + "@react-spring/core" "~10.0.3" + "@react-spring/shared" "~10.0.3" + "@react-spring/types" "~10.0.3" + +"@reduxjs/toolkit@^1.9.0 || 2.x.x", "@reduxjs/toolkit@^2.11.2": + version "2.11.2" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-2.11.2.tgz#582225acea567329ca6848583e7dd72580d38e82" + integrity sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ== + dependencies: + "@standard-schema/spec" "^1.0.0" + "@standard-schema/utils" "^0.3.0" + immer "^11.0.0" redux "^5.0.1" redux-thunk "^3.1.0" reselect "^5.1.0" @@ -1705,42 +1857,20 @@ resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== -"@rushstack/eslint-patch@^1.10.3": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.11.0.tgz#75dce8e972f90bba488e2b0cc677fb233aa357ab" - integrity sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ== - "@sinonjs/text-encoding@^0.7.2": version "0.7.3" resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz#282046f03e886e352b2d5f5da5eb755e01457f3f" integrity sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA== -"@svgdotjs/svg.draggable.js@^3.0.4": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@svgdotjs/svg.draggable.js/-/svg.draggable.js-3.0.6.tgz#bca1065ec27b1dbae5a92a0558777ed964a395cb" - integrity sha512-7iJFm9lL3C40HQcqzEfezK2l+dW2CpoVY3b77KQGqc8GXWa6LhhmX5Ckv7alQfUXBuZbjpICZ+Dvq1czlGx7gA== - -"@svgdotjs/svg.filter.js@^3.0.8": - version "3.0.9" - resolved "https://registry.yarnpkg.com/@svgdotjs/svg.filter.js/-/svg.filter.js-3.0.9.tgz#758e336b79e73a6797358d655b60842131a9a52b" - integrity sha512-/69XMRCDoam2HgC4ldHIaDgeQf1ViHIsa0Ld4uWgiXtZ+E24DWHe/9Ib6kbNiZ7WRIdlVokUDR1Fg0kjIpkfbw== - dependencies: - "@svgdotjs/svg.js" "^3.2.4" - -"@svgdotjs/svg.js@^3.2.4": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@svgdotjs/svg.js/-/svg.js-3.2.4.tgz#4716be92a64c66b29921b63f7235fcfb953fb13a" - integrity sha512-BjJ/7vWNowlX3Z8O4ywT58DqbNRyYlkk6Yz/D13aB7hGmfQTvGX4Tkgtm/ApYlu9M7lCQi15xUEidqMUmdMYwg== - -"@svgdotjs/svg.resize.js@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@svgdotjs/svg.resize.js/-/svg.resize.js-2.0.5.tgz#732e4cae15d09ad3021adeac63bc9fad0dc7255a" - integrity sha512-4heRW4B1QrJeENfi7326lUPYBCevj78FJs8kfeDxn5st0IYPIRXoTtOSYvTzFWgaWWXd3YCDE6ao4fmv91RthA== +"@standard-schema/spec@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.1.0.tgz#a79b55dbaf8604812f52d140b2c9ab41bc150bb8" + integrity sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w== -"@svgdotjs/svg.select.js@^4.0.1": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@svgdotjs/svg.select.js/-/svg.select.js-4.0.2.tgz#80a10409e6c73206218690eac5c9f94f8c8909b5" - integrity sha512-5gWdrvoQX3keo03SCmgaBbD+kFftq0F/f2bzCbNnpkkvW6tk4rl4MakORzFuNjvXPWwB4az9GwuvVxQVnjaK2g== +"@standard-schema/utils@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@standard-schema/utils/-/utils-0.3.0.tgz#3d5e608f16c2390c10528e98e59aef6bf73cae7b" + integrity sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g== "@svgr/babel-plugin-add-jsx-attribute@8.0.0": version "8.0.0" @@ -1848,18 +1978,20 @@ "@svgr/plugin-jsx" "8.1.0" "@svgr/plugin-svgo" "8.1.0" -"@swc/counter@0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" - integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== - -"@swc/helpers@0.5.15", "@swc/helpers@^0.5.12": +"@swc/helpers@0.5.15": version "0.5.15" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7" integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g== dependencies: tslib "^2.8.0" +"@swc/helpers@^0.5.12": + version "0.5.19" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.19.tgz#9a8c8a0bdaecfdfb9b8ae5421c0c8e09246dfee9" + integrity sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA== + dependencies: + tslib "^2.8.0" + "@tanstack/match-sorter-utils@8.19.4": version "8.19.4" resolved "https://registry.yarnpkg.com/@tanstack/match-sorter-utils/-/match-sorter-utils-8.19.4.tgz#dacf772b5d94f4684f10dbeb2518cf72dccab8a5" @@ -1867,56 +1999,51 @@ dependencies: remove-accents "0.5.0" -"@tanstack/query-core@5.69.0": - version "5.69.0" - resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.69.0.tgz#c434505987ade936dc53e6e27aa1406b0295516f" - integrity sha512-Kn410jq6vs1P8Nm+ZsRj9H+U3C0kjuEkYLxbiCyn3MDEiYor1j2DGVULqAz62SLZtUZ/e9Xt6xMXiJ3NJ65WyQ== - -"@tanstack/query-core@5.76.0": - version "5.76.0" - resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.76.0.tgz#3b4d5d34ce307ba0cf7d1a3e90d7adcdc6c46be0" - integrity sha512-FN375hb8ctzfNAlex5gHI6+WDXTNpe0nbxp/d2YJtnP+IBM6OUm7zcaoCW6T63BawGOYZBbKC0iPvr41TteNVg== +"@tanstack/query-core@5.91.2": + version "5.91.2" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.91.2.tgz#d83825a928aa49ded38d3910f05284178cce89d3" + integrity sha512-Uz2pTgPC1mhqrrSGg18RKCWT/pkduAYtxbcyIyKBhw7dTWjXZIzqmpzO2lBkyWr4hlImQgpu1m1pei3UnkFRWw== -"@tanstack/query-devtools@5.67.2": - version "5.67.2" - resolved "https://registry.yarnpkg.com/@tanstack/query-devtools/-/query-devtools-5.67.2.tgz#890ae9913bd21d3969c7fd85c68b1bd1500cfc57" - integrity sha512-O4QXFFd7xqp6EX7sdvc9tsVO8nm4lpWBqwpgjpVLW5g7IeOY6VnS/xvs/YzbRhBVkKTMaJMOUGU7NhSX+YGoNg== +"@tanstack/query-devtools@5.93.0": + version "5.93.0" + resolved "https://registry.yarnpkg.com/@tanstack/query-devtools/-/query-devtools-5.93.0.tgz#517f61d4e2cfb9af671e34ad5e7e871052bca814" + integrity sha512-+kpsx1NQnOFTZsw6HAFCW3HkKg0+2cepGtAWXjiiSOJJ1CtQpt72EE2nyZb+AjAbLRPoeRmPJ8MtQd8r8gsPdg== -"@tanstack/query-persist-client-core@5.76.0": - version "5.76.0" - resolved "https://registry.yarnpkg.com/@tanstack/query-persist-client-core/-/query-persist-client-core-5.76.0.tgz#a3bcdd687384dc6b5b61b402bef153ad54515321" - integrity sha512-xcTZjILf4q49Nsl6wcnhBYZ4O0gpnuNwV6vPIEWIrwTuSNWz2zd/g9bc8SxnXy7xCV8SM1H0IJn8KjLQIUb2ag== +"@tanstack/query-persist-client-core@5.92.4": + version "5.92.4" + resolved "https://registry.yarnpkg.com/@tanstack/query-persist-client-core/-/query-persist-client-core-5.92.4.tgz#3de610491ebdfa342cd316008b1bfcc284b2e64b" + integrity sha512-VKppfuXFJbm8ToFC9waMIb9bpjeyb3+H52Y6jNAQ/fnRs0PvFTPQX1lXuw6yMd43CKQZ9+s04zzvGTg6q4JBtA== dependencies: - "@tanstack/query-core" "5.76.0" + "@tanstack/query-core" "5.91.2" -"@tanstack/query-sync-storage-persister@^5.76.0": - version "5.76.0" - resolved "https://registry.yarnpkg.com/@tanstack/query-sync-storage-persister/-/query-sync-storage-persister-5.76.0.tgz#29643062f1a424873afb22032ce70ee72436bb9b" - integrity sha512-N8d8voY61XkM+jfXTySduLrevD6wRM3pwQ1kG0syLiWWx/sX2+CpaTMSPr0GggjQuhmjhUPo83LaV+e449tizA== +"@tanstack/query-sync-storage-persister@^5.90.25": + version "5.90.27" + resolved "https://registry.yarnpkg.com/@tanstack/query-sync-storage-persister/-/query-sync-storage-persister-5.90.27.tgz#249c055565e31e0587c2b1900b0d7e0012982dd3" + integrity sha512-yFaJmXqlI30LyFa81W4itMJuWM2G9srDxH7peiDcL305L1BuuwWQDChN5Gjl5wouodl3b6ZbesNqyXTt3SkdxQ== dependencies: - "@tanstack/query-core" "5.76.0" - "@tanstack/query-persist-client-core" "5.76.0" + "@tanstack/query-core" "5.91.2" + "@tanstack/query-persist-client-core" "5.92.4" "@tanstack/react-query-devtools@^5.51.11": - version "5.69.0" - resolved "https://registry.yarnpkg.com/@tanstack/react-query-devtools/-/react-query-devtools-5.69.0.tgz#2cb8083028aab591b9a82caf68cd7a383a0c8b1a" - integrity sha512-sYklnou3IKAemqB5wJeBwjmG5bUGDKAL5/I4pVA+aqSnsNibVLt8/pAU976uuJ5K71w71bHtI/AMxiIs3gtkEA== + version "5.91.3" + resolved "https://registry.yarnpkg.com/@tanstack/react-query-devtools/-/react-query-devtools-5.91.3.tgz#0f65340fa3f7e7d5575de928ad70cfa6b5f74ff1" + integrity sha512-nlahjMtd/J1h7IzOOfqeyDh5LNfG0eULwlltPEonYy0QL+nqrBB+nyzJfULV+moL7sZyxc2sHdNJki+vLA9BSA== dependencies: - "@tanstack/query-devtools" "5.67.2" + "@tanstack/query-devtools" "5.93.0" "@tanstack/react-query-persist-client@^5.76.0": - version "5.76.0" - resolved "https://registry.yarnpkg.com/@tanstack/react-query-persist-client/-/react-query-persist-client-5.76.0.tgz#97718fec844708cb98a5902d4b1eeb72adea555b" - integrity sha512-QPKgkHX1yC1Ec21FTQHBTbQcHYI+6157DgsmxABp94H7/ZUJ3szZ7wdpdBPQyZ9VxBXlKRN+aNZkOPC90+r/uA== + version "5.90.27" + resolved "https://registry.yarnpkg.com/@tanstack/react-query-persist-client/-/react-query-persist-client-5.90.27.tgz#6bf177ea728eec30df50d87f4151dfac8aeaf4f0" + integrity sha512-rKiCZ2C0kzmyDoLfrPHz2UdEDKHo/oXkKVRbhgtHya/bWH6jWDFX5cSFc1SLB33FDrgR8uOG1MwVohBrI4+F8A== dependencies: - "@tanstack/query-persist-client-core" "5.76.0" + "@tanstack/query-persist-client-core" "5.92.4" "@tanstack/react-query@^5.51.11": - version "5.69.0" - resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.69.0.tgz#8d58e800854cc11d0aa2c39569f53ae32ba442a9" - integrity sha512-Ift3IUNQqTcaFa1AiIQ7WCb/PPy8aexZdq9pZWLXhfLcLxH0+PZqJ2xFImxCpdDZrFRZhLJrh76geevS5xjRhA== + version "5.91.2" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.91.2.tgz#febe35515d611bd3d725a892cc35c37e743fbe62" + integrity sha512-GClLPzbM57iFXv+FlvOUL56XVe00PxuTaVEyj1zAObhRiKF008J5vedmaq7O6ehs+VmPHe8+PUQhMuEyv8d9wQ== dependencies: - "@tanstack/query-core" "5.69.0" + "@tanstack/query-core" "5.91.2" "@tanstack/react-table@8.20.6": version "8.20.6" @@ -1926,11 +2053,11 @@ "@tanstack/table-core" "8.20.5" "@tanstack/react-table@^8.19.2": - version "8.21.2" - resolved "https://registry.yarnpkg.com/@tanstack/react-table/-/react-table-8.21.2.tgz#6a7fce828b64547e33f4606ada8114db496007cc" - integrity sha512-11tNlEDTdIhMJba2RBH+ecJ9l1zgS2kjmexDPAraulc8jeNA4xocSNeyzextT0XJyASil4XsCYlJmf5jEWAtYg== + version "8.21.3" + resolved "https://registry.yarnpkg.com/@tanstack/react-table/-/react-table-8.21.3.tgz#2c38c747a5731c1a07174fda764b9c2b1fb5e91b" + integrity sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww== dependencies: - "@tanstack/table-core" "8.21.2" + "@tanstack/table-core" "8.21.3" "@tanstack/react-virtual@3.11.2": version "3.11.2" @@ -1944,146 +2071,161 @@ resolved "https://registry.yarnpkg.com/@tanstack/table-core/-/table-core-8.20.5.tgz#3974f0b090bed11243d4107283824167a395cf1d" integrity sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg== -"@tanstack/table-core@8.21.2": - version "8.21.2" - resolved "https://registry.yarnpkg.com/@tanstack/table-core/-/table-core-8.21.2.tgz#dd57595a1773652bb6fb437e90a5f5386a49fd7e" - integrity sha512-uvXk/U4cBiFMxt+p9/G7yUWI/UbHYbyghLCjlpWZ3mLeIZiUBSKcUnw9UnKkdRz7Z/N4UBuFLWQdJCjUe7HjvA== +"@tanstack/table-core@8.21.3": + version "8.21.3" + resolved "https://registry.yarnpkg.com/@tanstack/table-core/-/table-core-8.21.3.tgz#2977727d8fc8dfa079112d9f4d4c019110f1732c" + integrity sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg== "@tanstack/virtual-core@3.11.2": version "3.11.2" resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.11.2.tgz#00409e743ac4eea9afe5b7708594d5fcebb00212" integrity sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw== -"@tiptap/core@^2.11.5", "@tiptap/core@^2.9.1": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.11.5.tgz#2bf1b08c4ca2467778d0a109634c45ab475522f4" - integrity sha512-jb0KTdUJaJY53JaN7ooY3XAxHQNoMYti/H6ANo707PsLXVeEqJ9o8+eBup1JU5CuwzrgnDc2dECt2WIGX9f8Jw== - -"@tiptap/extension-blockquote@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.11.5.tgz#d43ae78f5eba7de1b9138820502e950bae83c31c" - integrity sha512-MZfcRIzKRD8/J1hkt/eYv49060GTL6qGR3NY/oTDuw2wYzbQXXLEbjk8hxAtjwNn7G+pWQv3L+PKFzZDxibLuA== - -"@tiptap/extension-bold@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.11.5.tgz#7fc13d835067fbee4ff2be83a694f5200ba50e41" - integrity sha512-OAq03MHEbl7MtYCUzGuwb0VpOPnM0k5ekMbEaRILFU5ZC7cEAQ36XmPIw1dQayrcuE8GZL35BKub2qtRxyC9iA== - -"@tiptap/extension-bubble-menu@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.11.5.tgz#75da9bcea2a6579cd3ad41cf82f7bc7369c1816d" - integrity sha512-rx+rMd7EEdht5EHLWldpkzJ56SWYA9799b33ustePqhXd6linnokJCzBqY13AfZ9+xp3RsR6C0ZHI9GGea0tIA== - dependencies: - tippy.js "^6.3.7" - -"@tiptap/extension-bullet-list@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.11.5.tgz#84c6bf623c5dffcd73dd24d012c9636191031d43" - integrity sha512-VXwHlX6A/T6FAspnyjbKDO0TQ+oetXuat6RY1/JxbXphH42nLuBaGWJ6pgy6xMl6XY8/9oPkTNrfJw/8/eeRwA== - -"@tiptap/extension-code-block@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.11.5.tgz#b90cea403884630f3f86c7629815250e8a266802" - integrity sha512-ksxMMvqLDlC+ftcQLynqZMdlJT1iHYZorXsXw/n+wuRd7YElkRkd6YWUX/Pq/njFY6lDjKiqFLEXBJB8nrzzBA== - -"@tiptap/extension-code@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.11.5.tgz#a550c544804e65507ab66dc8ab89a1e2f7d9228d" - integrity sha512-xOvHevNIQIcCCVn9tpvXa1wBp0wHN/2umbAZGTVzS+AQtM7BTo0tz8IyzwxkcZJaImONcUVYLOLzt2AgW1LltA== - -"@tiptap/extension-document@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.11.5.tgz#1d650d232df46cf07b83e0a5cc64db1c70057f37" - integrity sha512-7I4BRTpIux2a0O2qS3BDmyZ5LGp3pszKbix32CmeVh7lN9dV7W5reDqtJJ9FCZEEF+pZ6e1/DQA362dflwZw2g== - -"@tiptap/extension-dropcursor@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.11.5.tgz#a1d6fad3379551449534bdb8135da2577a8ec8fb" - integrity sha512-uIN7L3FU0904ec7FFFbndO7RQE/yiON4VzAMhNn587LFMyWO8US139HXIL4O8dpZeYwYL3d1FnDTflZl6CwLlg== - -"@tiptap/extension-floating-menu@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.11.5.tgz#97868901bae46e1826b9d2cfe5a4a33a446adfc1" - integrity sha512-HsMI0hV5Lwzm530Z5tBeyNCBNG38eJ3qjfdV2OHlfSf3+KOEfn6a5AUdoNaZO02LF79/8+7BaYU2drafag9cxQ== - dependencies: - tippy.js "^6.3.7" - -"@tiptap/extension-gapcursor@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.11.5.tgz#6771e387d90ef85ee834f4572627d76e303e1297" - integrity sha512-kcWa+Xq9cb6lBdiICvLReuDtz/rLjFKHWpW3jTTF3FiP3wx4H8Rs6bzVtty7uOVTfwupxZRiKICAMEU6iT0xrQ== - -"@tiptap/extension-hard-break@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.11.5.tgz#cf9610846cb7ab0f3a8d8dc37fd1fcee6a39d72f" - integrity sha512-q9doeN+Yg9F5QNTG8pZGYfNye3tmntOwch683v0CCVCI4ldKaLZ0jG3NbBTq+mosHYdgOH2rNbIORlRRsQ+iYQ== - -"@tiptap/extension-heading@^2.11.5", "@tiptap/extension-heading@^2.9.1": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.11.5.tgz#e9a54e4cbb5c9c7fc95a24cc894a16751ecd185f" - integrity sha512-x/MV53psJ9baRcZ4k4WjnCUBMt8zCX7mPlKVT+9C/o+DEs/j/qxPLs95nHeQv70chZpSwCQCt93xMmuF0kPoAg== - -"@tiptap/extension-history@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.11.5.tgz#c636c8da784ad25886eb617cff6b4752ac9586d1" - integrity sha512-b+wOS33Dz1azw6F1i9LFTEIJ/gUui0Jwz5ZvmVDpL2ZHBhq1Ui0/spTT+tuZOXq7Y/uCbKL8Liu4WoedIvhboQ== - -"@tiptap/extension-horizontal-rule@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.11.5.tgz#b876f606386c51bc2ff45d4bd26267f5b104a850" - integrity sha512-3up2r1Du8/5/4ZYzTC0DjTwhgPI3dn8jhOCLu73m5F3OGvK/9whcXoeWoX103hYMnGDxBlfOje71yQuN35FL4A== - -"@tiptap/extension-image@^2.9.1": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-image/-/extension-image-2.11.5.tgz#f16d05c8045dc7d84d85efdbb946a2a8713fb2d3" - integrity sha512-HbUq9AL8gb8eSuQfY/QKkvMc66ZFN/b6jvQAILGArNOgalUfGizoC6baKTJShaExMSPjBZlaAHtJiQKPaGRHaA== - -"@tiptap/extension-italic@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.11.5.tgz#63b09c7fb41ab64681983df7be8cf6bc330c0ede" - integrity sha512-9VGfb2/LfPhQ6TjzDwuYLRvw0A6VGbaIp3F+5Mql8XVdTBHb2+rhELbyhNGiGVR78CaB/EiKb6dO9xu/tBWSYA== - -"@tiptap/extension-list-item@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.11.5.tgz#6ada38dd4e6db889288242542bc0490b0908d190" - integrity sha512-Mp5RD/pbkfW1vdc6xMVxXYcta73FOwLmblQlFNn/l/E5/X1DUSA4iGhgDDH4EWO3swbs03x2f7Zka/Xoj3+WLg== - -"@tiptap/extension-ordered-list@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.11.5.tgz#c81e33b5bc885450d412e9ea644cc666407e0c13" - integrity sha512-Cu8KwruBNWAaEfshRQR0yOSaUKAeEwxW7UgbvF9cN/zZuKgK5uZosPCPTehIFCcRe+TBpRtZQh+06f/gNYpYYg== - -"@tiptap/extension-paragraph@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.11.5.tgz#05575f0264a435837483831eebffc5e3af279cb1" - integrity sha512-YFBWeg7xu/sBnsDIF/+nh9Arf7R0h07VZMd0id5Ydd2Qe3c1uIZwXxeINVtH0SZozuPIQFAT8ICe9M0RxmE+TA== - -"@tiptap/extension-strike@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.11.5.tgz#94e214dcede09f6c5f99d0c58290a1d3f5db61eb" - integrity sha512-PVfUiCqrjvsLpbIoVlegSY8RlkR64F1Rr2RYmiybQfGbg+AkSZXDeO0eIrc03//4gua7D9DfIozHmAKv1KN3ow== - -"@tiptap/extension-table@^2.9.1": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-table/-/extension-table-2.11.5.tgz#2296c1076ef3381bca4601709956085f093ff9e0" - integrity sha512-NKXLhKWdAdURklm98YkCd2ai4fh8jY8HS/+X2s/2QiQt8Z98CU1keCm35fJEEExM234iB/hCqG5vY4JgTc0Tvw== - -"@tiptap/extension-text-style@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-text-style/-/extension-text-style-2.11.5.tgz#f1b3882de489328203187e6256e6ee130477cfad" - integrity sha512-YUmYl0gILSd/u/ZkOmNxjNXVw+mu8fpC2f8G4I4tLODm0zCx09j9DDEJXSrM5XX72nxJQqtSQsCpNKnL0hfeEQ== - -"@tiptap/extension-text@^2.11.5": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.11.5.tgz#10cc6ec519aac71a6841ec9bd914ded747f6ec3f" - integrity sha512-Gq1WwyhFpCbEDrLPIHt5A8aLSlf8bfz4jm417c8F/JyU0J5dtYdmx0RAxjnLw1i7ZHE7LRyqqAoS0sl7JHDNSQ== - -"@tiptap/pm@^2.11.5", "@tiptap/pm@^2.9.1": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-2.11.5.tgz#6577e277e5a991c605a3dfcebde7c0b794d8def4" - integrity sha512-z9JFtqc5ZOsdQLd9vRnXfTCQ8v5ADAfRt9Nm7SqP6FUHII8E1hs38ACzf5xursmth/VonJYb5+73Pqxk1hGIPw== - dependencies: - prosemirror-changeset "^2.2.1" +"@tiptap/core@^3.20.4", "@tiptap/core@^3.4.1": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-3.20.4.tgz#8671ebdd0723e7db9631f03df4d637687788e773" + integrity sha512-3i/DG89TFY/b34T5P+j35UcjYuB5d3+9K8u6qID+iUqNPiza015HPIZLuPfE5elNwVdV3EXIoPo0LLeBLgXXAg== + +"@tiptap/extension-blockquote@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-3.20.4.tgz#b6258699487a75d124b609e4122156f6ed1e0869" + integrity sha512-9sskyyhYj2oKat//lyZVXCp9YrPt4oJAZnGHYWXS0xlskjsLElrfKKlM4vpbhGss3VrhQRoEGqWLnIaJYPF1zw== + +"@tiptap/extension-bold@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-3.20.4.tgz#095e8e2963d93767814289aa555b0de1950e6bf1" + integrity sha512-Md7/mNAeJCY+VLJc8JRGI+8XkVPKiOGB1NgqQPdh3aYtxXQDChQOZoJEQl6TuudDxZ85bLZB67NjZlx3jo8/0g== + +"@tiptap/extension-bubble-menu@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-3.20.4.tgz#e7e3c033a74d5dc67b1dac84346ee12e07d81b86" + integrity sha512-EXywPlI8wjPcAb8ozymgVhjtMjFrnhtoyNTy8ZcObdpUi5CdO9j892Y7aPbKe5hLhlDpvJk7rMfir4FFKEmfng== + dependencies: + "@floating-ui/dom" "^1.0.0" + +"@tiptap/extension-bullet-list@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-3.20.4.tgz#0ab306b17cee5295d5d6fb64c22f60eedbdd647e" + integrity sha512-1RTGrur1EKoxfnLZ3M6xeNj8GITAz74jH2DHGcjLsd2Xr7Q7BozGaIq6GkkvKguMwbI1zCOxTHFCpUETXAIQQA== + +"@tiptap/extension-code-block@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-3.20.4.tgz#2de3d3d1316ace59340d9e8ae4d73c9cc39c602f" + integrity sha512-Zlw3FrXTy01+o1yISeX/LC+iJeHA+ym602bMXGmtA6lyl7QSOSO7WExweJ6xeJGhbCjldwT5al6fkRAs8iGJZg== + +"@tiptap/extension-code@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-3.20.4.tgz#4feeb541a5984573f8cbd8d709bfd52c3546a0f7" + integrity sha512-7j8Hi964bH1SZ9oLdZC1fkqWz27mliSDV7M8lmL/M14+Qw42D/VOAKS4Aw9OCFtHMlTsjLR6qsoVxL8Lpkt6NA== + +"@tiptap/extension-document@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-3.20.4.tgz#9bf58b9e3cbc6d1637c7c88dab62e0ecbcdd20e4" + integrity sha512-zF1CIFVLt8MfSpWWnPwtGyxPOsT0xYM2qJKcXf2yZcTG37wDKmUi6heG53vGigIavbQlLaAFvs+1mNdOu2x/0A== + +"@tiptap/extension-dropcursor@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-3.20.4.tgz#0f76b2119d80b264ed33d9eab0979e7627fc170c" + integrity sha512-TgMwvZ8myXYdmd6bUV7qkpZXv7ZUiSmX/8eo+iPEzYo2CnDLAGvDKgC50nfq/g87SDvfBgPuAiBfFvsMQQWaTw== + +"@tiptap/extension-floating-menu@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-3.20.4.tgz#5b082cf500330f0a66f91a49c3a1a232038662a7" + integrity sha512-AaPTFhoO8DBIElJyd/RTVJjkctvJuL+GHURX0npbtTxXq5HXbebVwf2ARNR7jMd/GThsmBaNJiGxZg4A2oeDqQ== + +"@tiptap/extension-gapcursor@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-3.20.4.tgz#4834a5583dca98235add1a567f7cea3f124ca936" + integrity sha512-JJ6f1iQ1e0s4kISgq55U3UYGwWV/N9f0PYMtB6e3L+SBQjXnywaLK0g6vfN6IvTCC2vdIuqeSOX8VlSO97sJLw== + +"@tiptap/extension-hard-break@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-3.20.4.tgz#6494b0dc457ca8dd6f33e6ae5b6c098baf640e30" + integrity sha512-gJbq58d8zB1gzyqVEopowej5CpW4/Fpg6oGJvlZxaCukqd0gJRWGC89K+jE62YA1Td4sfcKrekKvN7jm2y/ZUg== + +"@tiptap/extension-heading@^3.20.4", "@tiptap/extension-heading@^3.4.1": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-3.20.4.tgz#6d31857f5d9fb5a61214ae6f45cf063c2e3238ea" + integrity sha512-xsnkmTGggJc5P2iCwS1lv8KFG31xC/GNPJKoi/3UH67j/lKDhA3AdtshsLeyv2FKtTtYDb8oV0IqzHB1MM6a7w== + +"@tiptap/extension-horizontal-rule@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-3.20.4.tgz#6a849a0f2e3235b1ab21f46a1f5ebb9681f35d06" + integrity sha512-y6joCi49haAA0bo3EGUY+dWUMHH1GPUc84hxrBY/0pMs+Bn+kQ1+DQJErZDTWGJrlHPWU/yekBZT72SNdp0DNA== + +"@tiptap/extension-image@^3.4.1": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-image/-/extension-image-3.20.4.tgz#8a994ba3045fd25ba2a35d96ef48a39360c7e8b9" + integrity sha512-57w2TevHQljTh6Xiry9duIm7NNOQAUSTwtwRn4GGLoKwHR8qXTxzp513ASrFOgR2kgs2TP471Au6RHf947P+jg== + +"@tiptap/extension-italic@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-3.20.4.tgz#a062fd1c989bf9a5d5cd95b981d6f2b1c2371657" + integrity sha512-4ZqiWr7cmqPFux8tj1ZLiYytyWf343IvQemNX6AvVWvscrJcrfj3YX4Le2BA0RW3A3M6RpLQXXozuF8vxYFDeQ== + +"@tiptap/extension-link@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-3.20.4.tgz#9c87c0df73ba5477312a6dfb4b9f44aa2b3e378e" + integrity sha512-JNDSkWrVdb8NSvbQXwHWvK5tCMbTWwOHFOweknQZ1JPK4dei9FJVofYQaHyW4bJBdcCjds3NZSnXE8DM9iAWmg== + dependencies: + linkifyjs "^4.3.2" + +"@tiptap/extension-list-item@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-3.20.4.tgz#30c7682940d1cea844d340ce30a09b86407497a1" + integrity sha512-QoTc5RACXaZF+vIIBBxjGO7D0oWFUDgBKJCpvUZ0CoGGKosnfe4a9I5THFyLj4201cf0oUqgf1oZhTqETGxlVw== + +"@tiptap/extension-list-keymap@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-list-keymap/-/extension-list-keymap-3.20.4.tgz#b2efd5ded1169865bb765e43423bc31f12021d0e" + integrity sha512-RIqXM649+8IP7p/KVfaGlJiwjCylm1m6OPlaoM3K8O7oEOGRQzNeexexECCD2jsXRxew4E+vBNMD2orXqJmu8A== + +"@tiptap/extension-list@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-list/-/extension-list-3.20.4.tgz#1c85438ed32e908262e9acf5855fb668ffd84303" + integrity sha512-X+5plTKhOioNcQ4KsAFJJSb/3+zR8Xhdpow4HzXtoV1KcbdDey1fhZdpsfkbrzCL0s6/wAgwZuAchCK7HujurQ== + +"@tiptap/extension-ordered-list@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-3.20.4.tgz#8071882051f91aaedceebb9d71ebfba16afa8029" + integrity sha512-3budNL8BgBon3TcXZ4hjT0YpFvx1Ka3uSIECKDxHgES+OQcR+6cagxSb60gFEccf3Dr0PIwcVTY6g14lC1qKRQ== + +"@tiptap/extension-paragraph@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-3.20.4.tgz#d365683e444ddcbf4cd32505f4f91dc3e219e0a1" + integrity sha512-lm6fOScWuZAF/Sfp97igUwFd3L1QHIVLAWP5NVdh0DTLrEIt4rMBmsww+yOpMQRhvz2uTgMbMXynrimhzi/QVw== + +"@tiptap/extension-strike@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-3.20.4.tgz#e76ddad8948e0882db38c88320108db19cf12b73" + integrity sha512-It1Px9uDGTsVqyyg6cy7DigLoenljpQwqdI0jssM7QclZrHnsrye9fZxBBiiuCzzV1305MxKgHvratkHwqmVNA== + +"@tiptap/extension-table@^3.19.0": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-table/-/extension-table-3.20.4.tgz#b2067cf1609bb1c39b61e504dc4aa05cba13d9ca" + integrity sha512-vEHXRL9k9G02pp3P+DyUnN4YRaRAHGfTBC6gck0s9TpsCM9NIchL0qI1fb/u46Bu6UaoMMk58DGr7xaJ29g7KQ== + +"@tiptap/extension-text@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-3.20.4.tgz#92d44dbe3214b4d664f6d8f82a6c2e67254a165b" + integrity sha512-jchJcBZixDEO2J66Zx5dchsI2mA6IYsROqF8P1poxL4ienH7RVQRCTsBNnSfIeOtREKKWeOU/tEs5fcpvvGwIQ== + +"@tiptap/extension-underline@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extension-underline/-/extension-underline-3.20.4.tgz#438e6c77fbfeff1b9c71bd52ed2f3f8a63ff5b8a" + integrity sha512-0OjMc3FDujX16G+jhvqcY/mLot8SrNtDu8ggUwNLAfiI/QIvMVgk7giFD71DATC/4Nb8i/iwAEegTD8MxBIXCg== + +"@tiptap/extensions@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/extensions/-/extensions-3.20.4.tgz#f87ada45451cca61038d7c894630403133d096c8" + integrity sha512-8p6hVT65DjuQjtEdlH6ewX9SOJHlVQAOee3sWIJQmeJNRnZNvqPIBLleebUqDiljNTpxBv6s6QWkSTKgf3btwg== + +"@tiptap/pm@^3.20.4": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-3.20.4.tgz#3a359786a12ff33be39086147a94de13ce83fa4c" + integrity sha512-rCHYSBToilBEuI6PtjziHDdRkABH/XqwJ7dG4Amn/SD3yGiZKYCiEApQlTUS2zZeo8DsLeuqqqB4vEOeD4OEPg== + dependencies: + prosemirror-changeset "^2.3.0" prosemirror-collab "^1.3.1" prosemirror-commands "^1.6.2" prosemirror-dropcursor "^1.8.1" @@ -2093,69 +2235,143 @@ prosemirror-keymap "^1.2.2" prosemirror-markdown "^1.13.1" prosemirror-menu "^1.2.4" - prosemirror-model "^1.23.0" + prosemirror-model "^1.24.1" prosemirror-schema-basic "^1.2.3" - prosemirror-schema-list "^1.4.1" + prosemirror-schema-list "^1.5.0" prosemirror-state "^1.4.3" - prosemirror-tables "^1.6.3" + prosemirror-tables "^1.6.4" prosemirror-trailing-node "^3.0.0" prosemirror-transform "^1.10.2" - prosemirror-view "^1.37.0" + prosemirror-view "^1.38.1" -"@tiptap/react@^2.9.1": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/react/-/react-2.11.5.tgz#46ba23a56583e95b0020eb5778c35f3dd98aa673" - integrity sha512-Dp8eHL1G+R/C4+QzAczyb3t1ovexEIZx9ln7SGEM+cT1KHKAw9XGPRgsp92+NQaYI+EdEb/YqoBOSzQcd18/OQ== +"@tiptap/react@^3.4.1": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/react/-/react-3.20.4.tgz#b313ff5051e30de4476138e47802a67bfda8ca2e" + integrity sha512-1B8iWsHWwb5TeyVaUs8BRPzwWo4PsLQcl03urHaz0zTJ8DauopqvxzV3+lem1OkzRHn7wnrapDvwmIGoROCaQw== dependencies: - "@tiptap/extension-bubble-menu" "^2.11.5" - "@tiptap/extension-floating-menu" "^2.11.5" "@types/use-sync-external-store" "^0.0.6" - fast-deep-equal "^3" - use-sync-external-store "^1" - -"@tiptap/starter-kit@^2.9.1": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.11.5.tgz#7d1b0b866b10c0f9c98214588639cda204c4f3b4" - integrity sha512-SLI7Aj2ruU1t//6Mk8f+fqW+18uTqpdfLUJYgwu0CkqBckrkRZYZh6GVLk/02k3H2ki7QkFxiFbZrdbZdng0JA== - dependencies: - "@tiptap/core" "^2.11.5" - "@tiptap/extension-blockquote" "^2.11.5" - "@tiptap/extension-bold" "^2.11.5" - "@tiptap/extension-bullet-list" "^2.11.5" - "@tiptap/extension-code" "^2.11.5" - "@tiptap/extension-code-block" "^2.11.5" - "@tiptap/extension-document" "^2.11.5" - "@tiptap/extension-dropcursor" "^2.11.5" - "@tiptap/extension-gapcursor" "^2.11.5" - "@tiptap/extension-hard-break" "^2.11.5" - "@tiptap/extension-heading" "^2.11.5" - "@tiptap/extension-history" "^2.11.5" - "@tiptap/extension-horizontal-rule" "^2.11.5" - "@tiptap/extension-italic" "^2.11.5" - "@tiptap/extension-list-item" "^2.11.5" - "@tiptap/extension-ordered-list" "^2.11.5" - "@tiptap/extension-paragraph" "^2.11.5" - "@tiptap/extension-strike" "^2.11.5" - "@tiptap/extension-text" "^2.11.5" - "@tiptap/extension-text-style" "^2.11.5" - "@tiptap/pm" "^2.11.5" - -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== - -"@tybys/wasm-util@^0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" - integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== + fast-equals "^5.3.3" + use-sync-external-store "^1.4.0" + optionalDependencies: + "@tiptap/extension-bubble-menu" "^3.20.4" + "@tiptap/extension-floating-menu" "^3.20.4" + +"@tiptap/starter-kit@^3.20.1": + version "3.20.4" + resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-3.20.4.tgz#f3fe13b5f0570d67928c236bc3ea659a74674782" + integrity sha512-WcyK6hsTl8eBsQhQ+d9Sq8fYZKOYdL+D45MyH3hz583elXqJlW3h3JPFYb0o87gddGxn8Mm57OA/gA1zEdeDMw== + dependencies: + "@tiptap/core" "^3.20.4" + "@tiptap/extension-blockquote" "^3.20.4" + "@tiptap/extension-bold" "^3.20.4" + "@tiptap/extension-bullet-list" "^3.20.4" + "@tiptap/extension-code" "^3.20.4" + "@tiptap/extension-code-block" "^3.20.4" + "@tiptap/extension-document" "^3.20.4" + "@tiptap/extension-dropcursor" "^3.20.4" + "@tiptap/extension-gapcursor" "^3.20.4" + "@tiptap/extension-hard-break" "^3.20.4" + "@tiptap/extension-heading" "^3.20.4" + "@tiptap/extension-horizontal-rule" "^3.20.4" + "@tiptap/extension-italic" "^3.20.4" + "@tiptap/extension-link" "^3.20.4" + "@tiptap/extension-list" "^3.20.4" + "@tiptap/extension-list-item" "^3.20.4" + "@tiptap/extension-list-keymap" "^3.20.4" + "@tiptap/extension-ordered-list" "^3.20.4" + "@tiptap/extension-paragraph" "^3.20.4" + "@tiptap/extension-strike" "^3.20.4" + "@tiptap/extension-text" "^3.20.4" + "@tiptap/extension-underline" "^3.20.4" + "@tiptap/extensions" "^3.20.4" + "@tiptap/pm" "^3.20.4" + +"@tybys/wasm-util@^0.10.0": + version "0.10.1" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414" + integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== dependencies: tslib "^2.4.0" +"@types/d3-array@^3.0.3": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.2.2.tgz#e02151464d02d4a1b44646d0fcdb93faf88fde8c" + integrity sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw== + +"@types/d3-color@*", "@types/d3-color@^3.0.0": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.3.tgz#368c961a18de721da8200e80bf3943fb53136af2" + integrity sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A== + +"@types/d3-ease@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-ease/-/d3-ease-3.0.2.tgz#e28db1bfbfa617076f7770dd1d9a48eaa3b6c51b" + integrity sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA== + +"@types/d3-interpolate@^3.0.1": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz#412b90e84870285f2ff8a846c6eb60344f12a41c" + integrity sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA== + dependencies: + "@types/d3-color" "*" + +"@types/d3-path@*": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-3.1.1.tgz#f632b380c3aca1dba8e34aa049bcd6a4af23df8a" + integrity sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg== + +"@types/d3-path@^1": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-1.0.11.tgz#45420fee2d93387083b34eae4fe6d996edf482bc" + integrity sha512-4pQMp8ldf7UaB/gR8Fvvy69psNHkTpD/pVw3vmEi8iZAB9EPMBruB1JvHO4BIq9QkUUd2lV1F5YXpMNj7JPBpw== + +"@types/d3-sankey@^0.11.2": + version "0.11.2" + resolved "https://registry.yarnpkg.com/@types/d3-sankey/-/d3-sankey-0.11.2.tgz#803214b11dc0a17db5d782fe9055cd92b06a5d75" + integrity sha512-U6SrTWUERSlOhnpSrgvMX64WblX1AxX6nEjI2t3mLK2USpQrnbwYYK+AS9SwiE7wgYmOsSSKoSdr8aoKBH0HgQ== + dependencies: + "@types/d3-shape" "^1" + +"@types/d3-scale-chromatic@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#dc6d4f9a98376f18ea50bad6c39537f1b5463c39" + integrity sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ== + +"@types/d3-scale@^4.0.2", "@types/d3-scale@^4.0.8": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.9.tgz#57a2f707242e6fe1de81ad7bfcccaaf606179afb" + integrity sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw== + dependencies: + "@types/d3-time" "*" + +"@types/d3-shape@^1": + version "1.3.12" + resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-1.3.12.tgz#8f2f9f7a12e631ce6700d6d55b84795ce2c8b259" + integrity sha512-8oMzcd4+poSLGgV0R1Q1rOlx/xdmozS4Xab7np0eamFFUYq71AU9pOCJEFnkXW2aI/oXdVYJzw6pssbSut7Z9Q== + dependencies: + "@types/d3-path" "^1" + +"@types/d3-shape@^3.1.0", "@types/d3-shape@^3.1.6": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-3.1.8.tgz#d1516cc508753be06852cd06758e3bb54a22b0e3" + integrity sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w== + dependencies: + "@types/d3-path" "*" + +"@types/d3-time@*", "@types/d3-time@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.4.tgz#8472feecd639691450dd8000eb33edd444e1323f" + integrity sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g== + +"@types/d3-timer@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.2.tgz#70bbda77dc23aa727413e22e214afa3f0e852f70" + integrity sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== + "@types/debug@^4.0.0": - version "4.1.12" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" - integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== + version "4.1.13" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.13.tgz#22d1cc9d542d3593caea764f974306ab36286ee7" + integrity sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw== dependencies: "@types/ms" "*" @@ -2167,16 +2383,9 @@ "@types/estree" "*" "@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.6": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8" - integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== - -"@types/hast@^2.0.0": - version "2.3.10" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.10.tgz#5c9d9e0b304bbb8879b857225c5ebab2d81d7643" - integrity sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw== - dependencies: - "@types/unist" "^2" + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== "@types/hast@^3.0.0": version "3.0.4" @@ -2186,11 +2395,10 @@ "@types/unist" "*" "@types/hoist-non-react-statics@^3.3.0", "@types/hoist-non-react-statics@^3.3.1": - version "3.3.6" - resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.6.tgz#6bba74383cdab98e8db4e20ce5b4a6b98caed010" - integrity sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw== + version "3.3.7" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.7.tgz#306e3a3a73828522efa1341159da4846e7573a6c" + integrity sha512-PQTyIulDkIDro8P+IHbKCsw7U2xxBYflVzW/FgWdCAePD9xGSidgA76/GeJ6lBKoblyhf9pBY763gbrN+1dI8g== dependencies: - "@types/react" "*" hoist-non-react-statics "^3.3.0" "@types/json-schema@^7.0.15": @@ -2234,16 +2442,21 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "22.13.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.14.tgz#70d84ec91013dcd2ba2de35532a5a14c2b4cc912" - integrity sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w== + version "25.5.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.5.0.tgz#5c99f37c443d9ccc4985866913f1ed364217da31" + integrity sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw== dependencies: - undici-types "~6.20.0" + undici-types "~7.18.0" + +"@types/pako@^2.0.3": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/pako/-/pako-2.0.4.tgz#c3575ef8125e176c345fa0e7b301c1db41170c15" + integrity sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw== "@types/papaparse@^5.3.9": - version "5.3.15" - resolved "https://registry.yarnpkg.com/@types/papaparse/-/papaparse-5.3.15.tgz#7cafa16757a1d121422deefbb10b6310b224ecc4" - integrity sha512-JHe6vF6x/8Z85nCX4yFdDslN11d+1pr12E526X8WAfhadOeaOTx5AuIkvDKIBopfvlzpzkdMx4YyvSKCM9oqtw== + version "5.5.2" + resolved "https://registry.yarnpkg.com/@types/papaparse/-/papaparse-5.5.2.tgz#cb450a1cd183deb43728e593eb1ac2da60f4fa4d" + integrity sha512-gFnFp/JMzLHCwRf7tQHrNnfhN4eYBVYYI897CGX4MY1tzY9l2aLkVyx2IlKZ/SAqDbB3I1AOZW5gTMGGsqWliA== dependencies: "@types/node" "*" @@ -2252,10 +2465,15 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== -"@types/prop-types@^15.7.14": - version "15.7.14" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.14.tgz#1433419d73b2a7ebfc6918dcefd2ec0d5cd698f2" - integrity sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ== +"@types/prismjs@^1.0.0": + version "1.26.6" + resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.6.tgz#6ea27c126d645319ae4f7055eda63a9e835c0187" + integrity sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw== + +"@types/prop-types@^15.7.15": + version "15.7.15" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.15.tgz#e6e5a86d602beaca71ce5163fadf5f95d70931c7" + integrity sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw== "@types/quill@^1.3.10": version "1.3.10" @@ -2279,17 +2497,17 @@ hoist-non-react-statics "^3.3.0" redux "^4.0.0" -"@types/react-transition-group@^4.4.11", "@types/react-transition-group@^4.4.12": +"@types/react-transition-group@^4.4.12": version "4.4.12" resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.12.tgz#b5d76568485b02a307238270bfe96cb51ee2a044" integrity sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w== "@types/react@*": - version "19.0.12" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.0.12.tgz#338b3f7854adbb784be454b3a83053127af96bd3" - integrity sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA== + version "19.2.14" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.14.tgz#39604929b5e3957e3a6fa0001dafb17c7af70bad" + integrity sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w== dependencies: - csstype "^3.0.2" + csstype "^3.2.2" "@types/trusted-types@^2.0.7": version "2.0.7" @@ -2301,7 +2519,7 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== -"@types/unist@^2", "@types/unist@^2.0.0": +"@types/unist@^2.0.0": version "2.0.11" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4" integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== @@ -2311,178 +2529,213 @@ resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz#60be8d21baab8c305132eb9cb912ed497852aadc" integrity sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg== -"@typescript-eslint/eslint-plugin@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": - version "8.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.28.0.tgz#ad1465aa6fe7e937801c291648dec951c4dc38e6" - integrity sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg== - dependencies: - "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.28.0" - "@typescript-eslint/type-utils" "8.28.0" - "@typescript-eslint/utils" "8.28.0" - "@typescript-eslint/visitor-keys" "8.28.0" - graphemer "^1.4.0" - ignore "^5.3.1" +"@typescript-eslint/eslint-plugin@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.1.tgz#ddfdfb30f8b5ccee7f3c21798b377c51370edd55" + integrity sha512-Gn3aqnvNl4NGc6x3/Bqk1AOn0thyTU9bqDRhiRnUWezgvr2OnhYCWCgC8zXXRVqBsIL1pSDt7T9nJUe0oM0kDQ== + dependencies: + "@eslint-community/regexpp" "^4.12.2" + "@typescript-eslint/scope-manager" "8.57.1" + "@typescript-eslint/type-utils" "8.57.1" + "@typescript-eslint/utils" "8.57.1" + "@typescript-eslint/visitor-keys" "8.57.1" + ignore "^7.0.5" natural-compare "^1.4.0" - ts-api-utils "^2.0.1" - -"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": - version "8.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.28.0.tgz#85321707e8711c0e66a949ea228224af35f45c98" - integrity sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ== - dependencies: - "@typescript-eslint/scope-manager" "8.28.0" - "@typescript-eslint/types" "8.28.0" - "@typescript-eslint/typescript-estree" "8.28.0" - "@typescript-eslint/visitor-keys" "8.28.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@8.28.0": - version "8.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz#e495b20438a3787e00498774d5625e620d68f9fe" - integrity sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw== - dependencies: - "@typescript-eslint/types" "8.28.0" - "@typescript-eslint/visitor-keys" "8.28.0" - -"@typescript-eslint/type-utils@8.28.0": - version "8.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.28.0.tgz#fc565414ebc16de1fc65e0dd8652ce02c78ca61f" - integrity sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg== - dependencies: - "@typescript-eslint/typescript-estree" "8.28.0" - "@typescript-eslint/utils" "8.28.0" - debug "^4.3.4" - ts-api-utils "^2.0.1" - -"@typescript-eslint/types@8.28.0": - version "8.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.28.0.tgz#7c73878385edfd9674c7aa10975e6c484b4f896e" - integrity sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA== - -"@typescript-eslint/typescript-estree@8.28.0": - version "8.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz#56b999f26f7ca67b9d75d6a67af5c8b8e4e80114" - integrity sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA== - dependencies: - "@typescript-eslint/types" "8.28.0" - "@typescript-eslint/visitor-keys" "8.28.0" - debug "^4.3.4" - fast-glob "^3.3.2" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^2.0.1" - -"@typescript-eslint/utils@8.28.0": - version "8.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.28.0.tgz#7850856620a896b7ac621ac12d49c282aefbb528" - integrity sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.28.0" - "@typescript-eslint/types" "8.28.0" - "@typescript-eslint/typescript-estree" "8.28.0" - -"@typescript-eslint/visitor-keys@8.28.0": - version "8.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz#18eb9a25cc9dadb027835c58efe93a5c4ee81969" - integrity sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg== - dependencies: - "@typescript-eslint/types" "8.28.0" - eslint-visitor-keys "^4.2.0" - -"@uiw/react-json-view@^2.0.0-alpha.30": - version "2.0.0-alpha.30" - resolved "https://registry.yarnpkg.com/@uiw/react-json-view/-/react-json-view-2.0.0-alpha.30.tgz#85db25b1a61cccc5c6c51350894515f8b7100e52" - integrity sha512-ufvvirUQcITU9s4R12b7hn/t7ngLCYp1KbBxE+eAD35o3Ey+uxfKvgWmIwGFhV3hFXXxMJ8SHQKwl/ywNCHsDA== + ts-api-utils "^2.4.0" + +"@typescript-eslint/parser@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.57.1.tgz#d523e559b148264055c0a49a29d5f50c7de659c2" + integrity sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw== + dependencies: + "@typescript-eslint/scope-manager" "8.57.1" + "@typescript-eslint/types" "8.57.1" + "@typescript-eslint/typescript-estree" "8.57.1" + "@typescript-eslint/visitor-keys" "8.57.1" + debug "^4.4.3" + +"@typescript-eslint/project-service@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.57.1.tgz#16af9fe16eedbd7085e4fdc29baa73715c0c55c5" + integrity sha512-vx1F37BRO1OftsYlmG9xay1TqnjNVlqALymwWVuYTdo18XuKxtBpCj1QlzNIEHlvlB27osvXFWptYiEWsVdYsg== + dependencies: + "@typescript-eslint/tsconfig-utils" "^8.57.1" + "@typescript-eslint/types" "^8.57.1" + debug "^4.4.3" + +"@typescript-eslint/scope-manager@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.57.1.tgz#4524d7e7b420cb501807499684d435ae129aaf35" + integrity sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg== + dependencies: + "@typescript-eslint/types" "8.57.1" + "@typescript-eslint/visitor-keys" "8.57.1" + +"@typescript-eslint/tsconfig-utils@8.57.1", "@typescript-eslint/tsconfig-utils@^8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.1.tgz#9233443ec716882a6f9e240fd900a73f0235f3d7" + integrity sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg== + +"@typescript-eslint/type-utils@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.57.1.tgz#c49af1347b5869ca85155547a8f34f84ab386fd9" + integrity sha512-+Bwwm0ScukFdyoJsh2u6pp4S9ktegF98pYUU0hkphOOqdMB+1sNQhIz8y5E9+4pOioZijrkfNO/HUJVAFFfPKA== + dependencies: + "@typescript-eslint/types" "8.57.1" + "@typescript-eslint/typescript-estree" "8.57.1" + "@typescript-eslint/utils" "8.57.1" + debug "^4.4.3" + ts-api-utils "^2.4.0" + +"@typescript-eslint/types@8.57.1", "@typescript-eslint/types@^8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.57.1.tgz#54b27a8a25a7b45b4f978c3f8e00c4c78f11142c" + integrity sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ== + +"@typescript-eslint/typescript-estree@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.1.tgz#a9fd28d4a0ec896aa9a9a7e0cead62ea24f99e76" + integrity sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g== + dependencies: + "@typescript-eslint/project-service" "8.57.1" + "@typescript-eslint/tsconfig-utils" "8.57.1" + "@typescript-eslint/types" "8.57.1" + "@typescript-eslint/visitor-keys" "8.57.1" + debug "^4.4.3" + minimatch "^10.2.2" + semver "^7.7.3" + tinyglobby "^0.2.15" + ts-api-utils "^2.4.0" + +"@typescript-eslint/utils@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.57.1.tgz#e40f5a7fcff02fd24092a7b52bd6ec029fb50465" + integrity sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ== + dependencies: + "@eslint-community/eslint-utils" "^4.9.1" + "@typescript-eslint/scope-manager" "8.57.1" + "@typescript-eslint/types" "8.57.1" + "@typescript-eslint/typescript-estree" "8.57.1" + +"@typescript-eslint/visitor-keys@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.1.tgz#3af4f88118924d3be983d4b8ae84803f11fe4563" + integrity sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A== + dependencies: + "@typescript-eslint/types" "8.57.1" + eslint-visitor-keys "^5.0.0" + +"@uiw/react-json-view@^2.0.0-alpha.41": + version "2.0.0-alpha.41" + resolved "https://registry.yarnpkg.com/@uiw/react-json-view/-/react-json-view-2.0.0-alpha.41.tgz#54425c948175df5fd2155fa22a12cfb023f98773" + integrity sha512-botRpQ5AgymYEsqXSdT2/1LefAJEYfMntvdnx1SqhTQCTW9HygeFZXx9inkYqUmiQZ3+0QlZnodjBvwnUfZhVA== "@ungap/structured-clone@^1.0.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== -"@unrs/resolver-binding-darwin-arm64@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.3.2.tgz#e2394af11511ed50025f890b3bbb83fc99c26e72" - integrity sha512-ddnlXgRi0Fog5+7U5Q1qY62wl95Q1lB4tXQX1UIA9YHmRCHN2twaQW0/4tDVGCvTVEU3xEayU7VemEr7GcBYUw== - -"@unrs/resolver-binding-darwin-x64@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.3.2.tgz#e971ef77c16ec295f4183dbc3b4d2498f81593de" - integrity sha512-tnl9xoEeg503jis+LW5cuq4hyLGQyqaoBL8VdPSqcewo/FL1C8POHbzl+AL25TidWYJD+R6bGUTE381kA1sT9w== - -"@unrs/resolver-binding-freebsd-x64@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.3.2.tgz#89e0ee4d86c4d5d55d7b3c9b555a1e21946bdd13" - integrity sha512-zyPn9LFCCjhKPeCtECZaiMUgkYN/VpLb4a9Xv7QriJmTaQxsuDtXqOHifrzUXIhorJTyS+5MOKDuNL0X9I4EHA== - -"@unrs/resolver-binding-linux-arm-gnueabihf@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.3.2.tgz#f26b076e3de838161f8163cc81146cf7b959b06c" - integrity sha512-UWx56Wh59Ro69fe+Wfvld4E1n9KG0e3zeouWLn8eSasyi/yVH/7ZW3CLTVFQ81oMKSpXwr5u6RpzttDXZKiO4g== - -"@unrs/resolver-binding-linux-arm-musleabihf@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.3.2.tgz#8b4effb38f066c9058ab3ab099ecc7526f7bb8cf" - integrity sha512-VYGQXsOEJtfaoY2fOm8Z9ii5idFaHFYlrq3yMFZPaFKo8ufOXYm8hnfru7qetbM9MX116iWaPC0ZX5sK+1Dr+g== - -"@unrs/resolver-binding-linux-arm64-gnu@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.3.2.tgz#77fc9bae5f0e481d226fe30c853e9b8c3542639c" - integrity sha512-3zP420zxJfYPD1rGp2/OTIBxF8E3+/6VqCG+DEO6kkDgBiloa7Y8pw1o7N9BfgAC+VC8FPZsFXhV2lpx+lLRMQ== - -"@unrs/resolver-binding-linux-arm64-musl@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.3.2.tgz#1a749cb3f5b54044828161317f67f19d4b50cd73" - integrity sha512-ZWjSleUgr88H4Kei7yT4PlPqySTuWN1OYDDcdbmMCtLWFly3ed+rkrcCb3gvqXdDbYrGOtzv3g2qPEN+WWNv5Q== - -"@unrs/resolver-binding-linux-ppc64-gnu@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.3.2.tgz#d4b0cccbaff413cfd586eefe9f0507d376af1b16" - integrity sha512-p+5OvYJ2UOlpjes3WfBlxyvQok2u26hLyPxLFHkYlfzhZW0juhvBf/tvewz1LDFe30M7zL9cF4OOO5dcvtk+cw== - -"@unrs/resolver-binding-linux-s390x-gnu@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.3.2.tgz#d031764866b1cf0bdbcf153704d2515072f8b62a" - integrity sha512-yweY7I6SqNn3kvj6vE4PQRo7j8Oz6+NiUhmgciBNAUOuI3Jq0bnW29hbHJdxZRSN1kYkQnSkbbA1tT8VnK816w== - -"@unrs/resolver-binding-linux-x64-gnu@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.3.2.tgz#9b859eb8afb094260041b93afc687e2d7426c621" - integrity sha512-fNIvtzJcGN9hzWTIayrTSk2+KHQrqKbbY+I88xMVMOFV9t4AXha4veJdKaIuuks+2JNr6GuuNdsL7+exywZ32w== - -"@unrs/resolver-binding-linux-x64-musl@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.3.2.tgz#e382ce3b9e91a333eb4cbbdea852116ff18ffd7a" - integrity sha512-OaFEw8WAjiwBGxutQgkWhoAGB5BQqZJ8Gjt/mW+m6DWNjimcxU22uWCuEtfw1CIwLlKPOzsgH0429fWmZcTGkg== - -"@unrs/resolver-binding-wasm32-wasi@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.3.2.tgz#ad6afbbc53cec1fcfc22cb57a325b66f07b87f75" - integrity sha512-u+sumtO7M0AGQ9bNQrF4BHNpUyxo23FM/yXZfmVAicTQ+mXtG06O7pm5zQUw3Mr4jRs2I84uh4O0hd8bdouuvQ== - dependencies: - "@napi-rs/wasm-runtime" "^0.2.7" - -"@unrs/resolver-binding-win32-arm64-msvc@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.3.2.tgz#5457aaf7abde1b9ca331f029ee6a4371db3f98a5" - integrity sha512-ZAJKy95vmDIHsRFuPNqPQRON8r2mSMf3p9DoX+OMOhvu2c8OXGg8MvhGRf3PNg45ozRrPdXDnngURKgaFfpGoQ== - -"@unrs/resolver-binding-win32-ia32-msvc@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.3.2.tgz#ea8186a2cb6b4a84893ffdb5974e536ddf030972" - integrity sha512-nQG4YFAS2BLoKVQFK/FrWJvFATI5DQUWQrcPcsWG9Ve5BLLHZuPOrJ2SpAJwLXQrRv6XHSFAYGI8wQpBg/CiFA== - -"@unrs/resolver-binding-win32-x64-msvc@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.3.2.tgz#76d02a262d15865bb7ea51060c6c816ca96aecaf" - integrity sha512-XBWpUP0mHya6yGBwNefhyEa6V7HgYKCxEAY4qhTm/PcAQyBPNmjj97VZJOJkVdUsyuuii7xmq0pXWX/c2aToHQ== - -"@yr/monotone-cubic-spline@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz#7272d89f8e4f6fb7a1600c28c378cc18d3b577b9" - integrity sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA== +"@unrs/resolver-binding-android-arm-eabi@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz#9f5b04503088e6a354295e8ea8fe3cb99e43af81" + integrity sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw== + +"@unrs/resolver-binding-android-arm64@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz#7414885431bd7178b989aedc4d25cccb3865bc9f" + integrity sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g== + +"@unrs/resolver-binding-darwin-arm64@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz#b4a8556f42171fb9c9f7bac8235045e82aa0cbdf" + integrity sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g== + +"@unrs/resolver-binding-darwin-x64@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz#fd4d81257b13f4d1a083890a6a17c00de571f0dc" + integrity sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ== + +"@unrs/resolver-binding-freebsd-x64@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz#d2513084d0f37c407757e22f32bd924a78cfd99b" + integrity sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw== + +"@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz#844d2605d057488d77fab09705f2866b86164e0a" + integrity sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw== + +"@unrs/resolver-binding-linux-arm-musleabihf@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz#204892995cefb6bd1d017d52d097193bc61ddad3" + integrity sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw== + +"@unrs/resolver-binding-linux-arm64-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz#023eb0c3aac46066a10be7a3f362e7b34f3bdf9d" + integrity sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ== + +"@unrs/resolver-binding-linux-arm64-musl@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz#9e6f9abb06424e3140a60ac996139786f5d99be0" + integrity sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w== + +"@unrs/resolver-binding-linux-ppc64-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz#b111417f17c9d1b02efbec8e08398f0c5527bb44" + integrity sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA== + +"@unrs/resolver-binding-linux-riscv64-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz#92ffbf02748af3e99873945c9a8a5ead01d508a9" + integrity sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ== + +"@unrs/resolver-binding-linux-riscv64-musl@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz#0bec6f1258fc390e6b305e9ff44256cb207de165" + integrity sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew== + +"@unrs/resolver-binding-linux-s390x-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz#577843a084c5952f5906770633ccfb89dac9bc94" + integrity sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg== + +"@unrs/resolver-binding-linux-x64-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz#36fb318eebdd690f6da32ac5e0499a76fa881935" + integrity sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w== + +"@unrs/resolver-binding-linux-x64-musl@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz#bfb9af75f783f98f6a22c4244214efe4df1853d6" + integrity sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA== + +"@unrs/resolver-binding-wasm32-wasi@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz#752c359dd875684b27429500d88226d7cc72f71d" + integrity sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ== + dependencies: + "@napi-rs/wasm-runtime" "^0.2.11" + +"@unrs/resolver-binding-win32-arm64-msvc@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz#ce5735e600e4c2fbb409cd051b3b7da4a399af35" + integrity sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw== + +"@unrs/resolver-binding-win32-ia32-msvc@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz#72fc57bc7c64ec5c3de0d64ee0d1810317bc60a6" + integrity sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ== + +"@unrs/resolver-binding-win32-x64-msvc@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz#538b1e103bf8d9864e7b85cc96fa8d6fb6c40777" + integrity sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g== + +"@vvo/tzdb@^6.198.0": + version "6.198.0" + resolved "https://registry.yarnpkg.com/@vvo/tzdb/-/tzdb-6.198.0.tgz#bcb33c581aec4f1258ad96c963ac96327ce960e3" + integrity sha512-bNRWBhWYl0edVgyX6AYbhoCM2tk2lXJjGCyO2VDc2xn6Dw8dLd7WGj2DDXkVOkmOIQTNjEAcxrEpIzz5pWVwFg== abs-svg-path@^0.1.1: version "0.1.1" @@ -2494,15 +2747,15 @@ acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.14.0: - version "8.14.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb" - integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== +acorn@^8.15.0: + version "8.16.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a" + integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw== -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== +ajv@^6.12.4, ajv@^6.14.0: + version "6.14.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.14.0.tgz#fd067713e228210636ebb08c60bd3765d6dbe73a" + integrity sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -2516,17 +2769,10 @@ ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -apexcharts@4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/apexcharts/-/apexcharts-4.5.0.tgz#efddb1a9b48e5add201df1549ac654412182e1f9" - integrity sha512-E7ZkrVqPNBUWy/Rmg8DEIqHNBmElzICE/oxOX5Ekvs2ICQUOK/VkEkMH09JGJu+O/EA0NL31hxlmF+wrwrSLaQ== - dependencies: - "@svgdotjs/svg.draggable.js" "^3.0.4" - "@svgdotjs/svg.filter.js" "^3.0.8" - "@svgdotjs/svg.js" "^3.2.4" - "@svgdotjs/svg.resize.js" "^2.0.2" - "@svgdotjs/svg.select.js" "^4.0.1" - "@yr/monotone-cubic-spline" "^1.0.3" +apexcharts@5.10.4: + version "5.10.4" + resolved "https://registry.yarnpkg.com/apexcharts/-/apexcharts-5.10.4.tgz#79c9a05ab40b069f33873a1859de6cb0882ccf0e" + integrity sha512-gt0VUqZ2+mr25ScbUcKZgJr96jKYm4vjOcxEWCEh/E5F4dWqhyo3dBhPRvNNnkKiWxkMd2cBwj3ZYH3rK39fkA== argparse@^1.0.7: version "1.0.10" @@ -2553,17 +2799,19 @@ array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2: call-bound "^1.0.3" is-array-buffer "^3.0.5" -array-includes@^3.1.6, array-includes@^3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" - integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== +array-includes@^3.1.6, array-includes@^3.1.8, array-includes@^3.1.9: + version "3.1.9" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.9.tgz#1f0ccaa08e90cdbc3eb433210f903ad0f17c3f3a" + integrity sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - is-string "^1.0.7" + es-abstract "^1.24.0" + es-object-atoms "^1.1.1" + get-intrinsic "^1.3.0" + is-string "^1.1.1" + math-intrinsics "^1.1.0" array.prototype.findlast@^1.2.5: version "1.2.5" @@ -2577,7 +2825,7 @@ array.prototype.findlast@^1.2.5: es-object-atoms "^1.0.0" es-shim-unscopables "^1.0.2" -array.prototype.findlastindex@^1.2.5: +array.prototype.findlastindex@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#cfa1065c81dcb64e34557c9b81d012f6a421c564" integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ== @@ -2590,7 +2838,7 @@ array.prototype.findlastindex@^1.2.5: es-object-atoms "^1.1.1" es-shim-unscopables "^1.1.0" -array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: +array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5" integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== @@ -2649,11 +2897,6 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - attr-accept@^2.2.4: version "2.2.5" resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.5.tgz#d7061d958e6d4f97bf8665c68b75851a0713ab5e" @@ -2667,17 +2910,17 @@ available-typed-arrays@^1.0.7: possible-typed-array-names "^1.0.0" axe-core@^4.10.0: - version "4.10.3" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.3.tgz#04145965ac7894faddbac30861e5d8f11bfd14fc" - integrity sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg== + version "4.11.1" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.11.1.tgz#052ff9b2cbf543f5595028b583e4763b40c78ea7" + integrity sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A== axios@^1.7.2: - version "1.8.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.8.4.tgz#78990bb4bc63d2cae072952d374835950a82f447" - integrity sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw== + version "1.13.6" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.6.tgz#c3f92da917dc209a15dd29936d20d5089b6b6c98" + integrity sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ== dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" + follow-redirects "^1.15.11" + form-data "^4.0.5" proxy-from-env "^1.1.0" axobject-query@^4.1.0: @@ -2694,29 +2937,29 @@ babel-plugin-macros@^3.1.0: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.4.10: - version "0.4.13" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz#7d445f0e0607ebc8fb6b01d7e8fb02069b91dd8b" - integrity sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g== +babel-plugin-polyfill-corejs2@^0.4.15: + version "0.4.17" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz#198f970f1c99a856b466d1187e88ce30bd199d91" + integrity sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w== dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.4" + "@babel/compat-data" "^7.28.6" + "@babel/helper-define-polyfill-provider" "^0.6.8" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz#4e4e182f1bb37c7ba62e2af81d8dd09df31344f6" - integrity sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ== +babel-plugin-polyfill-corejs3@^0.14.0: + version "0.14.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz#6ac08d2f312affb70c4c69c0fbba4cb417ee5587" + integrity sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.3" - core-js-compat "^3.40.0" + "@babel/helper-define-polyfill-provider" "^0.6.8" + core-js-compat "^3.48.0" -babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz#428c615d3c177292a22b4f93ed99e358d7906a9b" - integrity sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw== +babel-plugin-polyfill-regenerator@^0.6.6: + version "0.6.8" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz#8a6bfd5dd54239362b3d06ce47ac52b2d95d7721" + integrity sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.4" + "@babel/helper-define-polyfill-provider" "^0.6.8" bail@^2.0.0: version "2.0.2" @@ -2728,6 +2971,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +balanced-match@^4.0.2: + version "4.0.4" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a" + integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA== + base64-arraybuffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc" @@ -2743,6 +2991,11 @@ base64-js@^1.1.2, base64-js@^1.3.0: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +baseline-browser-mapping@^2.9.0, baseline-browser-mapping@^2.9.19: + version "2.10.9" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.9.tgz#8614229add633061c001a0b7c7c85d4b7c44e6ca" + integrity sha512-OZd0e2mU11ClX8+IdXe3r0dbqMEznRiT4TfbhYIbcRPZkqJ7Qwer8ij3GZAmLsRKa+II9V1v5czCkvmHH3XZBg== + bidi-js@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/bidi-js/-/bidi-js-1.0.3.tgz#6f8bcf3c877c4d9220ddf49b9bb6930c88f877d2" @@ -2756,19 +3009,19 @@ boolbase@^1.0.0: integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + version "1.1.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== +brace-expansion@^5.0.2: + version "5.0.4" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.4.tgz#614daaecd0a688f660bbbc909a8748c3d80d4336" + integrity sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg== dependencies: - balanced-match "^1.0.0" + balanced-match "^4.0.2" braces@^3.0.3: version "3.0.3" @@ -2791,33 +3044,22 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.24.0, browserslist@^4.24.4: - version "4.24.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b" - integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== +browserslist@^4.24.0, browserslist@^4.28.1: + version "4.28.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95" + integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== dependencies: - caniuse-lite "^1.0.30001688" - electron-to-chromium "^1.5.73" - node-releases "^2.0.19" - update-browserslist-db "^1.1.1" - -btoa@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" - integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== + baseline-browser-mapping "^2.9.0" + caniuse-lite "^1.0.30001759" + electron-to-chromium "^1.5.263" + node-releases "^2.0.27" + update-browserslist-db "^1.2.0" buffer-from@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-0.1.2.tgz#15f4b9bcef012044df31142c14333caf6e0260d0" integrity sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg== -busboy@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== - dependencies: - streamsearch "^1.1.0" - call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" @@ -2854,10 +3096,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001688: - version "1.0.30001707" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz#c5e104d199e6f4355a898fcd995a066c7eb9bf41" - integrity sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw== +caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001759: + version "1.0.30001780" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001780.tgz#0e413de292808868a62ed9118822683fa120a110" + integrity sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ== canvg@^3.0.11: version "3.0.11" @@ -2891,31 +3133,16 @@ character-entities-html4@^2.0.0: resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== -character-entities-legacy@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" - integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== - character-entities-legacy@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== -character-entities@^1.0.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" - integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== - character-entities@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== -character-reference-invalid@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" - integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== - character-reference-invalid@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" @@ -2931,12 +3158,7 @@ clone@^2.1.1, clone@^2.1.2: resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== -clsx@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" - integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== - -clsx@^2.0.0, clsx@^2.1.1: +clsx@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== @@ -2953,7 +3175,7 @@ color-name@^1.0.0, color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.9.0, color-string@^1.9.1: +color-string@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== @@ -2961,14 +3183,6 @@ color-string@^1.9.0, color-string@^1.9.1: color-name "^1.0.0" simple-swizzle "^0.2.2" -color@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" - integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== - dependencies: - color-convert "^2.0.1" - color-string "^1.9.0" - combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -2976,11 +3190,6 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -comma-separated-tokens@^1.0.0: - version "1.0.8" - resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" - integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== - comma-separated-tokens@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" @@ -3006,24 +3215,24 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -copy-to-clipboard@^3.3.1: +copy-to-clipboard@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== dependencies: toggle-selection "^1.0.6" -core-js-compat@^3.40.0: - version "3.41.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.41.0.tgz#4cdfce95f39a8f27759b667cf693d96e5dda3d17" - integrity sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A== +core-js-compat@^3.48.0: + version "3.49.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.49.0.tgz#06145447d92f4aaf258a0c44f24b47afaeaffef6" + integrity sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA== dependencies: - browserslist "^4.24.4" + browserslist "^4.28.1" core-js@^3.6.0, core-js@^3.8.3: - version "3.41.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.41.0.tgz#57714dafb8c751a6095d028a7428f1fb5834a776" - integrity sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA== + version "3.49.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.49.0.tgz#8b4d520ac034311fa21aa616f017ada0e0dbbddd" + integrity sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg== core-util-is@~1.0.0: version "1.0.3" @@ -3085,9 +3294,9 @@ css-line-break@^2.1.0: utrie "^1.0.2" css-select@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" - integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + version "5.2.2" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.2.2.tgz#01b6e8d163637bb2dd6c982ca4ed65863682786e" + integrity sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw== dependencies: boolbase "^1.0.0" css-what "^6.1.0" @@ -3112,9 +3321,9 @@ css-tree@~2.2.0: source-map-js "^1.0.1" css-what@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + version "6.2.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.2.2.tgz#cdcc8f9b6977719fdfbd1de7aec24abf756b9dea" + integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA== cssjanus@^2.0.1: version "2.3.0" @@ -3128,10 +3337,135 @@ csso@^5.0.5: dependencies: css-tree "~2.2.0" -csstype@^3.0.2, csstype@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== +csstype@^3.0.2, csstype@^3.1.3, csstype@^3.2.2, csstype@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.2.3.tgz#ec48c0f3e993e50648c86da559e2610995cf989a" + integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ== + +"d3-array@1 - 2", d3-array@2: + version "2.12.1" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81" + integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ== + dependencies: + internmap "^1.0.0" + +"d3-array@2 - 3", "d3-array@2.10.0 - 3", d3-array@^3.1.6: + version "3.2.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" + integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== + dependencies: + internmap "1 - 2" + +"d3-color@1 - 3", d3-color@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" + integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== + +d3-ease@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4" + integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== + +"d3-format@1 - 3": + version "3.1.2" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.2.tgz#01fdb46b58beb1f55b10b42ad70b6e344d5eb2ae" + integrity sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg== + +d3-format@^1.4.4: + version "1.4.5" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.5.tgz#374f2ba1320e3717eb74a9356c67daee17a7edb4" + integrity sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ== + +"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" + integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== + dependencies: + d3-color "1 - 3" + +d3-path@1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" + integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== + +d3-path@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-3.1.0.tgz#22df939032fb5a71ae8b1800d61ddb7851c42526" + integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== + +d3-sankey@^0.12.3: + version "0.12.3" + resolved "https://registry.yarnpkg.com/d3-sankey/-/d3-sankey-0.12.3.tgz#b3c268627bd72e5d80336e8de6acbfec9d15d01d" + integrity sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ== + dependencies: + d3-array "1 - 2" + d3-shape "^1.2.0" + +d3-scale-chromatic@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#34c39da298b23c20e02f1a4b239bd0f22e7f1314" + integrity sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ== + dependencies: + d3-color "1 - 3" + d3-interpolate "1 - 3" + +d3-scale@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" + integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== + dependencies: + d3-array "2.10.0 - 3" + d3-format "1 - 3" + d3-interpolate "1.2.0 - 3" + d3-time "2.1.1 - 3" + d3-time-format "2 - 4" + +d3-shape@^1.2.0: + version "1.3.7" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" + integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== + dependencies: + d3-path "1" + +d3-shape@^3.1.0, d3-shape@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.2.0.tgz#a1a839cbd9ba45f28674c69d7f855bcf91dfc6a5" + integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== + dependencies: + d3-path "^3.1.0" + +"d3-time-format@2 - 4": + version "4.1.0" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" + integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== + dependencies: + d3-time "1 - 3" + +d3-time-format@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-3.0.0.tgz#df8056c83659e01f20ac5da5fdeae7c08d5f1bb6" + integrity sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag== + dependencies: + d3-time "1 - 2" + +"d3-time@1 - 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-2.1.1.tgz#e9d8a8a88691f4548e68ca085e5ff956724a6682" + integrity sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ== + dependencies: + d3-array "2" + +"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" + integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== + dependencies: + d3-array "2 - 3" + +d3-timer@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" + integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== damerau-levenshtein@^1.0.8: version "1.0.8" @@ -3177,17 +3511,22 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" - integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== +debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.4.0, debug@^4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== dependencies: ms "^2.1.3" +decimal.js-light@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934" + integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== + decode-named-character-reference@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz#5d6ce68792808901210dac42a8e9853511e2b8bf" - integrity sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w== + version "1.3.0" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz#3e40603760874c2e5867691b599d73a7da25b53f" + integrity sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q== dependencies: character-entities "^2.0.0" @@ -3246,10 +3585,10 @@ dequal@^2.0.0: resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== -detect-libc@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" - integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== +detect-libc@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad" + integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== devlop@^1.0.0, devlop@^1.1.0: version "1.1.0" @@ -3319,10 +3658,17 @@ domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" -dompurify@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.2.4.tgz#af5a5a11407524431456cf18836c55d13441cd8e" - integrity sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg== +dompurify@3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.2.7.tgz#721d63913db5111dd6dfda8d3a748cfd7982d44a" + integrity sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw== + optionalDependencies: + "@types/trusted-types" "^2.0.7" + +dompurify@^3.3.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.3.3.tgz#680cae8af3e61320ddf3666a3bc843f7b291b2b6" + integrity sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA== optionalDependencies: "@types/trusted-types" "^2.0.7" @@ -3367,33 +3713,33 @@ duplexer2@^0.1.2: dependencies: readable-stream "^2.0.2" -electron-to-chromium@^1.5.73: - version "1.5.127" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.127.tgz#350a16aa09fb7f070ad118fade31260a5c173733" - integrity sha512-Ke5OggqOtEqzCzcUyV+9jgO6L6sv1gQVKGtSExXHjD/FK0p4qzPZbrDsrCdy0DptcQprD0V80RCBYSWLMhTTgQ== +electron-to-chromium@^1.5.263: + version "1.5.321" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.321.tgz#57a80554e2e7fd65e3689d320f52a64723472d5d" + integrity sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ== eml-parse-js@^1.2.0-beta.0: - version "1.2.0-beta.0" - resolved "https://registry.yarnpkg.com/eml-parse-js/-/eml-parse-js-1.2.0-beta.0.tgz#0b024d38093b42cd29168f7f5771726390e4b1f3" - integrity sha512-fDA5OcT9DmU+6Qiv6Ki6/+fIjrZ97SE6KIB0PUK2r0nnRqBbnbaWm844l8SLTd4mc3rF0T3izc8E7E/qXFCthA== + version "1.2.0-beta.1" + resolved "https://registry.yarnpkg.com/eml-parse-js/-/eml-parse-js-1.2.0-beta.1.tgz#2371c1a2ce4a9fe4032372b51fa30861d15c2232" + integrity sha512-sFlcUwNmIjPD7yR0/OK4XEN9V+/Np3S6SE348LNgwgAlgA1jswba+cTNxN/Rbkz+CHPyBSfh3Ccamp6lLWz0Lw== dependencies: "@sinonjs/text-encoding" "^0.7.2" js-base64 "^3.7.2" -emoji-regex@^10.3.0: - version "10.4.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.4.0.tgz#03553afea80b3975749cfcb36f776ca268e413d4" - integrity sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw== +emoji-regex-xs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz#e8af22e5d9dbd7f7f22d280af3d19d2aab5b0724" + integrity sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg== emoji-regex@^9.2.2: version "9.2.2" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -encodeurl@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +encodeurl@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== entities@^1.1.1: version "1.1.2" @@ -3410,34 +3756,39 @@ entities@^4.2.0, entities@^4.4.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== +entities@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-6.0.1.tgz#c28c34a43379ca7f61d074130b2f5f7020a30694" + integrity sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g== + error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + version "1.3.4" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.4.tgz#b3a8d8bb6f92eecc1629e3e27d3c8607a8a32414" + integrity sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ== dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9: - version "1.23.9" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.9.tgz#5b45994b7de78dada5c1bebf1379646b32b9d606" - integrity sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA== +es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0, es-abstract@^1.24.1: + version "1.24.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.1.tgz#f0c131ed5ea1bb2411134a8dd94def09c46c7899" + integrity sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw== dependencies: array-buffer-byte-length "^1.0.2" arraybuffer.prototype.slice "^1.0.4" available-typed-arrays "^1.0.7" call-bind "^1.0.8" - call-bound "^1.0.3" + call-bound "^1.0.4" data-view-buffer "^1.0.2" data-view-byte-length "^1.0.2" data-view-byte-offset "^1.0.1" es-define-property "^1.0.1" es-errors "^1.3.0" - es-object-atoms "^1.0.0" + es-object-atoms "^1.1.1" es-set-tostringtag "^2.1.0" es-to-primitive "^1.3.0" function.prototype.name "^1.1.8" - get-intrinsic "^1.2.7" - get-proto "^1.0.0" + get-intrinsic "^1.3.0" + get-proto "^1.0.1" get-symbol-description "^1.1.0" globalthis "^1.0.4" gopd "^1.2.0" @@ -3449,21 +3800,24 @@ es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23 is-array-buffer "^3.0.5" is-callable "^1.2.7" is-data-view "^1.0.2" + is-negative-zero "^2.0.3" is-regex "^1.2.1" + is-set "^2.0.3" is-shared-array-buffer "^1.0.4" is-string "^1.1.1" is-typed-array "^1.1.15" - is-weakref "^1.1.0" + is-weakref "^1.1.1" math-intrinsics "^1.1.0" - object-inspect "^1.13.3" + object-inspect "^1.13.4" object-keys "^1.1.1" object.assign "^4.1.7" own-keys "^1.0.1" - regexp.prototype.flags "^1.5.3" + regexp.prototype.flags "^1.5.4" safe-array-concat "^1.1.3" safe-push-apply "^1.0.0" safe-regex-test "^1.1.0" set-proto "^1.0.0" + stop-iteration-iterator "^1.1.0" string.prototype.trim "^1.2.10" string.prototype.trimend "^1.0.9" string.prototype.trimstart "^1.0.8" @@ -3472,7 +3826,7 @@ es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23 typed-array-byte-offset "^1.0.4" typed-array-length "^1.0.7" unbox-primitive "^1.1.0" - which-typed-array "^1.1.18" + which-typed-array "^1.1.19" es-define-property@^1.0.0, es-define-property@^1.0.1: version "1.0.1" @@ -3485,25 +3839,26 @@ es-errors@^1.3.0: integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== es-iterator-helpers@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz#d1dd0f58129054c0ad922e6a9a1e65eef435fe75" - integrity sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w== + version "1.3.1" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.3.1.tgz#3be0f4e63438d6c5a1fb5f33b891aaad3f7dae06" + integrity sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ== dependencies: call-bind "^1.0.8" - call-bound "^1.0.3" + call-bound "^1.0.4" define-properties "^1.2.1" - es-abstract "^1.23.6" + es-abstract "^1.24.1" es-errors "^1.3.0" - es-set-tostringtag "^2.0.3" + es-set-tostringtag "^2.1.0" function-bind "^1.1.2" - get-intrinsic "^1.2.6" + get-intrinsic "^1.3.0" globalthis "^1.0.4" gopd "^1.2.0" has-property-descriptors "^1.0.2" has-proto "^1.2.0" has-symbols "^1.1.0" internal-slot "^1.1.0" - iterator.prototype "^1.1.4" + iterator.prototype "^1.1.5" + math-intrinsics "^1.1.0" safe-array-concat "^1.1.3" es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: @@ -3513,7 +3868,7 @@ es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: dependencies: es-errors "^1.3.0" -es-set-tostringtag@^2.0.3, es-set-tostringtag@^2.1.0: +es-set-tostringtag@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== @@ -3539,6 +3894,11 @@ es-to-primitive@^1.3.0: is-date-object "^1.0.5" is-symbol "^1.0.4" +es-toolkit@^1.39.3: + version "1.45.1" + resolved "https://registry.yarnpkg.com/es-toolkit/-/es-toolkit-1.45.1.tgz#21b28b2bd43178fd4c9c937c445d5bcaccce907b" + integrity sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw== + escalade@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" @@ -3549,21 +3909,25 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-next@15.2.2: - version "15.2.2" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-15.2.2.tgz#114ffec6851ced10fde7aa2f62c3d3a4371df514" - integrity sha512-g34RI7RFS4HybYFwGa/okj+8WZM+/fy+pEM+aqRQoVvM4gQhKrd4wIEddKmlZfWD75j8LTwB5zwkmNv3DceH1A== +escape-string-regexp@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" + integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + +eslint-config-next@16.1.6: + version "16.1.6" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-16.1.6.tgz#75dd33bf32eb34b1e5be59f546e3c808429bab41" + integrity sha512-vKq40io2B0XtkkNDYyleATwblNt8xuh3FWp8SpSz3pt7P01OkBFlKsJZ2mWt5WsCySlDQLckb1zMY9yE9Qy0LA== dependencies: - "@next/eslint-plugin-next" "15.2.2" - "@rushstack/eslint-patch" "^1.10.3" - "@typescript-eslint/eslint-plugin" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" - "@typescript-eslint/parser" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" + "@next/eslint-plugin-next" "16.1.6" eslint-import-resolver-node "^0.3.6" eslint-import-resolver-typescript "^3.5.2" - eslint-plugin-import "^2.31.0" + eslint-plugin-import "^2.32.0" eslint-plugin-jsx-a11y "^6.10.0" eslint-plugin-react "^7.37.0" - eslint-plugin-react-hooks "^5.0.0" + eslint-plugin-react-hooks "^7.0.0" + globals "16.4.0" + typescript-eslint "^8.46.0" eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9: version "0.3.9" @@ -3575,48 +3939,48 @@ eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9: resolve "^1.22.4" eslint-import-resolver-typescript@^3.5.2: - version "3.10.0" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.0.tgz#5bca4c579e17174e95bf67526b424d07b46c352e" - integrity sha512-aV3/dVsT0/H9BtpNwbaqvl+0xGMRGzncLyhm793NFGvbwGGvzyAykqWZ8oZlZuGwuHkwJjhWJkG1cM3ynvd2pQ== + version "3.10.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz#23dac32efa86a88e2b8232eb244ac499ad636db2" + integrity sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ== dependencies: "@nolyfill/is-core-module" "1.0.39" debug "^4.4.0" get-tsconfig "^4.10.0" is-bun-module "^2.0.0" stable-hash "^0.0.5" - tinyglobby "^0.2.12" - unrs-resolver "^1.3.2" + tinyglobby "^0.2.13" + unrs-resolver "^1.6.2" -eslint-module-utils@^2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" - integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== +eslint-module-utils@^2.12.1: + version "2.12.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz#f76d3220bfb83c057651359295ab5854eaad75ff" + integrity sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw== dependencies: debug "^3.2.7" -eslint-plugin-import@^2.31.0: - version "2.31.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" - integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== +eslint-plugin-import@^2.32.0: + version "2.32.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz#602b55faa6e4caeaa5e970c198b5c00a37708980" + integrity sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA== dependencies: "@rtsao/scc" "^1.1.0" - array-includes "^3.1.8" - array.prototype.findlastindex "^1.2.5" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" + array-includes "^3.1.9" + array.prototype.findlastindex "^1.2.6" + array.prototype.flat "^1.3.3" + array.prototype.flatmap "^1.3.3" debug "^3.2.7" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.12.0" + eslint-module-utils "^2.12.1" hasown "^2.0.2" - is-core-module "^2.15.1" + is-core-module "^2.16.1" is-glob "^4.0.3" minimatch "^3.1.2" object.fromentries "^2.0.8" object.groupby "^1.0.3" - object.values "^1.2.0" + object.values "^1.2.1" semver "^6.3.1" - string.prototype.trimend "^1.0.8" + string.prototype.trimend "^1.0.9" tsconfig-paths "^3.15.0" eslint-plugin-jsx-a11y@^6.10.0: @@ -3640,15 +4004,21 @@ eslint-plugin-jsx-a11y@^6.10.0: safe-regex-test "^1.0.3" string.prototype.includes "^2.0.1" -eslint-plugin-react-hooks@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz#1be0080901e6ac31ce7971beed3d3ec0a423d9e3" - integrity sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg== +eslint-plugin-react-hooks@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz#66e258db58ece50723ef20cc159f8aa908219169" + integrity sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA== + dependencies: + "@babel/core" "^7.24.4" + "@babel/parser" "^7.24.4" + hermes-parser "^0.25.1" + zod "^3.25.0 || ^4.0.0" + zod-validation-error "^3.5.0 || ^4.0.0" eslint-plugin-react@^7.37.0: - version "7.37.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz#1b6c80b6175b6ae4b26055ae4d55d04c414c7181" - integrity sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ== + version "7.37.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz#2975511472bdda1b272b34d779335c9b0e877065" + integrity sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA== dependencies: array-includes "^3.1.8" array.prototype.findlast "^1.2.5" @@ -3660,7 +4030,7 @@ eslint-plugin-react@^7.37.0: hasown "^2.0.2" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" - object.entries "^1.1.8" + object.entries "^1.1.9" object.fromentries "^2.0.8" object.values "^1.2.1" prop-types "^15.8.1" @@ -3669,10 +4039,10 @@ eslint-plugin-react@^7.37.0: string.prototype.matchall "^4.0.12" string.prototype.repeat "^1.0.0" -eslint-scope@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.3.0.tgz#10cd3a918ffdd722f5f3f7b5b83db9b23c87340d" - integrity sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ== +eslint-scope@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82" + integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -3682,37 +4052,41 @@ eslint-visitor-keys@^3.4.3: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint-visitor-keys@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" - integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== +eslint-visitor-keys@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" + integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== + +eslint-visitor-keys@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz#9e3c9489697824d2d4ce3a8ad12628f91e9f59be" + integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA== -eslint@9.22.0: - version "9.22.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.22.0.tgz#0760043809fbf836f582140345233984d613c552" - integrity sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ== +eslint@9.39.2: + version "9.39.2" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.39.2.tgz#cb60e6d16ab234c0f8369a3fe7cc87967faf4b6c" + integrity sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw== dependencies: - "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/eslint-utils" "^4.8.0" "@eslint-community/regexpp" "^4.12.1" - "@eslint/config-array" "^0.19.2" - "@eslint/config-helpers" "^0.1.0" - "@eslint/core" "^0.12.0" - "@eslint/eslintrc" "^3.3.0" - "@eslint/js" "9.22.0" - "@eslint/plugin-kit" "^0.2.7" + "@eslint/config-array" "^0.21.1" + "@eslint/config-helpers" "^0.4.2" + "@eslint/core" "^0.17.0" + "@eslint/eslintrc" "^3.3.1" + "@eslint/js" "9.39.2" + "@eslint/plugin-kit" "^0.4.1" "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" "@humanwhocodes/retry" "^0.4.2" "@types/estree" "^1.0.6" - "@types/json-schema" "^7.0.15" ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.6" debug "^4.3.2" escape-string-regexp "^4.0.0" - eslint-scope "^8.3.0" - eslint-visitor-keys "^4.2.0" - espree "^10.3.0" + eslint-scope "^8.4.0" + eslint-visitor-keys "^4.2.1" + espree "^10.4.0" esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -3728,14 +4102,14 @@ eslint@9.22.0: natural-compare "^1.4.0" optionator "^0.9.3" -espree@^10.0.1, espree@^10.3.0: - version "10.3.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" - integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== +espree@^10.0.1, espree@^10.4.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837" + integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== dependencies: - acorn "^8.14.0" + acorn "^8.15.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^4.2.0" + eslint-visitor-keys "^4.2.1" esprima@^4.0.0: version "4.0.1" @@ -3743,9 +4117,9 @@ esprima@^4.0.0: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" - integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + version "1.7.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.7.0.tgz#08d048f261f0ddedb5bae95f46809463d9c9496d" + integrity sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g== dependencies: estraverse "^5.1.0" @@ -3776,6 +4150,11 @@ eventemitter3@^2.0.3: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-2.0.3.tgz#b5e1079b59fb5e1ba2771c0a993be060a58c99ba" integrity sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg== +eventemitter3@^5.0.1: + version "5.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.4.tgz#a86d66170433712dde814707ac52b5271ceb1feb" + integrity sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw== + events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -3798,7 +4177,7 @@ extend@^3.0.0, extend@^3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -fast-deep-equal@^3, fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -3813,6 +4192,11 @@ fast-equals@^4.0.3: resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-4.0.3.tgz#72884cc805ec3c6679b99875f6b7654f39f0e8c7" integrity sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg== +fast-equals@^5.3.3: + version "5.4.0" + resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-5.4.0.tgz#b60073b8764f27029598447f05773c7534ba7f1e" + integrity sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw== + fast-glob@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" @@ -3824,17 +4208,6 @@ fast-glob@3.3.1: merge2 "^1.3.0" micromatch "^4.0.4" -fast-glob@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" - integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.8" - fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -3845,10 +4218,19 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-png@^6.2.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/fast-png/-/fast-png-6.4.0.tgz#807fc353ccab060d09151b7d082786e02d8e92d6" + integrity sha512-kAqZq1TlgBjZcLr5mcN6NP5Rv4V2f22z00c3g8vRrwkcqjerx7BEhPbOnWCPqaHUl2XWQBJQvOT/FQhdMT7X/Q== + dependencies: + "@types/pako" "^2.0.3" + iobuffer "^5.3.2" + pako "^2.1.0" + fastq@^1.6.0: - version "1.19.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" - integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== + version "1.20.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675" + integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw== dependencies: reusify "^1.0.4" @@ -3859,10 +4241,10 @@ fault@^1.0.0: dependencies: format "^0.2.0" -fdir@^6.4.3: - version "6.4.3" - resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.3.tgz#011cdacf837eca9b811c89dbb902df714273db72" - integrity sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw== +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== fflate@^0.8.1: version "0.8.2" @@ -3912,14 +4294,14 @@ flat-cache@^4.0.0: keyv "^4.5.4" flatted@^3.2.9: - version "3.3.3" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" - integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== + version "3.4.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.4.2.tgz#f5c23c107f0f37de8dbdf24f13722b3b98d52726" + integrity sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA== -follow-redirects@^1.15.6: - version "1.15.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" - integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== +follow-redirects@^1.15.11: + version "1.15.11" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== fontkit@^2.0.2: version "2.0.4" @@ -3943,14 +4325,15 @@ for-each@^0.3.3, for-each@^0.3.5: dependencies: is-callable "^1.2.7" -form-data@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.2.tgz#35cabbdd30c3ce73deb2c42d3c8d3ed9ca51794c" - integrity sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w== +form-data@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" + integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" es-set-tostringtag "^2.1.0" + hasown "^2.0.2" mime-types "^2.1.12" format@^0.2.0: @@ -3958,10 +4341,10 @@ format@^0.2.0: resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== -formik@2.4.6: - version "2.4.6" - resolved "https://registry.yarnpkg.com/formik/-/formik-2.4.6.tgz#4da75ca80f1a827ab35b08fd98d5a76e928c9686" - integrity sha512-A+2EI7U7aG296q2TLGvNapDNTZp1khVt5Vk0Q/fyfSROss0V/V6+txt2aJnwEos44IxTCW/LYAi/zgWzlevj+g== +formik@2.4.9: + version "2.4.9" + resolved "https://registry.yarnpkg.com/formik/-/formik-2.4.9.tgz#7e5b81e9c9e215d0ce2ac8fed808cf7fba0cd204" + integrity sha512-5nI94BMnlFDdQRBY4Sz39WkhxajZJ57Fzs8wVbtsQlm5ScKIR1QLYqv/ultBnobObtlUyxpxoLodpixrsf36Og== dependencies: "@types/hoist-non-react-statics" "^3.3.1" deepmerge "^2.1.1" @@ -3994,6 +4377,11 @@ functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +generator-function@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/generator-function/-/generator-function-2.0.1.tgz#0e75dd410d1243687a0ba2e951b94eedb8f737a2" + integrity sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g== + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -4033,9 +4421,9 @@ get-symbol-description@^1.1.0: get-intrinsic "^1.2.6" get-tsconfig@^4.10.0: - version "4.10.0" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.10.0.tgz#403a682b373a823612475a4c2928c7326fc0f6bb" - integrity sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A== + version "4.13.6" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.13.6.tgz#2fbfda558a98a691a798f123afd95915badce876" + integrity sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw== dependencies: resolve-pkg-maps "^1.0.0" @@ -4053,10 +4441,10 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@16.4.0: + version "16.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-16.4.0.tgz#574bc7e72993d40cf27cf6c241f324ee77808e51" + integrity sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw== globals@^14.0.0: version "14.0.0" @@ -4072,20 +4460,15 @@ globalthis@^1.0.4: gopd "^1.0.1" goober@^2.1.16: - version "2.1.16" - resolved "https://registry.yarnpkg.com/goober/-/goober-2.1.16.tgz#7d548eb9b83ff0988d102be71f271ca8f9c82a95" - integrity sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g== + version "2.1.18" + resolved "https://registry.yarnpkg.com/goober/-/goober-2.1.18.tgz#b72d669bd24d552d441638eee26dfd5716ea6442" + integrity sha512-2vFqsaDVIT9Gz7N6kAL++pLpp41l3PfDuusHcjnGLfR6+huZkl6ziX+zgVC3ZxpqWhzH6pyDdGrCeDhMIvwaxw== gopd@^1.0.1, gopd@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - gray-matter@4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" @@ -4139,10 +4522,45 @@ hasown@^2.0.2: dependencies: function-bind "^1.1.2" -hast-util-parse-selector@^2.0.0: - version "2.2.5" - resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" - integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== +hast-util-from-parse5@^8.0.0: + version "8.0.3" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz#830a35022fff28c3fea3697a98c2f4cc6b835a2e" + integrity sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg== + dependencies: + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + devlop "^1.0.0" + hastscript "^9.0.0" + property-information "^7.0.0" + vfile "^6.0.0" + vfile-location "^5.0.0" + web-namespaces "^2.0.0" + +hast-util-parse-selector@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz#352879fa86e25616036037dd8931fb5f34cb4a27" + integrity sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A== + dependencies: + "@types/hast" "^3.0.0" + +hast-util-raw@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-9.1.0.tgz#79b66b26f6f68fb50dfb4716b2cdca90d92adf2e" + integrity sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw== + dependencies: + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + "@ungap/structured-clone" "^1.0.0" + hast-util-from-parse5 "^8.0.0" + hast-util-to-parse5 "^8.0.0" + html-void-elements "^3.0.0" + mdast-util-to-hast "^13.0.0" + parse5 "^7.0.0" + unist-util-position "^5.0.0" + unist-util-visit "^5.0.0" + vfile "^6.0.0" + web-namespaces "^2.0.0" + zwitch "^2.0.0" hast-util-to-jsx-runtime@^2.0.0: version "2.3.6" @@ -4165,6 +4583,19 @@ hast-util-to-jsx-runtime@^2.0.0: unist-util-position "^5.0.0" vfile-message "^4.0.0" +hast-util-to-parse5@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz#95aa391cc0514b4951418d01c883d1038af42f5d" + integrity sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA== + dependencies: + "@types/hast" "^3.0.0" + comma-separated-tokens "^2.0.0" + devlop "^1.0.0" + property-information "^7.0.0" + space-separated-tokens "^2.0.0" + web-namespaces "^2.0.0" + zwitch "^2.0.0" + hast-util-whitespace@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" @@ -4172,16 +4603,28 @@ hast-util-whitespace@^3.0.0: dependencies: "@types/hast" "^3.0.0" -hastscript@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" - integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== +hastscript@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-9.0.1.tgz#dbc84bef6051d40084342c229c451cd9dc567dff" + integrity sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w== + dependencies: + "@types/hast" "^3.0.0" + comma-separated-tokens "^2.0.0" + hast-util-parse-selector "^4.0.0" + property-information "^7.0.0" + space-separated-tokens "^2.0.0" + +hermes-estree@0.25.1: + version "0.25.1" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.25.1.tgz#6aeec17d1983b4eabf69721f3aa3eb705b17f480" + integrity sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw== + +hermes-parser@^0.25.1: + version "0.25.1" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.25.1.tgz#5be0e487b2090886c62bd8a11724cd766d5f54d1" + integrity sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA== dependencies: - "@types/hast" "^2.0.0" - comma-separated-tokens "^1.0.0" - hast-util-parse-selector "^2.0.0" - property-information "^5.0.0" - space-separated-tokens "^1.0.0" + hermes-estree "0.25.1" highlight-words@2.0.0: version "2.0.0" @@ -4240,6 +4683,11 @@ html-url-attributes@^3.0.0: resolved "https://registry.yarnpkg.com/html-url-attributes/-/html-url-attributes-3.0.1.tgz#83b052cd5e437071b756cd74ae70f708870c2d87" integrity sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ== +html-void-elements@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" + integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== + html2canvas@^1.0.0-rc.5: version "1.4.1" resolved "https://registry.yarnpkg.com/html2canvas/-/html2canvas-1.4.1.tgz#7cef1888311b5011d507794a066041b14669a543" @@ -4261,26 +4709,36 @@ htmlparser2@^3.9.0: readable-stream "^3.1.1" hyphen@^1.6.4: - version "1.10.6" - resolved "https://registry.yarnpkg.com/hyphen/-/hyphen-1.10.6.tgz#0e779d280e696102b97d7e42f5ca5de2cc97e274" - integrity sha512-fXHXcGFTXOvZTSkPJuGOQf5Lv5T/R2itiiCVPg9LxAje5D00O0pP83yJShFq5V89Ly//Gt6acj7z8pbBr34stw== + version "1.14.1" + resolved "https://registry.yarnpkg.com/hyphen/-/hyphen-1.14.1.tgz#c9fbd5e1af750f00d5034aa37f6ec41f95ffed93" + integrity sha512-kvL8xYl5QMTh+LwohVN72ciOxC0OEV79IPdJSTwEXok9y9QHebXGdFgrED4sWfiax/ODx++CAMk3hMy4XPJPOw== -i18next@24.2.3: - version "24.2.3" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-24.2.3.tgz#3a05f72615cbd7c00d7e348667e2aabef1df753b" - integrity sha512-lfbf80OzkocvX7nmZtu7nSTNbrTYR52sLWxPtlXX1zAhVw8WEnFk4puUkCR4B1dNQwbSpEHHHemcZu//7EcB7A== +i18next@25.8.18: + version "25.8.18" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-25.8.18.tgz#51863b65bc42e3525271f2680ebbf7d150ff53cc" + integrity sha512-lzY5X83BiL5AP77+9DydbrqkQHFN9hUzWGjqjLpPcp5ZOzuu1aSoKaU3xbBLSjWx9dAzW431y+d+aogxOZaKRA== dependencies: - "@babel/runtime" "^7.26.10" + "@babel/runtime" "^7.28.6" -ignore@^5.2.0, ignore@^5.3.1: +ignore@^5.2.0: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== -immer@^10.0.3: - version "10.1.1" - resolved "https://registry.yarnpkg.com/immer/-/immer-10.1.1.tgz#206f344ea372d8ea176891545ee53ccc062db7bc" - integrity sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw== +ignore@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" + integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== + +immer@^10.1.1: + version "10.2.0" + resolved "https://registry.yarnpkg.com/immer/-/immer-10.2.0.tgz#88a4ce06a1af64172d254b70f7cb04df51c871b1" + integrity sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw== + +immer@^11.0.0: + version "11.1.4" + resolved "https://registry.yarnpkg.com/immer/-/immer-11.1.4.tgz#37aee86890b134a8f1a2fadd44361fb86c6ae67e" + integrity sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw== import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.1" @@ -4300,10 +4758,10 @@ inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inline-style-parser@0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.2.4.tgz#f4af5fe72e612839fcd453d989a586566d695f22" - integrity sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q== +inline-style-parser@0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.2.7.tgz#b1fc68bfc0313b8685745e4464e37f9376b9c909" + integrity sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA== internal-slot@^1.1.0: version "1.1.0" @@ -4314,24 +4772,26 @@ internal-slot@^1.1.0: hasown "^2.0.2" side-channel "^1.1.0" -is-alphabetical@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" - integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== +"internmap@1 - 2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" + integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== + +internmap@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" + integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== + +iobuffer@^5.3.2: + version "5.4.0" + resolved "https://registry.yarnpkg.com/iobuffer/-/iobuffer-5.4.0.tgz#f85dff957fd0579257472f0a4cfe5ed3430e63e1" + integrity sha512-DRebOWuqDvxunfkNJAlc3IzWIPD5xVxwUNbHr7xKB8E6aLJxIPfNX3CoMJghcFjpv6RWQsrcJbghtEwSPoJqMA== is-alphabetical@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== -is-alphanumerical@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" - integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== - dependencies: - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - is-alphanumerical@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" @@ -4363,9 +4823,9 @@ is-arrayish@^0.2.1: integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + version "0.3.4" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.4.tgz#1ee5553818511915685d33bb13d31bf854e5059d" + integrity sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA== is-async-function@^2.0.0: version "2.1.1" @@ -4405,7 +4865,7 @@ is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.13.0, is-core-module@^2.15.1, is-core-module@^2.16.0: +is-core-module@^2.13.0, is-core-module@^2.16.1: version "2.16.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== @@ -4429,11 +4889,6 @@ is-date-object@^1.0.5, is-date-object@^1.1.0: call-bound "^1.0.2" has-tostringtag "^1.0.2" -is-decimal@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" - integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== - is-decimal@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" @@ -4457,12 +4912,13 @@ is-finalizationregistry@^1.1.0: call-bound "^1.0.3" is-generator-function@^1.0.10: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" - integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.2.tgz#ae3b61e3d5ea4e4839b90bad22b02335051a17d5" + integrity sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA== dependencies: - call-bound "^1.0.3" - get-proto "^1.0.0" + call-bound "^1.0.4" + generator-function "^2.0.0" + get-proto "^1.0.1" has-tostringtag "^1.0.2" safe-regex-test "^1.1.0" @@ -4473,11 +4929,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: dependencies: is-extglob "^2.1.1" -is-hexadecimal@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" - integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== - is-hexadecimal@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" @@ -4488,6 +4939,11 @@ is-map@^2.0.3: resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + is-number-object@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541" @@ -4528,7 +4984,7 @@ is-shared-array-buffer@^1.0.4: dependencies: call-bound "^1.0.3" -is-string@^1.0.7, is-string@^1.1.1: +is-string@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== @@ -4562,7 +5018,7 @@ is-weakmap@^2.0.2: resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== -is-weakref@^1.0.2, is-weakref@^1.1.0: +is-weakref@^1.0.2, is-weakref@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293" integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== @@ -4597,7 +5053,7 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -iterator.prototype@^1.1.4: +iterator.prototype@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.5.tgz#12c959a29de32de0aa3bbbb801f4d777066dae39" integrity sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g== @@ -4609,12 +5065,12 @@ iterator.prototype@^1.1.4: has-symbols "^1.1.0" set-function-name "^2.0.2" -javascript-time-ago@^2.5.11: - version "2.5.11" - resolved "https://registry.yarnpkg.com/javascript-time-ago/-/javascript-time-ago-2.5.11.tgz#f2743040ccdec603cb4ec1029eeccb0c595c942a" - integrity sha512-Zeyf5R7oM1fSMW9zsU3YgAYwE0bimEeF54Udn2ixGd8PUwu+z1Yc5t4Y8YScJDMHD6uCx6giLt3VJR5K4CMwbg== +javascript-time-ago@^2.3.7, javascript-time-ago@^2.6.2: + version "2.6.4" + resolved "https://registry.yarnpkg.com/javascript-time-ago/-/javascript-time-ago-2.6.4.tgz#3149de049ffe3c374eb5a357cd9aaa911aa98fb9" + integrity sha512-7K/Z37LuwVaxxjutUDd1pXpznufPcox0b1UYu00ksAMMlV6IsxIvduwL3kgfPxuBVF8jVj7nhrKMPDslMq94aQ== dependencies: - relative-time-format "^1.1.6" + relative-time-format "^1.1.12" jay-peg@^1.1.1: version "1.1.1" @@ -4624,9 +5080,9 @@ jay-peg@^1.1.1: restructure "^3.0.0" js-base64@^3.7.2: - version "3.7.7" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.7.tgz#e51b84bf78fbf5702b9541e2cb7bfcb893b43e79" - integrity sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw== + version "3.7.8" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.8.tgz#af44496bc09fa178ed9c4adf67eb2b46f5c6d2a4" + integrity sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -4634,30 +5090,25 @@ js-base64@^3.7.2: integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + version "3.14.2" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.2.tgz#77485ce1dd7f33c061fd1b16ecea23b55fcb04b0" + integrity sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg== dependencies: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== +js-yaml@^4.1.0, js-yaml@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" + integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== dependencies: argparse "^2.0.1" -jsesc@^3.0.2: +jsesc@^3.0.2, jsesc@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== -jsesc@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" - integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== - json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" @@ -4690,24 +5141,23 @@ json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jspdf-autotable@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/jspdf-autotable/-/jspdf-autotable-5.0.2.tgz#bcf7aa2ff9eb46a2db6aa8c0407ab86c0a6c7b96" - integrity sha512-YNKeB7qmx3pxOLcNeoqAv3qTS7KuvVwkFe5AduCawpop3NOkBUtqDToxNc225MlNecxT4kP2Zy3z/y/yvGdXUQ== +jspdf-autotable@^5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/jspdf-autotable/-/jspdf-autotable-5.0.7.tgz#c5970646dd5ae18801d97e3e91625c95783efbe4" + integrity sha512-2wr7H6liNDBYNwt25hMQwXkEWFOEopgKIvR1Eukuw6Zmprm/ZcnmLTQEjW7Xx3FCbD3v7pflLcnMAv/h1jFDQw== -jspdf@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/jspdf/-/jspdf-3.0.1.tgz#d81e1964f354f60412516eb2449ea2cccd4d2a3b" - integrity sha512-qaGIxqxetdoNnFQQXxTKUD9/Z7AloLaw94fFsOiJMxbfYdBbrBuhWmbzI8TVjrw7s3jBY1PFHofBKMV/wZPapg== +jspdf@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/jspdf/-/jspdf-4.2.1.tgz#6ba0d263999313f91f369ee80ecf235046b2acd8" + integrity sha512-YyAXyvnmjTbR4bHQRLzex3CuINCDlQnBqoSYyjJwTP2x9jDLuKDzy7aKUl0hgx3uhcl7xzg32agn5vlie6HIlQ== dependencies: - "@babel/runtime" "^7.26.7" - atob "^2.1.2" - btoa "^1.2.1" + "@babel/runtime" "^7.28.6" + fast-png "^6.2.0" fflate "^0.8.1" optionalDependencies: canvg "^3.0.11" core-js "^3.6.0" - dompurify "^3.2.4" + dompurify "^3.3.1" html2canvas "^1.0.0-rc.5" "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: @@ -4787,6 +5237,11 @@ linkify-it@^5.0.0: dependencies: uc.micro "^2.0.0" +linkifyjs@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-4.3.2.tgz#d97eb45419aabf97ceb4b05a7adeb7b8c8ade2b1" + integrity sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA== + locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -4795,9 +5250,9 @@ locate-path@^6.0.0: p-locate "^5.0.0" lodash-es@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" - integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + version "4.17.23" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.23.tgz#58c4360fd1b5d33afc6c0bbd3d1149349b1138e0" + integrity sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg== lodash.debounce@^4.0.8: version "4.0.8" @@ -4815,9 +5270,9 @@ lodash.merge@^4.6.2: integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash@^4.17.21, lodash@^4.17.4: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + version "4.17.23" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.23.tgz#f113b0378386103be4f6893388c73d0bde7f2c5a" + integrity sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w== longest-streak@^3.0.0: version "3.1.0" @@ -4854,9 +5309,9 @@ lru-cache@^5.1.1: yallist "^3.0.2" markdown-it@^14.0.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.0.tgz#3c3c5992883c633db4714ccb4d7b5935d98b7d45" - integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg== + version "14.1.1" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.1.tgz#856f90b66fc39ae70affd25c1b18b581d7deee1f" + integrity sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA== dependencies: argparse "^2.0.1" entities "^4.4.0" @@ -4865,6 +5320,16 @@ markdown-it@^14.0.0: punycode.js "^2.3.1" uc.micro "^2.1.0" +markdown-table@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.4.tgz#fe44d6d410ff9d6f2ea1797a3f60aa4d2b631c2a" + integrity sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw== + +marked@14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-14.0.0.tgz#79a1477358a59e0660276f8fec76de2c33f35d83" + integrity sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ== + material-react-table@^3.0.1: version "3.2.1" resolved "https://registry.yarnpkg.com/material-react-table/-/material-react-table-3.2.1.tgz#56f595755cab3b669b399999fed9eb305fbb6dd7" @@ -4880,10 +5345,20 @@ math-intrinsics@^1.1.0: resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== +mdast-util-find-and-replace@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz#70a3174c894e14df722abf43bc250cbae44b11df" + integrity sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg== + dependencies: + "@types/mdast" "^4.0.0" + escape-string-regexp "^5.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" + mdast-util-from-markdown@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz#4850390ca7cf17413a9b9a0fbefcd1bc0eb4160a" - integrity sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA== + version "2.0.3" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz#c95822b91aab75f18a4cbe8b2f51b873ed2cf0c7" + integrity sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q== dependencies: "@types/mdast" "^4.0.0" "@types/unist" "^3.0.0" @@ -4898,6 +5373,71 @@ mdast-util-from-markdown@^2.0.0: micromark-util-types "^2.0.0" unist-util-stringify-position "^4.0.0" +mdast-util-gfm-autolink-literal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz#abd557630337bd30a6d5a4bd8252e1c2dc0875d5" + integrity sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ== + dependencies: + "@types/mdast" "^4.0.0" + ccount "^2.0.0" + devlop "^1.0.0" + mdast-util-find-and-replace "^3.0.0" + micromark-util-character "^2.0.0" + +mdast-util-gfm-footnote@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz#7778e9d9ca3df7238cc2bd3fa2b1bf6a65b19403" + integrity sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.1.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + +mdast-util-gfm-strikethrough@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz#d44ef9e8ed283ac8c1165ab0d0dfd058c2764c16" + integrity sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-gfm-table@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz#7a435fb6223a72b0862b33afbd712b6dae878d38" + integrity sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + markdown-table "^3.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-gfm-task-list-item@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz#e68095d2f8a4303ef24094ab642e1047b991a936" + integrity sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-gfm@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz#2cdf63b92c2a331406b0fb0db4c077c1b0331751" + integrity sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ== + dependencies: + mdast-util-from-markdown "^2.0.0" + mdast-util-gfm-autolink-literal "^2.0.0" + mdast-util-gfm-footnote "^2.0.0" + mdast-util-gfm-strikethrough "^2.0.0" + mdast-util-gfm-table "^2.0.0" + mdast-util-gfm-task-list-item "^2.0.0" + mdast-util-to-markdown "^2.0.0" + mdast-util-mdx-expression@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz#43f0abac9adc756e2086f63822a38c8d3c3a5096" @@ -4949,9 +5489,9 @@ mdast-util-phrasing@^4.0.0: unist-util-is "^6.0.0" mdast-util-to-hast@^13.0.0: - version "13.2.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz#5ca58e5b921cc0a3ded1bc02eed79a4fe4fe41f4" - integrity sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA== + version "13.2.1" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz#d7ff84ca499a57e2c060ae67548ad950e689a053" + integrity sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA== dependencies: "@types/hast" "^3.0.0" "@types/mdast" "^4.0.0" @@ -5005,7 +5545,7 @@ media-engine@^1.0.3: resolved "https://registry.yarnpkg.com/media-engine/-/media-engine-1.0.3.tgz#be3188f6cd243ea2a40804a35de5a5b032f58dad" integrity sha512-aa5tG6sDoK+k70B9iEX1NeyfT8ObCKhNDs6lJVpwF6r8vhUfuKMslIcirq6HIUYuuUYLefcEQOn9bSBOvawtwg== -"memoize-one@>=3.1.1 <6", memoize-one@^5.1.1: +memoize-one@^5.1.1: version "5.2.1" resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== @@ -5042,6 +5582,85 @@ micromark-core-commonmark@^2.0.0: micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" +micromark-extension-gfm-autolink-literal@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz#6286aee9686c4462c1e3552a9d505feddceeb935" + integrity sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-footnote@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz#4dab56d4e398b9853f6fe4efac4fc9361f3e0750" + integrity sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw== + dependencies: + devlop "^1.0.0" + micromark-core-commonmark "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-strikethrough@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz#86106df8b3a692b5f6a92280d3879be6be46d923" + integrity sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw== + dependencies: + devlop "^1.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-classify-character "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-table@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz#fac70bcbf51fe65f5f44033118d39be8a9b5940b" + integrity sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg== + dependencies: + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-tagfilter@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz#f26d8a7807b5985fba13cf61465b58ca5ff7dc57" + integrity sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg== + dependencies: + micromark-util-types "^2.0.0" + +micromark-extension-gfm-task-list-item@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz#bcc34d805639829990ec175c3eea12bb5b781f2c" + integrity sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw== + dependencies: + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz#3e13376ab95dd7a5cfd0e29560dfe999657b3c5b" + integrity sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w== + dependencies: + micromark-extension-gfm-autolink-literal "^2.0.0" + micromark-extension-gfm-footnote "^2.0.0" + micromark-extension-gfm-strikethrough "^2.0.0" + micromark-extension-gfm-table "^2.0.0" + micromark-extension-gfm-tagfilter "^2.0.0" + micromark-extension-gfm-task-list-item "^2.0.0" + micromark-util-combine-extensions "^2.0.0" + micromark-util-types "^2.0.0" + micromark-factory-destination@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz#8fef8e0f7081f0474fbdd92deb50c990a0264639" @@ -5214,7 +5833,7 @@ micromark@^4.0.0: micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" -micromatch@^4.0.4, micromatch@^4.0.8: +micromatch@^4.0.4: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -5234,45 +5853,47 @@ mime-types@^2.1.12: dependencies: mime-db "1.52.0" -minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== +minimatch@^10.2.2: + version "10.2.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.4.tgz#465b3accbd0218b8281f5301e27cedc697f96fde" + integrity sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg== dependencies: - brace-expansion "^1.1.7" + brace-expansion "^5.0.2" -minimatch@^9.0.4: - version "9.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== +minimatch@^3.1.2, minimatch@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e" + integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w== dependencies: - brace-expansion "^2.0.1" + brace-expansion "^1.1.7" minimist@^1.2.0, minimist@^1.2.6, minimist@~1.2.5: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -monaco-editor@^0.52.0: - version "0.52.2" - resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.52.2.tgz#53c75a6fcc6802684e99fd1b2700299857002205" - integrity sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ== +monaco-editor@^0.55.1: + version "0.55.1" + resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.55.1.tgz#e74c6fe5a6bf985b817d2de3eb88d56afc494a1b" + integrity sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A== + dependencies: + dompurify "3.2.7" + marked "14.0.0" ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -mui-tiptap@^1.14.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/mui-tiptap/-/mui-tiptap-1.18.0.tgz#99f42928638d4cce0a396c713c49454cadbc8441" - integrity sha512-SW4PS4jJuOXQHdS96eGq1dkNiLOOTP8yiBnOH6c49SF+Sg6Bowd1hnrDmqRR+l8t6Uer5O7DWhYpYuixvrrlYw== +mui-tiptap@^1.29.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/mui-tiptap/-/mui-tiptap-1.29.0.tgz#5316a5aad8f9c6d14d317daf17e1d5b3e5a59477" + integrity sha512-2fupRo0RI2o+xX59qoSGpNertfMoDGLhxpzZjXP/loXlrbzuIVw+AGbUg4zeHbFJrbXH2RGIiPbI4ysPbvO8mg== dependencies: - encodeurl "^1.0.2" - lodash "^4.17.21" + clsx "^2.1.1" + encodeurl "^2.0.0" + es-toolkit "^1.39.3" react-colorful "^5.6.1" - tss-react "^4.8.3" - type-fest "^3.12.0" multipipe@^1.0.2: version "1.0.2" @@ -5287,33 +5908,37 @@ nanoid@^3.3.6: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== +napi-postinstall@^0.3.0: + version "0.3.4" + resolved "https://registry.yarnpkg.com/napi-postinstall/-/napi-postinstall-0.3.4.tgz#7af256d6588b5f8e952b9190965d6b019653bbb9" + integrity sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -next@^15.2.2: - version "15.2.4" - resolved "https://registry.yarnpkg.com/next/-/next-15.2.4.tgz#e05225e9511df98e3b2edc713e17f4c970bff961" - integrity sha512-VwL+LAaPSxEkd3lU2xWbgEOtrM8oedmyhBqaVNmgKB+GvZlCy9rgaEc+y2on0wv+l0oSFqLtYD6dcC1eAedUaQ== +next@^16.1.6: + version "16.2.0" + resolved "https://registry.yarnpkg.com/next/-/next-16.2.0.tgz#83108005ac8ef9cf99cc178c41d6028941c89446" + integrity sha512-NLBVrJy1pbV1Yn00L5sU4vFyAHt5XuSjzrNyFnxo6Com0M0KrL6hHM5B99dbqXb2bE9pm4Ow3Zl1xp6HVY9edQ== dependencies: - "@next/env" "15.2.4" - "@swc/counter" "0.1.3" + "@next/env" "16.2.0" "@swc/helpers" "0.5.15" - busboy "1.6.0" + baseline-browser-mapping "^2.9.19" caniuse-lite "^1.0.30001579" postcss "8.4.31" styled-jsx "5.1.6" optionalDependencies: - "@next/swc-darwin-arm64" "15.2.4" - "@next/swc-darwin-x64" "15.2.4" - "@next/swc-linux-arm64-gnu" "15.2.4" - "@next/swc-linux-arm64-musl" "15.2.4" - "@next/swc-linux-x64-gnu" "15.2.4" - "@next/swc-linux-x64-musl" "15.2.4" - "@next/swc-win32-arm64-msvc" "15.2.4" - "@next/swc-win32-x64-msvc" "15.2.4" - sharp "^0.33.5" + "@next/swc-darwin-arm64" "16.2.0" + "@next/swc-darwin-x64" "16.2.0" + "@next/swc-linux-arm64-gnu" "16.2.0" + "@next/swc-linux-arm64-musl" "16.2.0" + "@next/swc-linux-x64-gnu" "16.2.0" + "@next/swc-linux-x64-musl" "16.2.0" + "@next/swc-win32-arm64-msvc" "16.2.0" + "@next/swc-win32-x64-msvc" "16.2.0" + sharp "^0.34.5" no-case@^3.0.4: version "3.0.4" @@ -5323,10 +5948,20 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-releases@^2.0.19: - version "2.0.19" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" - integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== +node-exports-info@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/node-exports-info/-/node-exports-info-1.6.0.tgz#1aedafb01a966059c9a5e791a94a94d93f5c2a13" + integrity sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw== + dependencies: + array.prototype.flatmap "^1.3.3" + es-errors "^1.3.0" + object.entries "^1.1.9" + semver "^6.3.1" + +node-releases@^2.0.27: + version "2.0.36" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.36.tgz#99fd6552aaeda9e17c4713b57a63964a2e325e9d" + integrity sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA== normalize-svg-path@^1.1.0: version "1.1.0" @@ -5357,7 +5992,7 @@ object-assign@^4.1.0, object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.13.3: +object-inspect@^1.13.3, object-inspect@^1.13.4: version "1.13.4" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== @@ -5392,7 +6027,7 @@ object.assign@^4.1.4, object.assign@^4.1.7: has-symbols "^1.1.0" object-keys "^1.1.1" -object.entries@^1.1.8: +object.entries@^1.1.9: version "1.1.9" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.9.tgz#e4770a6a1444afb61bd39f984018b5bede25f8b3" integrity sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw== @@ -5421,7 +6056,7 @@ object.groupby@^1.0.3: define-properties "^1.2.1" es-abstract "^1.23.2" -object.values@^1.1.6, object.values@^1.2.0, object.values@^1.2.1: +object.values@^1.1.6, object.values@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216" integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== @@ -5476,15 +6111,20 @@ pako@^0.2.5: resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== +pako@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== papaparse@^5.4.1: - version "5.5.2" - resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.5.2.tgz#fb67cc5a03ba8930cb435dc4641a25d6804bd4d7" - integrity sha512-PZXg8UuAc4PcVwLosEEDYjPyfWnTEhOrUfdv+3Bx+NuAb+5NhDmXzg5fHWmdCh1mP5p7JAZfFr3IMQfcntNAdA== + version "5.5.3" + resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.5.3.tgz#07f8994dec516c6dab266e952bed68e1de59fa9a" + integrity sha512-5QvjGxYVjxO59MGU2lHVYpRWBBtKHnlIAcSe1uNFCkkptUh63NFRj0FJQm7nR67puEruUci/ZkjmEFrjCAyP4A== parchment@^1.1.2, parchment@^1.1.4: version "1.1.4" @@ -5498,18 +6138,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-entities@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" - integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== - dependencies: - character-entities "^1.0.0" - character-entities-legacy "^1.0.0" - character-reference-invalid "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.0" - is-hexadecimal "^1.0.0" - parse-entities@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.2.tgz#61d46f5ed28e4ee62e9ddc43d6b010188443f159" @@ -5538,6 +6166,13 @@ parse-svg-path@^0.1.2: resolved "https://registry.yarnpkg.com/parse-svg-path/-/parse-svg-path-0.1.2.tgz#7a7ec0d1eb06fa5325c7d3e009b859a09b5d49eb" integrity sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ== +parse5@^7.0.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.3.0.tgz#d7e224fa72399c7a175099f45fc2ad024b05ec05" + integrity sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw== + dependencies: + entities "^6.0.0" + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -5573,10 +6208,10 @@ picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -picomatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" - integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== +picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== possible-typed-array-names@^1.0.0: version "1.1.0" @@ -5602,16 +6237,11 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prismjs@^1.27.0: +prismjs@^1.30.0: version "1.30.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.30.0.tgz#d9709969d9d4e16403f6f348c63553b19f0975a9" integrity sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw== -prismjs@~1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" - integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -5631,22 +6261,15 @@ property-expr@^2.0.5: resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.6.tgz#f77bc00d5928a6c748414ad12882e83f24aec1e8" integrity sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA== -property-information@^5.0.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" - integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== - dependencies: - xtend "^4.0.0" - property-information@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.0.0.tgz#3508a6d6b0b8eb3ca6eb2c6623b164d2ed2ab112" - integrity sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg== + version "7.1.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.1.0.tgz#b622e8646e02b580205415586b40804d3e8bfd5d" + integrity sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ== -prosemirror-changeset@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz#dae94b63aec618fac7bb9061648e6e2a79988383" - integrity sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ== +prosemirror-changeset@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/prosemirror-changeset/-/prosemirror-changeset-2.4.0.tgz#8d8ea0290cb9545c298ec427ac3a8f298c39170f" + integrity sha512-LvqH2v7Q2SF6yxatuPP2e8vSUKS/L+xAU7dPDC4RMyHMhZoGDfBC74mYuyYF4gLqOEG758wajtyhNnsTkuhvng== dependencies: prosemirror-transform "^1.0.0" @@ -5658,27 +6281,27 @@ prosemirror-collab@^1.3.1: prosemirror-state "^1.0.0" prosemirror-commands@^1.0.0, prosemirror-commands@^1.6.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.7.0.tgz#c0a60c808f51157caa146922494fc59fe257f27c" - integrity sha512-6toodS4R/Aah5pdsrIwnTYPEjW70SlO5a66oo5Kk+CIrgJz3ukOoS+FYDGqvQlAX5PxoGWDX1oD++tn5X3pyRA== + version "1.7.1" + resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.7.1.tgz#d101fef85618b1be53d5b99ea17bee5600781b38" + integrity sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w== dependencies: prosemirror-model "^1.0.0" prosemirror-state "^1.0.0" prosemirror-transform "^1.10.2" prosemirror-dropcursor@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz#49b9fb2f583e0d0f4021ff87db825faa2be2832d" - integrity sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw== + version "1.8.2" + resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.2.tgz#2ed30c4796109ddeb1cf7282372b3850528b7228" + integrity sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw== dependencies: prosemirror-state "^1.0.0" prosemirror-transform "^1.1.0" prosemirror-view "^1.1.0" prosemirror-gapcursor@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz#5fa336b83789c6199a7341c9493587e249215cb4" - integrity sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ== + version "1.4.1" + resolved "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.4.1.tgz#da33c905fece147df577342c06f4929b25d365ee" + integrity sha512-pMdYaEnjNMSwl11yjEGtgTmLkR08m/Vl+Jj443167p9eB3HVQKhYCc4gmHVDsLPODfZfjr/MmirsdyZziXbQKw== dependencies: prosemirror-keymap "^1.0.0" prosemirror-model "^1.0.0" @@ -5686,9 +6309,9 @@ prosemirror-gapcursor@^1.3.2: prosemirror-view "^1.0.0" prosemirror-history@^1.0.0, prosemirror-history@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/prosemirror-history/-/prosemirror-history-1.4.1.tgz#cc370a46fb629e83a33946a0e12612e934ab8b98" - integrity sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ== + version "1.5.0" + resolved "https://registry.yarnpkg.com/prosemirror-history/-/prosemirror-history-1.5.0.tgz#ee21fc5de85a1473e3e3752015ffd6d649a06859" + integrity sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg== dependencies: prosemirror-state "^1.2.2" prosemirror-transform "^1.0.0" @@ -5696,44 +6319,44 @@ prosemirror-history@^1.0.0, prosemirror-history@^1.4.1: rope-sequence "^1.3.0" prosemirror-inputrules@^1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.5.0.tgz#e22bfaf1d6ea4fe240ad447c184af3d520d43c37" - integrity sha512-K0xJRCmt+uSw7xesnHmcn72yBGTbY45vm8gXI4LZXbx2Z0jwh5aF9xrGQgrVPu0WbyFVFF3E/o9VhJYz6SQWnA== + version "1.5.1" + resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.5.1.tgz#d2e935f6086e3801486b09222638f61dae89a570" + integrity sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw== dependencies: prosemirror-state "^1.0.0" prosemirror-transform "^1.0.0" -prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz#14a54763a29c7b2704f561088ccf3384d14eb77e" - integrity sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ== +prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.2.2, prosemirror-keymap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.2.3.tgz#c0f6ab95f75c0b82c97e44eb6aaf29cbfc150472" + integrity sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw== dependencies: prosemirror-state "^1.0.0" w3c-keyname "^2.2.0" prosemirror-markdown@^1.13.1: - version "1.13.2" - resolved "https://registry.yarnpkg.com/prosemirror-markdown/-/prosemirror-markdown-1.13.2.tgz#863eb3fd5f57a444e4378174622b562735b1c503" - integrity sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g== + version "1.13.4" + resolved "https://registry.yarnpkg.com/prosemirror-markdown/-/prosemirror-markdown-1.13.4.tgz#4620e6a0580cd52b5fc8e352c7e04830cd4b3048" + integrity sha512-D98dm4cQ3Hs6EmjK500TdAOew4Z03EV71ajEFiWra3Upr7diytJsjF4mPV2dW+eK5uNectiRj0xFxYI9NLXDbw== dependencies: "@types/markdown-it" "^14.0.0" markdown-it "^14.0.0" prosemirror-model "^1.25.0" prosemirror-menu@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz#3cfdc7c06d10f9fbd1bce29082c498bd11a0a79a" - integrity sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/prosemirror-menu/-/prosemirror-menu-1.3.0.tgz#f51e25259b91d7c35ad7b65fc0c92d838404e177" + integrity sha512-TImyPXCHPcDsSka2/lwJ6WjTASr4re/qWq1yoTTuLOqfXucwF6VcRa2LWCkM/EyTD1UO3CUwiH8qURJoWJRxwg== dependencies: crelt "^1.0.0" prosemirror-commands "^1.0.0" prosemirror-history "^1.0.0" prosemirror-state "^1.0.0" -prosemirror-model@^1.0.0, prosemirror-model@^1.20.0, prosemirror-model@^1.21.0, prosemirror-model@^1.23.0, prosemirror-model@^1.24.1, prosemirror-model@^1.25.0: - version "1.25.0" - resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.25.0.tgz#c147113edc0718a14f03881e4c20367d0221f7af" - integrity sha512-/8XUmxWf0pkj2BmtqZHYJipTBMHIdVjuvFzMvEoxrtyGNmfvdhBiRwYt/eFwy2wA9DtBW3RLqvZnjurEkHaFCw== +prosemirror-model@^1.0.0, prosemirror-model@^1.20.0, prosemirror-model@^1.21.0, prosemirror-model@^1.24.1, prosemirror-model@^1.25.0, prosemirror-model@^1.25.4: + version "1.25.4" + resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.25.4.tgz#8ebfbe29ecbee9e5e2e4048c4fe8e363fcd56e7c" + integrity sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA== dependencies: orderedmap "^2.0.0" @@ -5744,7 +6367,7 @@ prosemirror-schema-basic@^1.2.3: dependencies: prosemirror-model "^1.25.0" -prosemirror-schema-list@^1.4.1: +prosemirror-schema-list@^1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.5.1.tgz#5869c8f749e8745c394548bb11820b0feb1e32f5" integrity sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q== @@ -5753,25 +6376,25 @@ prosemirror-schema-list@^1.4.1: prosemirror-state "^1.0.0" prosemirror-transform "^1.7.3" -prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.4.3.tgz#94aecf3ffd54ec37e87aa7179d13508da181a080" - integrity sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q== +prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.4.3, prosemirror-state@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.4.4.tgz#72b5e926f9e92dcee12b62a05fcc8a2de3bf5b39" + integrity sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw== dependencies: prosemirror-model "^1.0.0" prosemirror-transform "^1.0.0" prosemirror-view "^1.27.0" -prosemirror-tables@^1.6.3: - version "1.6.4" - resolved "https://registry.yarnpkg.com/prosemirror-tables/-/prosemirror-tables-1.6.4.tgz#e36ebca70d9e398c4a3b99b122ba86bfc985293d" - integrity sha512-TkDY3Gw52gRFRfRn2f4wJv5WOgAOXLJA2CQJYIJ5+kdFbfj3acR4JUW6LX2e1hiEBiUwvEhzH5a3cZ5YSztpIA== +prosemirror-tables@^1.6.4: + version "1.8.5" + resolved "https://registry.yarnpkg.com/prosemirror-tables/-/prosemirror-tables-1.8.5.tgz#104427012e5a5da1d2a38c122efee8d66bdd5104" + integrity sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw== dependencies: - prosemirror-keymap "^1.2.2" - prosemirror-model "^1.24.1" - prosemirror-state "^1.4.3" - prosemirror-transform "^1.10.2" - prosemirror-view "^1.37.2" + prosemirror-keymap "^1.2.3" + prosemirror-model "^1.25.4" + prosemirror-state "^1.4.4" + prosemirror-transform "^1.10.5" + prosemirror-view "^1.41.4" prosemirror-trailing-node@^3.0.0: version "3.0.0" @@ -5781,17 +6404,17 @@ prosemirror-trailing-node@^3.0.0: "@remirror/core-constants" "3.0.0" escape-string-regexp "^4.0.0" -prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.10.2, prosemirror-transform@^1.7.3: - version "1.10.3" - resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.10.3.tgz#fae660bd7ffef3159aff44bc21e9e044aa31b67d" - integrity sha512-Nhh/+1kZGRINbEHmVu39oynhcap4hWTs/BlU7NnxWj3+l0qi8I1mu67v6mMdEe/ltD8hHvU4FV6PHiCw2VSpMw== +prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.10.2, prosemirror-transform@^1.10.5, prosemirror-transform@^1.7.3: + version "1.11.0" + resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.11.0.tgz#f5c5050354423dc83c6b083f6f1959ec86a3f9ba" + integrity sha512-4I7Ce4KpygXb9bkiPS3hTEk4dSHorfRw8uI0pE8IhxlK2GXsqv5tIA7JUSxtSu7u8APVOTtbUBxTmnHIxVkIJw== dependencies: prosemirror-model "^1.21.0" -prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.27.0, prosemirror-view@^1.31.0, prosemirror-view@^1.37.0, prosemirror-view@^1.37.2: - version "1.38.1" - resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.38.1.tgz#566d30cc8b00a68d6b4c60f5d8a6ab97c82990b3" - integrity sha512-4FH/uM1A4PNyrxXbD+RAbAsf0d/mM0D/wAKSVVWK7o0A9Q/oOXJBrw786mBf2Vnrs/Edly6dH6Z2gsb7zWwaUw== +prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.27.0, prosemirror-view@^1.31.0, prosemirror-view@^1.38.1, prosemirror-view@^1.41.4: + version "1.41.7" + resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.41.7.tgz#61e6f44ac160795c913ead92a282247df9d468f6" + integrity sha512-jUwKNCEIGiqdvhlS91/2QAg21e4dfU5bH2iwmSDQeosXJgKF7smG0YSplOWK0cjSNgIqXe7VXqo7EIfUFJdt3w== dependencies: prosemirror-model "^1.20.0" prosemirror-state "^1.0.0" @@ -5857,10 +6480,10 @@ raf@^3.4.1: dependencies: performance-now "^2.1.0" -react-apexcharts@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/react-apexcharts/-/react-apexcharts-1.7.0.tgz#bbd08425674224adb27c9f2c62477d43bd5de539" - integrity sha512-03oScKJyNLRf0Oe+ihJxFZliBQM9vW3UWwomVn4YVRTN1jsIR58dLWt0v1sb8RwJVHDMbeHiKQueM0KGpn7nOA== +react-apexcharts@1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/react-apexcharts/-/react-apexcharts-1.9.0.tgz#507350f4e17b64b8a1e35a4de485411456cd4676" + integrity sha512-DDBzQFuKdwyCEZnji1yIcjlnV8hRr4VDabS5Y3iuem/WcTq6n4VbjWPzbPm3aOwW4I+rf/gA3zWqhws4z9CwLw== dependencies: prop-types "^15.8.1" @@ -5883,26 +6506,26 @@ react-colorful@^5.6.1: integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw== react-copy-to-clipboard@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz#09aae5ec4c62750ccb2e6421a58725eabc41255c" - integrity sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A== + version "5.1.1" + resolved "https://registry.yarnpkg.com/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.1.tgz#76adb8be03616e99692fcf3f762365ed3fb5ff16" + integrity sha512-s+HrzLyJBxrpGTYXF15dTgMjAJpEPZT/Yp6NytAtZMRngejxt6Pt5WrfFxLAcsqUDU6sY1Jz6tyHwIicE1U2Xg== dependencies: - copy-to-clipboard "^3.3.1" + copy-to-clipboard "^3.3.3" prop-types "^15.8.1" -react-dom@19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.0.0.tgz#43446f1f01c65a4cd7f7588083e686a6726cfb57" - integrity sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ== +react-dom@19.2.4: + version "19.2.4" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.4.tgz#6fac6bd96f7db477d966c7ec17c1a2b1ad8e6591" + integrity sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ== dependencies: - scheduler "^0.25.0" + scheduler "^0.27.0" -react-draggable@^4.0.3, react-draggable@^4.4.5: - version "4.4.6" - resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.6.tgz#63343ee945770881ca1256a5b6fa5c9f5983fe1e" - integrity sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw== +react-draggable@^4.4.6, react-draggable@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.5.0.tgz#0b274ccb6965fcf97ed38fcf7e3cc223bc48cdf5" + integrity sha512-VC+HBLEZ0XJxnOxVAZsdRi8rD04Iz3SiiKOoYzamjylUcju/hP9np/aZdLHf/7WOD268WMoNJMvYfB5yAK45cw== dependencies: - clsx "^1.1.1" + clsx "^2.1.1" prop-types "^15.8.1" react-dropzone@14.3.8: @@ -5914,39 +6537,37 @@ react-dropzone@14.3.8: file-selector "^2.1.0" prop-types "^15.8.1" -react-error-boundary@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-5.0.0.tgz#6b6c7e075c922afb0283147e5b084efa44e68570" - integrity sha512-tnjAxG+IkpLephNcePNA7v6F/QpWLH8He65+DmedchDwg162JZqx4NmbXj0mlAYVVEd81OW7aFhmbsScYfiAFQ== - dependencies: - "@babel/runtime" "^7.12.5" +react-error-boundary@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-6.1.1.tgz#491d655e86c32434ede852755bb649119fdddd89" + integrity sha512-BrYwPOdXi5mqkk5lw+Uvt0ThHx32rCt3BkukS4X23A2AIWDPSGX6iaWTc0y9TU/mHDA/6qOSGel+B2ERkOvD1w== react-fast-compare@^2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9" integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw== -react-grid-layout@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/react-grid-layout/-/react-grid-layout-1.5.1.tgz#800899fb17aa568e5f32574d07c12579f3d76fb2" - integrity sha512-4Fr+kKMk0+m1HL/BWfHxi/lRuaOmDNNKQDcu7m12+NEYcen20wIuZFo789u3qWCyvUsNUxCiyf0eKq4WiJSNYw== +react-grid-layout@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/react-grid-layout/-/react-grid-layout-2.2.2.tgz#8fa1802ffafc21c5aeb087b75809acaac53071a4" + integrity sha512-yNo9pxQWoxHWRAwHGSVT4DEGELYPyQ7+q9lFclb5jcqeFzva63/2F72CryS/jiTIr/SBIlTaDdyjqH+ODg8oBw== dependencies: - clsx "^2.0.0" + clsx "^2.1.1" fast-equals "^4.0.3" prop-types "^15.8.1" - react-draggable "^4.4.5" + react-draggable "^4.4.6" react-resizable "^3.0.5" resize-observer-polyfill "^1.5.1" -react-hook-form@^7.53.0: - version "7.54.2" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.54.2.tgz#8c26ed54c71628dff57ccd3c074b1dd377cfb211" - integrity sha512-eHpAUgUjWbZocoQYUHposymRb4ZP6d0uwUnooL2uOybA9/3tPUvoAKqEWK1WaSiTxxOfTpffNZP7QwlnM3/gEg== +react-hook-form@^7.71.2: + version "7.71.2" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.71.2.tgz#a5f1d2b855be9ecf1af6e74df9b80f54beae7e35" + integrity sha512-1CHvcDYzuRUNOflt4MOq3ZM46AronNJtQ1S7tnX6YN4y72qhgiUItpacZUAQ0TyWYci3yz1X+rXaSxiuEm86PA== -react-hot-toast@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/react-hot-toast/-/react-hot-toast-2.5.2.tgz#b55328966a26add56513e2dc1682e2cb4753c244" - integrity sha512-Tun3BbCxzmXXM7C+NI4qiv6lT0uwGh4oAfeJyNOjYUejTsm35mK9iCaYLGv8cBz9L5YxZLx/2ii7zsIwPtPUdw== +react-hot-toast@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/react-hot-toast/-/react-hot-toast-2.6.0.tgz#4ada6ed3c75c5e42a90d562f55665ff37ee1442b" + integrity sha512-bH+2EBMZ4sdyou/DPrfgIouFpcRLCJ+HoCA32UoAYHn6T3Ur5yfcDCeSr5mwldl6pFOsiocmrXMuoCJ1vV8bWg== dependencies: csstype "^3.1.3" goober "^2.1.16" @@ -5958,13 +6579,14 @@ react-html-parser@^2.0.2: dependencies: htmlparser2 "^3.9.0" -react-i18next@15.4.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-15.4.1.tgz#33f3e89c2f6c68e2bfcbf9aa59986ad42fe78758" - integrity sha512-ahGab+IaSgZmNPYXdV1n+OYky95TGpFwnKRflX/16dY04DsYYKHtVLjeny7sBSCREEcoMbAgSkFiGLF5g5Oofw== +react-i18next@16.2.4: + version "16.2.4" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-16.2.4.tgz#0a6f3eb982b702b8810323c97c09e7452448e03b" + integrity sha512-pvbcPQ+YuQQoRkKBA4VCU9aO8dOgP/vdKEizIYXcAk3+AmI8yQKSJaCzxQQu4Kgg2zWZm3ax9KqHv8ItUlRY0A== dependencies: - "@babel/runtime" "^7.25.0" + "@babel/runtime" "^7.27.6" html-parse-stringify "^3.0.1" + use-sync-external-store "^1.6.0" react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" @@ -5976,10 +6598,10 @@ react-is@^17.0.2: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-is@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.0.0.tgz#d6669fd389ff022a9684f708cf6fa4962d1fea7a" - integrity sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g== +react-is@^19.2.3: + version "19.2.4" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.2.4.tgz#a080758243c572ccd4a63386537654298c99d135" + integrity sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA== react-leaflet-markercluster@^5.0.0-rc.0: version "5.0.0-rc.0" @@ -6016,9 +6638,9 @@ react-markdown@10.1.0: vfile "^6.0.0" react-media-hook@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/react-media-hook/-/react-media-hook-0.5.0.tgz#f830231f31ea80049f8cbaf8058da90ab71e7150" - integrity sha512-OupDgOSCjUUWPiXq3HMoRwpsQry4cGf4vKzh2E984Xtm4I01ZFbq8JwCG/RPqXB9h0qxgzoYLbABC+LIZH8deQ== + version "0.5.1" + resolved "https://registry.yarnpkg.com/react-media-hook/-/react-media-hook-0.5.1.tgz#ca81e10083aa63a27f9840f96cb9ed8c29a5ddce" + integrity sha512-ByvCUelMp25zliJR0gXRFvY86jpNrYRyvlUSeQ3l3N/5kUvRwInJmtJQTt3dfr6gKNjjQbkIwne99C4SoYqQ1g== react-papaparse@^4.4.0: version "4.4.0" @@ -6037,7 +6659,7 @@ react-quill@^2.0.0: lodash "^4.17.4" quill "^1.3.7" -react-redux@9.2.0: +"react-redux@8.x.x || 9.x.x", react-redux@9.2.0: version "9.2.0" resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.2.0.tgz#96c3ab23fb9a3af2cb4654be4b51c989e32366f5" integrity sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g== @@ -6058,33 +6680,33 @@ react-redux@^7.2.0: react-is "^17.0.2" react-resizable@^3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/react-resizable/-/react-resizable-3.0.5.tgz#362721f2efbd094976f1780ae13f1ad7739786c1" - integrity sha512-vKpeHhI5OZvYn82kXOs1bC8aOXktGU5AmKAgaZS4F5JPburCtbmDPqE7Pzp+1kN4+Wb81LlF33VpGwWwtXem+w== + version "3.1.3" + resolved "https://registry.yarnpkg.com/react-resizable/-/react-resizable-3.1.3.tgz#b8c3f8aeffb7b0b2c2306bfc7a742462e58125fb" + integrity sha512-liJBNayhX7qA4tBJiBD321FDhJxgGTJ07uzH5zSORXoE8h7PyEZ8mLqmosST7ppf6C4zUsbd2gzDMmBCfFp9Lw== dependencies: prop-types "15.x" - react-draggable "^4.0.3" + react-draggable "^4.5.0" -react-syntax-highlighter@^15.6.1: - version "15.6.1" - resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-15.6.1.tgz#fa567cb0a9f96be7bbccf2c13a3c4b5657d9543e" - integrity sha512-OqJ2/vL7lEeV5zTJyG7kmARppUjiB9h9udl4qHQjjgEos66z00Ia0OckwYfRxCSFrW8RJIBnsBwQsHZbVPspqg== +react-syntax-highlighter@^16.1.0: + version "16.1.1" + resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-16.1.1.tgz#928459855d375f5cfc8e646071e20d541cebcb52" + integrity sha512-PjVawBGy80C6YbC5DDZJeUjBmC7skaoEUdvfFQediQHgCL7aKyVHe57SaJGfQsloGDac+gCpTfRdtxzWWKmCXA== dependencies: - "@babel/runtime" "^7.3.1" + "@babel/runtime" "^7.28.4" highlight.js "^10.4.1" highlightjs-vue "^1.0.0" lowlight "^1.17.0" - prismjs "^1.27.0" - refractor "^3.6.0" + prismjs "^1.30.0" + refractor "^5.0.0" react-time-ago@^7.3.3: - version "7.3.3" - resolved "https://registry.yarnpkg.com/react-time-ago/-/react-time-ago-7.3.3.tgz#d6344c6397eef5cfed1554545fb9daf5742f16df" - integrity sha512-5kh2Kuu/UhHzcZrGvf3GUrF2d+IXjkIXif5MR2iDWIfSqQuBW27/ejN/tmzJBRyPiryYTgbDIG6AZFJ4RW3yfw== + version "7.4.4" + resolved "https://registry.yarnpkg.com/react-time-ago/-/react-time-ago-7.4.4.tgz#78f39220ddac0cb3ec9b2964630c1b39118cec26" + integrity sha512-g1qqiEgIYgKvK6ySxyVq9nZ/s5mKbugY5fsgc0lB9suwVpbj58f47T578IqSkyzbe+kO6pk1ITmfTOTM8VizRw== dependencies: + javascript-time-ago "^2.3.7" memoize-one "^6.0.0" prop-types "^15.8.1" - raf "^3.4.1" react-transition-group@^4.4.5: version "4.4.5" @@ -6096,23 +6718,25 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" -react-virtuoso@^4.12.8: - version "4.12.8" - resolved "https://registry.yarnpkg.com/react-virtuoso/-/react-virtuoso-4.12.8.tgz#db1dbba617f91c1dcd760aa90e09ef991e65a356" - integrity sha512-NMMKfDBr/+xZZqCQF3tN1SZsh6FwOJkYgThlfnsPLkaEhdyQo0EuWUzu3ix6qjnI7rYwJhMwRGoJBi+aiDfGsA== +react-virtualized-auto-sizer@^1.0.26: + version "1.0.26" + resolved "https://registry.yarnpkg.com/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.26.tgz#e9470ef6a778dc4f1d5fd76305fa2d8b610c357a" + integrity sha512-CblNyiNVw2o+hsa5/49NH2ogGxZ+t+3aweRvNSq7TVjDIlwk7ir4lencEg5HxHeSzwNarSkNkiu0qJSOXtxm5A== -react-window@^1.8.10: - version "1.8.11" - resolved "https://registry.yarnpkg.com/react-window/-/react-window-1.8.11.tgz#a857b48fa85bd77042d59cc460964ff2e0648525" - integrity sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ== - dependencies: - "@babel/runtime" "^7.0.0" - memoize-one ">=3.1.1 <6" +react-virtuoso@^4.18.3: + version "4.18.3" + resolved "https://registry.yarnpkg.com/react-virtuoso/-/react-virtuoso-4.18.3.tgz#12e69600c258bc6e6bd31c2516942ef08700deac" + integrity sha512-fLz/peHAx4Eu0DLHurFEEI7Y6n5CqEoxBh04rgJM9yMuOJah2a9zWg/MUOmZLcp7zuWYorXq5+5bf3IRgkNvWg== -react@19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/react/-/react-19.0.0.tgz#6e1969251b9f108870aa4bff37a0ce9ddfaaabdd" - integrity sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ== +react-window@^2.2.7: + version "2.2.7" + resolved "https://registry.yarnpkg.com/react-window/-/react-window-2.2.7.tgz#7f3d31695d4323701b7e80dfc9bbbe1d4a0c160f" + integrity sha512-SH5nvfUQwGHYyriDUAOt7wfPsfG9Qxd6OdzQxl5oQ4dsSsUicqQvjV7dR+NqZ4coY0fUn3w1jnC5PwzIUWEg5w== + +react@19.2.4: + version "19.2.4" + resolved "https://registry.yarnpkg.com/react/-/react-19.2.4.tgz#438e57baa19b77cb23aab516cf635cd0579ee09a" + integrity sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ== readable-stream@^2.0.2: version "2.3.8" @@ -6146,6 +6770,23 @@ readable-stream@~1.0.17, readable-stream@~1.0.27-1: isarray "0.0.1" string_decoder "~0.10.x" +recharts@^3.7.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/recharts/-/recharts-3.8.0.tgz#461025818cbb858e7ff2e5820b67c6143e9b418d" + integrity sha512-Z/m38DX3L73ExO4Tpc9/iZWHmHnlzWG4njQbxsF5aSjwqmHNDDIm0rdEBArkwsBvR8U6EirlEHiQNYWCVh9sGQ== + dependencies: + "@reduxjs/toolkit" "^1.9.0 || 2.x.x" + clsx "^2.1.1" + decimal.js-light "^2.5.1" + es-toolkit "^1.39.3" + eventemitter3 "^5.0.1" + immer "^10.1.1" + react-redux "8.x.x || 9.x.x" + reselect "5.1.1" + tiny-invariant "^1.3.3" + use-sync-external-store "^1.2.2" + victory-vendor "^37.0.2" + redux-devtools-extension@2.13.9: version "2.13.9" resolved "https://registry.yarnpkg.com/redux-devtools-extension/-/redux-devtools-extension-2.13.9.tgz#6b764e8028b507adcb75a1cae790f71e6be08ae7" @@ -6187,19 +6828,20 @@ reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: get-proto "^1.0.1" which-builtin-type "^1.2.1" -refractor@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.6.0.tgz#ac318f5a0715ead790fcfb0c71f4dd83d977935a" - integrity sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA== +refractor@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/refractor/-/refractor-5.0.0.tgz#85daf0448a6d947f5361796eb22c31733d61d904" + integrity sha512-QXOrHQF5jOpjjLfiNk5GFnWhRXvxjUVnlFxkeDmewR5sXkr3iM46Zo+CnRR8B+MDVqkULW4EcLVcRBNOPXHosw== dependencies: - hastscript "^6.0.0" - parse-entities "^2.0.0" - prismjs "~1.27.0" + "@types/hast" "^3.0.0" + "@types/prismjs" "^1.0.0" + hastscript "^9.0.0" + parse-entities "^4.0.0" -regenerate-unicode-properties@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" - integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== +regenerate-unicode-properties@^10.2.2: + version "10.2.2" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz#aa113812ba899b630658c7623466be71e1f86f66" + integrity sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g== dependencies: regenerate "^1.4.2" @@ -6213,19 +6855,7 @@ regenerator-runtime@^0.13.7: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -regenerator-runtime@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - -regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.3: +regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.3, regexp.prototype.flags@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== @@ -6237,34 +6867,55 @@ regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.3: gopd "^1.2.0" set-function-name "^2.0.2" -regexpu-core@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.2.0.tgz#0e5190d79e542bf294955dccabae04d3c7d53826" - integrity sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA== +regexpu-core@^6.3.1: + version "6.4.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.4.0.tgz#3580ce0c4faedef599eccb146612436b62a176e5" + integrity sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA== dependencies: regenerate "^1.4.2" - regenerate-unicode-properties "^10.2.0" + regenerate-unicode-properties "^10.2.2" regjsgen "^0.8.0" - regjsparser "^0.12.0" + regjsparser "^0.13.0" unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" + unicode-match-property-value-ecmascript "^2.2.1" regjsgen@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== -regjsparser@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.12.0.tgz#0e846df6c6530586429377de56e0475583b088dc" - integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== +regjsparser@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.13.0.tgz#01f8351335cf7898d43686bc74d2dd71c847ecc0" + integrity sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q== dependencies: - jsesc "~3.0.2" + jsesc "~3.1.0" -relative-time-format@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/relative-time-format/-/relative-time-format-1.1.6.tgz#724a5fbc3794b8e0471b6b61419af2ce699eb9f1" - integrity sha512-aCv3juQw4hT1/P/OrVltKWLlp15eW1GRcwP1XdxHrPdZE9MtgqFpegjnTjLhi2m2WI9MT/hQQtE+tjEWG1hgkQ== +rehype-raw@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-7.0.0.tgz#59d7348fd5dbef3807bbaa1d443efd2dd85ecee4" + integrity sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww== + dependencies: + "@types/hast" "^3.0.0" + hast-util-raw "^9.0.0" + vfile "^6.0.0" + +relative-time-format@^1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/relative-time-format/-/relative-time-format-1.1.12.tgz#2236c98c48047664bbff0643283dd4f317d26079" + integrity sha512-qaZBjmRIuXLfuLnzgqpFdBPa5W0euSX1tMnoMUHGPphLwJmrt8xbNiOIHrlvYOD6oNJ0M5owPCZyPibI8de5pQ== + +remark-gfm@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-4.0.1.tgz#33227b2a74397670d357bf05c098eaf8513f0d6b" + integrity sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-gfm "^3.0.0" + micromark-extension-gfm "^3.0.0" + remark-parse "^11.0.0" + remark-stringify "^11.0.0" + unified "^11.0.0" remark-parse@^11.0.0: version "11.0.0" @@ -6277,9 +6928,9 @@ remark-parse@^11.0.0: unified "^11.0.0" remark-rehype@^11.0.0: - version "11.1.1" - resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.1.1.tgz#f864dd2947889a11997c0a2667cd6b38f685bca7" - integrity sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ== + version "11.1.2" + resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.1.2.tgz#2addaadda80ca9bd9aa0da763e74d16327683b37" + integrity sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw== dependencies: "@types/hast" "^3.0.0" "@types/mdast" "^4.0.0" @@ -6287,6 +6938,15 @@ remark-rehype@^11.0.0: unified "^11.0.0" vfile "^6.0.0" +remark-stringify@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-11.0.0.tgz#4c5b01dd711c269df1aaae11743eb7e2e7636fd3" + integrity sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-to-markdown "^2.0.0" + unified "^11.0.0" + remove-accents@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/remove-accents/-/remove-accents-0.5.0.tgz#77991f37ba212afba162e375b627631315bed687" @@ -6297,7 +6957,7 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -reselect@^5.1.0: +reselect@5.1.1, reselect@^5.1.0, reselect@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.1.1.tgz#c766b1eb5d558291e5e550298adb0becc24bb72e" integrity sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w== @@ -6317,21 +6977,24 @@ resolve-pkg-maps@^1.0.0: resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== -resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.4: - version "1.22.10" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" - integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== +resolve@^1.19.0, resolve@^1.22.11, resolve@^1.22.4: + version "1.22.11" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" + integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== dependencies: - is-core-module "^2.16.0" + is-core-module "^2.16.1" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" resolve@^2.0.0-next.5: - version "2.0.0-next.5" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" - integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + version "2.0.0-next.6" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.6.tgz#b3961812be69ace7b3bc35d5bf259434681294af" + integrity sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA== dependencies: - is-core-module "^2.13.0" + es-errors "^1.3.0" + is-core-module "^2.16.1" + node-exports-info "^1.6.0" + object-keys "^1.1.1" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -6400,15 +7063,20 @@ safe-regex-test@^1.0.3, safe-regex-test@^1.1.0: es-errors "^1.3.0" is-regex "^1.2.1" +sax@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.6.0.tgz#da59637629307b97e7c4cb28e080a7bc38560d5b" + integrity sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA== + scheduler@0.25.0-rc-603e6108-20241029: version "0.25.0-rc-603e6108-20241029" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0-rc-603e6108-20241029.tgz#684dd96647e104d23e0d29a37f18937daf82df19" integrity sha512-pFwF6H1XrSdYYNLfOcGlM28/j8CGLu8IvdrxqhjWULe2bPcKiKW4CV+OWqR/9fT52mywx65l7ysNkjLKBda7eA== -scheduler@^0.25.0: - version "0.25.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0.tgz#336cd9768e8cceebf52d3c80e3dcf5de23e7e015" - integrity sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA== +scheduler@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.27.0.tgz#0c4ef82d67d1e5c1e359e8fc76d3a87f045fe5bd" + integrity sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q== section-matter@^1.0.0: version "1.0.0" @@ -6423,10 +7091,10 @@ semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.6.0, semver@^7.6.3, semver@^7.7.1: - version "7.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" - integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== +semver@^7.7.1, semver@^7.7.3: + version "7.7.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" + integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== set-function-length@^1.2.2: version "1.2.2" @@ -6459,34 +7127,39 @@ set-proto@^1.0.0: es-errors "^1.3.0" es-object-atoms "^1.0.0" -sharp@^0.33.5: - version "0.33.5" - resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.33.5.tgz#13e0e4130cc309d6a9497596715240b2ec0c594e" - integrity sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw== +sharp@^0.34.5: + version "0.34.5" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.34.5.tgz#b6f148e4b8c61f1797bde11a9d1cfebbae2c57b0" + integrity sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg== dependencies: - color "^4.2.3" - detect-libc "^2.0.3" - semver "^7.6.3" + "@img/colour" "^1.0.0" + detect-libc "^2.1.2" + semver "^7.7.3" optionalDependencies: - "@img/sharp-darwin-arm64" "0.33.5" - "@img/sharp-darwin-x64" "0.33.5" - "@img/sharp-libvips-darwin-arm64" "1.0.4" - "@img/sharp-libvips-darwin-x64" "1.0.4" - "@img/sharp-libvips-linux-arm" "1.0.5" - "@img/sharp-libvips-linux-arm64" "1.0.4" - "@img/sharp-libvips-linux-s390x" "1.0.4" - "@img/sharp-libvips-linux-x64" "1.0.4" - "@img/sharp-libvips-linuxmusl-arm64" "1.0.4" - "@img/sharp-libvips-linuxmusl-x64" "1.0.4" - "@img/sharp-linux-arm" "0.33.5" - "@img/sharp-linux-arm64" "0.33.5" - "@img/sharp-linux-s390x" "0.33.5" - "@img/sharp-linux-x64" "0.33.5" - "@img/sharp-linuxmusl-arm64" "0.33.5" - "@img/sharp-linuxmusl-x64" "0.33.5" - "@img/sharp-wasm32" "0.33.5" - "@img/sharp-win32-ia32" "0.33.5" - "@img/sharp-win32-x64" "0.33.5" + "@img/sharp-darwin-arm64" "0.34.5" + "@img/sharp-darwin-x64" "0.34.5" + "@img/sharp-libvips-darwin-arm64" "1.2.4" + "@img/sharp-libvips-darwin-x64" "1.2.4" + "@img/sharp-libvips-linux-arm" "1.2.4" + "@img/sharp-libvips-linux-arm64" "1.2.4" + "@img/sharp-libvips-linux-ppc64" "1.2.4" + "@img/sharp-libvips-linux-riscv64" "1.2.4" + "@img/sharp-libvips-linux-s390x" "1.2.4" + "@img/sharp-libvips-linux-x64" "1.2.4" + "@img/sharp-libvips-linuxmusl-arm64" "1.2.4" + "@img/sharp-libvips-linuxmusl-x64" "1.2.4" + "@img/sharp-linux-arm" "0.34.5" + "@img/sharp-linux-arm64" "0.34.5" + "@img/sharp-linux-ppc64" "0.34.5" + "@img/sharp-linux-riscv64" "0.34.5" + "@img/sharp-linux-s390x" "0.34.5" + "@img/sharp-linux-x64" "0.34.5" + "@img/sharp-linuxmusl-arm64" "0.34.5" + "@img/sharp-linuxmusl-x64" "0.34.5" + "@img/sharp-wasm32" "0.34.5" + "@img/sharp-win32-arm64" "0.34.5" + "@img/sharp-win32-ia32" "0.34.5" + "@img/sharp-win32-x64" "0.34.5" shebang-command@^2.0.0: version "2.0.0" @@ -6541,32 +7214,33 @@ side-channel@^1.1.0: side-channel-weakmap "^1.0.2" simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + version "0.2.4" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.4.tgz#a8d11a45a11600d6a1ecdff6363329e3648c3667" + integrity sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw== dependencies: is-arrayish "^0.3.1" -simplebar-core@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/simplebar-core/-/simplebar-core-1.3.0.tgz#166cfbb4c1a2dc0a60833fe8e1fd590cdb32158b" - integrity sha512-LpWl3w0caz0bl322E68qsrRPpIn+rWBGAaEJ0lUJA7Xpr2sw92AkIhg6VWj988IefLXYh50ILatfAnbNoCFrlA== +simplebar-core@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/simplebar-core/-/simplebar-core-1.3.2.tgz#e249caf38625afb7c316b2d219b66afd6227e301" + integrity sha512-qKgTTuTqapjsFGkNhCjyPhysnbZGpQqNmjk0nOYjFN5ordC/Wjvg+RbYCyMSnW60l/Z0ZS82GbNltly6PMUH1w== dependencies: lodash "^4.17.21" + lodash-es "^4.17.21" -simplebar-react@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/simplebar-react/-/simplebar-react-3.3.0.tgz#7170f29f0ea785c6881db81a8447c408fbc9056e" - integrity sha512-sxzy+xRuU41He4tT4QLGYutchtOuye/xxVeq7xhyOiwMiHNK1ZpvbOTyy+7P0i7gfpXLGTJ8Bep8+4Mhdgtz/g== +simplebar-react@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/simplebar-react/-/simplebar-react-3.3.2.tgz#699c9837f4ada71335b3eca9f8a2b788a559bda1" + integrity sha512-ZsgcQhKLtt5ra0BRIJeApfkTBQCa1vUPA/WXI4HcYReFt+oCEOvdVz6rR/XsGJcKxTlCRPmdGx1uJIUChupo+A== dependencies: - simplebar-core "^1.3.0" + simplebar-core "^1.3.2" -simplebar@6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/simplebar/-/simplebar-6.3.0.tgz#5581558e532d9ecf6e42faef932d81537f94d3ca" - integrity sha512-SQJfKSvUPJxlOhYCpswEn5ke5WQGsgDZNmpScWL+MKXgYpCDTq1bGiv6uWXwSHMYTkMco32fDUL35sVwCMmzCw== +simplebar@6.3.3: + version "6.3.3" + resolved "https://registry.yarnpkg.com/simplebar/-/simplebar-6.3.3.tgz#08b4763e2a8e2b121f444fba613797a82ac33481" + integrity sha512-ni9cIiA8GRitiaenV7A/gh8nTStiVqO3gLxrfCMmq6CSy/pB+fz+QxqvJLo142QHb2Tvgvr8ILwZxf3qzAq7pg== dependencies: - simplebar-core "^1.3.0" + simplebar-core "^1.3.2" snake-case@^3.0.4: version "3.0.4" @@ -6586,11 +7260,6 @@ source-map@^0.5.7: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== -space-separated-tokens@^1.0.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" - integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== - space-separated-tokens@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" @@ -6616,10 +7285,13 @@ state-local@^1.0.6: resolved "https://registry.yarnpkg.com/state-local/-/state-local-1.0.7.tgz#da50211d07f05748d53009bee46307a37db386d5" integrity sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w== -streamsearch@^1.1.0: +stop-iteration-iterator@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" - integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad" + integrity sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ== + dependencies: + es-errors "^1.3.0" + internal-slot "^1.1.0" string.prototype.includes@^2.0.1: version "2.0.1" @@ -6670,7 +7342,7 @@ string.prototype.trim@^1.2.10: es-object-atoms "^1.0.0" has-property-descriptors "^1.0.2" -string.prototype.trimend@^1.0.8, string.prototype.trimend@^1.0.9: +string.prototype.trimend@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942" integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== @@ -6732,18 +7404,18 @@ strip-json-comments@^3.1.1: integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== style-to-js@^1.0.0: - version "1.1.16" - resolved "https://registry.yarnpkg.com/style-to-js/-/style-to-js-1.1.16.tgz#e6bd6cd29e250bcf8fa5e6591d07ced7575dbe7a" - integrity sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw== + version "1.1.21" + resolved "https://registry.yarnpkg.com/style-to-js/-/style-to-js-1.1.21.tgz#2908941187f857e79e28e9cd78008b9a0b3e0e8d" + integrity sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ== dependencies: - style-to-object "1.0.8" + style-to-object "1.0.14" -style-to-object@1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.8.tgz#67a29bca47eaa587db18118d68f9d95955e81292" - integrity sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g== +style-to-object@1.0.14: + version "1.0.14" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.14.tgz#1d22f0e7266bb8c6d8cae5caf4ec4f005e08f611" + integrity sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw== dependencies: - inline-style-parser "0.2.4" + inline-style-parser "0.2.7" styled-jsx@5.1.6: version "5.1.6" @@ -6792,17 +7464,17 @@ svg-pathdata@^6.0.3: integrity sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw== svgo@^3.0.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.2.tgz#ad58002652dffbb5986fc9716afe52d869ecbda8" - integrity sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw== + version "3.3.3" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.3.tgz#8246aee0b08791fde3b0ed22b5661b471fadf58e" + integrity sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng== dependencies: - "@trysound/sax" "0.2.0" commander "^7.2.0" css-select "^5.1.0" css-tree "^2.3.1" css-what "^6.1.0" csso "^5.0.5" picocolors "^1.0.0" + sax "^1.5.0" text-segmentation@^1.0.3: version "1.0.3" @@ -6834,7 +7506,7 @@ tiny-inflate@^1.0.0, tiny-inflate@^1.0.3: resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== -tiny-invariant@^1.0.6: +tiny-invariant@^1.0.6, tiny-invariant@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== @@ -6844,20 +7516,13 @@ tiny-warning@^1.0.2: resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== -tinyglobby@^0.2.12: - version "0.2.12" - resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.12.tgz#ac941a42e0c5773bd0b5d08f32de82e74a1a61b5" - integrity sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww== - dependencies: - fdir "^6.4.3" - picomatch "^4.0.2" - -tippy.js@^6.3.7: - version "6.3.7" - resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.7.tgz#8ccfb651d642010ed9a32ff29b0e9e19c5b8c61c" - integrity sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ== +tinyglobby@^0.2.13, tinyglobby@^0.2.15: + version "0.2.15" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== dependencies: - "@popperjs/core" "^2.9.0" + fdir "^6.5.0" + picomatch "^4.0.3" to-regex-range@^5.0.1: version "5.0.1" @@ -6886,10 +7551,10 @@ trough@^2.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f" integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== -ts-api-utils@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" - integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== +ts-api-utils@^2.4.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.5.0.tgz#4acd4a155e22734990a5ed1fe9e97f113bcb37c1" + integrity sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA== tsconfig-paths@^3.15.0: version "3.15.0" @@ -6906,15 +7571,6 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.4.0, tslib@^2.7.0, tslib@^2.8.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== -tss-react@^4.8.3: - version "4.9.15" - resolved "https://registry.yarnpkg.com/tss-react/-/tss-react-4.9.15.tgz#a26fc24889a462ab4858094bc5b33cdda36e45ab" - integrity sha512-rLiEmDwUtln9RKTUR/ZPYBrufF0Tq/PFggO1M7P8M3/FAcodPQ746Ug9MCEFkURKDlntN17+Oja0DMMz5yBnsQ== - dependencies: - "@emotion/cache" "*" - "@emotion/serialize" "*" - "@emotion/utils" "*" - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -6927,11 +7583,6 @@ type-fest@^2.19.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== -type-fest@^3.12.0: - version "3.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" - integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== - typed-array-buffer@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" @@ -6977,10 +7628,20 @@ typed-array-length@^1.0.7: possible-typed-array-names "^1.0.0" reflect.getprototypeof "^1.0.6" -typescript@5.8.2: - version "5.8.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.2.tgz#8170b3702f74b79db2e5a96207c15e65807999e4" - integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ== +typescript-eslint@^8.46.0: + version "8.57.1" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.57.1.tgz#573f97d3e48bbb67290b47dde1b7cb3b5d01dc4f" + integrity sha512-fLvZWf+cAGw3tqMCYzGIU6yR8K+Y9NT2z23RwOjlNFF2HwSB3KhdEFI5lSBv8tNmFkkBShSjsCjzx1vahZfISA== + dependencies: + "@typescript-eslint/eslint-plugin" "8.57.1" + "@typescript-eslint/parser" "8.57.1" + "@typescript-eslint/typescript-estree" "8.57.1" + "@typescript-eslint/utils" "8.57.1" + +typescript@5.9.3: + version "5.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f" + integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== uc.micro@^2.0.0, uc.micro@^2.1.0: version "2.1.0" @@ -6997,10 +7658,10 @@ unbox-primitive@^1.1.0: has-symbols "^1.1.0" which-boxed-primitive "^1.1.1" -undici-types@~6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" - integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== +undici-types@~7.18.0: + version "7.18.2" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.18.2.tgz#29357a89e7b7ca4aef3bf0fd3fd0cd73884229e9" + integrity sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.1" @@ -7015,10 +7676,10 @@ unicode-match-property-ecmascript@^2.0.0: unicode-canonical-property-names-ecmascript "^2.0.0" unicode-property-aliases-ecmascript "^2.0.0" -unicode-match-property-value-ecmascript@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz#a0401aee72714598f739b68b104e4fe3a0cb3c71" - integrity sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg== +unicode-match-property-value-ecmascript@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz#65a7adfad8574c219890e219285ce4c64ed67eaa" + integrity sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg== unicode-properties@^1.4.0, unicode-properties@^1.4.1: version "1.4.1" @@ -7029,9 +7690,9 @@ unicode-properties@^1.4.0, unicode-properties@^1.4.1: unicode-trie "^2.0.0" unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + version "2.2.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz#301d4f8a43d2b75c97adfad87c9dd5350c9475d1" + integrity sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ== unicode-trie@^2.0.0: version "2.0.0" @@ -7055,9 +7716,9 @@ unified@^11.0.0: vfile "^6.0.0" unist-util-is@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" - integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== + version "6.0.1" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.1.tgz#d0a3f86f2dd0db7acd7d8c2478080b5c67f9c6a9" + integrity sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g== dependencies: "@types/unist" "^3.0.0" @@ -7076,47 +7737,53 @@ unist-util-stringify-position@^4.0.0: "@types/unist" "^3.0.0" unist-util-visit-parents@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" - integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== + version "6.0.2" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz#777df7fb98652ce16b4b7cd999d0a1a40efa3a02" + integrity sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ== dependencies: "@types/unist" "^3.0.0" unist-util-is "^6.0.0" unist-util-visit@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" - integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== + version "5.1.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.1.0.tgz#9a2a28b0aa76a15e0da70a08a5863a2f060e2468" + integrity sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg== dependencies: "@types/unist" "^3.0.0" unist-util-is "^6.0.0" unist-util-visit-parents "^6.0.0" -unrs-resolver@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.3.2.tgz#7c1dc0adabb1c3971c8c5cbdd8c1c2f742286e6d" - integrity sha512-ZKQBC351Ubw0PY8xWhneIfb6dygTQeUHtCcNGd0QB618zabD/WbFMYdRyJ7xeVT+6G82K5v/oyZO0QSHFtbIuw== +unrs-resolver@^1.6.2: + version "1.11.1" + resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.11.1.tgz#be9cd8686c99ef53ecb96df2a473c64d304048a9" + integrity sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg== + dependencies: + napi-postinstall "^0.3.0" optionalDependencies: - "@unrs/resolver-binding-darwin-arm64" "1.3.2" - "@unrs/resolver-binding-darwin-x64" "1.3.2" - "@unrs/resolver-binding-freebsd-x64" "1.3.2" - "@unrs/resolver-binding-linux-arm-gnueabihf" "1.3.2" - "@unrs/resolver-binding-linux-arm-musleabihf" "1.3.2" - "@unrs/resolver-binding-linux-arm64-gnu" "1.3.2" - "@unrs/resolver-binding-linux-arm64-musl" "1.3.2" - "@unrs/resolver-binding-linux-ppc64-gnu" "1.3.2" - "@unrs/resolver-binding-linux-s390x-gnu" "1.3.2" - "@unrs/resolver-binding-linux-x64-gnu" "1.3.2" - "@unrs/resolver-binding-linux-x64-musl" "1.3.2" - "@unrs/resolver-binding-wasm32-wasi" "1.3.2" - "@unrs/resolver-binding-win32-arm64-msvc" "1.3.2" - "@unrs/resolver-binding-win32-ia32-msvc" "1.3.2" - "@unrs/resolver-binding-win32-x64-msvc" "1.3.2" - -update-browserslist-db@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" - integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== + "@unrs/resolver-binding-android-arm-eabi" "1.11.1" + "@unrs/resolver-binding-android-arm64" "1.11.1" + "@unrs/resolver-binding-darwin-arm64" "1.11.1" + "@unrs/resolver-binding-darwin-x64" "1.11.1" + "@unrs/resolver-binding-freebsd-x64" "1.11.1" + "@unrs/resolver-binding-linux-arm-gnueabihf" "1.11.1" + "@unrs/resolver-binding-linux-arm-musleabihf" "1.11.1" + "@unrs/resolver-binding-linux-arm64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-arm64-musl" "1.11.1" + "@unrs/resolver-binding-linux-ppc64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-riscv64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-riscv64-musl" "1.11.1" + "@unrs/resolver-binding-linux-s390x-gnu" "1.11.1" + "@unrs/resolver-binding-linux-x64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-x64-musl" "1.11.1" + "@unrs/resolver-binding-wasm32-wasi" "1.11.1" + "@unrs/resolver-binding-win32-arm64-msvc" "1.11.1" + "@unrs/resolver-binding-win32-ia32-msvc" "1.11.1" + "@unrs/resolver-binding-win32-x64-msvc" "1.11.1" + +update-browserslist-db@^1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" + integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== dependencies: escalade "^3.2.0" picocolors "^1.1.1" @@ -7128,15 +7795,20 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +use-debounce@^10.0.4: + version "10.1.0" + resolved "https://registry.yarnpkg.com/use-debounce/-/use-debounce-10.1.0.tgz#966a6da947ca027705dc1f317f8e3ad163416330" + integrity sha512-lu87Za35V3n/MyMoEpD5zJv0k7hCn0p+V/fK2kWD+3k2u3kOCwO593UArbczg1fhfs2rqPEnHpULJ3KmGdDzvg== + use-memo-one@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.3.tgz#2fd2e43a2169eabc7496960ace8c79efef975e99" integrity sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ== -use-sync-external-store@^1, use-sync-external-store@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz#adbc795d8eeb47029963016cefdf89dc799fcebc" - integrity sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw== +use-sync-external-store@^1.2.2, use-sync-external-store@^1.4.0, use-sync-external-store@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz#b174bfa65cb2b526732d9f2ac0a408027876f32d" + integrity sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w== util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" @@ -7150,10 +7822,18 @@ utrie@^1.0.2: dependencies: base64-arraybuffer "^1.0.2" +vfile-location@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-5.0.3.tgz#cb9eacd20f2b6426d19451e0eafa3d0a846225c3" + integrity sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg== + dependencies: + "@types/unist" "^3.0.0" + vfile "^6.0.0" + vfile-message@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" - integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== + version "4.0.3" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.3.tgz#87b44dddd7b70f0641c2e3ed0864ba73e2ea8df4" + integrity sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw== dependencies: "@types/unist" "^3.0.0" unist-util-stringify-position "^4.0.0" @@ -7166,6 +7846,26 @@ vfile@^6.0.0: "@types/unist" "^3.0.0" vfile-message "^4.0.0" +victory-vendor@^37.0.2: + version "37.3.6" + resolved "https://registry.yarnpkg.com/victory-vendor/-/victory-vendor-37.3.6.tgz#401ac4b029a0b3d33e0cba8e8a1d765c487254da" + integrity sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ== + dependencies: + "@types/d3-array" "^3.0.3" + "@types/d3-ease" "^3.0.0" + "@types/d3-interpolate" "^3.0.1" + "@types/d3-scale" "^4.0.2" + "@types/d3-shape" "^3.1.0" + "@types/d3-time" "^3.0.0" + "@types/d3-timer" "^3.0.0" + d3-array "^3.1.6" + d3-ease "^3.0.1" + d3-interpolate "^3.0.1" + d3-scale "^4.0.2" + d3-shape "^3.1.0" + d3-time "^3.0.0" + d3-timer "^3.0.1" + vite-compatible-readable-stream@^3.6.1: version "3.6.1" resolved "https://registry.yarnpkg.com/vite-compatible-readable-stream/-/vite-compatible-readable-stream-3.6.1.tgz#27267aebbdc9893c0ddf65a421279cbb1e31d8cd" @@ -7185,6 +7885,11 @@ w3c-keyname@^2.2.0: resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5" integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ== +web-namespaces@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" + integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== + which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e" @@ -7225,10 +7930,10 @@ which-collection@^1.0.2: is-weakmap "^2.0.2" is-weakset "^2.0.3" -which-typed-array@^1.1.16, which-typed-array@^1.1.18: - version "1.1.19" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" - integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== +which-typed-array@^1.1.16, which-typed-array@^1.1.19: + version "1.1.20" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.20.tgz#3fdb7adfafe0ea69157b1509f3a1cd892bd1d122" + integrity sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg== dependencies: available-typed-arrays "^1.0.7" call-bind "^1.0.8" @@ -7250,11 +7955,6 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -xtend@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - xtend@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" @@ -7282,16 +7982,26 @@ yoga-layout@^3.2.1: resolved "https://registry.yarnpkg.com/yoga-layout/-/yoga-layout-3.2.1.tgz#d2d1ba06f0e81c2eb650c3e5ad8b0b4adde1e843" integrity sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ== -yup@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/yup/-/yup-1.6.1.tgz#8defcff9daaf9feac178029c0e13b616563ada4b" - integrity sha512-JED8pB50qbA4FOkDol0bYF/p60qSEDQqBD0/qeIrUCG1KbPBIQ776fCUNb9ldbPcSTxA69g/47XTo4TqWiuXOA== +yup@1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/yup/-/yup-1.7.1.tgz#4c47c6bb367df08d4bc597f8c4c4f5fc4277f6ab" + integrity sha512-GKHFX2nXul2/4Dtfxhozv701jLQHdf6J34YDh2cEkpqoo8le5Mg6/LrdseVLrFarmFygZTlfIhHx/QKfb/QWXw== dependencies: property-expr "^2.0.5" tiny-case "^1.0.3" toposort "^2.0.2" type-fest "^2.19.0" +"zod-validation-error@^3.5.0 || ^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/zod-validation-error/-/zod-validation-error-4.0.2.tgz#bc605eba49ce0fcd598c127fee1c236be3f22918" + integrity sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ== + +"zod@^3.25.0 || ^4.0.0": + version "4.3.6" + resolved "https://registry.yarnpkg.com/zod/-/zod-4.3.6.tgz#89c56e0aa7d2b05107d894412227087885ab112a" + integrity sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg== + zwitch@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7"