# Replace the browser extension blocking configuration

Replaces your organization's browser extension blocking configuration with
the configuration you send. Any rule you don't include is deleted.
A rule with an `id` updates the existing rule with that `id`. A rule without
an `id` is created. Rules are evaluated in the order you send them, and the
first rule that matches wins.
To change part of the configuration, retrieve it first, apply your changes,
and send the complete configuration back.

Endpoint: PUT /v1/controls/browserExtensionBlocking/configuration
Version: v1
Security: x-api-key

## Security:

  - `x-api-key` (unknown)
    apiKey in header x-api-key

## Request body:

  - `application/json` (unknown)
    The complete set of rules to save.

## Request fields (application/json):

  - `globals` (object)
    Reserved for control-wide settings. Empty for this control.
    Example: {}

  - `rules` (array, required)
    Complete list of Browser Extension Blocking rules.

  - `rules.id` (string)
    The rule's unique identifier.
    Example: c478966c-f927-411c-b919-179832d3d50c

  - `rules.name` (string, required)
    A short name to help you recognise the rule.
    Example: Block risky extensions for Finance

  - `rules.enabled` (boolean, required)
    Whether the rule is active.
    Example: true

  - `rules.mode` (string, required)
    What happens to the browser extensions a rule matches.
    Enum: "OFF", "ENABLE", "BLOCK"

  - `rules.title` (string)
    Heading shown to the user when an extension is blocked. Required when mode is BLOCK.
    Example: Extension blocked

  - `rules.subtext` (string)
    Message shown to the user when an extension is blocked. Markdown is supported. Required when mode is BLOCK.
    Example: This extension is not permitted on company devices.

  - `rules.criteria` (object)
    Restrict the rule to apply only under the specified conditions.

  - `rules.criteria.employeeIds` (object)
    Match specific employees by their employee identifier.
    Example: {"matches":["8c4f1d2e-9a0b-4c1d-8e2f-3a4b5c6d7e8f"]}

  - `rules.criteria.employeeIds.matches` (array, required)
    One or more values to match.

  - `rules.criteria.employeeIds.action` (string)
    Apply the rule to the matched values (INCLUDE) or to everything except them (EXCLUDE). Defaults to INCLUDE when omitted.
    Enum: "INCLUDE", "EXCLUDE"

  - `rules.criteria.employeeGroups` (object)
    Match employees by the groups they belong to.
    Example: {"matches":["Finance","Engineering"]}

  - `rules.criteria.browserExtensionProfile` (object)
    Match extensions by the browser profile they are installed in. One of ALL, COMPANY_DOMAINS, or NON_COMPANY_DOMAINS.
    Example: {"matches":["ALL"]}

  - `rules.criteria.browserExtensionProfile.matches` (array, required)
    One or more values to match.

  - `rules.criteria.browserExtensions` (object)
    Match specific extensions by their extension ID, such as a 32-character Chrome extension ID.
    Example: {"matches":["abcdefghijklmnopabcdefghijklmnop"]}

  - `rules.criteria.browserExtensionPermissions` (object)
    Match extensions by the browser permissions they request.
    Example: {"matches":["cookies","<all_urls>"]}

  - `rules.criteria.browserExtensionDeploymentType` (object)
    Match extensions by how they were installed. One of DEVELOPMENT, MANAGED, MANUAL, OTHER, SIDELOAD, or UNKNOWN.
    Example: {"matches":["SIDELOAD"]}

## Request examples:

  - `Remove all rules` (unknown)

  - `Block matching extensions for the Finance group` (unknown)

## Response 200:

  - `200` (unknown)
    OK

## Response 200 fields (application/json):

  - `globals` (object)
    Reserved for control-wide settings. Empty for this control.
    Example: {}

  - `rules` (array, required)
    Complete list of Browser Extension Blocking rules.

  - `rules.id` (string)
    The rule's unique identifier.
    Example: c478966c-f927-411c-b919-179832d3d50c

  - `rules.name` (string, required)
    A short name to help you recognise the rule.
    Example: Block risky extensions for Finance

  - `rules.enabled` (boolean, required)
    Whether the rule is active.
    Example: true

  - `rules.mode` (string, required)
    What happens to the browser extensions a rule matches.
    Enum: "OFF", "ENABLE", "BLOCK"

  - `rules.title` (string)
    Heading shown to the user when an extension is blocked. Required when mode is BLOCK.
    Example: Extension blocked

  - `rules.subtext` (string)
    Message shown to the user when an extension is blocked. Markdown is supported. Required when mode is BLOCK.
    Example: This extension is not permitted on company devices.

  - `rules.criteria` (object)
    Restrict the rule to apply only under the specified conditions.

  - `rules.criteria.employeeIds` (object)
    Match specific employees by their employee identifier.
    Example: {"matches":["8c4f1d2e-9a0b-4c1d-8e2f-3a4b5c6d7e8f"]}

  - `rules.criteria.employeeIds.matches` (array, required)
    One or more values to match.

  - `rules.criteria.employeeIds.action` (string)
    Apply the rule to the matched values (INCLUDE) or to everything except them (EXCLUDE). Defaults to INCLUDE when omitted.
    Enum: "INCLUDE", "EXCLUDE"

  - `rules.criteria.employeeGroups` (object)
    Match employees by the groups they belong to.
    Example: {"matches":["Finance","Engineering"]}

  - `rules.criteria.browserExtensionProfile` (object)
    Match extensions by the browser profile they are installed in. One of ALL, COMPANY_DOMAINS, or NON_COMPANY_DOMAINS.
    Example: {"matches":["ALL"]}

  - `rules.criteria.browserExtensionProfile.matches` (array, required)
    One or more values to match.

  - `rules.criteria.browserExtensions` (object)
    Match specific extensions by their extension ID, such as a 32-character Chrome extension ID.
    Example: {"matches":["abcdefghijklmnopabcdefghijklmnop"]}

  - `rules.criteria.browserExtensionPermissions` (object)
    Match extensions by the browser permissions they request.
    Example: {"matches":["cookies","<all_urls>"]}

  - `rules.criteria.browserExtensionDeploymentType` (object)
    Match extensions by how they were installed. One of DEVELOPMENT, MANAGED, MANUAL, OTHER, SIDELOAD, or UNKNOWN.
    Example: {"matches":["SIDELOAD"]}

## Response 400:

  - `400` (unknown)
    Bad Request

## Response 403:

  - `403` (unknown)
    Forbidden (read-only API key)

## Response 404:

  - `404` (unknown)
    Not Found

