---
title: "GET /resources/{resource_id}/custom-access-levels"
method: GET
path: "/resources/{resource_id}/custom-access-levels"
tags: ["resources"]
---

# GET /resources/{resource_id}/custom-access-levels

`GET /resources/{resource_id}/custom-access-levels`

## Request

- Base URL: `https://api.opal.dev/v1`
- URL: `https://api.opal.dev/v1/resources/{resource_id}/custom-access-levels`
- Auth: HTTP bearer

Returns all custom access levels for a resource. If the resource is a parent type (e.g. GitHubOrg), returns aggregated roles across child resources.

## Path parameters

- `resource_id` string, uuid, required

## Response `200`

The custom access levels for the resource.

- ResourceCustomAccessLevelList: A list of custom access levels.
  - `custom_access_levels` ResourceCustomAccessLevelResponse[], required
    - `resource_custom_access_level_id` string, uuid, required: The unique ID of the custom access level.
    - `resource_id` string, uuid, required: The resource this access level belongs to.
    - `access_level` ResourceAccessLevel, required: # Access Level Object ### Description The `AccessLevel` object is used to represent the level of access that a principal has. The "default" access level is a `AccessLevel` object whose fields are all empty strings. ### Usage Example View the `AccessLevel` of a resource/user or resource/group pair to see the level of access granted to the resource.
      - `access_level_name` string, required: The human-readable name of the access level.
      - `access_level_remote_id` string, required: The machine-readable identifier of the access level.
    - `policy` string, nullable: The policy document for this access level.
    - `requestable_by_default` boolean, required: Whether this role is requestable.
    - `stackable_sensitivity_index` integer, nullable: The sensitivity index in the access hierarchy. Null if unranked.
    - `member_resource_ids` string[], nullable: When addressed via a parent resource, lists the child resource IDs that back this aggregated entry.
    - `created_at` string, date-time
    - `updated_at` string, date-time

## Other responses

- `400`: Unsupported resource type.
- `404`: Resource not found or access denied.

## Changes

- **2026-09-03** `6fb509a33bf8`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/opal/apis/opal-api/changes/resources/:resource_id/custom-access-levels/get.md)

---

[API](https://skmtc.dev/opal/apis/opal-api.md) - [All operations](https://skmtc.dev/opal/apis/opal-api/llms.txt) - [OpenAPI document](https://skmtc.dev/opal/apis/opal-api/revisions/e7877ea96eab?raw)
