> ## Documentation Index
> Fetch the complete documentation index at: https://docs.opal.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Configure reviewers

> Learn how to configure required reviewers for access requests.

All resources and groups in Opal can be requestable with configurable approval options and reviewers. Use this guide to learn how admins can configure the reviewers of access requests.

## Owners

Owners are users who can be:

* **Reviewers**: Users who can review and approve access requests
* **Admins**: Users who can manage the full configuration of policies for resources and groups

You can manage owners from the **Inventory** > **Owners** tab. There, you can find the following settings for reviewers:

1. **Reviewer Escalation Policy:**

* **Notify everyone**: As the default option, Opal notifies all required reviewers at once. Opal requires just one approval from all required reviewers to complete the request.
* **Reviewer escalation policy**: Once configured, Opal creates an explicit escalation order. In this example, Opal notifies the first reviewer. After the escalation time has passed, Opal notifies the next reviewer, and so on.

2. **Linked reviewer Slack channel:** Opal creates a channel that receives a message for every access request.

3. **Source group:** Opal keeps the user list for this owner synchronized with a group of your choice. You can still edit the escalation path in the Users tab, but you can't add or remove users from this owner directly.

<img src="https://mintcdn.com/opalsecurity/lwwIeFbsleftxaXx/images/docs/c30d98ca7d1deab35cef4945a47293f0c32c62d8ac2a1d68ef933483065b6c23-edit-api-owner.png?fit=max&auto=format&n=lwwIeFbsleftxaXx&q=85&s=7f68708e35ce4c016cb5933e7d540da3" alt="2262" width="3291" height="1617" data-path="images/docs/c30d98ca7d1deab35cef4945a47293f0c32c62d8ac2a1d68ef933483065b6c23-edit-api-owner.png" />

### Empty owner notifications

Access reviews that require owner approval will fail when owner groups are empty. To receive [notifications](/docs/notifications) about empty owner groups, enable **Error notification setting** in **Configuration** > **Organization Settings** > **Advanced**.

## Approval workflows

For resources and groups, the **Request Configuration** section gives admins an overview of the approval logic. You can create multiple request configurations if you want to apply different approval logic for different requesting users, groups, or roles.

<img src="https://mintcdn.com/opalsecurity/fu-nWazMe1LxLhxi/images/docs/32cb76c-reqconfig.png?fit=max&auto=format&n=fu-nWazMe1LxLhxi&q=85&s=33e65e47301c10fad4e31280a0fc5715" alt="2262" width="2958" height="1658" data-path="images/docs/32cb76c-reqconfig.png" />

### Custom notification text

To send users notifications when they are approved for resources or groups, check the **Include custom notification text with approvals** checkbox in the request configuration or template, then specify a custom message.

<img src="https://mintcdn.com/opalsecurity/fu-nWazMe1LxLhxi/images/docs/2f63c57859fe473948967c2d7c5b7b9c60de54a9351ad9702f60731c9de993cf-Screenshot_2024-10-14_at_4.28.52_PM.png?fit=max&auto=format&n=fu-nWazMe1LxLhxi&q=85&s=56c47153805efa8f64b3ece0f5b09196" alt="" width="1602" height="612" data-path="images/docs/2f63c57859fe473948967c2d7c5b7b9c60de54a9351ad9702f60731c9de993cf-Screenshot_2024-10-14_at_4.28.52_PM.png" />

### Approval flow

In the **Approval Flow** section, admins can:

1. Set approval logic to **Auto-Approve**. When this setting is enabled, access requests are automatically approved.

<img src="https://mintcdn.com/opalsecurity/lwwIeFbsleftxaXx/images/docs/b8de301-auto-approve.png?fit=max&auto=format&n=lwwIeFbsleftxaXx&q=85&s=7fe1b140c40bcd6cb2bb8b01a356c549" alt="2262" width="2958" height="1658" data-path="images/docs/b8de301-auto-approve.png" />

2. Configure an **Approval Workflow**.

* You can include up to three approval **stages**.

* Within each stage, approvers can be the resource's **Manager**, an **Owner** or an [**Automation**](/reference/authentication#using-the-api-with-opal-service-users)

* If multiple approvers are selected, admins can choose to require **All** or **Any** reviewers.

  > * **All**: All reviewers must approve the access request to proceed to the next stage. This is **AND** logic.
  > * **Any**: Any reviewers can approve before the access request proceeds to the next stage. This is **OR** logic.

  <img src="https://mintcdn.com/opalsecurity/acfYXMo6zBGl_X3L/images/docs/75067385455d4b31e91e3c39906233ab64d6262aa578a508abb2a6f3444d15fd-image.png?fit=max&auto=format&n=acfYXMo6zBGl_X3L&q=85&s=881d447331d28aa1107414caa92a19f0" alt="" width="3836" height="1838" data-path="images/docs/75067385455d4b31e91e3c39906233ab64d6262aa578a508abb2a6f3444d15fd-image.png" />

## Automate Approvals with Service Users

Service Users can be assigned as request reviewers to automate approvals based on dynamic conditions. This can be integrated with your own tooling to evaluate if users are compliant with your access policies, such as if security training is complete or if the user is in their authorized work location.

<img src="https://mintcdn.com/opalsecurity/mtcaBW7jiUNWhl9m/images/docs/cd622b6e2023601fa526673fe5d7ef6749e4484be2ed0543611254157937c34b-Screenshot_2025-10-29_at_8.56.34PM.png?fit=max&auto=format&n=mtcaBW7jiUNWhl9m&q=85&s=4c2d104ac73571abf5dd97eadb833fc5" alt="" width="3818" height="1822" data-path="images/docs/cd622b6e2023601fa526673fe5d7ef6749e4484be2ed0543611254157937c34b-Screenshot_2025-10-29_at_8.56.34PM.png" />

When assigning a service user to a request, an automation is configured for that service user. An automation consists of:

1. **When** the automation is triggered. For access requests, use **Assigned to request**.
2. **Then** the action that is taken. For access requests, use **Send webhook**.
3. **Endpoint** that a webhook is sent to. The webhook handler must be able to make Opal API calls to provide an approve, deny, or comment decision.
4. **HMAC Secret** that is used to sign the webhook payload.

<img src="https://mintcdn.com/opalsecurity/acfYXMo6zBGl_X3L/images/docs/8d45c6c0de6eef6768f6c0059ea8e4265d77418cecef8df6ce17ab8f50ea15bd-Screenshot_2025-10-29_at_8.59.01PM.png?fit=max&auto=format&n=acfYXMo6zBGl_X3L&q=85&s=85f36dd99ce2054c1963692eff70083a" alt="" width="3822" height="1820" data-path="images/docs/8d45c6c0de6eef6768f6c0059ea8e4265d77418cecef8df6ce17ab8f50ea15bd-Screenshot_2025-10-29_at_8.59.01PM.png" />

The payload sent in the webhook is:

<CodeGroup>
  ```json json theme={null}
  {
    "created_at": "2025-10-30T01:09:29.332217Z",
    "custom_fields_responses": [],
    "duration_minutes": 60,
    "id": "47cfe906-cf21-4c70-9b76-bf4c749fc4da",
    "reason": "I need admin access to change the branch protection rules.",
    "requested_items_list": [
      {
        "access_level_name": "admin",
        "access_level_remote_id": "admin",
        "name": "another-repo",
        "resource_id": "50031716-6485-4998-bb11-8fb1360385da"
      }
    ],
    "requester_id": "ee84c7db-42f4-4664-a313-fe6102f20e93",
    "status": "PENDING",
    "target_user_id": "ee84c7db-42f4-4664-a313-fe6102f20e93",
    "updated_at": "2025-10-30T01:09:29.382338Z"
  }
  ```
</CodeGroup>

Once the webhook is received, you must make an Opal API request as the service user to one of:

* [POST /requests/\{id}/approve ](/api-reference/requests/post-requests-approve)to approve the request.
* [POST /requests/\{id}/comments](/api-reference/requests/post-requests-comments) to add a comment and leave the request open.
* [POST /requests/\{id}/deny](/api-reference/requests/post-requests-deny) to deny the request.

Follow the instructions under ["Using the API with Opal Service Users"](/reference/authentication#using-the-api-with-opal-service-users) when making your API request.

<img src="https://mintcdn.com/opalsecurity/acfYXMo6zBGl_X3L/images/docs/75067385455d4b31e91e3c39906233ab64d6262aa578a508abb2a6f3444d15fd-image.png?fit=max&auto=format&n=acfYXMo6zBGl_X3L&q=85&s=881d447331d28aa1107414caa92a19f0" alt="" width="3836" height="1838" data-path="images/docs/75067385455d4b31e91e3c39906233ab64d6262aa578a508abb2a6f3444d15fd-image.png" />
