openapi: 3.1.0
info:
contact:
email: hello@opal.dev
name: Opal Team
url: https://www.opal.dev/
description:
The Opal API is a RESTful API that allows you to interact with the
Opal Security platform programmatically.
title: Opal API
version: "1.0"
servers:
- description: Production
url: https://api.opal.dev/v1
# keep tags alphabetized, also add any new tags to the list below
tags:
- name: access-rules
description: Operations related to access rules
- name: apps
description: Operations related to apps
- name: bundles
description: Operations related to bundles
- name: campaigns
description: Operations related to access review campaigns
- name: configuration-templates
description: Operations related to configuration templates
- name: delegations
description: Operations related to request reviewer delegations
- name: event-streams
description: Operations related to event streaming connections
- name: events
description: Operations related to events
- name: groups
description: Operations related to groups
- name: group-bindings
description: Operations related to group bindings
- name: idp-group-mappings
description: Operations related to IDP group mappings
- name: message-channels
description: Operations related to message channels
- name: non-human-identities
description: Operations related to non-human identities
- name: on-call-schedules
description: Operations related to on-call schedules
- name: opal-queries
description: Operations related to OpalQuery
- name: owners
description: Operations related to owners
- name: requests
description: Operations related to requests
- name: resources
description: Operations related to resources
- name: paladin
description: Operations related to Paladin
- name: sessions
description: Operations related to sessions
- name: tags
description: Operations related to tags
- name: tokens
description: Operations related to API tokens
- name: uars
description:
Operations related to UARs. Deprecated in favor of the `campaigns` API.
- name: users
description: Operations related to users
paths:
/apps:
get:
summary: Get apps
description: Returns a list of `App` objects.
operationId: getApps
parameters:
- description: A list of app types to filter by.
example:
- OKTA_DIRECTORY
- GIT_HUB
explode: false
in: query
name: app_type_filter
required: false
schema:
items:
$ref: "#/components/schemas/AppTypeEnum"
type: array
style: form
- description: An owner ID to filter by.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
explode: true
in: query
name: owner_filter
required: false
schema:
format: uuid
type: string
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/AppsList"
description: A list of apps for your organization.
security:
- BearerAuth: []
tags:
- apps
/apps/{app_id}:
get:
summary: Get app by ID
description: Returns an `App` object.
operationId: getApp
parameters:
- description: The ID of the app.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
explode: true
in: path
name: app_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/App"
description: The requested `App`.
security:
- BearerAuth: []
tags:
- apps
/bundles:
get:
summary: Get bundles
description: Returns a list of `Bundle` objects.
operationId: getBundles
parameters:
- description:
The maximum number of bundles to return from the beginning of the
list. Default is 200, max is 1000.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
style: form
- description:
A cursor indicating where to start fetching items after a specific
point.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: A filter for the bundle name.
example: Engineering
explode: true
in: query
name: contains
required: false
schema:
type: string
style: form
responses:
"200":
description: A list of bundles for your organization.
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedBundleList"
security:
- BearerAuth: []
tags:
- bundles
post:
description: Creates a bundle.
operationId: createBundle
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateBundleInfo"
responses:
"201":
description: The bundle successfully created.
content:
application/json:
schema:
$ref: "#/components/schemas/Bundle"
security:
- BearerAuth: []
tags:
- bundles
/bundles/{bundle_id}:
get:
summary: Get bundle by ID
description: Returns a `Bundle` object.
operationId: getBundle
parameters:
- description: The ID of the bundle.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
explode: true
in: path
name: bundle_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Bundle"
description: The requested `Bundle`.
security:
- BearerAuth: []
tags:
- bundles
delete:
description: Deletes a bundle.
operationId: deleteBundle
parameters:
- description: The ID of the bundle.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
explode: true
in: path
name: bundle_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: The bundle was successfully deleted.
security:
- BearerAuth: []
tags:
- bundles
put:
description: Updates a bundle.
operationId: updateBundle
parameters:
- description: The ID of the bundle to be updated.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
in: path
name: bundle_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/Bundle"
responses:
"200":
description: The bundle was successfully updated.
content:
application/json:
schema:
$ref: "#/components/schemas/Bundle"
"204":
description: No changes detected (no-op)
security:
- BearerAuth: []
tags:
- bundles
/bundles/{bundle_id}/resources:
get:
description: Returns a list of `Resource` objects in a given bundle.
operationId: getBundleResources
parameters:
- description: The ID of the bundle.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
in: path
name: bundle_id
required: true
schema:
format: uuid
type: string
style: simple
- description:
The maximum number of resources to return from the beginning of the
list. Default is 200, max is 1000.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
style: form
- description:
A cursor indicating where to start fetching items after a specific
point.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedBundleResourceList"
description: A list of resources for the bundle.
security:
- BearerAuth: []
tags:
- bundles
post:
description: Adds a resource to a bundle.
operationId: addBundleResource
parameters:
- description: The ID of the bundle.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
in: path
name: bundle_id
required: true
schema:
format: uuid
type: string
requestBody:
required: false
content:
application/json:
schema:
properties:
resource_id:
description: The ID of the resource to add.
example: 72e75a6f-7183-48c5-94ff-6013f213314b
format: uuid
type: string
access_level_remote_id:
description:
The remote ID of the access level to grant to this user. Required
if the resource being added requires an access level. If
omitted, the default access level remote ID value (empty
string) is used.
example: arn:aws:iam::590304332660:role/AdministratorAccess
type: string
access_level_name:
description:
The name of the access level to grant to this user. If omitted, the
default access level name value (empty string) is used.
example: AdministratorAccess
type: string
required:
- resource_id
responses:
"201":
content:
application/json:
schema:
$ref: "#/components/schemas/BundleResource"
description: Resource was successfully added to the bundle.
security:
- BearerAuth: []
tags:
- bundles
/bundles/{bundle_id}/resources/{resource_id}:
delete:
description: Removes a resource from a bundle.
operationId: removeBundleResource
parameters:
- description: The ID of the bundle.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
in: path
name: bundle_id
required: true
schema:
format: uuid
type: string
- description: The ID of the resource to remove.
example: 72e75a6f-7183-48c5-94ff-6013f213314b
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
- description:
The remote ID of the access level to grant. If omitted, the default
access level remote ID value (empty string) is used.
example: arn:aws:iam::590304332660:role/AdministratorAccess
explode: true
in: query
name: access_level_remote_id
required: false
schema:
type: string
style: form
responses:
"200":
description: Resource was successfully removed from the bundle.
security:
- BearerAuth: []
tags:
- bundles
/bundles/{bundle_id}/groups:
get:
description: Returns a list of `Group` objects in a given bundle.
operationId: getBundleGroups
parameters:
- description: The ID of the bundle.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
in: path
name: bundle_id
required: true
schema:
format: uuid
type: string
style: simple
- description:
The maximum number of groups to return from the beginning of the
list. Default is 200, max is 1000.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
style: form
- description:
A cursor indicating where to start fetching items after a specific
point.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedBundleGroupList"
description: A list of groups for the bundle.
security:
- BearerAuth: []
tags:
- bundles
post:
description: Adds a group to a bundle.
operationId: addBundleGroup
parameters:
- description: The ID of the bundle.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
in: path
name: bundle_id
required: true
schema:
format: uuid
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
group_id:
description: The ID of the group to add.
example: 72e75a6f-7183-48c5-94ff-6013f213314b
format: uuid
type: string
access_level_remote_id:
description:
The remote ID of the access level to grant to this user. Required
if the group being added requires an access level. If
omitted, the default access level remote ID value (empty
string) is used.
example: arn:aws:iam::590304332660:role/AdministratorAccess
type: string
access_level_name:
description:
The name of the access level to grant to this user. If omitted, the
default access level name value (empty string) is used.
example: AdministratorAccess
type: string
required:
- group_id
responses:
"201":
content:
application/json:
schema:
$ref: "#/components/schemas/BundleGroup"
description: Group was successfully added to the bundle.
security:
- BearerAuth: []
tags:
- bundles
/bundles/{bundle_id}/groups/{group_id}:
delete:
description: Removes a group from a bundle.
operationId: removeBundleGroup
parameters:
- description: The ID of the bundle.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
in: path
name: bundle_id
required: true
schema:
format: uuid
type: string
- description: The ID of the group to remove.
example: 72e75a6f-7183-48c5-94ff-6013f213314b
in: path
name: group_id
required: true
schema:
format: uuid
type: string
- description: The remote ID of the access level to remove.
example: arn:aws:iam::590304332660:role/AdministratorAccess
explode: true
in: query
name: access_level_remote_id
required: false
schema:
type: string
style: form
responses:
"200":
description: Group was successfully removed from the bundle.
security:
- BearerAuth: []
tags:
- bundles
/bundles/{bundle_id}/visibility:
get:
description: Gets the visibility of the bundle.
operationId: getBundleVisibility
parameters:
- description: The ID of the bundle.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
in: path
name: bundle_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/VisibilityInfo"
description: The visibility details of a bundle.
security:
- BearerAuth: []
tags:
- bundles
put:
description: Sets the visibility of the bundle.
operationId: setBundleVisibility
parameters:
- description: The ID of the bundle.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
in: path
name: bundle_id
required: true
schema:
format: uuid
type: string
requestBody:
required: true
content:
application/json:
schema:
description:
The visibility details of the bundle. Setting to LIMITED visibility
with no visibility groups will make bundle only visible to
admins and users with access.
$ref: "#/components/schemas/VisibilityInfo"
responses:
"200":
description: The visibility details of the bundle were successfully set.
security:
- BearerAuth: []
tags:
- bundles
/campaigns:
get:
description: Returns a list of `Campaign` objects.
operationId: getCampaigns
parameters:
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: Number of results to return per page. Default is 200.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
maximum: 1000
style: form
- description: Campaign name to filter by. Returns campaigns whose names contain this substring (case-insensitive).
example: Q3 Access Review
explode: true
in: query
name: name
required: false
schema:
type: string
style: form
- description: Filter by campaign status. Status is derived from lifecycle timestamps and review progress.
example: ONGOING
explode: true
in: query
name: status
required: false
schema:
$ref: "#/components/schemas/CampaignStatusEnum"
style: form
- description: Include campaigns created after this timestamp (exclusive). ISO 8601 format.
example: 2026-01-01T00:00:00Z
explode: true
in: query
name: created_at_after
required: false
schema:
type: string
format: date-time
style: form
- description: Include campaigns created before this timestamp (exclusive). ISO 8601 format.
example: 2026-12-31T23:59:59Z
explode: true
in: query
name: created_at_before
required: false
schema:
type: string
format: date-time
style: form
- description: Include campaigns started after this timestamp (exclusive). ISO 8601 format.
example: 2026-01-01T00:00:00Z
explode: true
in: query
name: started_at_after
required: false
schema:
type: string
format: date-time
style: form
- description: Include campaigns started before this timestamp (exclusive). ISO 8601 format.
example: 2026-12-31T23:59:59Z
explode: true
in: query
name: started_at_before
required: false
schema:
type: string
format: date-time
style: form
- description: Include campaigns ended after this timestamp (exclusive). ISO 8601 format.
example: 2026-01-01T00:00:00Z
explode: true
in: query
name: ended_at_after
required: false
schema:
type: string
format: date-time
style: form
- description: Include campaigns ended before this timestamp (exclusive). ISO 8601 format.
example: 2026-12-31T23:59:59Z
explode: true
in: query
name: ended_at_before
required: false
schema:
type: string
format: date-time
style: form
- description: Include campaigns stopped after this timestamp (exclusive). ISO 8601 format.
example: 2026-01-01T00:00:00Z
explode: true
in: query
name: stopped_at_after
required: false
schema:
type: string
format: date-time
style: form
- description: Include campaigns stopped before this timestamp (exclusive). ISO 8601 format.
example: 2026-12-31T23:59:59Z
explode: true
in: query
name: stopped_at_before
required: false
schema:
type: string
format: date-time
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedCampaignsList"
description: A list of campaigns for your organization.
security:
- BearerAuth: []
tags:
- campaigns
post:
description: |
Creates a campaign. Campaign scope only supports direct access edges:
`configuration.query.edgeFilter.directOnly` defaults to `true`, is
always stored as `true`, and passing `false` returns 400.
operationId: createCampaign
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateCampaignInfo"
responses:
"201":
description: The campaign successfully created.
content:
application/json:
schema:
$ref: "#/components/schemas/Campaign"
security:
- BearerAuth: []
tags:
- campaigns
/campaigns/{campaign_id}:
get:
summary: Get campaign by ID
description: Returns a `Campaign` object.
operationId: getCampaign
parameters:
- description: The ID of the campaign.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
explode: true
in: path
name: campaign_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Campaign"
description: The requested `Campaign`.
security:
- BearerAuth: []
tags:
- campaigns
put:
summary: Update campaign
description: |
Partially updates a campaign. Omitted fields are left unchanged.
`configuration.query` and `configuration.reviewer_assignment_policy`
cannot be updated after create; including either field returns 400.
`configuration.cron_expression` and
`configuration.recurring_duration_days` may only be set on template
campaigns; setting them on a one-off campaign returns 400.
`configuration.is_template` is immutable and not accepted on update.
Configuration updates on a stopped or ended (non-template) campaign
return 400. Name-only updates are still allowed.
operationId: updateCampaign
parameters:
- description: The ID of the campaign.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
explode: true
in: path
name: campaign_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateCampaignInfo"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Campaign"
description: The updated `Campaign`.
security:
- BearerAuth: []
tags:
- campaigns
/campaigns/{campaign_id}/start:
post:
summary: Start campaign
description: |
Starts a draft campaign immediately, setting `started_at` and
`started_by_user_id`. Returns 400 if the campaign is not in draft
state, or if it is a recurring template (`is_template: true`) —
templates spawn draft campaigns on their schedule and cannot be
started directly.
operationId: startCampaign
parameters:
- description: The ID of the campaign.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
explode: true
in: path
name: campaign_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Campaign"
description: The started `Campaign`.
security:
- BearerAuth: []
tags:
- campaigns
/campaigns/{campaign_id}/stop:
post:
summary: Stop campaign
description: |
Stops an ongoing campaign immediately, setting `stopped_at` and
`stopped_by_user_id`. Returns 400 if the campaign has not started or
has already stopped.
operationId: stopCampaign
parameters:
- description: The ID of the campaign.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
explode: true
in: path
name: campaign_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: false
content:
application/json:
schema:
$ref: "#/components/schemas/StopCampaignRequest"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Campaign"
description: The stopped `Campaign`.
security:
- BearerAuth: []
tags:
- campaigns
/campaigns/{campaign_id}/end:
post:
summary: End campaign
description: |
Ends a stopped campaign, setting `ended_at` and `ended_by_user_id`,
applying pending access changes, and queuing report generation.
Returns 400 unless the campaign is started and stopped and not already
ended.
operationId: endCampaign
parameters:
- description: The ID of the campaign.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
explode: true
in: path
name: campaign_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Campaign"
description: The ended `Campaign`.
security:
- BearerAuth: []
tags:
- campaigns
/configuration-templates:
get:
description: Returns a list of `ConfigurationTemplate` objects.
operationId: getConfigurationTemplates
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedConfigurationTemplateList"
description: One page worth of configuration templates for your organization.
security:
- BearerAuth: []
tags:
- configuration-templates
post:
description: Creates a configuration template.
operationId: createConfigurationTemplate
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateConfigurationTemplateInfo"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ConfigurationTemplate"
description: The configuration template just created.
security:
- BearerAuth: []
tags:
- configuration-templates
put:
description: Update a configuration template.
operationId: updateConfigurationTemplate
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ConfigurationTemplate"
description: The configuration template just updated.
requestBody:
description: Configuration template to be updated
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateConfigurationTemplateInfo"
security:
- BearerAuth: []
tags:
- configuration-templates
/configuration-templates/{configuration_template_id}:
delete:
description: Deletes a configuration template.
operationId: deleteConfigurationTemplate
parameters:
- description: The ID of the configuration template.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: configuration_template_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: The configuration template was successfully deleted.
security:
- BearerAuth: []
tags:
- configuration-templates
/event-streams:
get:
summary: Get event streams
description: Returns a list of configured event streaming connections for your organization.
operationId: getEventStreams
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/EventStreamList"
description: A list of event streams for your organization.
security:
- BearerAuth: []
tags:
- event-streams
post:
summary: Create event stream
description: Creates a new event streaming connection.
operationId: createEventStream
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateEventStreamInfo"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/EventStream"
description: The event stream just created. Credentials are returned in clear text only on creation.
security:
- BearerAuth: []
tags:
- event-streams
/event-streams/{event_stream_id}:
put:
summary: Update event stream
description: Updates an existing event streaming connection.
operationId: updateEventStream
parameters:
- description: The ID of the event stream.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: event_stream_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateEventStreamInfo"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/EventStream"
description: The updated event stream.
security:
- BearerAuth: []
tags:
- event-streams
delete:
summary: Delete event stream
description: Deletes an event streaming connection.
operationId: deleteEventStream
parameters:
- description: The ID of the event stream.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: event_stream_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: The event stream was successfully deleted.
security:
- BearerAuth: []
tags:
- event-streams
/events:
get:
description: Returns a list of `Event` objects.
operationId: events
parameters:
- description: A start date filter for the events.
examples:
withDate:
summary: Example with date
value: 2021-11-01
withDatetime:
summary: Example with date and time in ISO 8601 datetime format.
value: 2025-01-01T00:00:00Z
explode: true
in: query
name: start_date_filter
required: false
schema:
type: string
style: form
- description: An end date filter for the events.
examples:
withDate:
summary: Example with date
value: 2021-11-12
withDatetime:
summary: Example with date and time in ISO 8601 datetime format.
value: 2025-01-01T00:00:00Z
explode: true
in: query
name: end_date_filter
required: false
schema:
type: string
style: form
- description: An actor filter for the events. Supply the ID of the actor.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
explode: true
in: query
name: actor_filter
required: false
schema:
format: uuid
type: string
style: form
- description: An object filter for the events. Supply the ID of the object.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
explode: true
in: query
name: object_filter
required: false
schema:
format: uuid
type: string
style: form
- description: An event type filter for the events.
example: USER_MFA_RESET
explode: true
in: query
name: event_type_filter
required: false
schema:
type: string
style: form
- description:
An API filter for the events. Supply the name and preview of the
API token.
example: fullaccess:**************************M_g==
explode: true
in: query
name: api_token_filter
required: false
schema:
type: string
style: form
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: Number of results to return per page. Default is 200.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
maximum: 1000
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedEventList"
description: One page worth of events with the appropriate filters applied.
security:
- BearerAuth: []
tags:
- events
/events/{event_id}:
get:
summary: Get event by ID
description: Returns an `Event` object.
operationId: getEvent
parameters:
- description: The ID of the event.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
explode: true
in: path
name: event_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Event"
description: The requested `Event`.
"404":
description: Event not found.
security:
- BearerAuth: []
tags:
- events
/groups:
get:
summary: Get groups
description: Returns a list of groups for your organization.
operationId: getGroups
parameters:
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: Number of results to return per page. Default is 200.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
maximum: 1000
style: form
- description: The group type to filter by.
example: OPAL_GROUP
explode: true
in: query
name: group_type_filter
required: false
schema:
$ref: "#/components/schemas/GroupTypeEnum"
style: form
- description: The group ids to filter by.
example:
- 4baf8423-db0a-4037-a4cf-f79c60cb67a5
- 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: query
name: group_ids
required: false
schema:
items:
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
type: array
style: form
- description: Group name.
example: example-name
explode: true
in: query
name: group_name
required: false
schema:
type: string
style: form
- description:
The IDs of the tags to filter by. Returns only groups that have any
of these tags applied.
in: query
name: tag_ids
required: false
schema:
type: array
items:
format: uuid
type: string
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedGroupsList"
description: One page worth groups associated with your organization.
security:
- BearerAuth: []
tags:
- groups
put:
description: Bulk updates a list of groups.
operationId: updateGroups
requestBody:
description: Groups to be updated
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateGroupInfoList"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateGroupInfoList"
description: The resulting updated group infos.
security:
- BearerAuth: []
tags:
- groups
post:
description: Creates an Opal group or [imports a remote
group](https://docs.opal.dev/reference/end-system-objects).
operationId: createGroup
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateGroupInfo"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Group"
description: The group just created.
security:
- BearerAuth: []
tags:
- groups
/groups/{group_id}:
get:
summary: Get group by ID
description: Returns a `Group` object.
operationId: getGroup
parameters:
- description: The ID of the group.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
explode: true
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Group"
description: The requested `Group`.
security:
- BearerAuth: []
tags:
- groups
delete:
description: Deletes a group.
operationId: delete_group
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: The group was successfully deleted.
security:
- BearerAuth: []
tags:
- groups
/groups/{group_id}/message-channels:
get:
description: Gets the list of audit and reviewer message channels attached to a group.
operationId: get_group_message_channels
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/MessageChannelList"
description: The audit and reviewer message channels attached to the group.
security:
- BearerAuth: []
tags:
- groups
put:
description: Sets the list of audit message channels attached to a group.
operationId: set_group_message_channels
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/MessageChannelIDList"
responses:
"200":
content:
application/json:
schema:
items:
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
type: array
description: The updated audit message channel IDs for the group.
security:
- BearerAuth: []
tags:
- groups
/groups/{group_id}/on-call-schedules:
get:
description: Gets the list of on call schedules attached to a group.
operationId: get_group_on_call_schedules
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/OnCallScheduleList"
description: The on call schedules attached to the group.
security:
- BearerAuth: []
tags:
- groups
put:
description: Sets the list of on call schedules attached to a group.
operationId: set_group_on_call_schedules
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/OnCallScheduleIDList"
responses:
"200":
content:
application/json:
schema:
items:
example: bb0197c0-5ea5-45d9-b3b7-b6c439be6435
format: uuid
type: string
type: array
description: The updated on call schedule IDs for the group.
security:
- BearerAuth: []
tags:
- groups
/groups/{group_id}/access_levels:
get:
summary: Get group access levels
description:
Returns the list of access levels defined for the group. Groups that
only offer default (unnamed) access return an empty list.
operationId: get_group_access_levels
parameters:
- description: The ID of the group whose access levels to return.
name: group_id
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/GroupAccessLevelList"
description: The access levels defined for the group.
"404":
description: Group not found.
security:
- BearerAuth: []
tags:
- groups
/groups/{group_id}/resources:
get:
description: Gets the list of resources that the group gives access to.
operationId: get_group_resources
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/GroupResourceList"
description: The resources that the group gives access to.
security:
- BearerAuth: []
tags:
- groups
put:
description: Sets the list of resources that the group gives access to.
operationId: set_group_resources
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateGroupResourcesInfo"
responses:
"200":
description: The group resource were successfully set.
security:
- BearerAuth: []
tags:
- groups
/groups/{group_id}/containing-groups:
get:
summary: Get nested groups
description: Gets the list of groups that the group gives access to.
operationId: get_group_containing_groups
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The access level's remote ID to filter by.
example: arn:aws:iam::590304332660:role/AdministratorAccess
explode: true
in: query
name: access_level_remote_id
required: false
schema:
type: string
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/GroupContainingGroupList"
description: The groups that the group gives access to.
security:
- BearerAuth: []
tags:
- groups
post:
description: Creates a new containing group.
operationId: add_group_containing_group
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/GroupContainingGroup"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/GroupContainingGroup"
description: The created `GroupContainingGroup` object.
security:
- BearerAuth: []
tags:
- groups
/groups/{group_id}/containing-groups/{containing_group_id}:
get:
summary: Get nested group by ID
description: Gets a specific containing group for a group.
operationId: get_group_containing_group
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the containing group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: containing_group_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/GroupContainingGroup"
description: The created `GroupContainingGroup` object.
security:
- BearerAuth: []
tags:
- groups
delete:
description: Removes a containing group from a group.
operationId: remove_group_containing_group
parameters:
- description: The ID of the member group to remove.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the containing group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: containing_group_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The remote ID of the member group's access level to filter by.
example: arn:aws:iam::590304332660:role/AdministratorAccess
explode: true
in: query
name: access_level_remote_id
required: false
schema:
type: string
style: form
responses:
"204":
description: The member group was successfully removed from the containing group.
security:
- BearerAuth: []
tags:
- groups
/groups/{group_id}/resources/{resource_id}:
post:
description: Adds a resource to a group.
operationId: add_group_resource
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
- description:
The remote ID of the access level to grant to this user. If
omitted, the default access level remote ID value (empty string) is
used.
example: arn:aws:iam::590304332660:role/AdministratorAccess
explode: true
in: query
name: access_level_remote_id
required: false
schema:
type: string
style: form
deprecated: true
requestBody:
required: false
content:
application/json:
schema:
example:
access_level_remote_id: arn:aws:iam::590304332660:role/AdministratorAccess
duration_minutes: 60
properties:
access_level_remote_id:
description:
The remote ID of the access level to grant to this user. If
omitted, the default access level remote ID value (empty
string) is used.
example: arn:aws:iam::590304332660:role/AdministratorAccess
type: string
duration_minutes:
description:
The duration for which the resource can be accessed (in minutes).
Use 0 to set to indefinite.
example: 60
type: integer
maximum: 525960 # One year
minimum: 0
type: object
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/GroupResource"
description: The created `GroupResource` object.
security:
- BearerAuth: []
tags:
- groups
/groups/{group_id}/visibility:
get:
description: Gets the visibility of this group.
operationId: get_group_visibility
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/VisibilityInfo"
description: The visibility info of this group.
security:
- BearerAuth: []
tags:
- groups
put:
description: Sets the visibility of this group.
operationId: set_group_visibility
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/VisibilityInfo"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/VisibilityInfo"
description: The visibility info of this group.
security:
- BearerAuth: []
tags:
- groups
/groups/{group_id}/reviewers:
get:
deprecated: true
description: Gets the list of owner IDs of the reviewers for a group.
operationId: get_group_reviewers
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
items:
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
type: array
description: The IDs of owners that are reviewers for this group.
security:
- BearerAuth: []
tags:
- groups
put:
deprecated: true
description: Sets the list of reviewers for a group.
operationId: set_group_reviewers
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ReviewerIDList"
responses:
"200":
content:
application/json:
schema:
items:
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
type: array
description: The updated IDs of owners that are reviewers for this group
security:
- BearerAuth: []
tags:
- groups
/groups/{group_id}/reviewer-stages:
get:
deprecated: true
description: Gets the list of reviewer stages for a group.
operationId: get_group_reviewer_stages
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
description: A list of reviewer stages.
items:
$ref: "#/components/schemas/ReviewerStage"
type: array
description: The reviewer stages for this group.
security:
- BearerAuth: []
tags:
- groups
put:
deprecated: true
description: Sets the list of reviewer stages for a group.
operationId: set_group_reviewer_stages
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ReviewerStageList"
responses:
"200":
content:
application/json:
schema:
description: A list of reviewer stages.
items:
$ref: "#/components/schemas/ReviewerStage"
type: array
description: The updated reviewer stages for this group.
security:
- BearerAuth: []
tags:
- groups
/groups/{group_id}/tags:
get:
description: Returns all tags applied to the group.
operationId: get_group_tags
parameters:
- description: The ID of the group whose tags to return.
name: group_id
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/TagsList"
description: The tags applied to the group.
security:
- BearerAuth: []
tags:
- groups
/groups/{group_id}/users:
get:
description: Gets the list of users for this group.
operationId: get_group_users
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description:
Number of results to return per page, up to 1000. When set (or when a
cursor is provided), the response contains a single page of results and
a `next` cursor; the default page size is 200. When both page_size and
cursor are omitted, the entire group membership is returned in one
response with no `next` cursor. For large groups, prefer setting
page_size and following `next`.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
maximum: 1000
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/GroupUserList"
description: List of users with access to this group.
security:
- BearerAuth: []
tags:
- groups
/groups/{group_id}/users/{user_id}:
put:
description: Updates a user's access level or duration in this group.
operationId: update_group_user
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the user whose access is being updated.
example: f92aa855-cea9-4814-b9d8-f2a60d3e4a06
in: path
name: user_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
type: object
example:
duration_minutes: 60
access_level_remote_id: arn:aws:iam::590304332660:role/AdministratorAccess
properties:
duration_minutes:
description:
The updated duration for which the group can be accessed (in
minutes). Use 0 for indefinite, or a negative value to
revoke access.
type: integer
maximum: 525960 # One year
example: 120
access_level_remote_id:
description: The updated remote ID of the access level granted to this user.
type: string
example: arn:aws:iam::590304332660:role/ReadOnlyAccess
required:
- duration_minutes
responses:
"200":
description: The GroupUser was successfully updated.
content:
application/json:
schema:
$ref: "#/components/schemas/GroupUser"
security:
- BearerAuth: []
tags:
- groups
post:
description: Adds a user to this group.
operationId: add_group_user
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the user to add.
example: f92aa855-cea9-4814-b9d8-f2a60d3e4a06
explode: false
in: path
name: user_id
required: true
schema:
format: uuid
type: string
style: simple
- description:
The duration for which the group can be accessed (in minutes). Use
0 to set to indefinite.
example: 60
explode: true
in: query
name: duration_minutes
required: false
schema:
type: integer
maximum: 525960 # One year
style: form
deprecated: true
- description:
The remote ID of the access level to grant to this user. If
omitted, the default access level remote ID value (empty string) is
used.
example: arn:aws:iam::590304332660:role/AdministratorAccess
explode: true
in: query
name: access_level_remote_id
required: false
schema:
type: string
style: form
deprecated: true
requestBody:
required: false
content:
application/json:
schema:
example:
duration_minutes: 60
access_level_remote_id: arn:aws:iam::590304332660:role/AdministratorAccess
properties:
duration_minutes:
description:
The duration for which the group can be accessed (in minutes). Use
0 to set to indefinite.
example: 60
type: integer
access_level_remote_id:
description:
The remote ID of the access level to grant to this user. If
omitted, the default access level remote ID value (empty
string) is used.
example: arn:aws:iam::590304332660:role/AdministratorAccess
type: string
required:
- duration_minutes
type: object
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/GroupUser"
description: The GroupUser that was created.
security:
- BearerAuth: []
tags:
- groups
delete:
description: Removes a user's access from this group.
operationId: delete_group_user
parameters:
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of a user to remove from this group.
example: f92aa855-cea9-4814-b9d8-f2a60d3e4a06
explode: false
in: path
name: user_id
required: true
schema:
format: uuid
type: string
style: simple
- description:
The remote ID of the access level for which this user has direct
access. If omitted, the default access level remote ID value (empty
string) is assumed.
example: 30
explode: true
in: query
name: access_level_remote_id
required: false
schema:
type: string
style: form
responses:
"200":
description: This user's access was successfully removed from this group.
security:
- BearerAuth: []
tags:
- groups
/groups/users/{user_id}:
get:
description: Returns all groups that the user is a member of.
operationId: get_user_groups
parameters:
- description: The ID of the user whose groups to return.
name: user_id
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: Number of results to return per page. Default is 200.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
maximum: 1000
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/GroupUserList"
description: The groups that the user is a member of.
security:
- BearerAuth: []
tags:
- groups
/group-bindings:
get:
summary: Get group bindings
description: Returns a list of `GroupBinding` objects.
operationId: getGroupBindings
parameters:
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: Number of results to return per page. Default is 200.
example: 200
explode: true
in: query
name: page_size
schema:
type: integer
maximum: 1000
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedGroupBindingsList"
description: One page worth of group bindings for your organization.
security:
- BearerAuth: []
tags:
- group-bindings
post:
description: Creates a group binding.
operationId: createGroupBinding
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateGroupBindingInfo"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/GroupBinding"
description: The group binding just created.
security:
- BearerAuth: []
tags:
- group-bindings
put:
description: Bulk updates a list of group bindings.
operationId: updateGroupBindings
requestBody:
description: Group bindings to be updated
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateGroupBindingInfoList"
responses:
"200":
description: The group bindings were successfully updated.
security:
- BearerAuth: []
tags:
- group-bindings
/group-bindings/{group_binding_id}:
get:
summary: Get group binding by ID
description: Returns a `GroupBinding` object.
operationId: getGroupBinding
parameters:
- description: The ID of the group binding.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
explode: true
in: path
name: group_binding_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/GroupBinding"
description: The requested `GroupBinding`.
security:
- BearerAuth: []
tags:
- group-bindings
delete:
description: Deletes a group binding.
operationId: deleteGroupBinding
parameters:
- description: The ID of the group binding.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_binding_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: The group binding was successfully deleted.
security:
- BearerAuth: []
tags:
- group-bindings
/idp-group-mappings/{app_resource_id}:
get:
description:
Returns the configured set of available `IdpGroupMapping` objects
for an Okta app.
operationId: getIdpGroupMappings
parameters:
- description: The ID of the Okta app.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: app_resource_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/IdpGroupMappingList"
description:
The configured set of available `IdpGroupMapping` objects for an
Okta app.
security:
- BearerAuth: []
tags:
- idp-group-mappings
put:
description: Updates the list of available `IdpGroupMapping` objects for an Okta app.
operationId: updateIdpGroupMappings
parameters:
- description: The ID of the Okta app.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: app_resource_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
properties:
mappings:
type: array
items:
properties:
group_id:
type: string
format: uuid
alias:
type: string
hidden_from_end_user:
type: boolean
type: object
required:
- mappings
type: object
responses:
"200":
description:
The updated set of available `IdpGroupMapping` objects for an Okta
app.
security:
- BearerAuth: []
tags:
- idp-group-mappings
/idp-group-mappings/{app_resource_id}/groups/{group_id}:
get:
description: Gets an `IdpGroupMapping` object for an Okta app and group.
operationId: getIdpGroupMapping
parameters:
- description: The ID of the Okta app.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: app_resource_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/IdpGroupMapping"
description: The `IdpGroupMapping` object for the Okta app and group.
security:
- BearerAuth: []
tags:
- idp-group-mappings
post:
description: |
Creates or updates an individual `IdpGroupMapping` object (upsert operation).
**Behavior:**
- If the mapping doesn't exist, it will be created with the provided values
- If the mapping exists, only the fields provided in the request will be updated
operationId: createIdpGroupMapping
parameters:
- description: The ID of the Okta app.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: app_resource_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: false
content:
application/json:
schema:
properties:
alias:
description: Optional alias for the group mapping
type: string
nullable: true
hidden_from_end_user:
description: |
Whether this mapping should be hidden from end users.
- **New mappings**: If not provided, defaults to `false`
- **Existing mappings**: If not provided, existing value is preserved (no change)
- **Explicit values**: If provided, value is updated to the specified boolean
type: boolean
nullable: true
type: object
responses:
"200":
description: The IDP group mapping was successfully created or updated.
content:
application/json:
schema:
$ref: "#/components/schemas/IdpGroupMapping"
security:
- BearerAuth: []
tags:
- idp-group-mappings
delete:
description: Deletes an `IdpGroupMapping` object.
operationId: delete_idp_group_mappings
parameters:
- description: The ID of the Okta app.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: app_resource_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the group.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: The IDP group mapping was successfully deleted.
security:
- BearerAuth: []
tags:
- idp-group-mappings
/owners:
get:
summary: Get owners
description: Returns a list of `Owner` objects.
operationId: get_owners
parameters:
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: Number of results to return per page. Default is 200.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
maximum: 1000
style: form
- description: Owner name to filter by.
example: 200
explode: true
in: query
name: name
required: false
schema:
type: string
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedOwnersList"
description: One page worth of owners in your organization.
security:
- BearerAuth: []
tags:
- owners
post:
description: Creates an owner.
operationId: createOwner
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateOwnerInfo"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Owner"
description: The owner just created.
security:
- BearerAuth: []
tags:
- owners
put:
description: Bulk updates a list of owners.
operationId: updateOwners
requestBody:
description: Owners to be updated
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateOwnerInfoList"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateOwnerInfoList"
description: The resulting updated owner infos.
security:
- BearerAuth: []
tags:
- owners
/owners/{owner_id}:
get:
summary: Get owner by ID
description: Returns an `Owner` object.
operationId: getOwner
parameters:
- description: The ID of the owner.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
explode: true
in: path
name: owner_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Owner"
description: The owner object associated with the passed-in ID.
security:
- BearerAuth: []
tags:
- owners
delete:
description: Deletes an owner.
operationId: delete_owner
parameters:
- description: The ID of the owner.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: owner_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: The owner was successfully deleted.
security:
- BearerAuth: []
tags:
- owners
/owners/name/{owner_name}:
get:
description:
Returns an `Owner` object. Does not support owners with `/` in
their name, use /owners?name=... instead.
operationId: getOwnerFromName
parameters:
- description: The name of the owner.
example: MyOwner
explode: true
in: path
name: owner_name
required: true
schema:
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Owner"
description: The owner object associated with the passed-in name.
security:
- BearerAuth: []
tags:
- owners
/owners/{owner_id}/users:
get:
description:
Gets the list of users for this owner, in escalation priority order
if applicable.
operationId: get_owner_users
parameters:
- description: The ID of the owner.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: owner_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/UserList"
description: The users for this owner.
security:
- BearerAuth: []
tags:
- owners
put:
description:
Sets the list of users for this owner. If escalation is enabled,
the order of this list is the escalation priority order of the users. If
the owner has a source group, adding or removing users from this list
won't be possible.
operationId: set_owner_users
parameters:
- description: The ID of the owner.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: owner_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UserIDList"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/UserList"
description: The updated users for the owner.
security:
- BearerAuth: []
tags:
- owners
/request-templates:
get:
description: Returns a list of `RequestTemplate` objects.
operationId: getRequestTemplates
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedRequestTemplateList"
description: One page worth of request templates for your organization.
security:
- BearerAuth: []
tags:
- request-templates
post:
description: Creates a request template.
operationId: createRequestTemplate
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateRequestTemplateInfo"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/RequestTemplate"
description: The request template just created.
security:
- BearerAuth: []
tags:
- request-templates
put:
description: Updates a request template.
operationId: updateRequestTemplate
requestBody:
description: Request template to be updated
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateRequestTemplateInfo"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/RequestTemplate"
description: The request template just updated.
security:
- BearerAuth: []
tags:
- request-templates
/request-templates/{request_template_id}:
get:
description: Returns a `RequestTemplate` object.
operationId: getRequestTemplate
parameters:
- description: The ID of the request template.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: request_template_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/RequestTemplate"
description: The requested request template.
security:
- BearerAuth: []
tags:
- request-templates
delete:
description: Deletes a request template.
operationId: deleteRequestTemplate
parameters:
- description: The ID of the request template.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: request_template_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: The request template was successfully deleted.
security:
- BearerAuth: []
tags:
- request-templates
/requests:
get:
summary: Get requests
description:
Returns a list of requests for your organization that is visible by
the admin.
operationId: getRequests
parameters:
- description: A start date filter for the events.
examples:
withDate:
summary: Example with date
value: 2021-11-01
withDatetime:
summary: Example with date and time in ISO 8601 datetime format.
value: 2025-01-01T00:00:00Z
explode: true
in: query
name: start_date_filter
required: false
schema:
type: string
style: form
- description: An end date filter for the events.
examples:
withDate:
summary: Example with date
value: 2021-11-12
withDatetime:
summary: Example with date and time in ISO 8601 datetime format.
value: 2025-01-01T00:00:00Z
explode: true
in: query
name: end_date_filter
required: false
schema:
type: string
style: form
- description: Filter requests by their requester ID.
example: 37cb7e41-12ba-46da-92ff-030abe0450b1
in: query
name: requester_id
required: false
schema:
format: uuid
type: string
style: form
- description: Filter requests by their target user ID.
example: 37cb7e41-12ba-46da-92ff-030abe0450b1
in: query
name: target_user_id
required: false
schema:
format: uuid
type: string
style: form
- description: Filter requests by the resource ID that was requested.
example: 37cb7e41-12ba-46da-92ff-030abe0450b1
in: query
name: resource_id
required: false
schema:
format: uuid
type: string
style: form
- description: Filter requests by the group ID that was requested.
example: 37cb7e41-12ba-46da-92ff-030abe0450b1
in: query
name: group_id
required: false
schema:
format: uuid
type: string
style: form
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: Number of results to return per page. Default is 200.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
maximum: 1000
style: form
- description: Boolean toggle for if it should only show pending requests.
explode: true
in: query
name: show_pending_only
required: false
schema:
type: boolean
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/RequestList"
description: The list of requests.
security:
- BearerAuth: []
tags:
- requests
post:
description: "Create an access request"
operationId: "createRequest"
requestBody:
description: Resources to be updated
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateRequestInfo"
responses:
"200":
content:
application/json:
schema:
properties:
id:
format: uuid
type: string
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
description: The resulting request.
security:
- BearerAuth: []
tags:
- requests
/requests/relay:
get:
summary: Get requests via Relay
description: Returns a paginated list of requests using Relay-style cursor pagination.
operationId: getRequestsRelay
deprecated: true
parameters:
- description: Number of results to return after the cursor. Use either
first/after or last/before, not both.
example: 10
in: query
name: first
required: false
schema:
type: integer
minimum: 1
maximum: 100
- description:
Cursor to fetch results after. Used with 'first' for forward
pagination.
example:
"Y3Vyc29yOnYyOpK5MjAyMS0wMS0wN1QwNzo0MToyNy4xMTlaFjYwZmM2YmJlZjk4YzE1N\
2ZhNjFhYjk4Nw=="
in: query
name: after
required: false
schema:
type: string
- description: Number of results to return before the cursor. Use either
first/after or last/before, not both.
example: 10
in: query
name: last
required: false
schema:
type: integer
minimum: 1
maximum: 100
- description:
Cursor to fetch results before. Used with 'last' for backward
pagination.
example:
"Y3Vyc29yOnYyOpK5MjAyMS0wMS0wN1QwNzo0MToyNy4xMTlaFjYwZmM2YmJlZjk4YzE1N\
2ZhNjFhYjk4Nw=="
in: query
name: before
required: false
schema:
type: string
- description: Filter requests by their status.
example: PENDING
in: query
name: status
required: false
schema:
$ref: "#/components/schemas/RequestStatusEnum"
- description: Filter requests assigned to a specific user ID.
example: 37cb7e41-12ba-46da-92ff-030abe0450b1
in: query
name: to
required: false
schema:
format: uuid
type: string
- description: Filter requests made by a specific user ID.
example: 37cb7e41-12ba-46da-92ff-030abe0450b1
in: query
name: from
required: false
schema:
format: uuid
type: string
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/RequestConnection"
description: A paginated list of requests using Relay-style cursor pagination.
security:
- BearerAuth: []
tags:
- requests
/requests/{id}:
get:
summary: Get request by ID
description: Returns a request by ID.
operationId: getRequest
parameters:
- description: The ID of the request.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: The requested request object.
content:
application/json:
schema:
$ref: "#/components/schemas/Request"
security:
- BearerAuth: []
tags:
- requests
/requests/{id}/approve:
post:
description: "Approve an access request"
operationId: "approveRequest"
parameters:
- description: "The ID of the request to approve"
in: path
name: id
required: true
schema:
type: string
format: uuid
requestBody:
description: Approval parameters
required: true
content:
application/json:
schema:
type: object
properties:
level:
$ref: "#/components/schemas/RequestApprovalEnum"
comment:
type: string
description: "Optional comment for the approval"
example: "Approved after security review"
required:
- level
responses:
"200":
description: "Request successfully approved"
content:
application/json:
schema:
type: object
properties:
request:
$ref: "#/components/schemas/Request"
security:
- BearerAuth: []
tags:
- requests
/requests/{id}/deny:
post:
description: "Deny an access request"
operationId: "denyRequest"
parameters:
- description: "The ID of the request to deny"
in: path
name: id
required: true
schema:
type: string
format: uuid
requestBody:
description: Denial parameters
required: true
content:
application/json:
schema:
type: object
properties:
comment:
type: string
description: "Comment for the denial"
example: "Denied due to insufficient justification"
level:
$ref: "#/components/schemas/RequestApprovalEnum"
required:
- comment
responses:
"200":
description: "Request successfully denied"
content:
application/json:
schema:
type: object
properties:
request:
$ref: "#/components/schemas/Request"
security:
- BearerAuth: []
tags:
- requests
/requests/{id}/comments:
get:
description: Returns a list of comments for a specific request.
operationId: getRequestComments
parameters:
- description: "The ID of the request to get comments for"
in: path
name: id
required: true
schema:
type: string
format: uuid
responses:
"200":
description: A list of comments associated with the specified request.
content:
application/json:
schema:
$ref: "#/components/schemas/RequestCommentList"
security:
- BearerAuth: []
tags:
- requests
post:
description: "Comment on an access request"
operationId: "createRequestComment"
parameters:
- description: "The ID of the request to comment on"
in: path
name: id
required: true
schema:
type: string
format: uuid
requestBody:
description: Comment parameters
required: true
content:
application/json:
schema:
type: object
properties:
comment:
type: string
description: "comment"
required:
- comment
responses:
"200":
description: "Request successfully commented"
content:
application/json:
schema:
type: object
properties:
request:
$ref: "#/components/schemas/Request"
security:
- BearerAuth: []
tags:
- requests
/resources:
get:
summary: Get resources
description: Returns a list of resources for your organization.
operationId: getResources
parameters:
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: Number of results to return per page. Default is 200.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
maximum: 1000
style: form
- description: The resource type to filter by. Required when remote_id is provided.
example: AWS_IAM_ROLE
explode: true
in: query
name: resource_type_filter
required: false
schema:
$ref: "#/components/schemas/ResourceTypeEnum"
style: form
- description: The resource ids to filter by.
example:
- 4baf8423-db0a-4037-a4cf-f79c60cb67a5
- 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: query
name: resource_ids
required: false
schema:
items:
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
type: array
style: form
- description: Resource name.
example: example-name
explode: true
in: query
name: resource_name
required: false
schema:
type: string
style: form
- description: The parent resource id to filter by.
example:
- 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: query
name: parent_resource_id
required: false
schema:
format: uuid
type: string
style: form
- description:
The ancestor resource id to filter by. Returns all resources that
are descendants of the specified resource.
example:
- 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: query
name: ancestor_resource_id
required: false
schema:
format: uuid
type: string
style: form
- description:
Filter resources by their remote id. This will return all resources
that have a remote id that matches the provided remote id. Note that
this requires resource_type_filter to be provided.
in: query
name: remote_id
required: false
schema:
type: string
style: form
- description:
The IDs of the tags to filter by. Returns only resources that have
any of these tags applied.
in: query
name: tag_ids
required: false
schema:
type: array
items:
format: uuid
type: string
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedResourcesList"
description: One page worth resources associated with your organization.
security:
- BearerAuth: []
tags:
- resources
put:
description: Bulk updates a list of resources.
operationId: updateResources
requestBody:
description: Resources to be updated
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateResourceInfoList"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateResourceInfoList"
description: The resulting updated resource infos.
security:
- BearerAuth: []
tags:
- resources
post:
description: Creates a resource. See
[here](https://docs.opal.dev/reference/end-system-objects) for details
about importing resources.
operationId: createResource
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateResourceInfo"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Resource"
description: The resource just created.
security:
- BearerAuth: []
tags:
- resources
/resources/{resource_id}:
get:
summary: Get resource by ID
description: Retrieves a resource.
operationId: get_resource
parameters:
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: The requested resource.
content:
application/json:
schema:
$ref: "#/components/schemas/Resource"
security:
- BearerAuth: []
tags:
- resources
delete:
description: Deletes a resource.
operationId: delete_resource
parameters:
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: The resource was successfully deleted.
security:
- BearerAuth: []
tags:
- resources
/resources/{resource_id}/message-channels:
get:
description: Gets the list of audit message channels attached to a resource.
operationId: get_resource_message_channels
parameters:
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/MessageChannelList"
description: The audit message channels attached to the resource.
security:
- BearerAuth: []
tags:
- resources
put:
description: Sets the list of audit message channels attached to a resource.
operationId: set_resource_message_channels
parameters:
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/MessageChannelIDList"
responses:
"200":
content:
application/json:
schema:
items:
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
type: array
description: The updated audit message channel IDs for the resource.
security:
- BearerAuth: []
tags:
- resources
/resources/{resource_id}/visibility:
get:
description: Gets the visibility of this resource.
operationId: get_resource_visibility
parameters:
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/VisibilityInfo"
description: The visibility info of this resource.
security:
- BearerAuth: []
tags:
- resources
put:
description: Sets the visibility of this resource.
operationId: set_resource_visibility
parameters:
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/VisibilityInfo"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/VisibilityInfo"
description: The visibility info of this resource.
security:
- BearerAuth: []
tags:
- resources
/resources/{resource_id}/reviewers:
get:
description: Gets the list of owner IDs of the reviewers for a resource.
operationId: get_resource_reviewers
parameters:
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
items:
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
type: array
description: The IDs of owners that are reviewers for this resource.
security:
- BearerAuth: []
tags:
- resources
put:
description: Sets the list of reviewers for a resource.
operationId: set_resource_reviewers
parameters:
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ReviewerIDList"
responses:
"200":
content:
application/json:
schema:
items:
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
type: array
description: The updated IDs of owners that are reviewers for this resource
security:
- BearerAuth: []
tags:
- resources
/resources/{resource_id}/reviewer-stages:
get:
description: Gets the list reviewer stages for a resource.
operationId: get_resource_reviewer_stages
parameters:
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
description: A list of reviewer stages.
items:
$ref: "#/components/schemas/ReviewerStage"
type: array
description: The reviewer stages for this resource.
security:
- BearerAuth: []
tags:
- resources
put:
description: Sets the list of reviewer stages for a resource.
operationId: set_resource_reviewer_stages
parameters:
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ReviewerStageList"
responses:
"200":
content:
application/json:
schema:
description: A list of reviewer stages.
items:
$ref: "#/components/schemas/ReviewerStage"
type: array
description: The updated reviewer stages for this resource.
security:
- BearerAuth: []
tags:
- resources
/non-human-identities:
get:
description: Returns a list of non-human identities for your organization.
operationId: get_nhis
parameters:
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: Number of results to return per page. Default is 200.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
maximum: 1000
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedResourcesList"
description: One page worth non-human identities in your organization.
security:
- BearerAuth: []
tags:
- non-human-identities
/resources/{resource_id}/non-human-identities:
get:
description: Gets the list of non-human identities with access to this resource.
operationId: get_resource_nhis
parameters:
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
- description: Limit the number of results returned.
example: 200
explode: true
in: query
name: limit
required: false
schema:
type: integer
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/AccessList"
description: List of non-human identities with access to this resource.
security:
- BearerAuth: []
tags:
- resources
/resources/{resource_id}/users:
get:
summary: Get resource users
description: Gets the list of users for this resource.
operationId: get_resource_users
parameters:
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
- description: Limit the number of results returned.
example: 200
explode: true
in: query
name: limit
required: false
schema:
type: integer
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ResourceAccessUserList"
description: List of users with access to this resource.
security:
- BearerAuth: []
tags:
- resources
/resources/{resource_id}/non-human-identities/{non_human_identity_id}:
post:
description: Gives a non-human identity access to this resource.
operationId: add_resource_nhi
parameters:
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The resource ID of the non-human identity to add.
example: f92aa855-cea9-4814-b9d8-f2a60d3e4a06
explode: false
in: path
name: non_human_identity_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: false
content:
application/json:
schema:
example:
duration_minutes: 60
access_level_remote_id: roles/cloudsql.instanceUser
properties:
duration_minutes:
description:
The duration for which the resource can be accessed (in minutes).
Use 0 to set to indefinite.
example: 60
type: integer
maximum: 525960 # One year
access_level_remote_id:
description:
The remote ID of the access level to grant. If omitted, the default
access level remote ID value (empty string) is used.
example: roles/cloudsql.instanceUser
type: string
required:
- duration_minutes
type: object
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ResourceNHI"
description:
Details about the access that the non-human identity was granted to
the resource.
security:
- BearerAuth: []
tags:
- resources
delete:
description: Removes a non-human identity's direct access from this resource.
operationId: delete_resource_nhi
parameters:
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
- description:
The resource ID of the non-human identity to remove from this
resource.
example: f92aa855-cea9-4814-b9d8-f2a60d3e4a06
explode: false
in: path
name: non_human_identity_id
required: true
schema:
format: uuid
type: string
style: simple
- description:
The remote ID of the access level for which this non-human identity
has direct access. If omitted, the default access level remote ID
value (empty string) is assumed.
example: roles/cloudsql.instanceUser
explode: true
in: query
name: access_level_remote_id
required: false
schema:
type: string
style: form
responses:
"200":
description:
This non-human identity's access was successfully removed from this
resource.
security:
- BearerAuth: []
tags:
- resources
/resources/{resource_id}/users/{user_id}:
post:
description: Adds a user to this resource.
operationId: add_resource_user
parameters:
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the user to add.
example: f92aa855-cea9-4814-b9d8-f2a60d3e4a06
explode: false
in: path
name: user_id
required: true
schema:
format: uuid
type: string
style: simple
- description:
The duration for which the resource can be accessed (in minutes).
Use 0 to set to indefinite.
example: 60
explode: true
in: query
name: duration_minutes
required: false
schema:
type: integer
maximum: 525960 # One year
style: form
deprecated: true
- description:
The remote ID of the access level to grant to this user. If
omitted, the default access level remote ID value (empty string) is
used.
example: arn:aws:iam::590304332660:role/AdministratorAccess
explode: true
in: query
name: access_level_remote_id
required: false
schema:
type: string
style: form
deprecated: true
requestBody:
required: false
content:
application/json:
schema:
example:
duration_minutes: 60
access_level_remote_id: arn:aws:iam::590304332660:role/AdministratorAccess
properties:
duration_minutes:
description:
The duration for which the resource can be accessed (in minutes).
Use 0 to set to indefinite.
example: 60
type: integer
maximum: 525960 # One year
access_level_remote_id:
description:
The remote ID of the access level to grant to this user. If
omitted, the default access level remote ID value (empty
string) is used.
example: arn:aws:iam::590304332660:role/AdministratorAccess
type: string
required:
- duration_minutes
type: object
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ResourceUser"
description: The ResourceUser that was created.
security:
- BearerAuth: []
tags:
- resources
put:
description: Updates a user's access level or duration on this resource.
operationId: update_resource_user
parameters:
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the user whose access is being updated.
example: f92aa855-cea9-4814-b9d8-f2a60d3e4a06
in: path
name: user_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
type: object
example:
duration_minutes: 60
access_level_remote_id: arn:aws:iam::590304332660:role/AdministratorAccess
properties:
duration_minutes:
description:
The updated duration for which the resource can be accessed (in
minutes). Use 0 for indefinite.
type: integer
maximum: 525960 # One year
example: 120
access_level_remote_id:
description: The updated remote ID of the access level granted to this user.
type: string
example: arn:aws:iam::590304332660:role/ReadOnlyAccess
required:
- duration_minutes
responses:
"200":
description: The ResourceUser was successfully updated.
content:
application/json:
schema:
$ref: "#/components/schemas/ResourceUser"
security:
- BearerAuth: []
tags:
- resources
delete:
description: Removes a user's direct access from this resource.
operationId: delete_resource_user
parameters:
- description: The ID of the resource.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of a user to remove from this resource.
example: f92aa855-cea9-4814-b9d8-f2a60d3e4a06
explode: false
in: path
name: user_id
required: true
schema:
format: uuid
type: string
style: simple
- description:
The remote ID of the access level for which this user has direct
access. If omitted, the default access level remote ID value (empty
string) is assumed.
example: arn:aws:iam::590304332660:role/AdministratorAccess
explode: true
in: query
name: access_level_remote_id
required: false
schema:
type: string
style: form
responses:
"200":
description: This user's access was successfully removed from this resource.
security:
- BearerAuth: []
tags:
- resources
get:
summary: Get resource user
description: Returns information about a specific user's access to a resource.
operationId: getResourceUser
parameters:
- description: The ID of the resource.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the user.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
in: path
name: user_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
responses:
"200":
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: "#/components/schemas/ResourceUser"
cursor:
type: string
description: Pagination cursor for the next page of results
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
total_count:
type: integer
description: Total number of results
example: 120
required:
- data
description: List of ResourceUser records for the user's access to the resource.
"404":
description: Resource or user not found.
security:
- BearerAuth: []
tags:
- resources
/resource-user-access-status/{resource_id}/{user_id}:
get:
deprecated: true
description: Get user's access status to a resource.
operationId: resource_user_access_status_retrieve
parameters:
- description: The ID of the resource.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the user.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
explode: false
in: path
name: user_id
required: true
schema:
format: uuid
type: string
style: simple
- description:
The remote ID of the access level that you wish to query for the
resource. If omitted, the default access level remote ID value
(empty string) is used.
example: arn:aws:iam::590304332660:role/AdministratorAccess
explode: true
in: query
name: access_level_remote_id
required: false
schema:
type: string
style: form
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: Number of results to return per page. Default is 200.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
maximum: 1000
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ResourceUserAccessStatus"
description: The access status reflecting the user's access to the resource.
security:
- BearerAuth: []
tags:
- resources
/resources/{resource_id}/tags:
get:
description: Returns all tags applied to the resource.
operationId: get_resource_tags
parameters:
- description: The ID of the resource whose tags to return.
name: resource_id
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/TagsList"
description: The tags applied to the resource.
security:
- BearerAuth: []
tags:
- resources
/resources/{resource_id}/scoped-role-permissions:
get:
description:
Returns all the scoped role permissions that apply to the given
resource. Only OPAL_SCOPED_ROLE resource type supports this field.
operationId: get_resource_scoped_role_permissions
parameters:
- description: The ID of the resource whose scoped role permissions belong to.
name: resource_id
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ScopedRolePermissionList"
description: The role permissions that this Opal Scoped Role has.
security:
- BearerAuth: []
tags:
- resources
put:
description: Sets all the scoped role permissions on an OPAL_SCOPED_ROLE resource.
operationId: set_resource_scoped_role_permissions
parameters:
- description:
The ID of the resource whose scoped role permissions belong to.
Must be of OPAL_SCOPED_ROLE resource type.
name: resource_id
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ScopedRolePermissionList"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ScopedRolePermissionList"
description: The role permissions that this Opal Scoped Role has.
security:
- BearerAuth: []
tags:
- resources
/resources/users/{user_id}:
get:
description: Gets the list of resources for this user.
operationId: get_user_resources
parameters:
- description: The ID of the user.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: user_id
required: true
schema:
format: uuid
type: string
style: simple
- description: Limit the number of results returned.
example: 200
explode: true
in: query
name: limit
required: false
schema:
type: integer
style: form
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: Include user's access to unmanaged resources.
example: false
explode: true
in: query
name: include_unmanaged
required: false
schema:
type: boolean
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ResourceAccessUserList"
description: List of resources user has access to.
security:
- BearerAuth: []
tags:
- resources
/resources/{resource_id}/groups:
get:
description: Returns a list of groups that grant access to the resource
operationId: get_resource_groups
parameters:
- description: The ID of the resource that the groups grant access to.
name: resource_id
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/GroupResourceList"
description: The groups that grant access to the resource.
security:
- BearerAuth: []
tags:
- resources
/resources/{resource_id}/access_levels:
get:
summary: Get resource access levels
description:
Returns the list of access levels defined for the resource. Resources
that only offer default (unnamed) access return an empty list.
operationId: get_resource_access_levels
parameters:
- description: The ID of the resource whose access levels to return.
name: resource_id
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ResourceAccessLevelList"
description: The access levels defined for the resource.
"404":
description: Resource not found.
security:
- BearerAuth: []
tags:
- resources
/paladin:
post:
summary: Create Paladin
description: Creates a new `Paladin`.
operationId: createPaladin
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreatePaladinInfo"
required: true
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Paladin"
description: The created Paladin.
security:
- BearerAuth: []
tags:
- paladin
/paladin/{paladin_id}:
get:
summary: Get Paladin by ID
description: Returns a `Paladin` object.
operationId: getPaladin
parameters:
- description: The ID of the Paladin.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
explode: true
in: path
name: paladin_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Paladin"
description: The Paladin associated with the passed-in ID.
security:
- BearerAuth: []
tags:
- paladin
put:
summary: Update Paladin
description: Updates a `Paladin` object.
operationId: updatePaladin
parameters:
- description: The ID of the Paladin.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
explode: true
in: path
name: paladin_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/UpdatePaladinInfo"
required: true
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Paladin"
description: The updated Paladin.
security:
- BearerAuth: []
tags:
- paladin
delete:
summary: Delete Paladin
description: Deletes a Paladin, removing the underlying service user.
operationId: deletePaladin
parameters:
- description: The ID of the Paladin.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
explode: true
in: path
name: paladin_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: The Paladin was deleted.
security:
- BearerAuth: []
tags:
- paladin
/paladin/name/{paladin_name}:
get:
summary: Get Paladins by name
description:
Returns all Paladins whose name exactly matches the given name. Names
are not unique, so the result is a list and may be empty.
operationId: getPaladinFromName
parameters:
- description: The name of the Paladin.
example: paladin-agent-1
explode: true
in: path
name: paladin_name
required: true
schema:
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaladinList"
description: The list of Paladins matching the passed-in name.
security:
- BearerAuth: []
tags:
- paladin
/paladin/{paladin_id}/context-sources:
get:
summary: List Paladin context sources
description:
Returns the context sources (Slack channels and documents) configured
for a Paladin.
operationId: listPaladinContextSources
parameters:
- description: The ID of the Paladin.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
explode: true
in: path
name: paladin_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaladinContextSourceList"
description: The context sources configured for the Paladin.
security:
- BearerAuth: []
tags:
- paladin
post:
summary: Add a Paladin context source
description:
Configures a context source (a Slack channel or a document) for a
Paladin to read. Idempotent, so re-adding an existing source returns it.
operationId: createPaladinContextSource
parameters:
- description: The ID of the Paladin.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
explode: true
in: path
name: paladin_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreatePaladinContextSourceInfo"
required: true
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaladinContextSource"
description: The configured context source.
security:
- BearerAuth: []
tags:
- paladin
/paladin/{paladin_id}/context-sources/{context_source_id}:
delete:
summary: Remove a Paladin context source
description: Removes a context source from a Paladin.
operationId: deletePaladinContextSource
parameters:
- description: The ID of the Paladin.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
explode: true
in: path
name: paladin_id
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the context source.
example: 8a1f2c3d-4b5e-6f70-8192-a3b4c5d6e7f8
explode: true
in: path
name: context_source_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: The context source was removed.
security:
- BearerAuth: []
tags:
- paladin
/sessions:
get:
description: Returns a list of `Session` objects.
operationId: sessions
parameters:
- description: The ID of the resource.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: true
in: query
name: resource_id
required: true
schema:
format: uuid
type: string
style: form
- description: The ID of the user you wish to query sessions for.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
explode: true
in: query
name: user_id
required: false
schema:
type: string
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/SessionsList"
description: The sessions associated with a resource.
security:
- BearerAuth: []
tags:
- sessions
/user:
get:
description: Returns a `User` object.
operationId: user
parameters:
- description: The user ID of the user.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
explode: true
in: query
name: user_id
required: false
schema:
format: uuid
type: string
style: form
- description:
The email of the user. If both user ID and email are provided, user
ID will take precedence. If neither are provided, an error will
occur.
example: johndoe@domain.org
explode: true
in: query
name: email
required: false
schema:
type: string
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/User"
description: The user object associated with the passed-in email or ID.
security:
- BearerAuth: []
tags:
- users
/users:
get:
description: Returns a list of users for your organization.
operationId: getUsers
parameters:
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: Number of results to return per page. Default is 200.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
maximum: 1000
style: form
- description:
The IDs of the tags to filter by. Returns only users that have any
of these tags applied.
in: query
name: tag_ids
required: false
schema:
type: array
items:
format: uuid
type: string
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedUsersList"
description: One page worth users in your organization.
security:
- BearerAuth: []
tags:
- users
/users/remote_users:
get:
description: Returns a list of remote users for your organization.
operationId: getRemoteUsers
parameters:
- description: Filter remote users by their third party provider.
example: [GIT_HUB]
in: query
name: third_party_provider
required: false
schema:
type: array
items:
$ref: "#/components/schemas/ThirdPartyProviderEnum"
style: form
- description: Filter remote users by their user ID.
example: [32acc112-21ff-4669-91c2-21e27683eaa1]
in: query
name: user_id
required: false
schema:
type: array
items:
type: string
format: uuid
style: form
- description: Filter remote users by their remote ID.
example: [1234567890]
in: query
name: remote_id
required: false
schema:
type: array
items:
type: string
style: form
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: Number of results to return per page. Default is 200.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
maximum: 1000
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedRemoteUsersList"
description: One page worth users in your organization.
security:
- BearerAuth: []
tags:
- users
/users/whoami:
get:
description:
Returns the user that the provided API token authenticates as.
operationId: getUserWhoami
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/User"
description: The user that the API token authenticates as.
security:
- BearerAuth: []
tags:
- users
/users/{user_id}/tags:
get:
description: Returns all tags applied to the user.
operationId: get_user_tags
parameters:
- description: The ID of the user whose tags to return.
name: user_id
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/TagsList"
description: The tags applied to the user.
security:
- BearerAuth: []
tags:
- users
/access-rules:
get:
description: Returns a list of access rules for your organization.
operationId: get_access_rules
parameters:
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: Number of results to return per page. Default is 200.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedAccessRulesList"
description: One page of access rules for your organization.
security:
- BearerAuth: []
tags:
- access-rules
post:
description: Creates a new access rule config for the given group_id.
operationId: create_access_rule
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateAccessRuleInfo"
responses:
"201":
content:
application/json:
schema:
$ref: "#/components/schemas/AccessRule"
description: The created access rule config for the group.
security:
- BearerAuth: []
tags:
- access-rules
/access-rules/{access_rule_id}:
get:
description:
Returns a list of access rule config given the group_id of the
access rule.
operationId: get_access_rule
parameters:
- description: The access rule ID (group ID) of the access rule.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
name: access_rule_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/AccessRule"
description: The access rules for the group.
security:
- BearerAuth: []
tags:
- access-rules
put:
description: Updates the access rule config for the given group_id.
operationId: update_access_rule
parameters:
- description: The access rule ID (group ID) of the access rule.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
name: access_rule_id
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateAccessRuleInfo"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/AccessRule"
description: The updated access rule config for the group.
security:
- BearerAuth: []
tags:
- access-rules
/tag/{tag_id}:
get:
summary: Get tag by ID
description: UNSTABLE. May be removed at any time. Gets a tag with the given id.
operationId: get_tag_by_ID
parameters:
- description: The tag ID
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
name: tag_id
required: true
schema:
type: string
format: uuid
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Tag"
description: The tag requested.
security:
- BearerAuth: []
tags:
- tags
delete:
description: UNSTABLE. May be removed at any time. Deletes a tag with the given id.
operationId: delete_tag_by_ID
parameters:
- description: The tag ID
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
name: tag_id
required: true
schema:
type: string
format: uuid
style: simple
responses:
"200":
description: Tag was deleted.
security:
- BearerAuth: []
tags:
- tags
/tag:
get:
description: Gets a tag with the given key and value.
operationId: get_tag
parameters:
- description: The key of the tag to get.
example: api-scope
explode: false
in: query
name: tag_key
required: true
schema:
type: string
style: form
- description: The value of the tag to get.
example: production
explode: false
in: query
name: tag_value
required: false
schema:
type: string
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Tag"
description: The tag requested.
security:
- BearerAuth: []
tags:
- tags
post:
description: Creates a tag with the given key and value.
operationId: create_tag
parameters:
- description: The key of the tag to create.
example: api-scope
explode: false
in: query
name: tag_key
required: false
schema:
type: string
style: form
deprecated: true
- description: The value of the tag to create.
example: production
explode: false
in: query
name: tag_value
required: false
schema:
type: string
style: form
deprecated: true
- description: The ID of the owner that manages the tag.
example: f92aa855-cea9-4814-b9d8-f2a60d3e4a06
explode: false
in: query
name: admin_owner_id
schema:
format: uuid
type: string
style: form
deprecated: true
requestBody:
required: false
content:
application/json:
schema:
$ref: "#/components/schemas/CreateTagInfo"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Tag"
description: The tag that was created.
security:
- BearerAuth: []
tags:
- tags
/tags:
get:
summary: Get tags
description: Returns a list of tags created by your organization.
operationId: getTags
parameters:
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: Number of results to return per page. Default is 200.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
maximum: 1000
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedTagsList"
description: A list of tags created by your organization.
security:
- BearerAuth: []
tags:
- tags
/tags/{tag_id}/users/{user_id}:
post:
description: Applies a tag to a user.
operationId: add_user_tag
parameters:
- description: The ID of the tag to apply.
name: tag_id
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the user to apply the tag to.
name: user_id
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
required: false
content:
application/json:
schema:
type: object
responses:
"200":
description: Tag applied to user successfully.
security:
- BearerAuth: []
tags:
- tags
delete:
description: Removes a tag from a user.
operationId: remove_user_tag
parameters:
- description: The ID of the tag to remove.
name: tag_id
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the user to remove the tag from.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
name: user_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: Tag removed from user successfully.
security:
- BearerAuth: []
tags:
- tags
/tags/{tag_id}/groups/{group_id}:
post:
description: Applies a tag to a group.
operationId: add_group_tag
parameters:
- description: The ID of the tag to apply.
name: tag_id
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the group to apply the tag to.
name: group_id
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: Tag applied to group successfully.
security:
- BearerAuth: []
tags:
- tags
delete:
description: Removes a tag from a group.
operationId: remove_group_tag
parameters:
- description: The ID of the tag to remove.
name: tag_id
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the group to remove the tag from.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
name: group_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: Tag removed from group successfully.
security:
- BearerAuth: []
tags:
- tags
/tags/{tag_id}/resources/{resource_id}:
post:
description: Applies a tag to a resource.
operationId: add_resource_tag
parameters:
- description: The ID of the tag to apply.
name: tag_id
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the resource to apply the tag to.
name: resource_id
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: Tag applied to resource successfully.
security:
- BearerAuth: []
tags:
- tags
delete:
description: Removes a tag from a resource.
operationId: remove_resource_tag
parameters:
- description: The ID of the tag to remove.
name: tag_id
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
required: true
schema:
format: uuid
type: string
style: simple
- description: The ID of the resource to remove the tag from.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
explode: false
in: path
name: resource_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: Tag removed from resource successfully.
security:
- BearerAuth: []
tags:
- tags
/message-channels:
get:
summary: Get message channels
description: Returns a list of `MessageChannel` objects.
operationId: get_message_channels
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/MessageChannelList"
description: A list of message channels for your organization.
security:
- BearerAuth: []
tags:
- message-channels
post:
description: Creates a `MessageChannel` objects.
operationId: create_message_channel
requestBody:
description: The `MessageChannel` object to be created.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateMessageChannelInfo"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/MessageChannel"
description: The message channel that was created.
security:
- BearerAuth: []
tags:
- message-channels
/message-channels/{message_channel_id}:
get:
summary: Get message channel by ID
description: Gets a `MessageChannel` object.
operationId: get_message_channel
parameters:
- description: The ID of the message_channel.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: message_channel_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/MessageChannel"
description: The requested message channel.
security:
- BearerAuth: []
tags:
- message-channels
/on-call-schedules:
get:
summary: Get on call schedules
description: Returns a list of `OnCallSchedule` objects.
operationId: get_on_call_schedules
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/OnCallScheduleList"
description: A list of on call schedules for your organization.
security:
- BearerAuth: []
tags:
- on-call-schedules
post:
description: Creates a `OnCallSchedule` objects.
operationId: create_on_call_schedule
requestBody:
description: The `OnCallSchedule` object to be created.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateOnCallScheduleInfo"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/OnCallSchedule"
description: The on call schedule that was created.
security:
- BearerAuth: []
tags:
- on-call-schedules
/on-call-schedules/{on_call_schedule_id}:
get:
summary: Get on call schedule by ID
description: Gets a `OnCallSchedule` object.
operationId: get_on_call_schedule
parameters:
- description: The ID of the on_call_schedule.
example: 9546209c-42c2-4801-96d7-9ec42df0f59c
explode: false
in: path
name: on_call_schedule_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/OnCallSchedule"
description: The requested on call schedule.
security:
- BearerAuth: []
tags:
- on-call-schedules
/queries/run:
post:
summary: Run an ad-hoc OpalQuery
description: Runs an ad-hoc OpalQuery and returns the results. Supports
NODE queries (users, resources, groups) and ACCESS_PATH queries
(principal-to-entitlement access edges). This endpoint is only
available to our OpalQuery beta group. Please contact Opal support if
you'd like to be added to the beta.
operationId: runOpalQuery
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/RunOpalQueryRequest"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/OpalQueryResults"
description: The results of the OpalQuery.
security:
- BearerAuth: []
tags:
- opal-queries
/tokens:
get:
summary: Get tokens
description:
Returns a list of first-party API tokens for your organization.
Requires admin access.
operationId: getTokens
parameters:
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: Number of results to return per page. Default is 200.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
maximum: 1000
style: form
- description: Filter by token IDs.
explode: false
in: query
name: token_ids
required: false
schema:
items:
format: uuid
type: string
type: array
style: form
- description: Filter by user ID.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
explode: true
in: query
name: user_id
required: false
schema:
format: uuid
type: string
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedTokensList"
description: A list of API tokens for your organization.
security:
- BearerAuth: []
tags:
- tokens
/tokens/{token_id}:
delete:
summary: Delete token
description: Deletes a first-party API token. Admins can delete any token.
Non-admins can only delete their own tokens when the organization allows
all users to create API tokens.
operationId: deleteToken
parameters:
- description: The ID of the token to delete.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
explode: false
in: path
name: token_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: The token was successfully deleted.
"403":
description: Not authorized to delete this token.
"404":
description: Token not found.
security:
- BearerAuth: []
tags:
- tokens
/uars:
get:
deprecated: true
description:
Returns a list of `UAR` objects. Deprecated in favor of `GET /campaigns`.
operationId: getUARs
parameters:
- description: The pagination cursor value.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: Number of results to return per page. Default is 200.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
maximum: 1000
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedUARsList"
description: A list of UARs for your organization.
security:
- BearerAuth: []
tags:
- uars
/uar:
post:
deprecated: true
description:
Starts a User Access Review. Deprecated in favor of `POST /campaigns`.
operationId: create_uar
requestBody:
description: The settings of the UAR.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateUARInfo"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/UAR"
description: The UAR that was started.
security:
- BearerAuth: []
tags:
- uars
/uar/{uar_id}:
get:
deprecated: true
description:
Retrieves a specific UAR. Deprecated in favor of
`GET /campaigns/{campaign_id}`.
operationId: get_uar
parameters:
- description: The ID of the UAR.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: path
name: uar_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/UAR"
description: The UAR that was requested.
security:
- BearerAuth: []
tags:
- uars
/sync_errors:
get:
description:
Returns a list of recent sync errors that have occurred since the
last successful sync.
operationId: getSyncErrors
parameters:
- description: The ID of the app to list sync errors for.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
explode: false
in: query
name: app_id
required: false
schema:
format: uuid
type: string
style: form
- description: The ID of the resource to list sync errors for.
example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
explode: false
in: query
name: resource_id
required: false
schema:
format: uuid
type: string
style: form
- description: The ID of the group to list sync errors for.
example: 9546209c-42c2-4801-96d7-9ec42df0f59c
explode: false
in: query
name: group_id
required: false
schema:
format: uuid
type: string
style: form
responses:
"200":
content:
application/json:
schema:
items:
$ref: "#/components/schemas/SyncErrorList"
type: array
description: A list of sync errors.
security:
- BearerAuth: []
tags:
- apps
/delegations:
get:
summary: Get delegations
description:
Returns a list of request reviewer delegations configured for your
organization.
operationId: getDelegations
parameters:
- description:
The delegator user ID to filter delegations by the user delegating
their access review requests.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
explode: true
in: query
name: delegator_user_id
required: false
schema:
format: uuid
type: string
style: form
- description:
The delegate user ID to filter delegations by the user being
delegated to.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
explode: true
in: query
name: delegate_user_id
required: false
schema:
format: uuid
type: string
style: form
- description: A cursor to indicate where to start fetching results.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
explode: true
in: query
name: cursor
required: false
schema:
type: string
style: form
- description: The maximum number of results to return per page. The default is 200.
example: 200
explode: true
in: query
name: page_size
required: false
schema:
type: integer
maximum: 1000
style: form
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/PaginatedDelegationsList"
description: A list of delegations for your organization.
security:
- BearerAuth: []
tags:
- delegations
post:
description:
Creates a new request reviewer delegation to delegate access review
requests from one user to another.
operationId: createDelegation
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateDelegationRequest"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Delegation"
description: Delegation created successfully.
security:
- BearerAuth: []
tags:
- delegations
/delegations/{delegation_id}:
get:
summary: Get delegation by ID
description: Returns a specific delegation by its ID.
operationId: getDelegation
parameters:
- description: The ID of the delegation to retrieve.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
explode: true
in: path
name: delegation_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Delegation"
description: The requested delegation.
security:
- BearerAuth: []
tags:
- delegations
delete:
description: Deletes a delegation by its ID.
operationId: deleteDelegation
parameters:
- description: The ID of the delegation to remove.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
explode: true
in: path
name: delegation_id
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: Delegation removed successfully
security:
- BearerAuth: []
tags:
- delegations
components:
schemas:
AccessEntityFilters:
type: object
description:
Filters for matching entities by type, name, tag, IDs, connections,
or access levels. Supports recursive logical composition via
allOf/anyOf.
properties:
entityTypes:
type: array
description: Filter by entity type. Only RESOURCE, GROUP, and USER are
queryable via OpalQuery.
items:
type: string
enum: [RESOURCE, GROUP, USER]
entityItemTypes:
type: array
description: Filter by entity item types.
items:
$ref: "#/components/schemas/EntityItemTypeEnum"
entityName:
$ref: "#/components/schemas/EntityNameFilter"
entityTag:
$ref: "#/components/schemas/EntityTagFilter"
hrIdpStatus:
$ref: "#/components/schemas/IdpStatusFilter"
entityAdminOwner:
$ref: "#/components/schemas/EntityAdminFilter"
entityIDs:
type: array
description: Filter by specific entity UUIDs.
items:
type: string
format: uuid
importedFromApp:
type: array
description: Filter by app IDs from which returned nodes will be imported from.
items:
type: string
format: uuid
roleRemoteIds:
type: array
description: Filter by role remote IDs. Can only be applied within a hasAccessTo clause.
items:
type: string
roleNames:
type: array
description: Filter by role display names (e.g. "Admin", "Read"). Can only be applied within a hasAccessTo clause.
items:
type: string
allOf:
type: array
description: >
A list of nested filters that must all match (logical AND). Each
item has the same shape as this object — scalar fields like
`entityTypes` or `entityTag`, and can further nest `allOf`,
`anyOf`, or `not`.
items:
$ref: "#/components/schemas/AccessEntityFilters"
anyOf:
type: array
description: >
A list of nested filters where at least one must match (logical
OR). Each item has the same shape as this object.
items:
$ref: "#/components/schemas/AccessEntityFilters"
not:
description: >
Excludes entities matching the embedded filter (logical NOT). Pass
a filter object with the same shape as this one — typically a
single scalar field, like `{not: {entityTypes: ["RESOURCE"]}}` to
exclude resources.
type: object
x-go-type: AccessEntityFilters
RunOpalQueryRequest:
description:
Request body for running an ad-hoc OpalQuery. The `type` field
determines which query schema applies.
oneOf:
- $ref: "#/components/schemas/OpalNodeQuery"
- $ref: "#/components/schemas/OpalAccessPathQuery"
discriminator:
propertyName: type
mapping:
NODE: "#/components/schemas/OpalNodeQuery"
ACCESS_PATH: "#/components/schemas/OpalAccessPathQuery"
# example:
# type: NODE
# query:
# nodeFilters:
# entityTypes: [RESOURCE]
# allOf:
# - entityTag:
# key: env
# value: prod
# - entityTag:
# key: team
# value: platform
# not:
# entityItemTypes: [AWS_IAM_ROLE]
# accessFilters:
# isAccessibleBy:
# entityTypes: [USER]
# entityTag:
# key: contractor
# first: 50
OpalNodeQuery:
type: object
required:
- type
description:
Request body for a NODE-type OpalQuery. Returns entities (users,
resources, groups) matching the given filters.
example:
type: NODE
query:
nodeFilters:
entityTypes: [RESOURCE]
entityTag:
key: env
value: prod
accessFilters:
isAccessibleBy:
entityTypes: [USER]
entityTag:
key: contractor
first: 50
properties:
type:
type: string
enum:
- NODE
query:
$ref: "#/components/schemas/OpalNodeQueryBody"
first:
type: integer
description: Maximum number of results to return. Defaults to 200.
example: 200
after:
type: string
description: Cursor from a previous response to fetch the next page of results.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
OpalNodeQueryBody:
type: object
description: The filter body for a NODE-type OpalQuery.
properties:
nodeFilters:
$ref: "#/components/schemas/AccessEntityFilters"
accessFilters:
$ref: "#/components/schemas/AccessRelationshipFilters"
OpalQueryResultNode:
type: object
required:
- id
- name
- entityType
- entityItemType
description: A matched entity from an OpalQuery result.
properties:
id:
type: string
format: uuid
description: The entity's unique identifier.
name:
type: string
description: The display name of the entity.
entityType:
type: string
enum:
- USER
- GROUP
- RESOURCE
description: The top-level entity type.
entityItemType:
$ref: "#/components/schemas/EntityItemTypeEnum"
OpalQueryResultEdge:
type: object
required:
- node
- cursor
description:
A single result edge from an OpalQuery, containing the matched
entity and its pagination cursor.
properties:
node:
$ref: "#/components/schemas/OpalQueryResultNode"
cursor:
type: string
description: Opaque cursor for this entity, used for pagination.
OpalQueryResults:
description:
Paginated results of an OpalQuery. The `type` field discriminates
which result schema applies and mirrors the `type` field on the request.
oneOf:
- $ref: "#/components/schemas/OpalNodeQueryResults"
- $ref: "#/components/schemas/OpalAccessPathQueryResults"
discriminator:
propertyName: type
mapping:
NODE: "#/components/schemas/OpalNodeQueryResults"
ACCESS_PATH: "#/components/schemas/OpalAccessPathQueryResults"
OpalNodeQueryResults:
type: object
required:
- type
- edges
- pageInfo
description:
Paginated results of a NODE-type OpalQuery — one edge per matched
entity (user, resource, or group).
properties:
type:
type: string
enum:
- NODE
edges:
type: array
description: List of matched entities.
items:
$ref: "#/components/schemas/OpalQueryResultEdge"
pageInfo:
$ref: "#/components/schemas/PageInfo"
OpalAccessPathQuery:
type: object
required:
- type
description:
Request body for an ACCESS_PATH-type OpalQuery. Returns principal-to-
entitlement access paths matching the given edge filters.
example:
type: ACCESS_PATH
query:
principalFilter:
entityTypes: [USER]
entitlementFilter:
entityItemTypes: [AWS_IAM_ROLE]
edgeFilter:
directOnly: true
first: 50
properties:
type:
type: string
enum:
- ACCESS_PATH
query:
$ref: "#/components/schemas/OpalAccessPathQueryBody"
first:
type: integer
description: Maximum number of results to return. Defaults to 200.
example: 200
after:
type: string
description:
Opaque cursor from a previous ACCESS_PATH response to fetch the
next page of results.
includeCount:
type: boolean
description:
When true, populate totalCount in the response. Defaults to false.
example: false
OpalAccessPathQueryBody:
type: object
description:
Edge-query filters for an ACCESS_PATH OpalQuery. At least one of
principalFilter or entitlementFilter is required.
properties:
principalFilter:
$ref: "#/components/schemas/AccessEntityFilters"
entitlementFilter:
$ref: "#/components/schemas/AccessEntityFilters"
principalAccessFilters:
description: >
Advanced access filter on the principal side of each path. Restricts
results to principals that additionally satisfy these access-edge
constraints: `hasAccessTo` keeps only principals that also have
access to a matching entity; `isAccessibleBy` keeps only principals
that are also accessible by a matching entity. Only takes effect when
`principalFilter` is also supplied (it refines that filter); on its
own it has no effect.
$ref: "#/components/schemas/AccessRelationshipFilters"
entitlementAccessFilters:
description: >
Advanced access filter on the entitlement side of each path.
Restricts results to entitlements that additionally satisfy these
access-edge constraints: `hasAccessTo` keeps only entitlements that
also have access to a matching entity; `isAccessibleBy` keeps only
entitlements that are also accessible by a matching entity. Only
takes effect when `entitlementFilter` is also supplied (it refines
that filter); on its own it has no effect.
$ref: "#/components/schemas/AccessRelationshipFilters"
accessLevelRemoteIds:
type: array
description: Filter by access-level remote IDs on the terminal edge.
items:
type: string
accessLevelNames:
type: array
description: Filter by access-level display names on the terminal edge.
items:
type: string
edgeFilter:
$ref: "#/components/schemas/OpalAccessPathEdgeFilter"
OpalAccessPathEdgeFilter:
type: object
description: Constraints on the access path edges themselves.
properties:
directOnly:
type: boolean
description:
When true, only return direct (depth-1) principal-to-entitlement
edges.
example: true
accessDurationType:
type: string
description: Constrain results by whether the terminal access expires.
enum:
- EXPIRING_ONLY
- PERMANENT_ONLY
example: EXPIRING_ONLY
OpalAccessPathResultNode:
type: object
required:
- principalId
- entitlementId
- depth
- path
description: A matched access path from an ACCESS_PATH OpalQuery.
properties:
principalId:
type: string
format: uuid
description: The principal entity ID.
entitlementId:
type: string
format: uuid
description: The entitlement entity ID.
accessLevelRemoteId:
type: string
nullable: true
description: Remote ID of the terminal access level.
accessLevelName:
type: string
nullable: true
description: Display name of the terminal access level.
expiration:
type: string
format: date-time
nullable: true
description: Expiration of the terminal access, if any.
depth:
type: integer
description: Number of hops from principal to entitlement (path length - 1).
path:
type: array
description: Entity IDs along the path from principal to entitlement.
items:
type: string
format: uuid
OpalAccessPathResultEdge:
type: object
required:
- node
- cursor
description:
A single ACCESS_PATH result edge containing the matched path and its
pagination cursor.
properties:
node:
$ref: "#/components/schemas/OpalAccessPathResultNode"
cursor:
type: string
description: Opaque cursor for this path, used for pagination.
OpalAccessPathQueryResults:
type: object
required:
- type
- edges
- pageInfo
description:
Paginated results of an ACCESS_PATH-type OpalQuery — one edge per
matched principal-to-entitlement access path.
properties:
type:
type: string
enum:
- ACCESS_PATH
edges:
type: array
description: List of matched access paths.
items:
$ref: "#/components/schemas/OpalAccessPathResultEdge"
pageInfo:
$ref: "#/components/schemas/PageInfo"
totalCount:
type: integer
nullable: true
description:
Exact total number of matching paths when includeCount was true on
the request; otherwise null.
AccessRelationshipFilters:
type: object
description: >
Filters the returned nodes by the access edges connected to them.
When `isAccessibleBy` and `hasAccessTo` are provided, the returned nodes
must satisfy both edge constraints simultaneously.
properties:
isAccessibleBy:
description:
Inbound-edge filter. The returned node must be accessible by at
least one entity matching this filter.
$ref: "#/components/schemas/AccessEntityFilters"
hasAccessTo:
description:
Outbound-edge filter. The returned node must have access to at
least one entity matching this filter.
$ref: "#/components/schemas/AccessEntityFilters"
EntityNameFilter:
type: object
required:
- stringMatchType
- string
description: Filters entities by name using a string match strategy.
properties:
stringMatchType:
$ref: "#/components/schemas/StringMatchType"
string:
type: string
description: The string value to match against the entity name.
example: engineering
EntityTagFilter:
type: object
required:
- key
description:
Filters entities by a tag key/value pair, optionally scoped to a
connection.
properties:
key:
type: string
description: The tag key to filter by.
example: team
value:
type: string
description:
The tag value to filter by. If omitted, matches any value for the
given key.
example: platform
connectionId:
type: string
format: uuid
description: If specified, filters by tags associated with this connection.
IdpStatusFilter:
type: object
description: >
Filters USER entities by their HR/IDP lifecycle status. Only applies to
USER entities; GROUP and RESOURCE entities never match, in either
polarity. `statuses` combine with OR. `not` inverts the match within the
user domain (e.g. "IDP status is NOT active"), so it still returns only
users rather than sweeping in groups/resources.
properties:
statuses:
type: array
description: Match users whose HR/IDP status is one of these values.
items:
$ref: "#/components/schemas/UserHrIdpStatusEnum"
not:
type: boolean
description:
Invert the match within the user domain (e.g. "IDP status is NOT
active").
EntityAdminFilter:
type: object
required:
- ownerIDs
description: >
Filters GROUP and RESOURCE entities by their admin owner. USER entities
never match, in either polarity. `not` inverts the match within the
resource/group domain (self-negating, like IdpStatusFilter): omit it (or
false) to include entities owned by the given owners, set it true to
exclude them.
properties:
ownerIDs:
type: array
description: The owner (group) UUIDs to match entities against.
items:
type: string
format: uuid
not:
type: boolean
description:
Invert the match — return resources/groups NOT owned by the given
owners.
StringMatchType:
type: string
description: >-
How to match a string value against entity names. REGEX matches the
value as a case-insensitive regular expression.
enum:
- CONTAINS
- EQUALS
- STARTS_WITH
- ENDS_WITH
- REGEX
PaginatedAssignedRequestList:
type: object
required:
- requests
- cursor
properties:
requests:
type: array
items:
$ref: "#/components/schemas/Request"
cursor:
type: string
description: The cursor to continue pagination
PageInfo:
type: object
required:
- hasNextPage
- endCursor
- hasPreviousPage
- startCursor
properties:
hasNextPage:
type: boolean
description: Whether there are more items after the end cursor
endCursor:
type: string
description: The cursor to continue pagination forwards
hasPreviousPage:
type: boolean
description: Whether there are more items before the start cursor
startCursor:
type: string
description: The cursor to continue pagination backwards
RequestEdge:
type: object
required:
- node
- cursor
properties:
node:
$ref: "#/components/schemas/Request"
cursor:
type: string
description: The cursor for this request edge
RequestConnection:
type: object
required:
- edges
- pageInfo
- totalCount
properties:
edges:
type: array
items:
$ref: "#/components/schemas/RequestEdge"
pageInfo:
$ref: "#/components/schemas/PageInfo"
totalCount:
type: integer
description: The total number of items available
UARScope:
description:
If set, the access review will only contain resources and groups
that match at least one of the filters in scope.
example:
filter_operator: ANY
users:
- userd283-ca87-4a8a-bdbb-df212eca5353
include_group_bindings: True
tags:
- key: uar_scope
value: high_priority
names:
- demo
- api
admins:
- f454d283-ca87-4a8a-bdbb-df212eca5353
- 8763d283-ca87-4a8a-bdbb-df212ecab139
resource_types:
- GCP_CLOUD_SQL_POSTGRES_INSTANCE
group_types:
- AWS_SSO_GROUP
apps:
- pas2d283-ca87-4a8a-bdbb-df212eca5353
- apss2d283-ca87-4a8a-bdbb-df212eca5353
entities:
- f454d283-as87-4a8a-bdbb-df212eca5353
- f454d283-as87-4a8a-bdbb-df212eca5329
properties:
group_visibility:
description: Specifies what users can see during an Access Review
type: string
enum: [STRICT, VIEW_VISIBLE_AND_ASSIGNED, VIEW_ALL]
users:
description:
The access review will only include the following users. If any
users are selected, any entity filters will be applied to only the
entities that the selected users have access to.
items:
example: userd283-ca87-4a8a-bdbb-df212eca5353
type: string
format: uuid
type: array
filter_operator:
description:
Specifies whether entities must match all (AND) or any (OR) of the
filters.
type: string
enum: [ANY, ALL]
entities:
description:
This access review will include resources and groups with ids in
the given strings.
items:
example: f454d283-as87-4a8a-bdbb-df212eca5353
type: string
format: uuid
type: array
apps:
description: This access review will include items in the specified applications
items:
example: pas2d283-ca87-4a8a-bdbb-df212eca5353
type: string
format: uuid
type: array
admins:
description:
This access review will include resources and groups who are owned
by one of the owners corresponding to the given IDs.
items:
example: f454d283-ca87-4a8a-bdbb-df212eca5353
type: string
format: uuid
type: array
group_types:
description: This access review will include items of the specified group types
type: array
items:
$ref: "#/components/schemas/GroupTypeEnum"
resource_types:
description: This access review will include items of the specified resource types
type: array
items:
$ref: "#/components/schemas/ResourceTypeEnum"
include_group_bindings:
type: boolean
example: False
tags:
description:
This access review will include resources and groups who are tagged
with one of the given tags.
items:
$ref: "#/components/schemas/TagFilter"
type: array
names:
description:
This access review will include resources and groups whose name
contains one of the given strings.
items:
example: demo
type: string
type: array
type: object
CampaignStatusEnum:
description: The current status of a campaign.
enum:
- DRAFT
- ONGOING
- COMPLETED
- STOPPED
- ENDED
example: ONGOING
type: string
CampaignRevokeOnEnum:
description: When access decisions take effect during a campaign.
enum:
- ACTION
- END
- NONE
example: END
type: string
CampaignGroupAssetVisibilityPolicyEnum:
description: Controls what group assets reviewers can see during the campaign.
enum:
- STRICT
- VIEW_VISIBLE_AND_ASSIGNED
- VIEW_ALL
example: STRICT
type: string
CampaignConfiguration:
description: Configuration for an access review campaign.
example:
configuration_id: 39a4d283-ca87-4a8a-bdbb-df212eca5fdb
created_at: 2026-07-01T00:00:00Z
updated_at: 2026-07-01T00:00:00Z
query: null
reviewer_assignment_policy: MANUALLY
allow_self_review: false
send_reviewer_assignment_notification: true
allow_reviewer_reassignment: false
start_date: null
end_date: 2026-09-30T00:00:00Z
timezone: America/Los_Angeles
revoke_on: END
reminder_schedule: [7, 3, 1]
reminder_include_manager: true
require_reason_on_denial: false
hide_ai_suggestions: false
custom_start_message: null
group_asset_visibility_policy: STRICT
is_template: false
cron_expression: null
next_scheduled_run: null
last_scheduled_run: null
recurring_duration_days: null
properties:
configuration_id:
description: The ID of the campaign configuration.
example: 39a4d283-ca87-4a8a-bdbb-df212eca5fdb
format: uuid
type: string
created_at:
description: The creation time of the configuration.
example: 2026-07-01T00:00:00Z
format: date-time
type: string
updated_at:
description: The last updated time of the configuration.
example: 2026-07-01T00:00:00Z
format: date-time
type: string
query:
description:
Access-path query defining the scope of access to review. Uses the
same principalFilter / entitlementFilter shape as ACCESS_PATH
OpalQuery.
allOf:
- $ref: "#/components/schemas/OpalAccessPathQueryBody"
nullable: true
reviewer_assignment_policy:
$ref: "#/components/schemas/UARReviewerAssignmentPolicyEnum"
allow_self_review:
description: Whether reviewers can review their own access.
example: false
type: boolean
send_reviewer_assignment_notification:
description: Whether to notify reviewers upon assignment.
example: true
type: boolean
allow_reviewer_reassignment:
description: Whether reviewers may reassign their reviews to another user.
example: false
type: boolean
start_date:
description: Scheduled start date of the campaign.
example: 2026-07-02T00:00:00Z
format: date-time
nullable: true
type: string
end_date:
description: Scheduled end date of the campaign.
example: 2026-09-30T00:00:00Z
format: date-time
nullable: true
type: string
timezone:
description:
IANA timezone used to interpret campaign deadlines (e.g.
America/Los_Angeles).
example: America/Los_Angeles
type: string
revoke_on:
$ref: "#/components/schemas/CampaignRevokeOnEnum"
reminder_schedule:
description: Days before end date to send reminder notifications.
example: [7, 3, 1]
items:
type: integer
type: array
reminder_include_manager:
description: Whether to include the reviewer's manager in reminders.
example: true
type: boolean
require_reason_on_denial:
description:
Whether reviewers must provide a reason when denying (revoking)
access.
example: false
type: boolean
hide_ai_suggestions:
description: Whether AI suggestions are hidden from reviewers.
example: false
type: boolean
custom_start_message:
description:
Optional custom message included when notifying reviewers that the
campaign started.
example: Please complete your reviews by Friday.
nullable: true
type: string
group_asset_visibility_policy:
$ref: "#/components/schemas/CampaignGroupAssetVisibilityPolicyEnum"
is_template:
description:
Whether this configuration is a recurring schedule template.
example: false
type: boolean
cron_expression:
description:
Cron expression driving the recurring schedule. Null for one-off
campaigns.
example: 0 9 1 * *
nullable: true
type: string
next_scheduled_run:
description: Next time a draft will be generated from this template.
example: 2026-08-01T16:00:00Z
format: date-time
nullable: true
type: string
last_scheduled_run:
description: Most recent time a draft was generated from this template.
example: 2026-07-01T16:00:00Z
format: date-time
nullable: true
type: string
recurring_duration_days:
description:
Deadline window in days applied to each draft generated from this
template.
example: 14
nullable: true
type: integer
required:
- configuration_id
- created_at
- updated_at
- reviewer_assignment_policy
- allow_self_review
- send_reviewer_assignment_notification
- allow_reviewer_reassignment
- timezone
- revoke_on
- reminder_include_manager
- require_reason_on_denial
- hide_ai_suggestions
- group_asset_visibility_policy
- is_template
type: object
CreateCampaignConfigurationInfo:
description:
Configuration to apply when creating a campaign. `query` is required;
other omitted fields use defaults.
example:
query:
principalFilter:
entityTypes: [USER]
end_date: 2026-09-30T00:00:00Z
timezone: America/Los_Angeles
allow_self_review: false
properties:
query:
description: |
Access-path query defining the scope of access to review. Required.
Uses the same principalFilter / entitlementFilter shape as
ACCESS_PATH OpalQuery. Must include at least one of
principalFilter or entitlementFilter.
Campaign scope only supports direct access edges:
`edgeFilter.directOnly` defaults to `true`, is always stored as
`true`, and passing `false` returns 400.
allOf:
- $ref: "#/components/schemas/OpalAccessPathQueryBody"
reviewer_assignment_policy:
$ref: "#/components/schemas/UARReviewerAssignmentPolicyEnum"
allow_self_review:
description: Whether reviewers can review their own access.
example: false
type: boolean
send_reviewer_assignment_notification:
description: Whether to notify reviewers upon assignment.
example: true
type: boolean
allow_reviewer_reassignment:
description: Whether reviewers may reassign their reviews to another user.
example: false
type: boolean
start_date:
description: Scheduled start date of the campaign.
example: 2026-07-02T00:00:00Z
format: date-time
nullable: true
type: string
end_date:
description: Scheduled end date of the campaign.
example: 2026-09-30T00:00:00Z
format: date-time
nullable: true
type: string
timezone:
description:
IANA timezone used to interpret campaign deadlines (e.g.
America/Los_Angeles).
example: America/Los_Angeles
type: string
revoke_on:
$ref: "#/components/schemas/CampaignRevokeOnEnum"
reminder_schedule:
description: Days before end date to send reminder notifications.
example: [7, 3, 1]
items:
type: integer
type: array
reminder_include_manager:
description: Whether to include the reviewer's manager in reminders.
example: true
type: boolean
require_reason_on_denial:
description:
Whether reviewers must provide a reason when denying (revoking)
access.
example: false
type: boolean
hide_ai_suggestions:
description: Whether AI suggestions are hidden from reviewers.
example: false
type: boolean
custom_start_message:
description:
Optional custom message included when notifying reviewers that the
campaign started.
example: Please complete your reviews by Friday.
nullable: true
type: string
group_asset_visibility_policy:
$ref: "#/components/schemas/CampaignGroupAssetVisibilityPolicyEnum"
is_template:
description:
Whether this configuration is a recurring schedule template.
example: false
type: boolean
cron_expression:
description:
Cron expression driving the recurring schedule. Null for one-off
campaigns.
example: 0 9 1 * *
nullable: true
type: string
recurring_duration_days:
description:
Deadline window in days applied to each draft generated from this
template.
example: 14
nullable: true
type: integer
excluded_role_assignment_ids:
description:
Role assignment IDs to exclude from the campaign scope during
population.
items:
format: uuid
type: string
type: array
required:
- query
type: object
CreateCampaignInfo:
description: |-
# CreateCampaignInfo Object
### Description
The `CreateCampaignInfo` object is used to create a campaign.
### Usage Example
Use in the `POST Campaigns` endpoint.
example:
name: Q3 Access Review
configuration:
query:
principalFilter:
entityTypes: [USER]
end_date: 2026-09-30T00:00:00Z
timezone: America/Los_Angeles
properties:
name:
description: The name of the campaign.
example: Q3 Access Review
type: string
configuration:
description:
Configuration for the campaign. Required; must include a query.
Other omitted fields use defaults.
allOf:
- $ref: "#/components/schemas/CreateCampaignConfigurationInfo"
required:
- name
- configuration
type: object
UpdateCampaignConfigurationInfo:
description: |
Configuration fields to update on a campaign. All fields are optional;
omitted fields are left unchanged. `query` and
`reviewer_assignment_policy` are set at create time and cannot be
updated here; including either field returns 400.
`cron_expression` and `recurring_duration_days` may only be set when
the campaign is a template; setting them on a one-off campaign returns
400. `is_template` is immutable and not accepted on update.
example:
end_date: 2026-09-30T00:00:00Z
timezone: America/Los_Angeles
allow_self_review: false
properties:
allow_self_review:
description: Whether reviewers can review their own access.
example: false
type: boolean
send_reviewer_assignment_notification:
description: Whether to notify reviewers upon assignment.
example: true
type: boolean
allow_reviewer_reassignment:
description: Whether reviewers may reassign their reviews to another user.
example: false
type: boolean
start_date:
description: |
Scheduled start date of the campaign. May only be updated while the
campaign has not started (started_at is null). When set, the date's
calendar day in the campaign timezone must be at least tomorrow.
example: 2026-07-02T00:00:00Z
format: date-time
nullable: true
type: string
end_date:
description: |
Scheduled end date of the campaign. When set, the date's calendar
day in the campaign timezone must be at least tomorrow.
example: 2026-09-30T00:00:00Z
format: date-time
nullable: true
type: string
timezone:
description:
IANA timezone used to interpret campaign deadlines (e.g.
America/Los_Angeles).
example: America/Los_Angeles
type: string
revoke_on:
$ref: "#/components/schemas/CampaignRevokeOnEnum"
reminder_schedule:
description: Days before end date to send reminder notifications.
example: [7, 3, 1]
items:
type: integer
type: array
reminder_include_manager:
description: Whether to include the reviewer's manager in reminders.
example: true
type: boolean
require_reason_on_denial:
description:
Whether reviewers must provide a reason when denying (revoking)
access.
example: false
type: boolean
hide_ai_suggestions:
description: Whether AI suggestions are hidden from reviewers.
example: false
type: boolean
custom_start_message:
description:
Optional custom message included when notifying reviewers that the
campaign started.
example: Please complete your reviews by Friday.
nullable: true
type: string
group_asset_visibility_policy:
$ref: "#/components/schemas/CampaignGroupAssetVisibilityPolicyEnum"
cron_expression:
description:
Cron expression driving the recurring schedule. Only valid on
template campaigns. Pass an empty string to clear the active months
(next_scheduled_run is cleared); the campaign remains a template.
example: 0 9 1 * *
nullable: true
type: string
recurring_duration_days:
description:
Deadline window in days applied to each draft generated from this
template. Only valid on template campaigns.
example: 14
nullable: true
type: integer
type: object
UpdateCampaignInfo:
description: |-
# UpdateCampaignInfo Object
### Description
The `UpdateCampaignInfo` object is used to partially update a campaign.
Omitted fields are left unchanged.
### Usage Example
Use in the `PUT Campaign` endpoint.
example:
name: Q3 Access Review (Updated)
configuration:
end_date: 2026-09-30T00:00:00Z
timezone: America/Los_Angeles
properties:
name:
description: The name of the campaign.
example: Q3 Access Review (Updated)
type: string
configuration:
description: Configuration fields to create or update.
allOf:
- $ref: "#/components/schemas/UpdateCampaignConfigurationInfo"
type: object
Campaign:
description: An access review campaign.
example:
campaign_id: f454d283-ca87-4a8a-bdbb-df212eca5353
name: Q3 Access Review
status: DRAFT
is_template: false
created_at: 2026-07-01T00:00:00Z
updated_at: 2026-07-01T00:00:00Z
created_by_user_id: 32acc112-21ff-4669-91c2-21e27683eaa1
configuration: null
started_at: null
started_by_user_id: null
stopped_at: null
stopped_by_user_id: null
ended_at: null
ended_by_user_id: null
properties:
campaign_id:
description: The ID of the campaign.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
name:
description: The name of the campaign.
example: Q3 Access Review
type: string
status:
$ref: "#/components/schemas/CampaignStatusEnum"
is_template:
description:
Whether this campaign is a recurring schedule template. Templates
spawn draft campaigns on schedule rather than being reviewed directly.
example: false
type: boolean
created_at:
description: The creation time of the campaign.
example: 2026-07-01T00:00:00Z
format: date-time
type: string
updated_at:
description: The last updated time of the campaign.
example: 2026-07-01T00:00:00Z
format: date-time
type: string
created_by_user_id:
description: The ID of the user who created the campaign.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
format: uuid
type: string
configuration:
description: The campaign's configuration, if set.
allOf:
- $ref: "#/components/schemas/CampaignConfiguration"
nullable: true
started_at:
description: The time the campaign was started, if started.
example: 2026-07-02T00:00:00Z
format: date-time
nullable: true
type: string
started_by_user_id:
description: The ID of the user who started the campaign, if started.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
format: uuid
nullable: true
type: string
stopped_at:
description: The time the campaign was manually stopped, if stopped.
example: 2026-07-10T00:00:00Z
format: date-time
nullable: true
type: string
stopped_by_user_id:
description: The ID of the user who stopped the campaign, if stopped.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
format: uuid
nullable: true
type: string
ended_at:
description: The time the campaign reached its scheduled end, if ended.
example: 2026-07-14T00:00:00Z
format: date-time
nullable: true
type: string
ended_by_user_id:
description: The ID of the user who ended the campaign, if ended.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
format: uuid
nullable: true
type: string
required:
- campaign_id
- name
- status
- is_template
- created_at
- updated_at
- created_by_user_id
type: object
PaginatedCampaignsList:
description: A list of campaigns.
example:
next: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
previous: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
results:
- campaign_id: f454d283-ca87-4a8a-bdbb-df212eca5353
name: Q3 Access Review
status: DRAFT
is_template: false
created_at: 2026-07-01T00:00:00Z
updated_at: 2026-07-01T00:00:00Z
created_by_user_id: 32acc112-21ff-4669-91c2-21e27683eaa1
properties:
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
nullable: true
type: string
results:
items:
$ref: "#/components/schemas/Campaign"
type: array
required:
- results
type: object
PaginatedUARsList:
description: A list of UARs.
example:
next: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
previous: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
results:
- uar_id: f454d283-ca87-4a8a-bdbb-df212eca5353
name: Monthly UAR (July)
send_reviewer_assignment_notification: False
deadline: 2022-07-14T06:59:59Z
time_zone: America/Los_Angeles
self_review_allowed: False
uar_scope:
tags:
- key: uar_scope
value: high_priority
names:
- demo
- api
admins:
- f454d283-ca87-4a8a-bdbb-df212eca5353
- 8763d283-ca87-4a8a-bdbb-df212ecab139
- uar_id: 39a4d283-ca87-4a8a-bdbb-df212eca5fdb
name: Monthly UAR (August)
send_reviewer_assignment_notification: True
deadline: 2022-08-14T06:59:59Z
time_zone: America/Los_Angeles
self_review_allowed: False
uar_scope:
tags:
- key: uar_scope
value: high_priority
names:
- demo
- api
admins:
- f454d283-ca87-4a8a-bdbb-df212eca5353
- 8763d283-ca87-4a8a-bdbb-df212ecab139
properties:
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
nullable: true
type: string
results:
items:
$ref: "#/components/schemas/UAR"
type: array
required:
- results
type: object
UAR:
description: A user access review.
example:
uar_id: f454d283-ca87-4a8a-bdbb-df212eca5353
name: Monthly UAR (July)
send_reviewer_assignment_notification: False
deadline: 2022-07-14T06:59:59Z
time_zone: America/Los_Angeles
self_review_allowed: False
uar_scope:
tags:
- key: uar_scope
value: high_priority
names:
- demo
- api
admins:
- f454d283-ca87-4a8a-bdbb-df212eca5353
- 8763d283-ca87-4a8a-bdbb-df212ecab139
properties:
uar_id:
description: The ID of the UAR.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
name:
description: The name of the UAR.
example: Monthly UAR (July)
type: string
reviewer_assignment_policy:
$ref: "#/components/schemas/UARReviewerAssignmentPolicyEnum"
send_reviewer_assignment_notification:
description:
A bool representing whether to send a notification to reviewers
when they're assigned a new review. Default is False.
example: False
type: boolean
deadline:
description: The last day for reviewers to complete their access reviews.
example: 2022-07-14T06:59:59Z
type: string
format: date-time
time_zone:
description:
The time zone name (as defined by the IANA Time Zone database) used
in the access review deadline and exported audit report. Default is
America/Los_Angeles.
example: America/Los_Angeles
type: string
self_review_allowed:
description:
A bool representing whether to present a warning when a user is the
only reviewer for themself. Default is False.
example: False
type: boolean
instantly_action_reviews:
description:
A bool representing whether to instantly action changes when
reviewers submit their decision. Default is False.
type: boolean
example: False
uar_scope:
$ref: "#/components/schemas/UARScope"
required:
- uar_id
- name
- deadline
- reviewer_assignment_policy
- send_reviewer_assignment_notification
- time_zone
- self_review_allowed
- instantly_action_reviews
type: object
CreateUARInfo:
description: Information needed to start a user access review.
example:
name: Monthly UAR (July)
send_reviewer_assignment_notification: False
deadline: 2022-07-14T06:59:59Z
time_zone: America/Los_Angeles
self_review_allowed: False
reminder_schedule: [7, 3, 1, 0]
reminder_include_manager: True
uar_scope:
group_visibility: STRICT
tags:
- key: uar_scope
value: high_priority
names:
- demo
- api
admins:
- f454d283-ca87-4a8a-bdbb-df212eca5353
- 8763d283-ca87-4a8a-bdbb-df212ecab139
properties:
name:
description: The name of the UAR.
example: Monthly UAR (July)
type: string
reviewer_assignment_policy:
$ref: "#/components/schemas/UARReviewerAssignmentPolicyEnum"
send_reviewer_assignment_notification:
description:
A bool representing whether to send a notification to reviewers
when they're assigned a new review. Default is False.
example: False
type: boolean
deadline:
description: The last day for reviewers to complete their access reviews.
example: 2022-07-14T06:59:59Z
type: string
format: date-time
time_zone:
description:
The time zone name (as defined by the IANA Time Zone database) used
in the access review deadline and exported audit report. Default is
America/Los_Angeles.
example: America/Los_Angeles
type: string
self_review_allowed:
description:
A bool representing whether to present a warning when a user is the
only reviewer for themself. Default is False.
example: False
type: boolean
instantly_action_reviews:
description:
A bool representing whether to instantly action changes when
reviewers submit their decision. Default is False.
type: boolean
example: False
reminder_schedule:
items:
type: integer
type: array
reminder_include_manager:
type: boolean
example: False
uar_scope:
$ref: "#/components/schemas/UARScope"
required:
- name
- deadline
- reviewer_assignment_policy
- send_reviewer_assignment_notification
- time_zone
- self_review_allowed
type: object
UARReviewerAssignmentPolicyEnum:
description:
A policy for auto-assigning reviewers. If auto-assignment is on,
specific assignments can still be manually adjusted after the access
review is started. Default is Manually. BY_OWNING_TEAM_ADMIN assigns
reviews to resource admins in round-robin fashion.
BY_OWNING_TEAM_ADMIN_ALL assigns reviews to all resource admins.
BY_APPROVERS assigns reviews to resource approvers in round-robin
fashion. BY_APPROVERS_ALL assigns reviews to all resource approvers.
enum:
- MANUALLY
- BY_OWNING_TEAM_ADMIN
- BY_OWNING_TEAM_ADMIN_ALL
- BY_MANAGER
- BY_APPROVERS
- BY_APPROVERS_ALL
example: MANUALLY
type: string
TagFilter:
description: A tag filter defined by the tags key and value.
example:
key: uar_scope
value: high_priority
properties:
key:
description: The key of the tag.
example: uar_scope
type: string
value:
description: The value of the tag.
example: high_priority
type: string
required:
- key
type: object
AppsList:
description: A list of apps.
example:
- app_id: f454d283-ca87-4a8a-bdbb-df212eca5353
name: Okta Org
description: Okta directory for the engineering team.
admin_owner_id: 7c86c85d-0651-43e2-a748-d69d658418e8
app_type: OKTA_DIRECTORY
- app_id: 5247d283-ca87-4a8a-bdbb-df212eca1243
name: Prod AWS Account
description: Our production engineering account for AWS.
admin_owner_id: aab485d-0651-43e2-a748-d69d6584123af
app_type: AWS
properties:
apps:
items:
$ref: "#/components/schemas/App"
type: array
required:
- apps
type: object
App:
description: |-
# App Object
### Description
The `App` object is used to represent an app to an application.
### Usage Example
List from the `GET Apps` endpoint.
example:
app_id: f454d283-ca87-4a8a-bdbb-df212eca5353
name: Okta Org
description: Okta directory for the engineering team.
admin_owner_id: 7c86c85d-0651-43e2-a748-d69d658418e8
app_type: OKTA_DIRECTORY
properties:
app_id:
description: The ID of the app.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
name:
description: The name of the app.
example: Okta Org
type: string
description:
description: A description of the app.
example: Okta directory for the engineering team.
type: string
admin_owner_id:
description: The ID of the owner of the app.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
app_type:
$ref: "#/components/schemas/AppTypeEnum"
validations:
description: Validation checks of an apps' configuration and permissions.
items:
$ref: "#/components/schemas/AppValidation"
type: array
required:
- app_id
- name
- description
- admin_owner_id
- app_type
type: object
AppTypeEnum:
description: The type of an app.
enum:
- ACTIVE_DIRECTORY
- ANTHROPIC
- AZURE_AD
- AWS
- AWS_SSO
- CLICKHOUSE
- COUPA
- CURSOR
- CUSTOM
- CONFLUENCE
- CUSTOM_CONNECTOR
- DATABRICKS
- DATASTAX_ASTRA
- ALICLOUD
- DEVIN
- DOCUSIGN
- DUO
- GCP
- GIT_HUB
- GIT_LAB
- GOOGLE_GROUPS
- GOOGLE_WORKSPACE
- GRAFANA
- HUBSPOT
- ILEVEL
- INCIDENTIO
- JIRA
- LDAP
- MARIADB
- MONGO
- MONGO_ATLAS
- MYSQL
- NETSUITE
- DATADOG
- OKTA_CIAM
- OKTA_DIRECTORY
- OPENAI_PLATFORM
- OPAL
- ORACLE_FUSION
- PAGERDUTY
- POSTGRES
- ROOTLY
- SALESFORCE
- SNOWFLAKE
- SLACK
- TABLEAU
- TAILSCALE
- TELEPORT
- TWINGATE
- VAULT
- WORKDAY
- ZENDESK
- ZOOM
example: OKTA_DIRECTORY
type: string
EntityTypeEnum:
description: The type of an entity.
enum:
- GROUP
- RESOURCE
- USER
example: GROUP
type: string
Event:
description: |-
# Event Object
### Description
The `Event` object is used to represent an event.
### Usage Example
Fetch from the `LIST Events` endpoint.
example:
event_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
actor_user_id: 1b978423-db0a-4037-a4cf-f79c60cb67b3
created_at: 2022-01-23T04:56:07Z
event_type: USERS_CREATED
properties:
event_id:
description: The ID of the event.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
actor_user_id:
description: The ID of the actor user.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
format: uuid
type: string
actor_name:
description: The name of the actor user.
example: John Smith
format: string
actor_email:
description: The email of the actor user.
example: john@acmecorp.com
type: string
event_type:
description: The event type.
example: USERS_CREATED
type: string
created_at:
description: The day and time the event was created.
example: 2022-01-23T04:56:07Z
format: date-time
type: string
actor_ip_address:
description: The IP address of the event actor.
example: 255.255.255.0
type: string
api_token_name:
description: The name of the API token used to create the event.
example: My API Token
type: string
api_token_preview:
description: The preview of the API token used to create the event.
example: "**************************M_g=="
type: string
sub_events:
items:
$ref: "#/components/schemas/SubEvent"
type: array
required:
- event_id
- actor_user_id
- actor_name
- event_type
- created_at
type: object
AppValidation:
description: |-
# App validation object
### Description
The `AppValidation` object is used to represent a validation check of an apps' configuration and permissions.
### Usage Example
List from the `GET Apps` endpoint.
example:
key: "iam:GetRole"
name: "Opal's service account is missing the 'iam:GetRole' permission."
usage_reason: "Opal uses the 'iam:GetRole' permissions to view access to resources."
details:
"403 Google API Error. Service account is not authorized to access role
assignments."
severity: HIGH
status: FAILED
updated_at: 2021-01-06T20:00:00Z
properties:
key:
description: The key of the app validation. These are not unique IDs between runs.
example: "iam:GetUser"
type: string
name:
description:
The human-readable description of whether the validation has the
permissions.
example: "Opal's service account is missing the 'iam:GetUser' description."
usage_reason:
description: The reason for needing the validation.
example: Opal uses the 'iam:GetUser' permission to import users.
type: string
details:
description:
Extra details regarding the validation. Could be an error message
or restrictions on permissions.
example:
403 Google API Error. Service account is not authorized to access role
assignments.
type: string
severity:
$ref: "#/components/schemas/AppValidationSeverityEnum"
status:
$ref: "#/components/schemas/AppValidationStatusEnum"
updated_at:
description: The date and time the app validation was last run.
example: 2021-01-06T20:00:00Z
format: date-time
type: string
required:
- key
- name
- status
- severity
- updated_at
AppValidationSeverityEnum:
description: The severity of an app validation.
enum:
- CRITICAL
- HIGH
- MEDIUM
- LOW
example: CRITICAL
type: string
AppValidationStatusEnum:
description: The status of an app validation.
enum:
- SUCCESS
- FAILED
example: FAILED
type: string
SubEvent:
description: |-
# Sub event Object
### Description
The `SubEvent` object is used to represent a subevent.
### Usage Example
Fetch from the `LIST Events` endpoint.
example:
sub_event_type: USERS_CREATED
user_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
user_name: John Smith
resource_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
resource_name: Figma
properties:
sub_event_type:
description: The subevent type.
example: USERS_CREATED
type: string
required:
- sub_event_type
type: object
additionalProperties: true
PaginatedEventList:
example:
next: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
previous: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
results:
- event_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
actor_user_id: 1b978423-db0a-4037-a4cf-f79c60cb67b3
created_at: 2022-01-23T04:56:07Z
event_type: USERS_CREATED
- event_id: 7646aa9a-e2ee-4eb5-8c62-91f29038a373
actor_user_id: 1b978423-db0a-4037-a4cf-f79c60cb67b3
created_at: 2022-02-03T12:33:02Z
event_type: USER_TEAM_UPDATED
properties:
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
nullable: true
type: string
results:
items:
$ref: "#/components/schemas/Event"
type: array
type: object
ResourceAccessUserList:
example:
results:
- full_name: Jake Barnes
user_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
resource_id: 1b978423-db0a-4037-a4cf-f79c60cb67b3
expiration_date: 2022-01-23T04:56:07Z
email: jake@company.dev
has_direct_access: true
num_access_paths: 2
- full_name: Brett Ashley
user_id: 7646aa9a-e2ee-4eb5-8c62-91f29038a373
resource_id: 1b978423-db0a-4037-a4cf-f79c60cb67b3
expiration_date: 2022-02-03T12:33:02Z
email: brett@company.dev
has_direct_access: true
num_access_paths: 3
properties:
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
nullable: true
type: string
results:
items:
$ref: "#/components/schemas/ResourceAccessUser"
type: array
type: object
ResourceAccessLevel:
description: |-
# 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.
example:
access_level_name: AdminRole
access_level_remote_id: arn:aws:iam::590304332660:role/AdministratorAccess
properties:
access_level_name:
description: The human-readable name of the access level.
example: AdminRole
type: string
access_level_remote_id:
description: The machine-readable identifier of the access level.
example: arn:aws:iam::590304332660:role/AdministratorAccess
type: string
required:
- access_level_name
- access_level_remote_id
type: object
ResourceAccessLevelList:
description: A list of access levels defined for a resource.
example:
results:
- access_level_name: AdminRole
access_level_remote_id: arn:aws:iam::590304332660:role/AdministratorAccess
- access_level_name: ReadOnly
access_level_remote_id: arn:aws:iam::590304332660:role/ReadOnlyAccess
properties:
results:
items:
$ref: "#/components/schemas/ResourceAccessLevel"
type: array
type: object
ResourceUserAccessStatus:
description: |-
# AccessStatus Object
### Description
The `AccessStatus` object is used to represent the user's access to the resource.
### Usage Example
View the `AccessStatus` for a resource/user pair to determine if the user has access to the resource.
example:
user_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
resource_id: 1b978423-db0a-4037-a4cf-f79c60cb67b3
expiration_date: 2022-01-23T04:56:07Z
status: AUTHORIZED
properties:
resource_id:
description: The ID of the resource.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
user_id:
description: The ID of the user.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
format: uuid
type: string
access_level:
$ref: "#/components/schemas/ResourceAccessLevel"
status:
$ref: "#/components/schemas/ResourceUserAccessStatusEnum"
expiration_date:
description: The day and time the user's access will expire.
example: 2022-01-23T04:56:07Z
format: date-time
nullable: true
type: string
required:
- resource_id
- status
- user_id
type: object
ResourceUserAccessStatusEnum:
description: The status of the user's access to the resource.
enum:
- AUTHORIZED
- REQUESTED
- UNAUTHORIZED
example: AUTHORIZED
type: string
ResourceUser:
description: |-
# Resource User Object
### Description
The `ResourceUser` object is used to represent a user with direct access to a resource.
example:
full_name: Jake Barnes
user_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
resource_id: 1b978423-db0a-4037-a4cf-f79c60cb67b3
expiration_date: 2022-01-23T04:56:07Z
email: jake@company.dev
properties:
resource_id:
description: The ID of the resource.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
user_id:
description: The ID of the user.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
format: uuid
type: string
access_level:
$ref: "#/components/schemas/ResourceAccessLevel"
full_name:
description: The user's full name.
example: Jake Barnes
type: string
email:
description: The user's email.
example: jake@company.dev
type: string
expiration_date:
description: The day and time the user's access will expire.
example: 2022-01-23T04:56:07Z
format: date-time
nullable: true
type: string
required:
- email
- full_name
- resource_id
- user_id
- access_level
type: object
ResourceAccessUser:
description: |-
# Resource Access User Object
### Description
The `ResourceAccessUser` object is used to represent a user with access to a resource, either directly or indirectly through group(s).
### Usage Example
Fetch from the `LIST ResourceUsers` endpoint.
example:
full_name: Jake Barnes
user_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
resource_id: 1b978423-db0a-4037-a4cf-f79c60cb67b3
expiration_date: 2022-01-23T04:56:07Z
email: jake@company.dev
properties:
resource_id:
description: The ID of the resource.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
resource_name:
description: The name of the resource.
example: AdministratorAccess
type: string
description:
description: The description of the resource.
example: Full access to all resources and settings.
type: string
user_id:
description: The ID of the user.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
format: uuid
type: string
access_level:
$ref: "#/components/schemas/ResourceAccessLevel"
full_name:
description: The user's full name.
example: Jake Barnes
type: string
email:
description: The user's email.
example: jake@company.dev
type: string
expiration_date:
description: The day and time the user's access will expire.
example: 2022-01-23T04:56:07Z
format: date-time
nullable: true
type: string
has_direct_access:
description:
The user has direct access to this resources (vs. indirectly, like
through a group).
example: true
type: boolean
num_access_paths:
description:
The number of ways in which the user has access through this
resource (directly and indirectly).
example: 3
format: int32
type: integer
propagation_status:
$ref: "#/components/schemas/PropagationStatus"
required:
- email
- full_name
- resource_id
- user_id
- access_level
- has_direct_access
- num_access_paths
type: object
AccessList:
example:
results:
- principal_id: 74908af0-9383-4feb-b7ea-8b305d737338
principal_type: RESOURCE
entity_id: db04925a-635d-4764-870e-500b9b035c8e
entity_type: RESOURCE
expiration_date: 2022-01-23T04:56:07Z
has_direct_access: true
num_access_paths: 3
- principal_id: d940df34-726a-4403-864e-16cb2a0d6793
principal_type: RESOURCE
entity_id: c26cd16c-a3fa-4b82-96b1-32177f8b8f59
entity_type: RESOURCE
expiration_date: 2022-01-23T04:56:07Z
has_direct_access: true
num_access_paths: 3
properties:
results:
items:
$ref: "#/components/schemas/Access"
type: array
type: object
Access:
description: |-
# Access Object
### Description
The `Access` object is used to represent a principal's access to an entity, either directly or inherited.
### Usage Example
Fetch from the `LIST ResourceNonHumanIdentities` endpoint.
example:
principal_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
principal_type: RESOURCE
entity_id: 1b978423-db0a-4037-a4cf-f79c60cb67b3
entity_type: RESOURCE
expiration_date: 2022-01-23T04:56:07Z
has_direct_access: true
num_access_paths: 3
properties:
principal_id:
description: The ID of the principal with access.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
principal_type:
$ref: "#/components/schemas/EntityTypeEnum"
entity_id:
description: The ID of the entity being accessed.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
entity_type:
$ref: "#/components/schemas/EntityTypeEnum"
access_level:
$ref: "#/components/schemas/ResourceAccessLevel"
expiration_date:
description: The day and time the principal's access will expire.
example: 2022-01-23T04:56:07Z
format: date-time
nullable: true
type: string
has_direct_access:
description:
The principal has direct access to this entity (vs. inherited
access).
example: true
type: boolean
num_access_paths:
description:
The number of ways in which the principal has access to this entity
(directly and inherited).
example: 3
format: int32
type: integer
required:
- principal_id
- principal_type
- entity_id
- entity_type
- has_direct_access
- num_access_paths
type: object
ResourceNHI:
description: |-
# Resource Non-Human Identity Direct Access Object
### Description
This object is used to represent a non-human identity with direct access to a resource.
example:
non_human_identity_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
resource_id: 1b978423-db0a-4037-a4cf-f79c60cb67b3
expiration_date: 2022-01-23T04:56:07Z
properties:
resource_id:
description: The ID of the resource.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
non_human_identity_id:
description: The resource ID of the non-human identity.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
format: uuid
type: string
access_level:
$ref: "#/components/schemas/ResourceAccessLevel"
expiration_date:
description: The day and time the non-human identity's access will expire.
example: 2022-01-23T04:56:07Z
format: date-time
nullable: true
type: string
required:
- resource_id
- non_human_identity_id
type: object
SessionsList:
example:
next: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
previous: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
results:
- connection_id: h0z968412-2451-4bbd-42h4-057l715d917m
user_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
resource_id: 1b978423-db0a-4037-a4cf-f79c60cb67b3
expiration_date: 2022-01-23T04:56:07Z
- connection_id: 6e6b5597-bd36-4f4c-a629-01e3fa791932
user_id: b031c922-b84f-4424-9f4f-c49c05871bfe
resource_id: 77eb1ab7-2c27-4fc4-afdb-137e1265cddd
expiration_date: 2022-03-12T07:22:18Z
properties:
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
nullable: true
type: string
results:
items:
$ref: "#/components/schemas/Session"
type: array
type: object
Paladin:
description: |-
# Paladin Object
### Description
The `Paladin` object represents a Paladin, Opal's AI access-request
reviewer.
example:
paladin_id: 32acc112-21ff-4669-91c2-21e27683eaa1
name: paladin-agent-1
owner_id: 7c86c85d-0651-43e2-a748-d69d658418e8
monitor_mode: true
admin_view_only: false
enabled_connectors:
- SLACK
properties:
paladin_id:
description:
The ID of the Paladin. Use this value as a reviewer in a request
configuration's service_user_ids.
example: 32acc112-21ff-4669-91c2-21e27683eaa1
format: uuid
type: string
name:
description: The name of the Paladin.
example: paladin-agent-1
type: string
owner_id:
description: The ID of the owner of the Paladin.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
monitor_mode:
description:
When true, the Paladin reasons about requests but takes no action.
Shown as "Monitor mode" in the UI.
type: boolean
admin_view_only:
description:
When true, the Paladin's recommendations are visible only to admins.
Only meaningful when monitor_mode is true.
type: boolean
enabled_connectors:
description: The connectors the Paladin is allowed to use.
type: array
items:
$ref: "#/components/schemas/PaladinConnector"
instructions:
description:
The free-form instructions that guide the Paladin's decisions.
example: Approve read-only access; escalate anything that grants write access.
type: string
required:
- paladin_id
- name
- owner_id
- monitor_mode
- admin_view_only
- enabled_connectors
- instructions
type: object
PaladinList:
description: |-
# PaladinList Object
### Description
A list of `Paladin` objects.
properties:
results:
items:
$ref: "#/components/schemas/Paladin"
type: array
required:
- results
type: object
PaladinConnector:
description: A connector a Paladin is allowed to use.
enum:
- NOTION
- JIRA
- LINEAR
- SERVICE_NOW
- NOTION_TICKETS
- FRESH_SERVICE
- SHORTCUT
- SLACK
- PAGER_DUTY
- CONFLUENCE
- FLEET_DM
type: string
PaladinContextSourceKind:
description:
The kind of source a Paladin can read. A SLACK_CHANNEL is a Slack
channel; a DOCUMENT is a Notion or Confluence page.
enum:
- SLACK_CHANNEL
- DOCUMENT
type: string
PaladinContextSourceProvider:
description: The integration a Paladin context source comes from.
enum:
- SLACK
- NOTION
- CONFLUENCE
type: string
PaladinContextSource:
description: |-
# PaladinContextSource Object
### Description
A context source (a Slack channel or a document) that a Paladin is
configured to read during access-request review.
example:
id: 8a1f2c3d-4b5e-6f70-8192-a3b4c5d6e7f8
paladin_id: 32acc112-21ff-4669-91c2-21e27683eaa1
source_kind: SLACK_CHANNEL
third_party_provider: SLACK
remote_id: C0123456789
name: "#access-requests"
url: https://example.slack.com/archives/C0123456789
properties:
id:
description: The ID of the context source.
format: uuid
type: string
paladin_id:
description: The ID of the Paladin this source belongs to.
format: uuid
type: string
source_kind:
$ref: "#/components/schemas/PaladinContextSourceKind"
third_party_provider:
$ref: "#/components/schemas/PaladinContextSourceProvider"
remote_id:
description:
The provider's identifier for the source. The Slack channel ID for
a channel, or the Notion/Confluence page ID for a document.
type: string
name:
description: A human-readable name for the source.
type: string
url:
description: A link to the source.
type: string
required:
- id
- paladin_id
- source_kind
- third_party_provider
- remote_id
- name
- url
type: object
PaladinContextSourceList:
description: |-
# PaladinContextSourceList Object
### Description
A list of `PaladinContextSource` objects.
properties:
results:
items:
$ref: "#/components/schemas/PaladinContextSource"
type: array
required:
- results
type: object
CreatePaladinContextSourceInfo:
description: Information for adding a context source to a Paladin.
example:
source_kind: SLACK_CHANNEL
third_party_provider: SLACK
remote_id: C0123456789
name: "#access-requests"
properties:
source_kind:
$ref: "#/components/schemas/PaladinContextSourceKind"
third_party_provider:
$ref: "#/components/schemas/PaladinContextSourceProvider"
remote_id:
description:
The provider's identifier for the source. The Slack channel ID for
a channel, or the Notion/Confluence page ID for a document.
type: string
name:
description: An optional human-readable name for the source.
type: string
url:
description: An optional link to the source.
type: string
required:
- source_kind
- third_party_provider
- remote_id
type: object
CreatePaladinInfo:
description: Information for creating a Paladin.
example:
name: paladin-agent-1
owner_id: 7c86c85d-0651-43e2-a748-d69d658418e8
properties:
name:
description: The name of the Paladin.
example: paladin-agent-1
type: string
owner_id:
description: The ID of the owner of the Paladin.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
monitor_mode:
description:
When true, the Paladin reasons about requests but takes no action.
Defaults to true.
type: boolean
default: true
admin_view_only:
description:
When true, recommendations are visible only to admins. Only
meaningful when monitor_mode is true. Defaults to false.
type: boolean
default: false
enabled_connectors:
description: The connectors the Paladin is allowed to use.
type: array
items:
$ref: "#/components/schemas/PaladinConnector"
instructions:
description:
The free-form instructions that guide the Paladin's decisions.
Optional; if omitted the Paladin is created without instructions.
type: string
required:
- name
- owner_id
type: object
UpdatePaladinInfo:
description: Information for updating a Paladin.
example:
name: paladin-agent-1
properties:
name:
description: The name of the Paladin.
example: paladin-agent-1
type: string
monitor_mode:
description:
When true, the Paladin reasons about requests but takes no action.
If omitted, the existing value is preserved.
type: boolean
admin_view_only:
description:
When true, recommendations are visible only to admins. Only
meaningful when monitor_mode is true. If omitted, the existing value
is preserved.
type: boolean
enabled_connectors:
description:
The connectors the Paladin is allowed to use. If omitted, the
existing connectors are preserved.
type: array
items:
$ref: "#/components/schemas/PaladinConnector"
instructions:
description:
The free-form instructions that guide the Paladin's decisions. If
omitted, the existing instructions are preserved.
type: string
required:
- name
type: object
Session:
description: |-
# Session Object
### Description
The `Session` object is used to represent an access session. Some resources can be accessed temporarily via a time-bounded session.
### Usage Example
Fetch from the `LIST Sessions` endpoint.
example:
connection_id: h0z968412-2451-4bbd-42h4-057l715d917m
user_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
resource_id: 1b978423-db0a-4037-a4cf-f79c60cb67b3
expiration_date: 2022-01-23T04:56:07Z
properties:
connection_id:
description: The ID of the connection.
example: h0z968412-2451-4bbd-42h4-057l715d917m
format: uuid
type: string
user_id:
description: The ID of the user.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
format: uuid
type: string
resource_id:
description: The ID of the resource.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
access_level:
$ref: "#/components/schemas/ResourceAccessLevel"
expiration_date:
description: The day and time the user's access will expire.
example: 2022-01-23T04:56:07Z
format: date-time
nullable: false
type: string
required:
- connection_id
- user_id
- resource_id
- access_level
- expiration_date
type: object
PaginatedUsersList:
example:
next: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
previous: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
results:
- user_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
email: john.doe@company.dev
full_name: John Doe
position: Senior Engineer
- user_id: e8581682-04f7-473a-a419-472f0fb26d46
email: jane.smith@company.dev
full_name: Jane Smith
position: Product Marketing Lead
properties:
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
nullable: true
type: string
results:
items:
$ref: "#/components/schemas/User"
type: array
type: object
required:
- results
PaginatedRemoteUsersList:
example:
next: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
previous: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
results:
- user_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
remote_id: 1234567890
third_party_provider: GIT_LAB
- user_id: 29827fb8-f2dd-4e80-9576-238979927392
remote_id: remoteid123
third_party_provider: GIT_HUB
properties:
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
nullable: true
type: string
results:
items:
$ref: "#/components/schemas/RemoteUser"
type: array
type: object
required:
- results
RemoteUser:
description: |-
# RemoteUser Object
### Description
The `RemoteUser` object is used to represent a remote user.
example:
user_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
remote_id: 1234567890
third_party_provider: GIT_HUB
properties:
user_id:
description: The ID of the user.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
format: uuid
type: string
remote_id:
description: The ID of the remote user.
example: 1234567890
type: string
third_party_provider:
description: The third party provider of the remote user.
example: GIT_HUB
$ref: "#/components/schemas/ThirdPartyProviderEnum"
required:
- user_id
- remote_id
- third_party_provider
type: object
User:
description: |-
# User Object
### Description
The `User` object is used to represent a user.
### Usage Example
Fetch from the `LIST Sessions` endpoint.
example:
user_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
email: john.doe@company.dev
full_name: John Doe
first_name: John
last_name: Doe
position: Engineer
properties:
user_id:
description: The ID of the user.
example: h0z968412-2451-4bbd-42h4-057l715d917m
format: uuid
type: string
email:
description: The email of the user.
example: john.doe@company.dev
type: string
full_name:
description: The full name of the user.
example: John Doe
type: string
first_name:
description: The first name of the user.
example: John
type: string
last_name:
description: The last name of the user.
example: Doe
type: string
position:
description: The user's position.
example: Senior Engineer
type: string
hr_idp_status:
$ref: "#/components/schemas/UserHrIdpStatusEnum"
required:
- user_id
- email
- full_name
- first_name
- last_name
- position
type: object
UserList:
description: A list of users.
properties:
users:
items:
$ref: "#/components/schemas/User"
type: array
type: object
required:
- users
UserIDList:
description: A list of user IDs.
example:
user_ids:
- 7870617d-e72a-47f5-a84c-693817ab4567
- 1520617d-e72a-47f5-a84c-693817ab48ad2
properties:
user_ids:
items:
type: string
format: uuid
type: array
type: object
required:
- user_ids
UserHrIdpStatusEnum:
description: User status pulled from an HR/IDP provider.
enum:
- ACTIVE
- SUSPENDED
- DEPROVISIONED
- DELETED
- NOT_FOUND
example: ACTIVE
type: string
ThirdPartyProviderEnum:
description: The third party provider of the remote user.
enum:
- AUTH0
- SLACK
- GOOGLE_CHAT
- JIRA
- LINEAR
- SERVICE_NOW
- FRESH_SERVICE
- SHORTCUT
- PAGER_DUTY
- OPSGENIE
- GIT_HUB
- GIT_LAB
- GIT_LAB_CONNECTION
- TELEPORT
example: GIT_HUB
type: string
PaginatedGroupsList:
example:
next: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
previous: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
results:
- group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
app_id: b5a5ca27-0ea3-4d86-9199-2126d57d1fbd
name: Payments Production Admin
description:
This group represents Active Directory group "Payments Production
Admin". We use this AD group to facilitate staging deployments and
qualifying new releases.
admin_owner_id: 7c86c85d-0651-43e2-a748-d69d658418e8
group_leader_user_ids:
- 7c86c85d-0651-43e2-a748-d69d658418e8
remote_id: 037m2jsg218b2wb
remote_name: Finance Team
group_type: ACTIVE_DIRECTORY_GROUP
max_duration: 120
recommended_duration: 60
extensions_duration_in_minutes: 60
require_manager_approval: False
require_support_ticket: False
require_mfa_to_approve: False
require_mfa_to_request: False
auto_approval: False
is_requestable: True
- group_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
app_id: a7c3e291-1234-4abc-9def-1234567890ab
name: Integrations On-Call
description:
Manages the Integrations Team on-call privileged resources. This
group is automatically synced with the on-call rotation defined in
PagerDuty.
admin_owner_id: 4220bc12-ab8a-4b5d-be7b-f6bbcf9159f3
group_leader_user_ids: []
remote_id: pagerduty-schedule:P123XYZ
remote_name: Integrations On-Call
group_type: PAGERDUTY_ON_CALL_SCHEDULE
max_duration: 360
recommended_duration: 120
extensions_duration_in_minutes: 0
require_manager_approval: False
require_support_ticket: True
require_mfa_to_approve: False
require_mfa_to_request: False
auto_approval: False
is_requestable: True
properties:
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
nullable: true
type: string
results:
items:
$ref: "#/components/schemas/Group"
type: array
type: object
required:
- results
GroupResource:
description: |-
# GroupResource Object
### Description
The `GroupResource` object is used to represent a relationship between a group and a resource.
example:
group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
resource_id: b5a5ca27-0ea3-4d86-9199-2126d57d1fbd
access_level_remote_id: "write"
properties:
group_id:
description: The ID of the group.
example: f454d283-ca87-4a87-bdbb-df212eca5353
format: uuid
type: string
resource_id:
description: The ID of the resource.
example: b5a5ca27-0ea3-4d86-9199-2126d57d1fbd
format: uuid
type: string
group_name:
description: The name of the group
example: API Group
type: string
resource_name:
description: The name of the resource
example: API Group
type: string
expiration_date:
description: The day and time the group's access will expire.
example: 2022-01-23T04:56:07Z
format: date-time
nullable: true
type: string
access_level:
$ref: "#/components/schemas/ResourceAccessLevel"
required:
- group_id
- resource_id
- access_level
type: object
GroupContainingGroup:
description: |-
# GroupContainingGroup Object
### Description
The `GroupContainingGroup` object is used to represent a relationship between a group and a group.
example:
containing_group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
properties:
containing_group_id:
description: The groupID of the containing group.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
duration_minutes:
description:
The updated duration for which the group can be accessed (in
minutes). Use 0 for indefinite.
type: integer
maximum: 525960 # One year
example: 120
access_level_remote_id:
description: The updated remote ID of the access level granted to this group.
type: string
example: arn:aws:iam::590304332660:role/ReadOnlyAccess
required:
- containing_group_id
type: object
Group:
description: |-
# Group Object
### Description
The `Group` object is used to represent a group.
### Usage Example
Update from the `UPDATE Groups` endpoint.
example:
group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
app_id: b5a5ca27-0ea3-4d86-9199-2126d57d1fbd
name: Payments Production Admin
description:
This group represents Active Directory group "Payments Production
Admin". We use this AD group to facilitate staging deployments and
qualifying new releases.
admin_owner_id: 7c86c85d-0651-43e2-a748-d69d658418e8
group_leader_user_ids:
- 7c86c85d-0651-43e2-a748-d69d658418e8
remote_id: 037m2jsg218b2wb
remote_name: Finance Team
group_type: ACTIVE_DIRECTORY_GROUP
max_duration: 120
recommended_duration: 60
extensions_duration_in_minutes: 60
require_manager_approval: False
require_support_ticket: False
require_mfa_to_approve: False
require_mfa_to_request: False
auto_approval: False
is_requestable: True
properties:
group_id:
description: The ID of the group.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
app_id:
description: The ID of the group's app.
example: b5a5ca27-0ea3-4d86-9199-2126d57d1fbd
format: uuid
type: string
name:
description: The name of the group.
example: API Group
type: string
description:
description: A description of the group.
example:
This group represents Active Directory group "Payments Production
Admin". We use this AD group to facilitate staging deployments and
qualifying new releases.
type: string
admin_owner_id:
description: The ID of the owner of the group.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
group_leader_user_ids:
description: A list of User IDs for the group leaders of the group
items:
type: string
format: uuid
type: array
remote_id:
description: The ID of the remote.
example: google-group-group:037m2jsg218b2wb
type: string
remote_name:
description: The name of the remote.
example: Finance team
type: string
group_type:
$ref: "#/components/schemas/GroupTypeEnum"
max_duration:
description:
The maximum duration for which the group can be requested (in
minutes).
type: integer
example: 120
recommended_duration:
description:
The recommended duration for which the group should be requested
(in minutes). -1 represents an indefinite duration.
type: integer
example: 120
extensions_duration_in_minutes:
description:
The duration for which access can be extended (in minutes). Set to
0 to disable extensions. When > 0, extensions are enabled for the
specified duration.
type: integer
example: 120
require_manager_approval:
description:
A bool representing whether or not access requests to the group
require manager approval.
example: False
type: boolean
deprecated: true
require_support_ticket:
description:
A bool representing whether or not access requests to the group
require an access ticket.
example: False
type: boolean
require_mfa_to_approve:
description:
A bool representing whether or not to require MFA for reviewers to
approve requests for this group.
example: False
type: boolean
require_mfa_to_request:
description:
A bool representing whether or not to require MFA for requesting
access to this group.
example: False
type: boolean
auto_approval:
description:
A bool representing whether or not to automatically approve
requests to this group.
example: False
type: boolean
request_template_id:
description: The ID of the associated request template.
example: 06851574-e50d-40ca-8c78-f72ae6ab4304
format: uuid
type: string
configuration_template_id:
description: The ID of the associated configuration template.
example: 06851574-e50d-40ca-8c78-f72ae6ab4304
format: uuid
type: string
group_binding_id:
description: The ID of the associated group binding.
example: 06851574-e50d-40ca-8c78-f72ae6ab4304
format: uuid
type: string
is_requestable:
description:
A bool representing whether or not to allow access requests to this
group.
example: False
type: boolean
request_configurations:
description: A list of request configurations for this group.
example: []
type: array
items:
$ref: "#/components/schemas/RequestConfiguration"
request_configuration_list:
description:
A list of request configurations for this group. Deprecated in
favor of `request_configurations`.
deprecated: true
example: []
type: array
items:
$ref: "#/components/schemas/RequestConfiguration"
metadata:
description:
JSON metadata about the remote group. Only set for items linked to
remote systems. See [this
guide](https://docs.opal.dev/reference/end-system-objects) for
details.
deprecated: true
example: |-
{ "okta_directory_group": { "group_id": "00g4bs66kwtpe1g12345" } }
type: string
remote_info:
$ref: "#/components/schemas/GroupRemoteInfo"
custom_request_notification:
description:
Custom request notification sent to the requester when the request
is approved.
type: string
maxLength: 800
nullable: true
example: "Check your email to register your account."
risk_sensitivity:
description:
The risk sensitivity level for the group. When an override is set,
this field will match that.
readOnly: true
allOf:
- $ref: "#/components/schemas/RiskSensitivityEnum"
risk_sensitivity_override:
allOf:
- $ref: "#/components/schemas/RiskSensitivityEnum"
match_remote_name:
description:
A bool representing whether or not the group's name is synced from
the end system. When true, the name is overwritten with the remote
name on each sync. Defaults to false.
example: False
type: boolean
match_remote_description:
description:
A bool representing whether or not the group's description is
synced from the end system. When true, the description is
overwritten with the remote description on each sync. Defaults to
false.
example: False
type: boolean
last_successful_sync:
readOnly: true
description: Information about the last successful sync of this group.
$ref: "#/components/schemas/SyncTask"
required:
- group_id
type: object
GroupUserList:
example:
next: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
previous: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
results:
- full_name: Jake Barnes
user_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
group_id: 1b978423-db0a-4037-a4cf-f79c60cb67b3
expiration_date: 2022-01-23T04:56:07Z
email: jake@company.dev
- full_name: Brett Ashley
user_id: 7646aa9a-e2ee-4eb5-8c62-91f29038a373
group_id: 1b978423-db0a-4037-a4cf-f79c60cb67b3
expiration_date: 2022-02-03T12:33:02Z
email: brett@company.dev
properties:
results:
items:
$ref: "#/components/schemas/GroupUser"
type: array
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
nullable: true
type: string
type: object
GroupAccessLevel:
description: |-
# Access Level Object
### Description
The `GroupAccessLevel` object is used to represent the level of access that a user has to a group or a group has to a group. The "default" access
level is a `GroupAccessLevel` object whose fields are all empty strings.
### Usage Example
View the `GroupAccessLevel` of a group/user or group/group pair to see the level of access granted to the group.
example:
access_level_name: Developer
access_level_remote_id: 20
properties:
access_level_name:
description: The human-readable name of the access level.
example: Developer
type: string
access_level_remote_id:
description: The machine-readable identifier of the access level.
example: 20
type: string
required:
- access_level_name
- access_level_remote_id
type: object
GroupAccessLevelList:
description: A list of access levels defined for a group.
example:
results:
- access_level_name: Developer
access_level_remote_id: "30"
- access_level_name: Maintainer
access_level_remote_id: "40"
properties:
results:
items:
$ref: "#/components/schemas/GroupAccessLevel"
type: array
type: object
GroupUser:
description: |-
# Group Access User Object
### Description
The `GroupAccessUser` object is used to represent a user with access to a group.
### Usage Example
Fetch from the `LIST GroupUsers` endpoint.
example:
full_name: Jake Barnes
user_id: 29827fb8-f2dd-4e80-9576-28e31e9934ac
group_id: 1b978423-db0a-4037-a4cf-f79c60cb67b3
expiration_date: 2022-01-23T04:56:07Z
email: jake@company.dev
properties:
group_id:
description: The ID of the group.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
group_name:
description: The name of the group.
example: API Group
type: string
description:
description: The description of the group.
example: Group required to request API's
type: string
user_id:
description: The ID of the user.
example: 29827fb8-f2dd-4e80-9576-28e31e9934ac
format: uuid
type: string
access_level:
$ref: "#/components/schemas/GroupAccessLevel"
nullable: true
full_name:
description: The user's full name.
example: Jake Barnes
type: string
email:
description: The user's email.
example: jake@company.dev
type: string
expiration_date:
description: The day and time the user's access will expire.
example: 2022-01-23T04:56:07Z
format: date-time
nullable: true
type: string
propagation_status:
$ref: "#/components/schemas/PropagationStatus"
required:
- email
- full_name
- group_id
- user_id
- group_name
- description
type: object
PropagationStatus:
description:
The state of whether the push action was propagated to the remote
system. If this is null, the access was synced from the remote system.
properties:
status:
$ref: "#/components/schemas/PropagationStatusEnum"
required:
- status
PropagationStatusEnum:
description:
The status of whether the user has been synced to the group or
resource in the remote system.
enum:
- SUCCESS
- ERR_REMOTE_INTERNAL_ERROR
- ERR_REMOTE_USER_NOT_FOUND
- ERR_REMOTE_USER_NOT_LINKED
- ERR_REMOTE_RESOURCE_NOT_FOUND
- ERR_REMOTE_THROTTLE
- ERR_NOT_AUTHORIZED_TO_QUERY_RESOURCE
- ERR_REMOTE_PROVISIONING_VIA_IDP_FAILED
- ERR_IDP_EMAIL_UPDATE_CONFLICT
- ERR_TIMEOUT
- ERR_UNKNOWN
- ERR_OPAL_INTERNAL_ERROR
- ERR_ORG_READ_ONLY
- ERR_OPERATION_UNSUPPORTED
- PENDING
- PENDING_MANUAL_PROPAGATION
- PENDING_TICKET_CREATION
- ERR_TICKET_CREATION_SKIPPED
- ERR_DRY_RUN_MODE_ENABLED
- ERR_HR_IDP_PROVIDER_NOT_LINKED
- ERR_REMOTE_UNRECOVERABLE_ERROR
- ERR_REMOTE_TICKET_NOT_FOUND
example:
- SUCCESS
type: string
UpdateGroupInfoList:
example:
groups:
- group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
description:
This group represents Active Directory group "Payments Production
Admin". We use this AD group to facilitate staging deployments and
qualifying new releases.
name: api-group
admin_owner_id: 7c86c85d-0651-43e2-a748-d69d658418e8
max_duration: 120
require_manager_approval: False
require_support_ticket: False
- group_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
description:
Manages the Integrations Team on-call privileged resources. This
group is automatically synced with the on-call rotation defined in
PagerDuty.
name: on-call-integrations
admin_owner_id: 4220bc12-ab8a-4b5d-be7b-f6bbcf9159f3
max_duration: 360
require_manager_approval: False
require_support_ticket: True
properties:
groups:
description: A list of groups with information to update.
items:
$ref: "#/components/schemas/UpdateGroupInfo"
type: array
type: object
required:
- groups
UpdateGroupInfo:
description: |-
# UpdateGroupInfo Object
### Description
The `UpdateGroupInfo` object is used as an input to the UpdateGroup API.
example:
group_id: f454d283-ca87-4a87-bdbb-df212eca5353
description:
This group represents Active Directory group "Payments Production
Admin". We use this AD group to facilitate staging deployments and
qualifying new releases.
name: api-group
admin_owner_id: 7c86c85d-0651-43e2-a748-d69d658418e8
max_duration: 120
require_manager_approval: False
require_support_ticket: False
properties:
group_id:
description: The ID of the group.
example: f454d283-ca87-4a87-bdbb-df212eca5353
format: uuid
type: string
name:
description: The name of the group.
example: api-group
type: string
description:
description: A description of the group.
example:
This group represents Active Directory group "Payments Production
Admin". We use this AD group to facilitate staging deployments and
qualifying new releases.
type: string
admin_owner_id:
description: The ID of the owner of the group.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
max_duration:
description:
The maximum duration for which the group can be requested (in
minutes). Use -1 to set to indefinite. Deprecated in favor of
`request_configurations`.
type: integer
example: 120
deprecated: true
recommended_duration:
description:
The recommended duration for which the group should be requested
(in minutes). Will be the default value in a request. Use -1 to set
to indefinite and 0 to unset. Deprecated in favor of
`request_configurations`.
type: integer
example: 120
deprecated: true
require_manager_approval:
description:
A bool representing whether or not access requests to the group
require manager approval. Deprecated in favor of
`request_configurations`.
example: False
type: boolean
deprecated: true
require_support_ticket:
description:
A bool representing whether or not access requests to the group
require an access ticket. Deprecated in favor of
`request_configurations`.
example: False
type: boolean
deprecated: true
folder_id:
description: The ID of the folder that the group is located in.
example: e27cb7b0-98e2-4555-9916-9e6d8ca6b079
format: uuid
type: string
deprecated: true
require_mfa_to_approve:
description:
A bool representing whether or not to require MFA for reviewers to
approve requests for this group.
example: False
type: boolean
require_mfa_to_request:
description:
A bool representing whether or not to require MFA for requesting
access to this group. Deprecated in favor of
`request_configurations`.
example: False
type: boolean
deprecated: true
auto_approval:
description:
A bool representing whether or not to automatically approve
requests to this group. Deprecated in favor of
`request_configurations`.
example: False
type: boolean
deprecated: true
configuration_template_id:
description: The ID of the associated configuration template.
example: 06851574-e50d-40ca-8c78-f72ae6ab4304
format: uuid
type: string
request_template_id:
description:
The ID of the associated request template. Deprecated in favor of
`request_configurations`.
example: 06851574-e50d-40ca-8c78-f72ae6ab4304
format: uuid
type: string
deprecated: true
is_requestable:
description:
A bool representing whether or not to allow access requests to this
group. Deprecated in favor of `request_configurations`.
example: False
type: boolean
deprecated: true
group_leader_user_ids:
description: A list of User IDs for the group leaders of the group
items:
type: string
format: uuid
type: array
extensions_duration_in_minutes:
description:
The duration for which access can be extended (in minutes).
Deprecated, set the extension duration in the request_configuration
you want it to apply to.
type: integer
example: 120
deprecated: true
request_configurations:
type: array
items:
$ref: "#/components/schemas/RequestConfiguration"
description:
The request configuration list of the configuration template. If
not provided, the default request configuration will be used.
request_configuration_list:
description:
The request configuration list of the configuration template. If
not provided, the default request configuration will be used.
Deprecated in favor of `request_configurations`.
$ref: "#/components/schemas/CreateRequestConfigurationInfoList"
deprecated: true
example:
request_configurations:
- request_configuration_id: 7c86c85d-0651-43e2-a748-d69d658418e8
organization_id: w86c85d-0651-43e2-a748-d69d658418e8
condition: null
allow_requests: True
auto_approval: False
require_mfa_to_request: False
max_duration_minutes: 120
recommended_duration_minutes: 120
require_support_ticket: False
reviewer_stages:
- reviewer_stage_id: 7c86c85d-0651-43e2-a748-d69d658418e8
owner_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
stage: 1
priority: 0
- request_configuration_id: 7c86c85d-0651-43e2-a748-d69d658418e9
organization_id: w86c85d-0651-43e2-a748-d69d658418e8
condition:
group_id: 1b978423-db0a-4037-a4cf-f79c60cb67b4
allow_requests: True
auto_approval: False
require_mfa_to_request: False
max_duration_minutes: 120
recommended_duration_minutes: 120
require_support_ticket: False
reviewer_stages:
- reviewer_stage_id: 7c86c85d-0651-43e2-a748-d69d658418e8
owner_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
stage: 1
priority: 1
custom_request_notification:
description:
Custom request notification sent to the requester when the request
is approved.
type: string
maxLength: 800
nullable: true
example: "Check your email to register your account."
risk_sensitivity_override:
allOf:
- $ref: "#/components/schemas/RiskSensitivityEnum"
match_remote_name:
description:
A bool representing whether or not the group's name should be
synced from the end system. When true, the name is overwritten
with the remote name on each sync, so a `name` provided together
with this field set to true will be replaced at the next sync. If
not provided, the current value is left unchanged.
example: False
type: boolean
match_remote_description:
description:
A bool representing whether or not the group's description should
be synced from the end system. When true, the description is
overwritten with the remote description on each sync, so a
`description` provided together with this field set to true will
be replaced at the next sync. If not provided, the current value
is left unchanged.
example: False
type: boolean
required:
- group_id
type: object
GroupTypeEnum:
description: The type of the group.
enum:
- ACTIVE_DIRECTORY_GROUP
- AWS_SSO_GROUP
- DATABRICKS_ACCOUNT_GROUP
- DUO_GROUP
- GIT_HUB_TEAM
- GIT_LAB_GROUP
- GOOGLE_GROUPS_GROUP
- GOOGLE_GROUPS_GKE_GROUP
- LDAP_GROUP
- OKTA_GROUP
- OKTA_GROUP_RULE
- TAILSCALE_GROUP
- OPAL_GROUP
- OPAL_ACCESS_RULE
- AZURE_AD_SECURITY_GROUP
- AZURE_AD_MICROSOFT_365_GROUP
- CONNECTOR_GROUP
- SNOWFLAKE_ROLE
- WORKDAY_USER_SECURITY_GROUP
- PAGERDUTY_ON_CALL_SCHEDULE
- INCIDENTIO_ON_CALL_SCHEDULE
- ROOTLY_ON_CALL_SCHEDULE
- DEVIN_GROUP
- GIT_HUB_ENTERPRISE_TEAM
- GRAFANA_TEAM
- CLICKHOUSE_ROLE
- SLACK_USER_GROUP
- TWINGATE_GROUP
- TWINGATE_GROUP_SYNCED
- ZENDESK_GROUP
- ZENDESK_ORGANIZATION
- HUBSPOT_TEAM
- TABLEAU_GROUP
- CONFLUENCE_GROUP
- JIRA_GROUP
- DOCUSIGN_GROUP
- ZOOM_GROUP
example: OPAL_GROUP
type: string
ResourceTypeEnum:
description: The type of the resource.
enum:
- AWS_IAM_ROLE
- AWS_EC2_INSTANCE
- AWS_EKS_CLUSTER
- AWS_RDS_POSTGRES_CLUSTER
- AWS_RDS_POSTGRES_INSTANCE
- AWS_RDS_MYSQL_CLUSTER
- AWS_RDS_MYSQL_INSTANCE
- AWS_ACCOUNT
- AWS_SSO_PERMISSION_SET
- AWS_ORGANIZATIONAL_UNIT
- AZURE_MANAGEMENT_GROUP
- AZURE_RESOURCE_GROUP
- AZURE_SUBSCRIPTION
- AZURE_VIRTUAL_MACHINE
- AZURE_STORAGE_ACCOUNT
- AZURE_STORAGE_CONTAINER
- AZURE_SQL_SERVER
- AZURE_SQL_MANAGED_INSTANCE
- AZURE_SQL_DATABASE
- AZURE_SQL_MANAGED_DATABASE
- AZURE_USER_ASSIGNED_MANAGED_Identity
- AZURE_ENTRA_ID_ROLE
- AZURE_ENTERPRISE_APP
- CUSTOM
- CUSTOM_CONNECTOR
- DATABRICKS_ACCOUNT_SERVICE_PRINCIPAL
- GCP_ORGANIZATION
- GCP_BUCKET
- GCP_COMPUTE_INSTANCE
- GCP_FOLDER
- GCP_GKE_CLUSTER
- GCP_PROJECT
- GCP_CLOUD_SQL_POSTGRES_INSTANCE
- GCP_CLOUD_SQL_MYSQL_INSTANCE
- GCP_BIG_QUERY_DATASET
- GCP_BIG_QUERY_TABLE
- GCP_SERVICE_ACCOUNT
- GCP_BILLING_ACCOUNT
- GIT_HUB_REPO
- GIT_HUB_ORG_ROLE
- GIT_LAB_PROJECT
- GOOGLE_WORKSPACE_ROLE
- MONGO_INSTANCE
- MONGO_ATLAS_INSTANCE
- NETSUITE_ROLE
- DATADOG_ROLE
- OKTA_APP
- OKTA_ROLE
- OPAL_ROLE
- OPAL_SCOPED_ROLE
- PAGERDUTY_ROLE
- TAILSCALE_SSH
- SALESFORCE_PERMISSION_SET
- SALESFORCE_PROFILE
- SALESFORCE_ROLE
- SNOWFLAKE_DATABASE
- SNOWFLAKE_SCHEMA
- SNOWFLAKE_TABLE
- WORKDAY_ROLE
- MYSQL_INSTANCE
- MARIADB_INSTANCE
- POSTGRES_INSTANCE
- TELEPORT_ROLE
- ILEVEL_ADVANCED_ROLE
- DATASTAX_ASTRA_ROLE
- COUPA_ROLE
- CURSOR_ORGANIZATION
- OPENAI_PLATFORM_PROJECT
- OPENAI_PLATFORM_SERVICE_ACCOUNT
- ANTHROPIC_WORKSPACE
- GIT_HUB_ORG
- ORACLE_FUSION_ROLE
- DEVIN_ORGANIZATION
- DEVIN_ROLE
- VAULT_SECRET
- VAULT_POLICY
- VAULT_OIDC_ROLE
- GIT_HUB_ENTERPRISE_ROLE
- GRAFANA_FOLDER
- GRAFANA_DASHBOARD
- GRAFANA_BASIC_ROLE
- GRAFANA_ROLE
- CLICKHOUSE_DATABASE
- CLICKHOUSE_TABLE
- TWINGATE_RESOURCE
- ZENDESK_ROLE
- HUBSPOT_ROLE
- ALICLOUD_RAM_ROLE
- ALICLOUD_ECS_INSTANCE
- DOCUSIGN_PERMISSION_PROFILE
- ZOOM_ROLE
- ZOOM_LICENSE
example: AWS_IAM_ROLE
type: string
EntityItemTypeEnum:
description: Granular subtype of an entity.
enum:
- USER
- SERVICE_USER
- ACTIVE_DIRECTORY_GROUP
- AWS_SSO_GROUP
- DUO_GROUP
- GIT_HUB_TEAM
- GIT_LAB_GROUP
- GOOGLE_GROUPS_GROUP
- GOOGLE_GROUPS_GKE_GROUP
- LDAP_GROUP
- OKTA_GROUP
- OKTA_GROUP_RULE
- TAILSCALE_GROUP
- TWINGATE_GROUP
- TWINGATE_GROUP_SYNCED
- OPAL_GROUP
- OPAL_ACCESS_RULE
- AZURE_AD_SECURITY_GROUP
- AZURE_AD_MICROSOFT_365_GROUP
- CONNECTOR_GROUP
- SNOWFLAKE_ROLE
- WORKDAY_USER_SECURITY_GROUP
- DATABRICKS_ACCOUNT_GROUP
- AWS_IAM_ROLE
- AWS_EC2_INSTANCE
- AWS_EKS_CLUSTER
- AWS_RDS_POSTGRES_INSTANCE
- AWS_RDS_POSTGRES_CLUSTER
- AWS_RDS_MYSQL_INSTANCE
- AWS_RDS_MYSQL_CLUSTER
- AWS_ACCOUNT
- AWS_SSO_PERMISSION_SET
- AZURE_MANAGEMENT_GROUP
- AZURE_RESOURCE_GROUP
- AZURE_SUBSCRIPTION
- AZURE_VIRTUAL_MACHINE
- AZURE_STORAGE_ACCOUNT
- AZURE_STORAGE_CONTAINER
- AZURE_SQL_SERVER
- AZURE_SQL_MANAGED_INSTANCE
- AZURE_SQL_DATABASE
- AZURE_SQL_MANAGED_DATABASE
- AZURE_USER_ASSIGNED_MANAGED_Identity
- AZURE_ENTRA_ID_ROLE
- AZURE_ENTERPRISE_APP
- CUSTOM
- CUSTOM_CONNECTOR
- GCP_ORGANIZATION
- GCP_BUCKET
- GCP_COMPUTE_INSTANCE
- GCP_BIG_QUERY_DATASET
- GCP_BIG_QUERY_TABLE
- GCP_FOLDER
- GCP_GKE_CLUSTER
- GCP_PROJECT
- GCP_CLOUD_SQL_POSTGRES_INSTANCE
- GCP_CLOUD_SQL_MYSQL_INSTANCE
- GCP_SERVICE_ACCOUNT
- GCP_BILLING_ACCOUNT
- GIT_HUB_REPO
- GIT_HUB_ORG_ROLE
- GIT_LAB_PROJECT
- GOOGLE_WORKSPACE_ROLE
- MONGO_INSTANCE
- MONGO_ATLAS_INSTANCE
- OKTA_APP
- OKTA_ROLE
- OPAL_ROLE
- OPAL_SCOPED_ROLE
- PAGERDUTY_ROLE
- TAILSCALE_SSH
- TWINGATE_RESOURCE
- SALESFORCE_PERMISSION_SET
- SALESFORCE_PROFILE
- SALESFORCE_ROLE
- SNOWFLAKE_DATABASE
- SNOWFLAKE_SCHEMA
- SNOWFLAKE_TABLE
- WORKDAY_ROLE
- MYSQL_INSTANCE
- MARIADB_INSTANCE
- POSTGRES_INSTANCE
- TELEPORT_ROLE
- DATABRICKS_ACCOUNT_SERVICE_PRINCIPAL
- ILEVEL_ADVANCED_ROLE
example: OPAL_ROLE
type: string
VisibilityTypeEnum:
description: The visibility level of the entity.
enum:
- GLOBAL
- LIMITED
example: GLOBAL
type: string
RolePermissionNameEnum:
description: The name of the role permission.
enum:
- READ
- READ_ASSIGNMENTS
- CREATE
- IMPORT
- EXPORT
- SYNC
- DELETE
- READ_SETTINGS
- EDIT_TAGS
- EDIT_SETTINGS
- EDIT_SYNC_SETTINGS
- EDIT_ASSIGNMENTS
- EDIT_REQUEST_CONFIGURATIONS
- EDIT_EVENT_STREAM
- ASSIGN_UAR_REVIEWERS
- SEND_REMINDERS
- STOP
- REQUEST_ON_BEHALF
- RESET_MFA
example: READ
type: string
RolePermissionTargetTypeEnum:
description: The type of the target for the role permission.
enum:
- RESOURCE
- CONNECTION
- GROUP
- BUNDLE
- USER
- ACCESS_REVIEW
- OWNER
example: RESOURCE
type: string
UpdateGroupResourcesInfo:
example:
group_resources:
- resource_id: 1520617d-e72a-47f5-a84c-693817ab48ad2
access_level_remote_id: ""
- resource_id: 6f99639b-7928-4043-8184-47cbc6766145
access_level_remote_id: "write"
properties:
resources:
items:
$ref: "#/components/schemas/ResourceWithAccessLevel"
type: array
type: object
required:
- resources
IdpGroupMapping:
description: Information about a group mapping.
example:
app_resource_id: 1520617d-e72a-47f5-a84c-693817ab48ad2
group_id: 6f99639b-7928-4043-8184-47cbc6766145
alias: "finance-team"
hidden_from_end_user: False
properties:
app_resource_id:
description: The ID of the app resource.
example: 1520617d-e72a-47f5-a84c-693817ab48ad2
format: uuid
type: string
group_id:
description: The ID of the group.
example: 6f99639b-7928-4043-8184-47cbc6766145
format: uuid
type: string
alias:
description: The alias of the group.
example: finance-team
type: string
hidden_from_end_user:
description:
A bool representing whether or not the group is hidden from the end
user.
example: False
type: boolean
required:
- group_id
- hidden_from_end_user
type: object
IdpGroupMappingList:
example:
mappings:
- group_id: 6f99639b-7928-4043-8184-47cbc6766145
alias: "finance-team"
hidden_from_end_user: False
- group_id: 7870617d-e72a-47f5-a84c-693817ab4567
alias: "engineering-team"
hidden_from_end_user: False
properties:
mappings:
items:
$ref: "#/components/schemas/IdpGroupMapping"
type: array
type: object
required:
- mappings
ResourceWithAccessLevel:
description: Information about a resource and corresponding access level
example:
resource_id: b5a5ca27-0ea3-4d86-9199-2126d57d1fbd
access_level_remote_id: "write"
properties:
resource_id:
description: The ID of the resource.
example: b5a5ca27-0ea3-4d86-9199-2126d57d1fbd
format: uuid
type: string
access_level_remote_id:
description: The ID of the resource.
example: write
type: string
required:
- resource_id
type: object
GroupWithAccessLevel:
description: Information about a group and corresponding access level
example:
group_id: 7870617d-e72a-47f5-a84c-693817ab4567
access_level_remote_id: "write"
properties:
group_id:
description: The ID of the group.
example: 7870617d-e72a-47f5-a84c-693817ab4567
format: uuid
type: string
access_level_remote_id:
description: The ID of the resource.
example: write
type: string
required:
- group_id
type: object
GroupResourceList:
example:
group_resources:
- group_id: 7870617d-e72a-47f5-a84c-693817ab4567
resource_id: 1520617d-e72a-47f5-a84c-693817ab48ad2
access_level_remote_id: ""
- group_id: 50333e67-73ce-47ab-b049-d8abcd45f7a1
resource_id: 6f99639b-7928-4043-8184-47cbc6766145
access_level_remote_id: "write"
properties:
group_resources:
items:
$ref: "#/components/schemas/GroupResource"
type: array
type: object
required:
- group_resources
GroupContainingGroupList:
example:
containing_groups:
- containing_group_id: 7870617d-e72a-47f5-a84c-693817ab4567
- containing_group_id: 50333e67-73ce-47ab-b049-d8abcd45f7a1
properties:
containing_groups:
items:
$ref: "#/components/schemas/GroupContainingGroup"
type: array
type: object
required:
- containing_groups
MessageChannelList:
example:
channels:
- message_channel_id: 7870617d-e72a-47f5-a84c-693817ab4567
third_party_provider: SLACK
remote_id: C03FJR97276
name: api-team-audit-channel
is_private: False
- message_channel_id: 1520617d-e72a-47f5-a84c-693817ab48ad2
third_party_provider: SLACK
remote_id: A4FJR97365D
name: api-team-monitor-channel
is_private: False
properties:
channels:
items:
$ref: "#/components/schemas/MessageChannel"
type: array
type: object
required:
- channels
OnCallScheduleList:
example:
on_call_schedules:
- on_call_schedule_id: 50d5e9f6-f23f-4d5a-ae91-b2640cf3975e
third_party_provider: PAGER_DUTY
remote_id: P7OWH2R
name: Customer Support On-Call
- on_call_schedule_id: 4d61592c-ed61-4b13-8f22-2fac1c49f574
third_party_provider: OPSGENIE
remote_id: 72a8cb04-9e25-465d-a932-992f72077c61
name: Opal Backend On-Call
properties:
on_call_schedules:
items:
$ref: "#/components/schemas/OnCallSchedule"
type: array
type: object
required:
- on_call_schedules
VisibilityInfo:
description: Visibility infomation of an entity.
example:
visibility: LIMITED
visibility_group_ids:
- 7870617d-e72a-47f5-a84c-693817ab4567
- 1520617d-e72a-47f5-a84c-693817ab48ad2
properties:
visibility:
$ref: "#/components/schemas/VisibilityTypeEnum"
visibility_group_ids:
items:
type: string
format: uuid
type: array
type: object
required:
- visibility
MessageChannelIDList:
description: A list of message channel IDs.
example:
message_channel_ids:
- 7870617d-e72a-47f5-a84c-693817ab4567
- 1520617d-e72a-47f5-a84c-693817ab48ad2
properties:
message_channel_ids:
items:
type: string
format: uuid
type: array
type: object
required:
- message_channel_ids
OnCallScheduleIDList:
description:
A list of on call schedule Opal UUIDs. To get the matching remote
IDs, use the /on-call-schedules endpoints.
example:
on_call_schedule_ids:
- 9546209c-42c2-4801-96d7-9ec42df0f59c
- bb0197c0-5ea5-45d9-b3b7-b6c439be6435
properties:
on_call_schedule_ids:
items:
type: string
format: uuid
type: array
type: object
required:
- on_call_schedule_ids
ReviewerIDList:
description: A list of reviewer IDs.
example:
reviewer_ids:
- 7870617d-e72a-47f5-a84c-693817ab4567
- 1520617d-e72a-47f5-a84c-693817ab48ad2
properties:
reviewer_ids:
items:
type: string
format: uuid
type: array
type: object
required:
- reviewer_ids
ReviewerStageList:
properties:
stages:
description: A list of reviewer stages.
items:
$ref: "#/components/schemas/ReviewerStage"
type: array
type: object
required:
- stages
ReviewerStage:
description: A reviewer stage.
example:
owner_ids:
- 7870617d-e72a-47f5-a84c-693817ab4567
- 1520617d-e72a-47f5-a84c-693817ab48ad2
service_user_ids:
- 7870617d-e72a-47f5-a84c-693817ab4568
properties:
require_manager_approval:
description: Whether this reviewer stage should require manager approval.
example: False
type: boolean
require_admin_approval:
description: Whether this reviewer stage should require admin approval.
example: False
type: boolean
operator:
description:
The operator of the reviewer stage. Admin and manager approval are
also treated as reviewers.
enum:
- AND
- OR
example: AND
type: string
owner_ids:
description: The IDs of owners assigned as reviewers for this stage.
items:
type: string
format: uuid
type: array
service_user_ids:
description: The IDs of service users assigned as reviewers for this stage.
items:
type: string
format: uuid
type: array
type: object
required:
- operator
- require_manager_approval
- owner_ids
- stage
MessageChannel:
description: |-
# MessageChannel Object
### Description
The `MessageChannel` object is used to represent a message channel.
### Usage Example
Update a groups message channel from the `UPDATE Groups` endpoint.
example:
message_channel_id: 6670617d-e72a-47f5-a84c-693817ab4860
third_party_provider: SLACK
remote_id: C03FJR97276
name: api-team-audit-channel
is_private: False
properties:
message_channel_id:
description: The ID of the message channel.
example: 6670617d-e72a-47f5-a84c-693817ab4860
format: uuid
type: string
third_party_provider:
$ref: "#/components/schemas/MessageChannelProviderEnum"
remote_id:
description: The remote ID of the message channel
example: C03FJR97276
type: string
name:
description: The name of the message channel.
example: api-team-audit-channel
type: string
is_private:
description: A bool representing whether or not the message channel is private.
example: False
type: boolean
type: object
required:
- message_channel_id
CreateMessageChannelInfo:
description: |-
# CreateMessageChannelInfo Object
### Description
The `CreateMessageChannelInfo` object is used to describe the message channel object to be created.
example:
third_party_provider: SLACK
remote_id: C03FJR97276
properties:
third_party_provider:
$ref: "#/components/schemas/MessageChannelProviderEnum"
remote_id:
description: The remote ID of the message channel
example: C03FJR97276
type: string
type: object
required:
- third_party_provider
- remote_id
MessageChannelProviderEnum:
description: The third party provider of the message channel.
enum:
- SLACK
example: SLACK
type: string
OnCallSchedule:
description: |-
# OnCallSchedule Object
### Description
The `OnCallSchedule` object is used to represent an on call schedule.
### Usage Example
Update a groups on call schedule from the `UPDATE Groups` endpoint.
example:
on_call_schedule_id: 50d5e9f6-f23f-4d5a-ae91-b2640cf3975e
third_party_provider: PAGER_DUTY
remote_id: P7OWH2R
name: Customer Support On-Call
properties:
on_call_schedule_id:
description: The ID of the on-call schedule.
example: 50d5e9f6-f23f-4d5a-ae91-b2640cf3975e
format: uuid
type: string
third_party_provider:
$ref: "#/components/schemas/OnCallScheduleProviderEnum"
remote_id:
description: The remote ID of the on call schedule
example: P7OWH2R
type: string
name:
description: The name of the on call schedule.
example: Customer Support On-Call
type: string
type: object
required:
- message_channel_id
CreateOnCallScheduleInfo:
description: |-
# CreateOnCallScheduleInfo Object
### Description
The `CreateOnCallScheduleInfo` object is used to describe the on call schedule object to be created.
example:
third_party_provider: PAGER_DUTY
remote_id: PNZNINN
properties:
third_party_provider:
$ref: "#/components/schemas/OnCallScheduleProviderEnum"
remote_id:
description: The remote ID of the on call schedule
example: PNZNINN
type: string
type: object
required:
- third_party_provider
- remote_id
OnCallScheduleProviderEnum:
description: The third party provider of the on call schedule.
enum:
- OPSGENIE
- PAGER_DUTY
example: PAGER_DUTY
type: string
TicketingProviderEnum:
description: The third party ticketing platform provider.
enum:
- JIRA
- LINEAR
- SERVICE_NOW
example: LINEAR
type: string
RDSEngineEnum:
type: string
description: "The database engine for the RDS instance."
enum: [MYSQL, POSTGRESQL]
GroupRemoteInfo:
description: Information that defines the remote group. This replaces the
deprecated remote_id and metadata fields. If remote_info is provided, a
group will be imported into Opal. For group types that support group
creation through Opal, a new group will be created if remote_info is not
provided.
properties:
active_directory_group:
description: Remote info for Active Directory group.
properties:
group_id:
description: The id of the Google group.
example: 01fa7402-01d8-103b-8deb-5f3a0ab7884
type: string
type: object
required:
- group_id
tailscale_group:
description: Remote info for Tailscale group.
properties:
group_id:
description: The id of the Tailscale group.
example: 898931321
type: string
type: object
required:
- group_id
twingate_group:
description: Remote info for Twingate group.
properties:
group_id:
description: The id of the Twingate group.
example: R3JvdXA6MTIzNA==
type: string
type: object
required:
- group_id
twingate_group_synced:
description: Remote info for Twingate synced group.
properties:
group_id:
description: The id of the Twingate synced group.
example: R3JvdXA6MTIzNA==
type: string
type: object
required:
- group_id
aws_sso_group:
description: Remote info for AWS SSO group.
properties:
group_id:
description: The id of the AWS SSO group.
example: 898931321
type: string
type: object
required:
- group_id
databricks_account_group:
description: Remote info for Databricks account group.
properties:
group_id:
description: The id of the Databricks account group.
example: 898931321
type: string
type: object
required:
- group_id
connector_group:
description: Remote info for Connector group.
properties:
group_id:
description: The id of the Connector group.
example: 898931321
type: string
type: object
required:
- group_id
github_team:
description: Remote info for GitHub team.
properties:
team_id:
deprecated: true
description: The id of the GitHub team.
example: 898931321
type: string
team_slug:
description: The slug of the GitHub team.
example: opal-security
type: string
org_name:
description: GitHub team's org name, required only for Enterprise
type: string
type: object
required:
- team_slug
github_enterprise_team:
description: Remote info for GitHub Enterprise team.
properties:
team_slug:
description: The slug of the GitHub Enterprise team.
example: opal-security
type: string
type: object
required:
- team_slug
gitlab_group:
description: Remote info for Gitlab group.
properties:
group_id:
description: The id of the Gitlab group.
example: 898931321
type: string
type: object
required:
- group_id
google_group:
description: Remote info for Google group.
properties:
group_id:
description: The id of the Google group.
example: 1y6w882181n7sg
type: string
type: object
required:
- group_id
ldap_group:
description: Remote info for LDAP group.
properties:
group_id:
description: The id of the LDAP group.
example: 01fa7402-01d8-103b-8deb-5f3a0ab7884
type: string
type: object
required:
- group_id
okta_group:
description: Remote info for Okta Directory group.
properties:
group_id:
description: The id of the Okta Directory group.
example: 00gjs33pe8rtmRrp3rd6
type: string
type: object
required:
- group_id
duo_group:
description: Remote info for Duo Security group.
properties:
group_id:
description: The id of the Duo Security group.
example: DSRD8W89B9DNDBY4RHAC
type: string
type: object
required:
- group_id
azure_ad_security_group:
description: Remote info for Microsoft Entra ID Security group.
properties:
group_id:
description: The id of the Microsoft Entra ID Security group.
example: 01fa7402-01d8-103b-8deb-5f3a0ab7884
type: string
type: object
required:
- group_id
azure_ad_microsoft_365_group:
description: Remote info for Microsoft Entra ID Microsoft 365 group.
properties:
group_id:
description: The id of the Microsoft Entra ID Microsoft 365 group.
example: 01fa7402-01d8-103b-8deb-5f3a0ab7884
type: string
type: object
required:
- group_id
snowflake_role:
description: Remote info for Snowflake role.
properties:
role_id:
description: The id of the Snowflake role.
example: 01fa7402-01d8-103b-8deb-5f3a0ab7884
type: string
type: object
required:
- role_id
okta_group_rule:
description: Remote info for Okta Directory group rule.
properties:
rule_id:
description: The id of the Okta group rule.
example: 0pr3f7zMZZHPgUoWO0g4
type: string
type: object
required:
- rule_id
workday_user_security_group:
description: Remote info for Workday User Security group.
properties:
group_id:
description: The id of the Workday User Security group.
example: 123abc456def
type: string
type: object
required:
- group_id
pagerduty_on_call_schedule:
description: Remote info for PagerDuty on-call schedule group.
properties:
schedule_id:
description: The id of the PagerDuty on-call schedule.
example: PNZNINN
type: string
type: object
required:
- schedule_id
incidentio_on_call_schedule:
description: Remote info for Incident.io on-call schedule group.
properties:
schedule_id:
description: The id of the Incident.io on-call schedule.
example: 01HZ8XQM9ZQX8RKMZQ8ZQX8RK
type: string
type: object
required:
- schedule_id
rootly_on_call_schedule:
description: Remote info for Rootly on-call schedule group.
properties:
schedule_id:
description: The id of the Rootly on-call schedule.
example: 01HZ8XQM9ZQX8RKMZQ8ZQX8RK
type: string
type: object
required:
- schedule_id
devin_group:
description: Remote info for Devin group.
properties:
group_name:
description: The name of the Devin group.
example: devin-group-01
type: string
type: object
required:
- group_name
clickhouse_role:
description: Remote info for ClickHouse role.
properties:
role_id:
description: The name of the ClickHouse role.
example: my_clickhouse_role
type: string
type: object
required:
- role_id
grafana_team:
description: Remote info for Grafana team.
properties:
team_id:
description: The ID of the team.
example: 2323
type: string
type: object
required:
- team_id
zendesk_group:
description: Remote info for Zendesk group.
properties:
group_id:
description: The ID of the Zendesk group.
example: "12345"
type: string
type: object
required:
- group_id
slack_user_group:
description: Remote info for Slack user group.
properties:
group_id:
description: The id of the Slack user group.
example: S0614TZR7
type: string
type: object
required:
- group_id
zendesk_organization:
description: Remote info for Zendesk organization.
properties:
organization_id:
description: The ID of the Zendesk organization.
example: "67890"
type: string
type: object
required:
- organization_id
hubspot_team:
description: Remote info for HubSpot team.
properties:
team_id:
description: The ID of the HubSpot team.
example: "12345"
type: string
type: object
required:
- team_id
tableau_group:
description: Remote info for Tableau group.
properties:
group_id:
description: The ID of the Tableau group.
example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
type: string
type: object
required:
- group_id
confluence_group:
description: Remote info for Confluence group.
properties:
group_id:
description: The ID of the Confluence group.
example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
type: string
type: object
required:
- group_id
jira_group:
description: Remote info for Jira group.
properties:
group_id:
description: The ID of the Jira group.
example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
type: string
type: object
required:
- group_id
docusign_group:
description: Remote info for Docusign group.
properties:
group_id:
description: The ID of the Docusign group.
example: "12345"
type: string
type: object
required:
- group_id
zoom_group:
description: Remote info for Zoom group.
properties:
group_id:
description: The ID of the Zoom group.
example: "SoBVexyrQjqCkcxjpBWi6w"
type: string
type: object
required:
- group_id
docusign_signing_group:
description: Remote info for Docusign signing group.
properties:
signing_group_id:
description: The ID of the Docusign signing group.
example: "12345"
type: string
type: object
required:
- signing_group_id
type: object
ResourceRemoteInfo:
description:
Information that defines the remote resource. This replaces the
deprecated remote_id and metadata fields.
properties:
databricks_account_service_principal:
description: Remote info for Databricks account service principal.
properties:
application_id:
description: The application ID of the service principal.
example: 00000000-0000-0000-0000-000000000000
type: string
resource_id:
description: The resource ID of the service principal.
example: 00000000-0000-0000-0000-000000000000
type: string
type: object
required:
- application_id
- resource_id
azure_subscription:
description: Remote info for Azure subscription.
properties:
resource_id:
description: The ARM resource ID of the subscription.
example: /subscriptions/00000000-0000-0000-0000-000000000000
type: string
type: object
required:
- resource_id
azure_resource_group:
description: Remote info for Azure resource group.
properties:
resource_id:
description: The ARM resource ID of the resource group.
example: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg
type: string
type: object
required:
- resource_id
azure_management_group:
description: Remote info for Azure management group.
properties:
resource_id:
description: The ARM resource ID of the management group.
example: /providers/Microsoft.Management/managementGroups/my-mg
type: string
type: object
required:
- resource_id
azure_virtual_machine:
description: Remote info for Azure virtual machine.
properties:
resource_id:
description: The ARM resource ID of the virtual machine.
example: /subscriptions/0000/resourceGroups/rg/providers/Microsoft.Compute/virtualMachines/vm01
type: string
type: object
required:
- resource_id
azure_storage_account:
description: Remote info for Azure storage account.
properties:
resource_id:
description: The ARM resource ID of the storage account.
example: /subscriptions/0000/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/sa01
type: string
type: object
required:
- resource_id
azure_storage_container:
description: Remote info for Azure storage container.
properties:
resource_id:
description: The ARM resource ID of the storage container.
example: /subscriptions/0000/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/sa01/blobServices/default/containers/c01
type: string
type: object
required:
- resource_id
azure_sql_server:
description: Remote info for Azure SQL server.
properties:
resource_id:
description: The ARM resource ID of the SQL server.
example: /subscriptions/0000/resourceGroups/rg/providers/Microsoft.Sql/servers/sqldev01
type: string
type: object
required:
- resource_id
azure_sql_database:
description: Remote info for Azure SQL database.
properties:
resource_id:
description: The ARM resource ID of the SQL database.
example: /subscriptions/0000/resourceGroups/rg/providers/Microsoft.Sql/servers/sqldev01/databases/db01
type: string
type: object
required:
- resource_id
azure_sql_managed_instance:
description: Remote info for Azure SQL managed instance.
properties:
resource_id:
description: The ARM resource ID of the SQL managed instance.
example: /subscriptions/0000/resourceGroups/rg/providers/Microsoft.Sql/managedInstances/mi01
type: string
type: object
required:
- resource_id
azure_sql_managed_database:
description: Remote info for Azure SQL managed database.
properties:
resource_id:
description: The ARM resource ID of the SQL managed database.
example: /subscriptions/0000/resourceGroups/rg/providers/Microsoft.Sql/managedInstances/mi01/databases/midb01
type: string
type: object
required:
- resource_id
azure_user_assigned_managed_identity:
description: Remote info for Azure user assigned managed identity.
properties:
resource_id:
description: The ARM resource ID of the user assigned managed identity.
example: /subscriptions/0000/resourceGroups/rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id01
type: string
type: object
required:
- resource_id
azure_enterprise_app:
description: Remote info for Azure Enterprise App.
properties:
resource_id:
description:
The remote application identifier (service principal or application
object ID).
example: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
type: string
type: object
required:
- resource_id
azure_entra_id_role:
description: Remote info for Azure Entra ID role.
properties:
resource_id:
description: The remote role identifier from Entra (object ID).
example: 11111111-2222-3333-4444-555555555555
type: string
type: object
required:
- resource_id
aws_organizational_unit:
description: Remote info for AWS organizational unit.
properties:
parent_id:
description: The id of the parent organizational unit.
example: ou-1234
type: string
organizational_unit_id:
description: The id of the AWS organizational unit that is being created.
example: ou-1234
type: string
type: object
required:
- organizational_unit_id
aws_account:
description: Remote info for AWS account.
properties:
account_id:
description: The id of the AWS account.
example: 234234234234
type: string
organizational_unit_id:
description:
The id of the AWS organizational unit. Required only if customer
has OUs enabled.
example: ou-1234
type: string
type: object
required:
- account_id
aws_permission_set:
description: Remote info for AWS Identity Center permission set.
properties:
arn:
description: The ARN of the permission set.
example: arn:aws:sso:::permissionSet/asdf-32139302d201d32/ps-f03323201211e1b9
type: string
account_id:
description:
The ID of an AWS account to which this permission set is
provisioned.
example: 234234234234
type: string
type: object
required:
- arn
- account_id
aws_iam_role:
description: Remote info for AWS IAM role.
properties:
arn:
description: The ARN of the IAM role.
example: arn:aws:iam::179308207300:role/MyRole
type: string
account_id:
description: The id of the AWS account. Required for AWS Organizations.
example: 234234234234
type: string
type: object
required:
- arn
aws_ec2_instance:
description: Remote info for AWS EC2 instance.
properties:
instance_id:
description: The instanceId of the EC2 instance.
example: i-13f1a1e2899f9e93a
type: string
region:
description: The region of the EC2 instance.
example: us-east-2
type: string
account_id:
description: The id of the AWS account. Required for AWS Organizations.
example: 234234234234
type: string
type: object
required:
- instance_id
- region
aws_rds_cluster:
description: Remote info for AWS RDS cluster.
properties:
cluster_id:
description: The clusterId of the RDS cluster.
example: demo-mysql-cluster
type: string
region:
description: The region of the RDS cluster.
example: us-east-2
type: string
resource_id:
description: The resourceId of the RDS cluster.
example: cluster-AOO8V0XUCNU13XLZXQDQRSN0NQ
type: string
account_id:
description: The id of the AWS account. Required for AWS Organizations.
example: 234234234234
type: string
database_name:
description:
The name of the database in the RDS cluster. This can be the value
of the tag `opal:database-name` or the database name.
example: mydatabase
type: string
engine:
allOf:
- $ref: "#/components/schemas/RDSEngineEnum"
type: object
required:
- cluster_id
- region
- resource_id
- account_id
- database_name
- engine
aws_rds_instance:
description: Remote info for AWS RDS instance.
properties:
instance_id:
description: The instanceId of the RDS instance.
example: demo-mysql-db
type: string
region:
description: The region of the RDS instance.
example: us-east-2
type: string
resource_id:
description: The resourceId of the RDS instance.
example: db-AOO8V0XUCNU13XLZXQDQRSN0NQ
type: string
account_id:
description: The id of the AWS account. Required for AWS Organizations.
example: 234234234234
type: string
type: object
required:
- instance_id
- region
- resource_id
aws_eks_cluster:
description: Remote info for AWS EKS cluster.
properties:
arn:
description: The ARN of the EKS cluster.
example: arn:aws:eks:us-east-2:234234234234:cluster/testcluster
type: string
account_id:
description: The id of the AWS account. Required for AWS Organizations.
example: 234234234234
type: string
type: object
required:
- arn
custom_connector:
description: Remote info for a custom connector resource.
properties:
remote_resource_id:
description: The id of the resource in the end system
example: 01fa7402-01d8-103b-8deb-5f3a0ab7884
type: string
can_have_usage_events:
description:
A bool representing whether or not the resource can have usage
data.
example: False
type: boolean
type: object
required:
- remote_resource_id
- can_have_usage_events
gcp_organization:
description: Remote info for GCP organization.
properties:
organization_id:
description: The id of the organization.
example: organizations/898931321
type: string
type: object
required:
- organization_id
gcp_bucket:
description: Remote info for GCP bucket.
properties:
bucket_id:
description: The id of the bucket.
example: example-bucket-898931321
type: string
type: object
required:
- bucket_id
gcp_compute_instance:
description: Remote info for GCP compute instance.
properties:
instance_id:
description: The id of the instance.
example: example-instance-898931321
type: string
project_id:
description: The id of the project the instance is in.
example: example-project-898931321
type: string
zone:
description: The zone the instance is in.
example: us-central1-a
type: string
type: object
required:
- instance_id
- project_id
- zone
gcp_big_query_dataset:
description: Remote info for GCP BigQuery Dataset.
properties:
project_id:
description: The id of the project the dataset is in.
example: example-project-898931321
type: string
dataset_id:
description: The id of the dataset.
example: example-dataset-898931321
type: string
type: object
required:
- project_id
- dataset_id
gcp_big_query_table:
description: Remote info for GCP BigQuery Table.
properties:
project_id:
description: The id of the project the table is in.
example: example-project-898931321
type: string
dataset_id:
description: The id of the dataset the table is in.
example: example-dataset-898931321
type: string
table_id:
description: The id of the table.
example: example-table-898931321
type: string
type: object
required:
- project_id
- dataset_id
- table_id
gcp_folder:
description: Remote info for GCP folder.
properties:
folder_id:
description: The id of the folder.
example: folder/898931321
type: string
type: object
required:
- folder_id
gcp_gke_cluster:
description: Remote info for GCP GKE cluster.
properties:
cluster_name:
description: The name of the GKE cluster.
example: example-cluster-898931321
type: string
type: object
required:
- cluster_name
gcp_project:
description: Remote info for GCP project.
properties:
project_id:
description: The id of the project.
example: example-project-898931321
type: string
type: object
required:
- project_id
gcp_sql_instance:
description: Remote info for GCP SQL instance.
properties:
instance_id:
description: The id of the SQL instance.
example: example-sql-898931321
type: string
project_id:
description: The id of the project the instance is in.
example: example-project-898931321
type: string
type: object
required:
- instance_id
- project_id
gcp_billing_account:
description: Remote info for a GCP billing account.
properties:
billing_account_id:
description: The resource name of the billing account.
example: billingAccounts/012345-567890-ABCDEF
type: string
type: object
required:
- billing_account_id
gcp_service_account:
description: Remote info for a GCP service account.
properties:
email:
description: The email of the service account.
example: production@project.iam.gserviceaccount.com
type: string
service_account_id:
description: The id of the service account.
example: 103561576023829460000
type: string
project_id:
description: The id of the project the service account is in.
example: example-project-898931321
type: string
type: object
required:
- email
- service_account_id
- project_id
google_workspace_role:
description: Remote info for GCP workspace role.
properties:
role_id:
description: The id of the role.
example: google-workspace-role:01234567890123456
type: string
type: object
required:
- role_id
github_repo:
description: Remote info for GitHub repository.
properties:
repo_id:
deprecated: true
description: The id of the repository.
example: 898931321
type: string
repo_name:
description: The name of the repository.
example: Opal Security
type: string
org_name:
description: GitHub repo's org name, required only for Enterprise.
type: string
type: object
required:
- repo_name
github_org_role:
description: Remote info for GitHub organization role.
properties:
role_id:
description: The id of the role.
example: 112233
type: string
org_name:
description: GitHub org role's org name, required only for Enterprise.
type: string
type: object
required:
- role_id
github_org:
description: Remote info for GitHub organization.
properties:
org_name:
description: The name of the organization.
example: Opal Security
type: string
type: object
required:
- org_name
github_enterprise_role:
description: Remote info for GitHub Enterprise role.
properties:
role_id:
description: The id of the role.
example: 112233
type: string
type: object
required:
- role_id
gitlab_project:
description: Remote info for Gitlab project.
properties:
project_id:
description: The id of the project.
example: 898931321
type: string
type: object
required:
- project_id
okta_app:
description: Remote info for Okta directory app.
properties:
app_id:
description: The id of the app.
example: a9dfas0f678asdf67867
type: string
type: object
required:
- app_id
okta_standard_role:
description: Remote info for Okta directory standard role.
properties:
role_type:
description: The type of the standard role.
example: ORG_ADMIN
type: string
type: object
required:
- role_type
okta_custom_role:
description: Remote info for Okta directory custom role.
properties:
role_id:
description: The id of the custom role.
example: a9dfas0f678asdf67867
type: string
type: object
required:
- role_id
snowflake_database:
description: Remote info for Snowflake database.
properties:
database_name:
description: The name of the database.
example: mydatabase
type: string
type: object
required:
- database_name
snowflake_schema:
description: Remote info for Snowflake schema.
properties:
database_name:
description: The name of the database the schema is in.
example: mydatabase
type: string
schema_name:
description: The name of the schema.
example: mycatalogschema
type: string
type: object
required:
- database_name
- schema_name
snowflake_table:
description: Remote info for Snowflake table.
properties:
database_name:
description: The name of the database the table is in.
example: mydatabase
type: string
schema_name:
description: The name of the schema the table is in.
example: mycatalogschema
type: string
table_name:
description: The name of the table.
example: myitemstable
type: string
type: object
required:
- database_name
- schema_name
- table_name
ilevel_advanced_role:
description: Remote info for iLevel Advanced role.
properties:
role_name:
description: The name of the role.
example: IT User
type: string
type: object
required:
- role_name
tailscale_ssh:
description: Remote info for Tailscale SSH tag.
properties:
tag_name:
description: The name of the tag.
example: admin
type: string
type: object
required:
- tag_name
twingate_resource:
description: Remote info for Twingate resource.
properties:
resource_id:
description: The id of the Twingate resource.
example: UmVzb3VyY2U6MTIzNA==
type: string
type: object
required:
- resource_id
pagerduty_role:
description: Remote info for Pagerduty role.
properties:
role_name:
description: The name of the role.
example: owner
type: string
type: object
required:
- role_name
workday_role:
description: Remote info for Workday role.
properties:
role_id:
description: The id of the role.
example: 123abc456def
type: string
type: object
required:
- role_id
salesforce_permission_set:
description: Remote info for Salesforce permission set.
properties:
permission_set_id:
description: The id of the permission set.
example: 0PS5Y090202wOV7WAM
type: string
type: object
required:
- permission_set_id
salesforce_profile:
description: Remote info for Salesforce profile.
properties:
profile_id:
description: The id of the permission set.
example: 0PS5Y090202wOV7WAM
type: string
user_license_id:
description: The id of the user license.
example: 1005Y030081Qb5XJHS
type: string
type: object
required:
- profile_id
- user_license_id
docusign_permission_profile:
description: Remote info for Docusign permission profile.
properties:
permission_profile_id:
description: The ID of the Docusign permission profile.
example: "12345"
type: string
type: object
required:
- permission_profile_id
salesforce_role:
description: Remote info for Salesforce role.
properties:
role_id:
description: The id of the role.
example: 0PS5Y090202wOV7WAM
type: string
type: object
required:
- role_id
teleport_role:
description: Remote info for Teleport role.
properties:
role_name:
description: The name role.
example: admin_role
type: string
type: object
required:
- role_name
datastax_astra_role:
description: Remote info for an Astra role.
properties:
role_id:
description: The id of the role.
example: 123e4567-e89b-12d3-a456-426614174000
type: string
type: object
required:
- role_id
coupa_role:
description: Remote info for Coupa role.
properties:
role_id:
description: The id of the role.
example: 999
type: string
type: object
required:
- role_id
cursor_organization:
description: Remote info for a Cursor organization.
properties:
org_id:
description: The id of the organization.
example: 123e4567-e89b-12d3-a456-426614174000
type: string
type: object
required:
- org_id
openai_platform_project:
description: Remote info for OpenAI Platform project.
properties:
project_id:
description: The id of the project.
example: proj_abc
type: string
type: object
required:
- project_id
openai_platform_service_account:
description: Remote info for OpenAI Platform service account.
properties:
project_id:
description: The id of the project for the service account.
example: proj_abc
type: string
service_account_id:
description: The id of the service account.
example: svc_acct_abc
type: string
type: object
required:
- project_id
- service_account_id
anthropic_workspace:
description: Remote info for Anthropic workspace.
properties:
workspace_id:
description: The id of the workspace.
example: ws-123456
type: string
type: object
required:
- workspace_id
oracle_fusion_role:
description: Remote info for Oracle Fusion role.
properties:
role_id:
description: The id of the role.
example: 123e4567-e89b-12d3-a456-426614174000
type: string
type: object
required:
- role_id
devin_organization:
description: Remote info for Devin organization.
properties:
org_id:
description: The id of the organization.
example: devin-org-01
type: string
type: object
required:
- org_id
devin_role:
description: Remote info for Devin role.
properties:
role_id:
description: The id of the role.
example: devin-role-01
type: string
type: object
required:
- role_id
netsuite_role:
description: Remote info for NetSuite role.
properties:
role_id:
description: The id of the role.
example: 123e4567-e89b-12d3-a456-426614174000
type: string
type: object
required:
- role_id
datadog_role:
description: Remote info for Datadog role.
properties:
role_id:
description: The id of the role.
example: 123e4567-e89b-12d3-a456-426614174000
type: string
type: object
required:
- role_id
clickhouse_database:
description: Remote info for ClickHouse database.
properties:
database_name:
description: The name of the ClickHouse database.
example: my_database
type: string
type: object
required:
- database_name
clickhouse_table:
description: Remote info for ClickHouse table.
properties:
database_name:
description: The name of the ClickHouse database containing the table.
example: my_database
type: string
table_name:
description: The name of the ClickHouse table.
example: my_table
type: string
type: object
required:
- database_name
- table_name
grafana_folder:
description: Remote info for Grafana folder.
properties:
folder_uid:
description: The UID of the Grafana folder.
example: fffRTXX
type: string
type: object
required:
- folder_uid
grafana_dashboard:
description: Remote info for Grafana dashboard.
properties:
dashboard_uid:
description: The UID of the Grafana dashboard.
example: dddRTXX
type: string
type: object
required:
- dashboard_uid
grafana_role:
description: Remote info for Grafana role(fixed or custom).
properties:
role_uid:
description: The UID of the Grafana role.
example: rrfRTXX
type: string
type: object
required:
- role_uid
zendesk_role:
description: Remote info for Zendesk custom role.
properties:
role_id:
description: The ID of the Zendesk custom role.
example: "12345"
type: string
type: object
required:
- role_id
hubspot_role:
description: Remote info for HubSpot role.
properties:
role_id:
description: The ID of the HubSpot role.
example: "12345"
type: string
type: object
required:
- role_id
alicloud_ram_role:
description: Remote info for AliCloud RAM role.
properties:
role_arn:
description: The ARN of the AliCloud RAM role.
example: "acs:ram::1234567890:role/MyRole"
type: string
type: object
required:
- role_arn
alicloud_ecs_instance:
description: Remote info for AliCloud ECS instance.
properties:
instance_id:
description: The ID of the ECS instance.
example: "i-bp1a1234567890abcd"
type: string
type: object
required:
- instance_id
zoom_role:
description: Remote info for Zoom role.
properties:
role_id:
description: The ID of the Zoom role.
example: "0"
type: string
type: object
required:
- role_id
zoom_license:
description: Remote info for Zoom license (user type).
properties:
license_type:
description: The Zoom user type representing the license (e.g. "2" for Licensed).
example: "2"
type: string
type: object
required:
- license_type
type: object
RiskSensitivityEnum:
type: string
description:
"Indicates the level of potential impact misuse or unauthorized
access may incur."
enum: [UNKNOWN, CRITICAL, HIGH, MEDIUM, LOW, NONE]
CreateResourceInfo:
description: |-
# CreateResourceInfo Object
### Description
The `CreateResourceInfo` object is used to store creation info for a resource.
### Usage Example
Use in the `POST Resources` endpoint.
example:
remote_resource_id: API_ACCESS_MANAGEMENT_ADMIN-51d203da-313a-4fd9-8fcf-420ce6312345
name: Okta Engineering Super Admin
description: Okta super admin role.
resource_type: OKTA_ROLE
metadata: |-
{
"okta_directory_role":
{
"role_id": "SUPER_ADMIN-b52aa037-4a35-4ac3-9350-f6260fd12345",
"role_type": "SUPER_ADMIN",
},
}
app_id: f454d283-ca87-4a8a-bdbb-df212eca5353
properties:
name:
description: The name of the remote resource.
example: mongo-db-prod
type: string
description:
description: A description of the remote resource.
example: Engineering team Okta role.
type: string
resource_type:
$ref: "#/components/schemas/ResourceTypeEnum"
app_id:
description: The ID of the app for the resource.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
remote_info:
$ref: "#/components/schemas/ResourceRemoteInfo"
remote_resource_id:
deprecated: true
description:
Deprecated - use remote_info instead. The ID of the resource on the
remote system. Include only for items linked to remote systems. See
[this guide](https://docs.opal.dev/reference/end-system-objects) for
details on how to specify this field.
example: API_ACCESS_MANAGEMENT_ADMIN-51d203da-313a-4fd9-8fcf-420ce6312345
type: string
metadata:
deprecated: true
description: |-
Deprecated - use remote_info instead.
JSON metadata about the remote resource. Include only for items linked to remote systems. See [this guide](https://docs.opal.dev/reference/end-system-objects) for details on how to specify this field.
The required format is dependent on resource_type and should have the following schema:
```json
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Resource Metadata",
"properties": {
"aws_ec2_instance": {
"properties": {
"instance_id": {
"type": "string"
},
"region": {
"type": "string"
}
},
"required": ["instance_id", "region"],
"additionalProperties": false,
"type": "object",
"title": "AWS EC2 Instance"
},
"aws_eks_cluster": {
"properties": {
"cluster_name": {
"type": "string"
},
"cluster_region": {
"type": "string"
},
"cluster_arn": {
"type": "string"
}
},
"required": ["cluster_name", "cluster_region", "cluster_arn"],
"additionalProperties": false,
"type": "object",
"title": "AWS EKS Cluster"
},
"aws_rds_instance": {
"properties": {
"instance_id": {
"type": "string"
},
"engine": {
"type": "string"
},
"region": {
"type": "string"
},
"resource_id": {
"type": "string"
},
"database_name": {
"type": "string"
}
},
"required": [
"instance_id",
"engine",
"region",
"resource_id",
"database_name"
],
"additionalProperties": false,
"type": "object",
"title": "AWS RDS Instance"
},
"aws_role": {
"properties": {
"arn": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": ["arn", "name"],
"additionalProperties": false,
"type": "object",
"title": "AWS Role"
},
"gcp_bucket": {
"properties": {
"bucket_id": {
"type": "string"
}
},
"required": ["bucket_id"],
"additionalProperties": false,
"type": "object",
"title": "GCP Bucket"
},
"gcp_compute_instance": {
"properties": {
"instance_id": {
"type": "string"
},
"project_id": {
"type": "string"
},
"zone": {
"type": "string"
}
},
"required": ["instance_id", "project_id", "zone"],
"additionalProperties": false,
"type": "object",
"title": "GCP Compute Instance"
},
"gcp_folder": {
"properties": {
"folder_id": {
"type": "string"
}
},
"required": ["folder_id"],
"additionalProperties": false,
"type": "object",
"title": "GCP Folder"
},
"gcp_gke_cluster": {
"properties": {
"cluster_name": {
"type": "string"
}
},
"required": ["cluster_name"],
"additionalProperties": false,
"type": "object",
"title": "GCP GKE Cluster"
},
"gcp_project": {
"properties": {
"project_id": {
"type": "string"
}
},
"required": ["project_id"],
"additionalProperties": false,
"type": "object",
"title": "GCP Project"
},
"gcp_sql_instance": {
"properties": {
"instance_id": {
"type": "string"
},
"project_id": {
"type": "string"
}
},
"required": ["instance_id", "project_id"],
"additionalProperties": false,
"type": "object",
"title": "GCP SQL Instance"
},
"git_hub_repo": {
"properties": {
"org_name": {
"type": "string"
},
"repo_name": {
"type": "string"
}
},
"required": ["org_name", "repo_name"],
"additionalProperties": false,
"type": "object",
"title": "GitHub Repo"
},
"okta_directory_app": {
"properties": {
"app_id": {
"type": "string"
},
"logo_url": {
"type": "string"
}
},
"required": ["app_id", "logo_url"],
"additionalProperties": false,
"type": "object",
"title": "Okta Directory App"
},
"okta_directory_role": {
"properties": {
"role_type": {
"type": "string"
},
"role_id": {
"type": "string"
}
},
"required": ["role_type", "role_id"],
"additionalProperties": false,
"type": "object",
"title": "Okta Directory Role"
},
"salesforce_profile": {
"properties": {
"user_license": {
"type": "string"
}
},
"required": ["user_license"],
"additionalProperties": false,
"type": "object",
"title": "Salesforce Profile"
}
},
"additionalProperties": false,
"minProperties": 1,
"maxProperties": 1,
"type": "object"
}
```
example: |-
{
"okta_directory_role":
{
"role_id": "SUPER_ADMIN-b52aa037-4a35-4ac3-9350-f6260fd12345",
"role_type": "SUPER_ADMIN",
},
}
type: string
custom_request_notification:
description: Custom request notification sent upon request approval.
type: string
maxLength: 800
nullable: true
example: "Check your email to register your account."
risk_sensitivity_override:
allOf:
- $ref: "#/components/schemas/RiskSensitivityEnum"
match_remote_name:
description:
A bool representing whether or not the resource's name should be
synced from the end system. When true, the name is overwritten
with the remote name on each sync, so a `name` provided together
with this field set to true will be replaced at the next sync.
Defaults to false.
example: False
type: boolean
match_remote_description:
description:
A bool representing whether or not the resource's description
should be synced from the end system. When true, the description
is overwritten with the remote description on each sync, so a
`description` provided together with this field set to true will
be replaced at the next sync. Defaults to false.
example: False
type: boolean
required:
- name
- resource_type
- app_id
type: object
CreateBundleInfo:
description: |-
# CreateBundleInfo Object
### Description
The `CreateBundleInfo` object is used to store creation info for a bundle.
### Usage Example
Use in the `POST Bundles` endpoint.
example:
name: Engineering Team Bundle
description: Engineering team bundle.
admin_owner_id: 7870617d-e72a-47f5-a84c-693817ab4567
properties:
name:
type: string
description: The name of the bundle.
example: "Test Bundle"
description:
type: string
description: A brief description of the bundle.
example: "This is a test bundle"
admin_owner_id:
type: string
description: The ID of the bundle's admin owner.
example: "7c86c85d-0651-43e2-a748-d69d658418e8"
required:
- name
- admin_owner_id
CreateGroupInfo:
description: |-
# CreateGroupInfo Object
### Description
The `CreateGroupInfo` object is used to store creation info for a group.
### Usage Example
Use in the `POST Groups` endpoint.
example:
remote_group_id: 00g4fixjd6Bc9w0TT5d7
name: Engineering Team
description: Engineering team Okta group.
group_type: OKTA_GROUP
metadata: |-
{ "okta_directory_group": { "group_id": "00g4bs66kwtpe1g12345" } }
app_id: f454d283-ca87-4a8a-bdbb-df212eca5353
properties:
name:
description: The name of the remote group.
example: mongo-db-prod
type: string
description:
description: A description of the remote group.
example: Engineering team Okta group.
type: string
group_type:
$ref: "#/components/schemas/GroupTypeEnum"
app_id:
description: The ID of the app for the group.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
remote_info:
$ref: "#/components/schemas/GroupRemoteInfo"
remote_group_id:
deprecated: true
description:
Deprecated - use remote_info instead. The ID of the group on the
remote system. Include only for items linked to remote systems. See
[this guide](https://docs.opal.dev/reference/end-system-objects) for
details on how to specify this field.
example: 00g4fixjd6Bc9w012345
type: string
metadata:
deprecated: true
description: |-
Deprecated - use remote_info instead.
JSON metadata about the remote group. Include only for items linked to remote systems. See [this guide](https://docs.opal.dev/reference/end-system-objects) for details on how to specify this field.
The required format is dependent on group_type and should have the following schema:
```json
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Group Metadata",
"properties": {
"ad_group": {
"properties": {
"object_guid": {
"type": "string"
}
},
"required": ["object_guid"],
"additionalProperties": false,
"type": "object",
"title": "Active Directory Group"
},
"duo_group": {
"properties": {
"group_id": {
"type": "string"
}
},
"required": ["group_id"],
"additionalProperties": false,
"type": "object",
"title": "Duo Group"
},
"git_hub_team": {
"properties": {
"org_name": {
"type": "string"
},
"team_slug": {
"type": "string"
}
},
"required": ["org_name", "team_slug"],
"additionalProperties": false,
"type": "object",
"title": "GitHub Team"
},
"google_groups_group": {
"properties": {
"group_id": {
"type": "string"
}
},
"required": ["group_id"],
"additionalProperties": false,
"type": "object",
"title": "Google Groups Group"
},
"ldap_group": {
"properties": {
"group_uid": {
"type": "string"
}
},
"required": ["group_uid"],
"additionalProperties": false,
"type": "object",
"title": "LDAP Group"
},
"okta_directory_group": {
"properties": {
"group_id": {
"type": "string"
}
},
"required": ["group_id"],
"additionalProperties": false,
"type": "object",
"title": "Okta Directory Group"
}
},
"additionalProperties": false,
"minProperties": 1,
"maxProperties": 1,
"type": "object"
}
```
example: |-
{ "okta_directory_group": { "group_id": "00g4bs66kwtpe1g12345" } }
type: string
custom_request_notification:
description: Custom request notification sent upon request approval.
type: string
maxLength: 800
nullable: true
example: "Check your email to register your account."
risk_sensitivity_override:
allOf:
- $ref: "#/components/schemas/RiskSensitivityEnum"
match_remote_name:
description:
A bool representing whether or not the group's name should be
synced from the end system. When true, the name is overwritten
with the remote name on each sync, so a `name` provided together
with this field set to true will be replaced at the next sync.
Defaults to false.
example: False
type: boolean
match_remote_description:
description:
A bool representing whether or not the group's description should
be synced from the end system. When true, the description is
overwritten with the remote description on each sync, so a
`description` provided together with this field set to true will
be replaced at the next sync. Defaults to false.
example: False
type: boolean
required:
- name
- group_type
- app_id
type: object
PaginatedResourcesList:
example:
next: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
previous: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
results:
- resource_id: f454d283-ca67-4a8a-bdbb-df212eca5353
description: This resource represents AWS IAM role "SupportUser".
admin_owner_id: 7c86c85d-0651-43e2-a748-d69d658418e8
remote_id: arn:aws:iam::490306337630:role/SupportUser
remote_name: SupportUser
max_duration: 120
require_manager_approval: False
require_support_ticket: False
parent_resource_id: f454d283-ca67-4a8a-bdbb-df212eca5345
- resource_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
description: This resource represents GCP project "app-demo".
remote_id: app-demo-307223
remote_name: app-demo
admin_owner_id: 7c86c85d-0651-43e2-a748-d69d658418e8
max_duration: 360
require_manager_approval: False
require_support_ticket: True
properties:
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
nullable: true
type: string
results:
items:
$ref: "#/components/schemas/Resource"
type: array
type: object
required:
- results
RequestStatusEnum:
description: |-
# Request Status
### Description
The `RequestStatus` enum is used to represent the status of a request.
### Usage Example
Returned from the `GET Requests` endpoint.
enum:
- PENDING
- APPROVED
- DENIED
- CANCELED
type: string
Request:
description: |-
# Request Object
### Description
The `Request` object is used to represent a request.
### Usage Example
Returned from the `GET Requests` endpoint.
example:
id: 7c86c85d-0651-43e2-a748-d69d658418e8
created_at: 2021-01-06T20:00:00Z
updated_at: 2021-01-06T20:00:00Z
requester_id: c86c85d-0651-43e2-a748-d69d658418e8
target_user_id: r86c85d-0651-43e2-a748-d69d658418e8
target_group_id: r86c85d-0651-43e2-a748-d69d658418e8
status: pending
reason: I need this resource.
duration_minutes: 1440
request_comments:
- id: 7c86c85d-0651-43e2-a748-d69d658418e8
created_at: 2021-01-06T20:00:00Z
updated_at: 2021-01-06T20:00:00Z
request_id: 4c86c85d-0651-43e2-a748-d69d658418e8
user_id: c86c85d-0651-43e2-a748-d69d658418e8
comment: This is a comment.
reviewer_stages:
- requestedRoleName: "Admin"
requestedItemName: "AWS Production Account"
stages:
- stage: 1
operator: AND
reviewers:
- id: 7c86c85d-0651-43e2-a748-d69d658418e8
status: PENDING
- stage: 2
operator: OR
reviewers:
- id: 8d86c85d-0651-43e2-a748-d69d658418e9
status: APPROVED
properties:
id:
description: The unique identifier of the request.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
created_at:
description: The date and time the request was created.
example: 2021-01-06T20:00:00Z
format: date-time
type: string
updated_at:
description: The date and time the request was last updated.
example: 2021-01-06T20:00:00Z
format: date-time
type: string
requester_id:
description: The unique identifier of the user who created the request.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
target_user_id:
description: The unique identifier of the user who is the target of the request.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
target_group_id:
description: The unique identifier of the group who is the target of the request.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
status:
description: The status of the request.
example: pending
$ref: "#/components/schemas/RequestStatusEnum"
reason:
description: The reason for the request.
example: I need access to the AWS account.
type: string
duration_minutes:
description: The duration of the request in minutes.
example: 120
type: integer
requested_items_list:
description: The list of targets for the request.
type: array
items:
$ref: "#/components/schemas/RequestedItem"
custom_fields_responses:
description: The responses given to the custom fields associated to the request
type: array
items:
$ref: "#/components/schemas/RequestCustomFieldResponse"
stages:
deprecated: true
description: The stages configuration for this request
$ref: "#/components/schemas/RequestItemStages"
reviewer_stages:
description:
The configured reviewer stages for every item in this request, or
an error message if reviewers could not be loaded
oneOf:
- type: array
items:
$ref: "#/components/schemas/RequestReviewerStages"
- type: string
required:
- id
- created_at
- updated_at
- requester_id
- status
- reason
RequestCommentList:
description: A paginated list of request comments
type: object
example:
comments:
- created_at: 2021-01-06T20:00:00Z
request_id: 4c86c85d-0651-43e2-a748-d69d658418e8
user_id: c86c85d-0651-43e2-a748-d69d658418e8
comment: This is a comment.
properties:
comments:
items:
$ref: "#/components/schemas/RequestComment"
type: array
required:
- comments
RequestComment:
description: |-
# Request Comment Object
### Description
The `RequestComment` object is used to represent a comment on a request.
### Usage Example
Returned from the `GET Requests` endpoint as part of a `Request` object.
example:
created_at: 2021-01-06T20:00:00Z
request_id: 4c86c85d-0651-43e2-a748-d69d658418e8
user_id: c86c85d-0651-43e2-a748-d69d658418e8
comment: This is a comment.
properties:
created_at:
description: The date and time the comment was created.
example: 2021-01-06T20:00:00Z
format: date-time
type: string
request_id:
description: The unique identifier of the request the comment is associated with.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
user_id:
description: The unique identifier of the user who made the comment.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
user_full_name:
description: The user's full name.
example: Jake Barnes
type: string
user_email:
description: The user's email address.
example: jake.barnes@company.com
type: string
comment:
description: The content of the comment.
example: This is a comment.
type: string
required:
- created_at
- request_id
- user_id
- comment
RequestReviewerStages:
description: The stages configuration for a request item
type: object
properties:
access_level_name:
description: The name of the access level requested.
example: admin
type: string
access_level_remote_id:
description: The ID of the access level requested on the remote system.
example: arn:aws:iam::490306337630:role/SupportUser
type: string
item_name:
description: The name of the requested item
type: string
item_id:
description: The ID of the resource requested.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
stages:
description: The stages of review for this request
type: array
items:
$ref: "#/components/schemas/RequestStage"
required:
- item_name
- item_id
- stages
RequestItemStages:
description: The stages configuration for a request item
type: object
deprecated: true
properties:
requestedRoleName:
description: The name of the requested role
type: string
requestedItemName:
description: The name of the requested item
type: string
stages:
description: The stages of review for this request
type: array
items:
$ref: "#/components/schemas/RequestStage"
required:
- requestedItemName
- stages
RequestStage:
description: A stage in the request review process
type: object
properties:
stage:
description: The stage number
type: integer
operator:
description: The operator to apply to reviewers in this stage
$ref: "#/components/schemas/ReviewStageOperator"
reviewers:
description: The reviewers for this stage
type: array
items:
$ref: "#/components/schemas/RequestReviewer"
required:
- stage
- operator
- reviewers
ReviewStageOperator:
description: The operator to apply to reviewers in a stage
type: string
enum:
- AND
- OR
RequestReviewer:
description: A reviewer in a request stage
type: object
properties:
id:
description: The unique identifier of the reviewer
type: string
format: uuid
full_name:
description: The user's full name.
example: Jake Barnes
type: string
status:
description: The status of this reviewer's review
type: string
enum:
- PENDING
- APPROVED
- REJECTED
required:
- id
- status
RequestedItem:
description: |-
# Requested Item Object
### Description
The `RequestedItem` object is used to represent a request target item.
### Usage Example
Returned from the `GET Requests` endpoint.
properties:
resource_id:
description: The ID of the resource requested.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
group_id:
description: The ID of the group requested.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
access_level_name:
description: The name of the access level requested.
example: admin
type: string
access_level_remote_id:
description: The ID of the access level requested on the remote system.
example: arn:aws:iam::490306337630:role/SupportUser
type: string
name:
description: The name of the target.
example: Engineering Team
type: string
remote_id:
description: The ID of the target on the remote system.
example: arn:aws:iam::490306337630:role/SupportUser
type: string
remote_name:
description: The name of the target on the remote system.
example: SupportUser
type: string
example:
resource_id: null
group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
access_level_name: admin
access_level_remote_id: arn:aws:iam::490306337630:role/SupportUser
name: Engineering Team
RequestCustomFieldResponse:
properties:
field_name:
type: string
field_type:
example: SHORT_TEXT
$ref: "#/components/schemas/RequestTemplateCustomFieldTypeEnum"
field_value:
oneOf:
- type: string
example: "This is a response to a long text or short text or multi choice"
- type: boolean
example: true
required:
- field_name
- field_type
- field_value
RequestTemplateCustomFieldCalloutMetadata:
description:
The message shown to a requester by a `CALLOUT` field, and how prominently to
show it.
type: object
properties:
severity:
description: How prominently the message is shown.
enum:
- INFO
- WARNING
- ERROR
type: string
example: WARNING
text:
description: The message shown to the requester.
type: string
example: This role grants access to production customer data.
required:
- severity
- text
RequestTemplateCustomFieldMultiChoiceMetadata:
description: The options a requester can pick from in a `MULTI_CHOICE` or `MULTI_SELECT` field.
type: object
properties:
options:
items:
type: string
type: array
example:
- Incident response
- Scheduled maintenance
required:
- options
RequestTemplateCustomFieldInput:
description:
A field to put on a request template. Separate from `RequestTemplateCustomField`
because a callout's name may be omitted on write, while a field read back always
has one.
type: object
properties:
name:
description:
The label shown to the requester. Required for every type except `CALLOUT`,
which is display-only -- its name is an internal identifier, never displayed,
and is generated if omitted.
type: string
example: Why do you need this access?
description:
description: Helper text shown beneath the field.
type: string
nullable: true
type:
$ref: "#/components/schemas/RequestTemplateCustomFieldTypeEnum"
required:
description:
Whether the requester must answer. Ignored for `CALLOUT` fields, which
collect no answer.
type: boolean
example: true
metadata:
$ref: "#/components/schemas/RequestTemplateCustomFieldMetadata"
required:
- type
RequestTemplateCustomFieldMetadata:
description:
Extra configuration for field types that need it. Exactly one member is set, and
which one is determined by the field's `type`.
type: object
properties:
callout_data:
$ref: "#/components/schemas/RequestTemplateCustomFieldCalloutMetadata"
multi_choice_data:
$ref: "#/components/schemas/RequestTemplateCustomFieldMultiChoiceMetadata"
RequestTemplateCustomField:
description: A field on a request template.
type: object
properties:
name:
description:
The label shown to the requester. `CALLOUT` fields are display-only, so
their name is an internal identifier and is never displayed.
type: string
example: Why do you need this access?
description:
description: Helper text shown beneath the field.
type: string
nullable: true
type:
$ref: "#/components/schemas/RequestTemplateCustomFieldTypeEnum"
required:
description:
Whether the requester must answer. Always false for `CALLOUT` fields, which
collect no answer.
type: boolean
example: true
metadata:
$ref: "#/components/schemas/RequestTemplateCustomFieldMetadata"
required:
- name
- type
RequestTemplate:
description: A template describing what a requester is asked when requesting access.
type: object
properties:
request_template_id:
description: The ID of the request template.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
name:
description: The name of the request template.
example: Production access questions
type: string
custom_fields:
description: The fields on this template, in the order they are shown.
items:
$ref: "#/components/schemas/RequestTemplateCustomField"
type: array
required:
- request_template_id
- name
PaginatedRequestTemplateList:
type: object
properties:
next:
description: The cursor with which to continue pagination if additional result pages exist.
type: string
nullable: true
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzAyMTMlMkIwMCUzQTAw
previous:
description: The cursor used to obtain the current result page.
type: string
nullable: true
example: cj0xJnA9MjAyMS0wMS0wNSswMyUzQTI0JTNBNTMuNDMwMjEz
results:
items:
$ref: "#/components/schemas/RequestTemplate"
type: array
CreateRequestTemplateInfo:
description: Information for creating a request template.
type: object
properties:
name:
description: The name of the request template.
example: Production access questions
type: string
custom_fields:
description: The fields to put on the template, in the order they are shown.
items:
$ref: "#/components/schemas/RequestTemplateCustomFieldInput"
type: array
required:
- name
UpdateRequestTemplateInfo:
description:
Information for updating a request template. Omitted properties are left
unchanged, but `custom_fields` replaces the template's fields wholesale when
provided.
type: object
properties:
request_template_id:
description: The ID of the request template to update.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
name:
description: The new name of the request template.
type: string
custom_fields:
description:
The complete set of fields for the template. Any field not included is
removed.
items:
$ref: "#/components/schemas/RequestTemplateCustomFieldInput"
type: array
required:
- request_template_id
RequestTemplateCustomFieldTypeEnum:
description:
The type of the custom request field. `CALLOUT` fields are display-only --
they
show a message to the requester and collect no answer, so they never appear in a
request's `custom_fields`.
enum:
- SHORT_TEXT
- LONG_TEXT
- BOOLEAN
- MULTI_CHOICE
- MULTI_SELECT
- CALLOUT
type: string
RequestList:
description: |-
# Request List
### Description
The `RequestList` object is used to represent a list of requests.
### Usage Example
Returned from the `GET Requests` endpoint.
example:
requests:
- id: 7c86c85d-0651-43e2-a748-d69d658418e8
organization_id: w86c85d-0651-43e2-a748-d69d658418e8
created_at: 2021-01-06T20:00:00Z
updated_at: 2021-01-06T20:00:00Z
requester_id: c86c85d-0651-43e2-a748-d69d658418e8
target_user_id: r86c85d-0651-43e2-a748-d69d658418e8
target_group_id: g86c85d-0651-43e2-a748-d69d658418e8
status: pending
reason: I need this resource.
duration_minutes: 1440
request_comments:
- id: 4c86c85d-0651-43e2-a748-d69d658418e8
created_at: 2021-01-06T20:00:00Z
updated_at: 2021-01-06T20:00:00Z
request_id: 7c86c85d-0651-43e2-a748-d69d658418e8
user_id: c86c85d-0651-43e2-a748-d69d658418e8
comment: This is a comment.
cursor: eyJjcmVhdGVkX2F0IjoiMjAyMS0wMS0wNlQyMDo0NzowMFoiLCJ2YWx1ZSI6ImFkbWluIn0=
properties:
requests:
description: The list of requests.
type: array
items:
$ref: "#/components/schemas/Request"
cursor:
description:
The cursor to use in the next request to get the next page of
results.
type: string
example: eyJjcmVhdGVkX2F0IjoiMjAyMS0wMS0wNlQyMDo0NzowMFoiLCJ2YWx1ZSI6ImFkbWluIn0=
Resource:
description: |-
# Resource Object
### Description
The `Resource` object is used to represent a resource.
### Usage Example
Update from the `UPDATE Resources` endpoint.
example:
resource_id: f454d283-ca87-4a8a-bdbb-df212eca5353
app_id: b5a5ca27-0ea3-4d86-9199-2126d57d1fbd
description: This resource represents AWS IAM role "SupportUser".
admin_owner_id: 7c86c85d-0651-43e2-a748-d69d658418e8
remote_id: 318038399
remote_name: repo-name
max_duration: 120
require_manager_approval: False
require_support_ticket: False
parent_resource_id: f454d283-ca67-4a8a-bdbb-df212eca5345
ancestor_resource_ids:
- f454d283-ca67-4a8a-bdbb-df212eca5345
descendant_resource_ids:
- f454d283-ca67-4a8a-bdbb-df212eca5345
properties:
resource_id:
description: The ID of the resource.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
app_id:
description: The ID of the app.
example: b5a5ca27-0ea3-4d86-9199-2126d57d1fbd
format: uuid
type: string
name:
description: The name of the resource.
example: mongo-db-prod
type: string
description:
description: A description of the resource.
example: This resource represents AWS IAM role "SupportUser".
type: string
admin_owner_id:
description: The ID of the owner of the resource.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
remote_resource_id:
description: The ID of the resource on the remote system.
example: 318038399
type: string
remote_resource_name:
description: The name of the resource on the remote system.
example: repo-name
type: string
resource_type:
$ref: "#/components/schemas/ResourceTypeEnum"
max_duration:
description:
The maximum duration for which the resource can be requested (in
minutes).
type: integer
example: 120
recommended_duration:
description:
The recommended duration for which the resource should be requested
(in minutes). -1 represents an indefinite duration.
type: integer
example: 120
extensions_duration_in_minutes:
description:
The duration for which access can be extended (in minutes). Set to
0 to disable extensions. When > 0, extensions are enabled for the
specified duration.
type: integer
example: 120
require_manager_approval:
description:
A bool representing whether or not access requests to the resource
require manager approval.
example: False
type: boolean
deprecated: true
require_support_ticket:
description:
A bool representing whether or not access requests to the resource
require an access ticket.
example: False
type: boolean
require_mfa_to_approve:
description:
A bool representing whether or not to require MFA for reviewers to
approve requests for this resource.
example: False
type: boolean
require_mfa_to_request:
description:
A bool representing whether or not to require MFA for requesting
access to this resource.
example: False
type: boolean
require_mfa_to_connect:
description:
A bool representing whether or not to require MFA to connect to
this resource.
example: False
type: boolean
auto_approval:
description:
A bool representing whether or not to automatically approve
requests to this resource.
example: False
type: boolean
request_template_id:
description: The ID of the associated request template.
example: 06851574-e50d-40ca-8c78-f72ae6ab4304
format: uuid
type: string
is_requestable:
description:
A bool representing whether or not to allow access requests to this
resource.
example: False
type: boolean
parent_resource_id:
description: The ID of the parent resource.
example: 06851574-e50d-40ca-8c78-f72ae6ab4305
format: uuid
type: string
configuration_template_id:
description: The ID of the associated configuration template.
example: 06851574-e50d-40ca-8c78-f72ae6ab4304
format: uuid
type: string
request_configurations:
type: array
items:
$ref: "#/components/schemas/RequestConfiguration"
description: A list of configurations for requests to this resource.
request_configuration_list:
description:
A list of configurations for requests to this resource. Deprecated
in favor of `request_configurations`.
deprecated: true
items:
$ref: "#/components/schemas/RequestConfiguration"
type: array
ticket_propagation:
$ref: "#/components/schemas/TicketPropagationConfiguration"
custom_request_notification:
description: Custom request notification sent upon request approval.
type: string
maxLength: 800
nullable: true
risk_sensitivity:
description:
The risk sensitivity level for the resource. When an override is
set, this field will match that.
readOnly: true
allOf:
- $ref: "#/components/schemas/RiskSensitivityEnum"
risk_sensitivity_override:
allOf:
- $ref: "#/components/schemas/RiskSensitivityEnum"
metadata:
description:
JSON metadata about the remote resource. Only set for items linked
to remote systems. See [this
guide](https://docs.opal.dev/reference/end-system-objects) for
details.
deprecated: true
example: |-
{
"okta_directory_role":
{
"role_id": "SUPER_ADMIN-b52aa037-4a35-4ac3-9350-f6260fd12345",
"role_type": "SUPER_ADMIN",
},
}
type: string
remote_info:
$ref: "#/components/schemas/ResourceRemoteInfo"
ancestor_resource_ids:
description: List of resource IDs that are ancestors of this resource.
type: array
items:
format: uuid
type: string
example:
- f454d283-ca67-4a8a-bdbb-df212eca5345
- f454d283-ca67-4a8a-bdbb-df212eca5346
descendant_resource_ids:
description: List of resource IDs that are descendants of this resource.
type: array
items:
format: uuid
type: string
example:
- f454d283-ca67-4a8a-bdbb-df212eca5347
- f454d283-ca67-4a8a-bdbb-df212eca5348
match_remote_name:
description:
A bool representing whether or not the resource's name is synced
from the end system. When true, the name is overwritten with the
remote name on each sync. Defaults to false.
example: False
type: boolean
match_remote_description:
description:
A bool representing whether or not the resource's description is
synced from the end system. When true, the description is
overwritten with the remote description on each sync. Defaults to
false.
example: False
type: boolean
last_successful_sync:
readOnly: true
description: Information about the last successful sync of this resource.
$ref: "#/components/schemas/SyncTask"
required:
- resource_id
type: object
AwsPermissionSetMetadata:
description: Metadata for AWS Identity Center permission set.
properties:
aws_permission_set:
type: object
properties:
arn:
description: The ARN of the permission set.
example: arn:aws:sso:::permissionSet/asdf-32139302d201d32/ps-f03323201211e1b9
type: string
account_id:
description:
The ID of an AWS account to which this permission set is
provisioned.
example: 234234234234
type: string
required:
- arn
- account_id
type: object
required:
- aws_permission_set
UpdateResourceInfoList:
example:
resources:
- resource_id: f454d283-ca87-4a8a-bdbb-df212eca5353
name: my-mongo-db
description: This resource represents AWS IAM role "SupportUser".
admin_owner_id: 7c86c85d-0651-43e2-a748-d69d658418e8
max_duration: 120
require_manager_approval: False
require_support_ticket: False
- resource_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
name: Admin Role
description: This resource represents GCP project "app-demo".
admin_owner_id: 4220bc12-ab8a-4b5d-be7b-f6bbcf9159f3
max_duration: 360
require_manager_approval: False
require_support_ticket: True
properties:
resources:
description: A list of resources with information to update.
items:
$ref: "#/components/schemas/UpdateResourceInfo"
type: array
type: object
required:
- resources
UpdateResourceInfo:
description: |-
# UpdateResourceInfo Object
### Description
The `UpdateResourceInfo` object is used as an input to the UpdateResource API.
example:
resource_id: f454d283-ca87-4a8a-bdbb-df212eca5353
name: my-mongo-db
description: This resource represents AWS IAM role "SupportUser".
admin_owner_id: 7c86c85d-0651-43e2-a748-d69d658418e8
max_duration: 120
require_manager_approval: False
require_support_ticket: False
properties:
resource_id:
description: The ID of the resource.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
name:
description: The name of the resource.
example: my-mongo-db
type: string
description:
description: A description of the resource.
example: This resource represents AWS IAM role "SupportUser".
type: string
admin_owner_id:
description: The ID of the owner of the resource.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
max_duration:
description:
The maximum duration for which the resource can be requested (in
minutes). Use -1 to set to indefinite. Deprecated in favor of
`request_configurations`.
type: integer
example: 120
deprecated: true
recommended_duration:
description:
The recommended duration for which the resource should be requested
(in minutes). Will be the default value in a request. Use -1 to set
to indefinite and 0 to unset. Deprecated in favor of
`request_configurations`.
type: integer
example: 120
deprecated: true
require_manager_approval:
description:
A bool representing whether or not access requests to the resource
require manager approval.
example: False
type: boolean
deprecated: true
require_support_ticket:
description:
A bool representing whether or not access requests to the resource
require an access ticket. Deprecated in favor of
`request_configurations`.
example: False
type: boolean
deprecated: true
folder_id:
description: The ID of the folder that the resource is located in.
example: e27cb7b0-98e2-4555-9916-9e6d8ca6b079
format: uuid
type: string
deprecated: true
require_mfa_to_approve:
description:
A bool representing whether or not to require MFA for reviewers to
approve requests for this resource.
example: False
type: boolean
require_mfa_to_request:
description:
A bool representing whether or not to require MFA for requesting
access to this resource. Deprecated in favor of
`request_configurations`.
example: False
type: boolean
deprecated: true
require_mfa_to_connect:
description:
A bool representing whether or not to require MFA to connect to
this resource.
example: False
type: boolean
auto_approval:
description:
A bool representing whether or not to automatically approve
requests to this resource. Deprecated in favor of
`request_configurations`.
example: False
type: boolean
deprecated: true
ticket_propagation:
$ref: "#/components/schemas/TicketPropagationConfiguration"
custom_request_notification:
description: Custom request notification sent upon request approval.
type: string
maxLength: 800
nullable: true
example: "Check your email to register your account."
risk_sensitivity_override:
allOf:
- $ref: "#/components/schemas/RiskSensitivityEnum"
match_remote_name:
description:
A bool representing whether or not the resource's name should be
synced from the end system. When true, the name is overwritten
with the remote name on each sync, so a `name` provided together
with this field set to true will be replaced at the next sync. If
not provided, the current value is left unchanged.
example: False
type: boolean
match_remote_description:
description:
A bool representing whether or not the resource's description
should be synced from the end system. When true, the description
is overwritten with the remote description on each sync, so a
`description` provided together with this field set to true will
be replaced at the next sync. If not provided, the current value
is left unchanged.
example: False
type: boolean
configuration_template_id:
description: The ID of the associated configuration template.
example: 06851574-e50d-40ca-8c78-f72ae6ab4304
format: uuid
type: string
request_template_id:
description:
The ID of the associated request template. Deprecated in favor of
`request_configurations`.
example: 06851574-e50d-40ca-8c78-f72ae6ab4304
format: uuid
type: string
deprecated: true
is_requestable:
description:
A bool representing whether or not to allow access requests to this
resource. Deprecated in favor of `request_configurations`.
example: False
type: boolean
deprecated: true
extensions_duration_in_minutes:
description:
The duration for which access can be extended (in minutes).
Deprecated, set the extension duration in the request_configuration
you want it to apply to.
type: integer
example: 120
deprecated: true
parent_resource_id:
description: The ID of the parent resource.
example: f454d283-ca67-4a8a-bdbb-df212eca5345
format: uuid
type: string
nullable: true
request_configurations:
type: array
items:
$ref: "#/components/schemas/RequestConfiguration"
description:
A list of configurations for requests to this resource. If not
provided, the default request configuration will be used.
request_configuration_list:
description:
A list of configurations for requests to this resource. If not
provided, the default request configuration will be used. Deprecated
in favor of `request_configurations`.
$ref: "#/components/schemas/CreateRequestConfigurationInfoList"
deprecated: true
example:
request_configurations:
- request_configuration_id: 7c86c85d-0651-43e2-a748-d69d658418e8
organization_id: w86c85d-0651-43e2-a748-d69d658418e8
condition: null
allow_requests: True
auto_approval: False
require_mfa_to_request: False
max_duration_minutes: 120
recommended_duration_minutes: 120
require_support_ticket: False
reviewer_stages:
- reviewer_stage_id: 7c86c85d-0651-43e2-a748-d69d658418e8
owner_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
stage: 1
priority: 0
- request_configuration_id: 7c86c85d-0651-43e2-a748-d69d658418e9
organization_id: w86c85d-0651-43e2-a748-d69d658418e8
condition:
group_id: 1b978423-db0a-4037-a4cf-f79c60cb67b4
allow_requests: True
auto_approval: False
require_mfa_to_request: False
max_duration_minutes: 120
recommended_duration_minutes: 120
require_support_ticket: False
reviewer_stages:
- reviewer_stage_id: 7c86c85d-0651-43e2-a748-d69d658418e8
owner_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
stage: 1
priority: 1
required:
- resource_id
type: object
PaginatedTagsList:
example:
next: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
previous: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
results:
- tag_id: f290a738-5f9f-43c2-ad67-fa31ff0eb946
created_at: 2022-01-23T04:56:07Z
updated_at: 2022-02-23T01:34:07Z
user_creator_id: d4a7d928-783e-4599-8ec6-088d635a5bcc
admin_owner_id: bfb518b1-3f5b-4e3b-8eb8-3b3fabd4ea2b
key: database-name
value: redis_db
- tag_id: 92f0a738-5f9f-43c2-ad67-fa31ff0eb052
created_at: 2022-03-23T04:56:07Z
updated_at: 2022-04-23T01:34:07Z
user_creator_id: a4d7d928-783e-4599-8ec6-088d635af4ac
admin_owner_id: gtg418b1-3f5b-4e3b-8eb8-3b3fabd4eaa1
key: database-type
value: sql
properties:
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
nullable: true
type: string
results:
items:
$ref: "#/components/schemas/Tag"
type: array
required:
- results
type: object
TagsList:
example:
results:
- tag_id: f290a738-5f9f-43c2-ad67-fa31ff0eb946
created_at: 2022-01-23T04:56:07Z
updated_at: 2022-02-23T01:34:07Z
user_creator_id: d4a7d928-783e-4599-8ec6-088d635a5bcc
admin_owner_id: bfb518b1-3f5b-4e3b-8eb8-3b3fabd4ea2b
key: database-name
value: redis_db
- tag_id: 92f0a738-5f9f-43c2-ad67-fa31ff0eb052
created_at: 2022-03-23T04:56:07Z
updated_at: 2022-04-23T01:34:07Z
user_creator_id: a4d7d928-783e-4599-8ec6-088d635af4ac
admin_owner_id: gtg418b1-3f5b-4e3b-8eb8-3b3fabd4eaa1
key: database-type
value: sql
properties:
tags:
items:
$ref: "#/components/schemas/Tag"
type: array
required:
- tags
type: object
Tag:
description: |-
# Tag Object
### Description
The `Tag` object is used to represent a tag.
### Usage Example
Get tags from the `GET Tag` endpoint.
example:
tag_id: f290a738-5f9f-43c2-ad67-fa31ff0eb946
created_at: 2022-01-23T04:56:07Z
updated_at: 2022-02-23T01:34:07Z
user_creator_id: d4a7d928-783e-4599-8ec6-088d635a5bcc
key: database-name
value: redis_db
properties:
tag_id:
description: The ID of the tag.
example: f290a738-5f9f-43c2-ad67-fa31ff0eb946
format: uuid
type: string
created_at:
description: The date the tag was created.
example: 2022-01-23T04:56:07Z
format: date-time
type: string
updated_at:
description: The date the tag was last updated.
example: 2022-02-23T01:34:07Z
format: date-time
type: string
user_creator_id:
description: The ID of the user that created the tag.
example: d4a7d928-783e-4599-8ec6-088d635a5bcc
format: uuid
type: string
key:
description: The key of the tag.
example: database-name
type: string
value:
description: The value of the tag.
example: redis_db
type: string
type: object
required:
- tag_id
CreateTagInfo:
description: |-
# CreateTagInfo Object
### Description
The `CreateTagInfo` object is used to represent configuration for a new tag.
### Usage Example
Use in the `POST Tag` endpoint.
example:
tag_key: api-scope
tag_value: production
properties:
tag_key:
description: The key of the tag to create.
example: api-scope
type: string
tag_value:
description: The value of the tag to create.
example: production
type: string
required:
- tag_key
type: object
PaginatedGroupBindingsList:
example:
next: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
previous: cj1sZXdwd2VycWtJ
results:
- group_binding_id: f454d283-ca87-4a8a-bdbb-df212eca5353
created_by_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
created_at: 2022-01-23T04:56:07Z
source_group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
groups:
- group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
group_type: OKTA_GROUP
- group_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
group_type: AWS_SSO_GROUP
- group_binding_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
created_by_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
source_group_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
created_at: 2022-01-23T04:56:07Z
groups:
- group_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
group_type: AWS_SSO_GROUP
- group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
group_type: OKTA_GROUP
properties:
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWtJ
nullable: true
type: string
results:
items:
$ref: "#/components/schemas/GroupBinding"
type: array
required:
- results
CreateGroupBindingInfo:
description: |-
# CreateGroupBindingInfo Object
### Description
The `CreateGroupBindingInfo` object is used as an input to the CreateGroupBinding API.
example:
source_group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
groups:
- group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
- group_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
properties:
source_group_id:
description: The ID of the source group.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
groups:
description: The list of groups.
items:
properties:
group_id:
description: The ID of the group.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
required:
- group_id
type: array
required:
- source_group_id
- groups
type: object
UpdateGroupBindingInfoList:
example:
group_bindings:
- group_binding_id: f454d283-ca87-4a8a-bdbb-df212eca5353
source_group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
groups:
- group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
- group_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
- group_binding_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
source_group_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
groups:
- group_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
- group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
properties:
group_bindings:
description: A list of group bindings with information to update.
items:
$ref: "#/components/schemas/UpdateGroupBindingInfo"
type: array
type: object
required:
- group_bindings
UpdateGroupBindingInfo:
description: |-
# UpdateGroupBindingInfo Object
### Description
The `UpdateGroupBindingInfo` object is used as an input to the UpdateGroupBinding API.
example:
group_binding_id: 0ae19dbf-324d-4216-999c-574d46182c7e
source_group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
groups:
- group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
- group_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
properties:
group_binding_id:
description: The ID of the group binding.
example: 0ae19dbf-324d-4216-999c-574d46182c7e
format: uuid
type: string
source_group_id:
description: The ID of the source group.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
groups:
description: The list of groups.
items:
properties:
group_id:
description: The ID of the group.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
required:
- group_id
type: array
required:
- group_binding_id
- source_group_id
- groups
type: object
GroupBinding:
description: |-
# Group Binding Object
### Description
The `GroupBinding` object is used to represent a group binding.
### Usage Example
Get group bindings from the `GET Group Bindings` endpoint.
example:
group_binding_id: f454d283-ca87-4a8a-bdbb-df212eca5353
created_by_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
created_at: 2022-01-23T04:56:07Z
source_group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
groups:
- group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
group_type: OKTA_GROUP
- group_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
group_type: AWS_SSO_GROUP
properties:
group_binding_id:
description: The ID of the group binding.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
created_by_id:
description: The ID of the user that created the group binding.
example: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
format: uuid
type: string
created_at:
description: The date the group binding was created.
example: 2022-01-23T04:56:07Z
format: date-time
type: string
source_group_id:
description: The ID of the source group.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
groups:
description: The list of groups.
items:
$ref: "#/components/schemas/GroupBindingGroup"
type: array
required:
- group_binding_id
- created_by_id
- created_at
- source_group_id
- groups
GroupBindingGroup:
description: |-
# Group Binding Group Object
### Description
The `GroupBindingGroup` object is used to represent a group binding group.
### Usage Example
Get group binding groups from the `GET Group Bindings` endpoint.
example:
group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
group_type: OKTA_GROUP
properties:
group_id:
description: The ID of the group.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
group_type:
$ref: "#/components/schemas/GroupTypeEnum"
required:
- group_id
- group_type
type: object
UpdateAccessRuleInfo:
description: |-
# UpdateAccessRuleInfo Object
### Description
The `UpdateAccessRuleInfo` object is used as an input to the UpdateAccessRule and CreateAccessRule API.
properties:
name:
description: The name of the access rule.
example: Platform Engineering
type: string
description:
description: A description of the group.
example: This access rule represents all platform engineers in the company.
type: string
admin_owner_id:
description: The ID of the owner of the group.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
status:
description: The status of the access rule.
type: string
enum:
- ACTIVE
- PAUSED
example: ACTIVE
ruleClauses:
$ref: "#/components/schemas/RuleClauses"
required:
- status
- ruleClauses
- name
- admin_owner_id
- description
PaginatedAccessRulesList:
properties:
next:
description: The cursor with which to continue pagination if additional result pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
type: string
previous:
description: The cursor used to retrieve the previous page of results.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
type: string
results:
items:
$ref: "#/components/schemas/AccessRule"
type: array
required:
- results
type: object
AccessRule:
description: |-
# Access Rule Object
### Description
The `AccessRule` object is used to represent an access rule configuration.
### Usage Example
List access rules from the `GET /access-rules` endpoint, or retrieve a single access rule from the `GET /access-rules/{access_rule_id}` endpoint.
properties:
access_rule_id:
description: The ID (group ID) of the access rule.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
name:
description: The name of the access rule.
example: Platform Engineering
type: string
description:
description: A description of the group.
example: This access rule represents all platform engineers in the company.
type: string
admin_owner_id:
description: The ID of the owner of the group.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
status:
description: The status of the access rule.
type: string
enum:
- ACTIVE
- PAUSED
example: ACTIVE
ruleClauses:
$ref: "#/components/schemas/RuleClauses"
required:
- status
- ruleClauses
- name
- admin_owner_id
- access_rule_id
- description
RuleClauses:
properties:
when:
$ref: "#/components/schemas/RuleConjunction"
unless:
$ref: "#/components/schemas/RuleConjunction"
required:
- when
RuleConjunction:
properties:
clauses:
type: array
minItems: 1
items:
$ref: "#/components/schemas/RuleDisjunction"
required:
- clauses
RuleDisjunction:
properties:
selectors:
type: array
items:
$ref: "#/components/schemas/TagSelector"
attribute_selectors:
type: array
items:
$ref: "#/components/schemas/UserAttributeSelector"
required:
- selectors
TagSelector:
properties:
key:
type: string
value:
type: string
connection_id:
type: string
format: uuid
required:
- key
- value
- connection_id
UserAttributeSelector:
properties:
attribute:
type: string
enum:
- HR_IDP_STATUS
values:
type: array
items:
type: string
required:
- attribute
- values
PaginatedOwnersList:
example:
next: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
previous: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
results:
- owner_id: f454d283-ca87-4a8a-bdbb-df212eca5353
name: API Owner
description: This owner represents the API team owners.
access_request_escalation_period: 120
- owner_id: e8581682-04f7-473a-a419-472f0fb26d46
name: Finance Owner
description: This owner represents the Finance team owners.
access_request_escalation_period: 120
properties:
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
nullable: true
type: string
results:
items:
$ref: "#/components/schemas/Owner"
type: array
type: object
required:
- results
Owner:
description: |-
# Owner Object
### Description
The `Owner` object is used to represent an owner.
example:
owner_id: f454d283-ca87-4a8a-bdbb-df212eca5353
name: API Owner
description: This owner represents the API team owners.
access_request_escalation_period: 120
properties:
owner_id:
description: The ID of the owner.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
name:
description: The name of the owner.
example: API Owner
type: string
description:
description: A description of the owner.
example: This owner represents the API team owners.
type: string
access_request_escalation_period:
description:
The amount of time (in minutes) before the next reviewer is
notified. Use 0 to remove escalation policy.
type: integer
example: 120
reviewer_message_channel_id:
example: 37cb7e41-12ba-46da-92ff-030abe0450b1
format: uuid
type: string
nullable: true
source_group_id:
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
nullable: true
required:
- owner_id
type: object
CreateOwnerInfo:
description: |-
# CreateOwnerInfo Object
### Description
The `CreateOwnerInfo` object is used to store creation info for an owner.
### Usage Example
Use in the `POST Owners` endpoint.
example:
name: API Owner
description: This owner represents the API team owners.
access_request_escalation_period: 120
properties:
name:
description: The name of the owner.
example: API Owner
type: string
description:
description: A description of the owner.
example: This owner represents the API team owners.
type: string
access_request_escalation_period:
description:
The amount of time (in minutes) before the next reviewer is
notified. Use 0 to remove escalation policy.
type: integer
example: 120
user_ids:
description:
Users to add to the created owner. If setting a source_group_id
this list must be empty.
example:
- 7870617d-e72a-47f5-a84c-693817ab4567
- 1520617d-e72a-47f5-a84c-693817ab48ad2
items:
type: string
format: uuid
type: array
reviewer_message_channel_id:
description: The message channel id for the reviewer channel.
example: 37cb7e41-12ba-46da-92ff-030abe0450b1
type: string
source_group_id:
description: Sync this owner's user list with a source group.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
required:
- name
- user_ids
type: object
UpdateOwnerInfoList:
example:
owners:
- owner_id: f454d283-ca87-4a8a-bdbb-df212eca5353
name: API Owner
description: This owner represents the API team owners.
access_request_escalation_period: 120
- owner_id: 99d0b81d-14be-4cf6-bd27-348b4af1d11b
name: Finance Owner
description: This owner represents the Finance team owners.
access_request_escalation_period: 15
properties:
owners:
description: A list of owners with information to update.
items:
$ref: "#/components/schemas/UpdateOwnerInfo"
type: array
type: object
required:
- owners
UpdateOwnerInfo:
description: |-
# UpdateOwnerInfo Object
### Description
The `UpdateOwnerInfo` object is used as an input to the UpdateOwner API.
example:
owner_id: f454d283-ca87-4a8a-bdbb-df212eca5353
name: API Owner
description: This owner represents the API team owners.
access_request_escalation_period: 120
properties:
owner_id:
description: The ID of the owner.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
name:
description: The name of the owner.
example: API Owner
type: string
description:
description: A description of the owner.
example: This owner represents the API team owners.
type: string
access_request_escalation_period:
description:
The amount of time (in minutes) before the next reviewer is
notified. Use 0 to remove escalation policy.
example: 120
type: integer
reviewer_message_channel_id:
description:
The message channel id for the reviewer channel. Use "" to remove
an existing message channel.
example: 37cb7e41-12ba-46da-92ff-030abe0450b1
type: string
source_group_id:
description:
Sync this owner's user list with a source group. Use "" to remove
an existing source group.
example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
format: uuid
type: string
required:
- owner_id
type: object
Condition:
description: |-
# Condition Object
### Description
The `Condition` object is used to represent a condition.
### Usage Example
Used to match request configurations to users in `RequestConfiguration`
example:
group_ids:
- 1b978423-db0a-4037-a4cf-f79c60cb67b3
type: object
properties:
group_ids:
description: The list of group IDs to match.
example:
- 1b978423-db0a-4037-a4cf-f79c60cb67b3
items:
type: string
format: uuid
type: array
role_remote_ids:
description: The list of role remote IDs to match.
example:
- arn:aws:iam::590304332660:role/AdministratorAccess
type: array
items:
type: string
RequestConfiguration:
description: |-
# Request Configuration Object
### Description
The `RequestConfiguration` object is used to represent a request configuration.
### Usage Example
Returned from the `GET Request Configurations` endpoint.
example:
request_configuration_id: 7c86c85d-0651-43e2-a748-d69d658418e8
organization_id: w86c85d-0651-43e2-a748-d69d658418e8
created_at: 2021-01-06T20:00:00Z
updated_at: 2021-01-06T20:00:00Z
condition:
group_id: 1b978423-db0a-4037-a4cf-f79c60cb67b3
allow_requests: True
auto_approval: False
require_mfa_to_request: False
max_duration_minutes: 120
recommended_duration_minutes: 120
require_support_ticket: False
reviewer_stages:
- reviewer_stage_id: 7c86c85d-0651-43e2-a748-d69d658418e8
owner_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
stage: 1
priority: 1
type: object
properties:
condition:
description: The condition for the request configuration.
$ref: "#/components/schemas/Condition"
allow_requests:
description:
A bool representing whether or not to allow requests for this
resource.
example: True
type: boolean
auto_approval:
description:
A bool representing whether or not to automatically approve
requests for this resource.
example: False
type: boolean
require_mfa_to_request:
description:
A bool representing whether or not to require MFA for requesting
access to this resource.
example: False
type: boolean
max_duration_minutes:
description:
The maximum duration for which the resource can be requested (in
minutes).
type: integer
example: 120
recommended_duration_minutes:
description:
The recommended duration for which the resource should be requested
(in minutes). -1 represents an indefinite duration.
type: integer
example: 120
require_support_ticket:
description:
A bool representing whether or not access requests to the resource
require an access ticket.
example: False
type: boolean
extensions_duration_in_minutes:
description:
The duration for which access can be extended (in minutes). Set to
0 to disable extensions. When > 0, extensions are enabled for the
specified duration.
type: integer
example: 120
request_template_id:
description: The ID of the associated request template.
example: 06851574-e50d-40ca-8c78-f72ae6ab4304
format: uuid
type: string
reviewer_stages:
description: The list of reviewer stages for the request configuration.
items:
$ref: "#/components/schemas/ReviewerStage"
type: array
priority:
description: The priority of the request configuration.
example: 1
type: integer
required:
- organization_id
- allow_requests
- auto_approval
- require_mfa_to_request
- require_support_ticket
- priority
CreateRequestConfigurationInfoList:
description: |-
# CreateRequestConfigurationInfoList Object
### Description
The `CreateRequestConfigurationInfoList` object is used as an input to the CreateRequestConfigurations API.
### Formatting Requirements
The `CreateRequestConfigurationInfoList` object must contain a list of `RequestConfiguration` objects.
Exactly one default `RequestConfiguration` must be provided. A default `RequestConfiguration` is one with a `condition` of `null`
and a `priority` of `0`. The default `RequestConfiguration` will be used when no other `RequestConfiguration` matches the request.
Only one `RequestConfiguration` may be provided for each priority, and the priorities must be contiguous. For example, if there are
two `RequestConfigurations` with priorities 0 and 2, there must be a `RequestConfiguration` with priority 1.
To use the `condition` field, the `condition` must be a valid JSON object.
The `condition` must be a JSON object with the key `group_ids` (more options may be added in the future), whose value is a list of
group IDs.
The `condition` will match if the user requesting access is a member of any of the groups in the list. Currently, we only support
using a single group as a condition.
example:
request_configurations:
- request_configuration_id: 7c86c85d-0651-43e2-a748-d69d658418e8
organization_id: w86c85d-0651-43e2-a748-d69d658418e8
condition: null
allow_requests: True
auto_approval: False
require_mfa_to_request: False
max_duration_minutes: 120
recommended_duration_minutes: 120
require_support_ticket: False
reviewer_stages:
- reviewer_stage_id: 7c86c85d-0651-43e2-a748-d69d658418e8
owner_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
stage: 1
priority: 0
- request_configuration_id: 7c86c85d-0651-43e2-a748-d69d658418e9
organization_id: w86c85d-0651-43e2-a748-d69d658418e8
condition:
group_id: 1b978423-db0a-4037-a4cf-f79c60cb67b4
allow_requests: True
auto_approval: False
require_mfa_to_request: False
max_duration_minutes: 120
recommended_duration_minutes: 120
require_support_ticket: False
reviewer_stages:
- reviewer_stage_id: 7c86c85d-0651-43e2-a748-d69d658418e8
owner_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
stage: 1
priority: 1
properties:
request_configurations:
description: A list of request configurations to create.
items:
$ref: "#/components/schemas/RequestConfiguration"
type: array
type: object
required:
- request_configurations
CreateConfigurationTemplateInfo:
description: |-
# CreateConfigurationTemplateInfo Object
### Description
The `CreateConfigurationTemplateInfo` object is used to store creation info for a configuration template.
### Usage Example
Use in the `POST Configuration Templates` endpoint.
example:
admin_owner_id: 7c86c85d-0651-43e2-a748-d69d658418e8
visibility: private
linked_audit_message_channel_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
request_configuration_id: 7c86c85d-0651-43e2-a748-d69d658418e8
member_oncall_schedule_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
break_glass_user_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
require_mfa_to_approve: False
require_mfa_to_connect: False
name: Prod AWS Template
required:
- admin_owner_id
- visibility
- name
- require_mfa_to_approve
- require_mfa_to_connect
properties:
admin_owner_id:
description: The ID of the owner of the configuration template.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
visibility:
description: The visibility info of the configuration template.
example: private
$ref: "#/components/schemas/VisibilityInfo"
linked_audit_message_channel_ids:
description:
The IDs of the audit message channels linked to the configuration
template.
example:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
items:
type: string
format: uuid
type: array
member_oncall_schedule_ids:
description:
The IDs of the on-call schedules linked to the configuration
template.
example:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
items:
type: string
format: uuid
type: array
break_glass_user_ids:
description:
The IDs of the break glass users linked to the configuration
template.
example:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
items:
type: string
format: uuid
type: array
require_mfa_to_approve:
description:
A bool representing whether or not to require MFA for reviewers to
approve requests for this configuration template.
example: False
type: boolean
require_mfa_to_connect:
description:
A bool representing whether or not to require MFA to connect to
resources associated with this configuration template.
example: False
type: boolean
name:
description: The name of the configuration template.
example: Prod AWS Template
type: string
request_configurations:
type: array
items:
$ref: "#/components/schemas/RequestConfiguration"
description:
The request configuration list of the configuration template. If
not provided, the default request configuration will be used.
request_configuration_list:
description:
The request configuration list of the configuration template. If
not provided, the default request configuration will be used.
Deprecated in favor of `request_configurations`.
$ref: "#/components/schemas/CreateRequestConfigurationInfoList"
deprecated: true
example:
request_configurations:
- request_configuration_id: 7c86c85d-0651-43e2-a748-d69d658418e8
organization_id: w86c85d-0651-43e2-a748-d69d658418e8
condition: null
allow_requests: True
auto_approval: False
require_mfa_to_request: False
max_duration_minutes: 120
recommended_duration_minutes: 120
require_support_ticket: False
reviewer_stages:
- reviewer_stage_id: 7c86c85d-0651-43e2-a748-d69d658418e8
owner_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
stage: 1
priority: 0
- request_configuration_id: 7c86c85d-0651-43e2-a748-d69d658418e9
organization_id: w86c85d-0651-43e2-a748-d69d658418e8
condition:
group_id: 1b978423-db0a-4037-a4cf-f79c60cb67b4
allow_requests: True
auto_approval: False
require_mfa_to_request: False
max_duration_minutes: 120
recommended_duration_minutes: 120
require_support_ticket: False
reviewer_stages:
- reviewer_stage_id: 7c86c85d-0651-43e2-a748-d69d658418e8
owner_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
stage: 1
priority: 1
ticket_propagation:
$ref: "#/components/schemas/TicketPropagationConfiguration"
custom_request_notification:
description:
Custom request notification sent upon request approval for this
configuration template.
type: string
maxLength: 800
nullable: true
example: "Check your email to register your account."
ConfigurationTemplate:
description: |-
# Configuration Template Object
### Description
The `ConfigurationTemplate` object is used to represent a configuration template.
### Usage Example
Returned from the `GET Configuration Templates` endpoint.
example:
configuration_template_id: 7c86c85d-0651-43e2-a748-d69d658418e8
admin_owner_id: 7c86c85d-0651-43e2-a748-d69d658418e8
visibility: private
linked_audit_message_channel_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
request_configuration_id: 7c86c85d-0651-43e2-a748-d69d658418e8
member_oncall_schedule_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
break_glass_user_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
require_mfa_to_approve: False
require_mfa_to_connect: False
name: Prod AWS Template
properties:
configuration_template_id:
description: The ID of the configuration template.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
name:
description: The name of the configuration template.
example: Prod AWS Template
type: string
admin_owner_id:
description: The ID of the owner of the configuration template.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
visibility:
description: The visibility info of the configuration template.
example: private
$ref: "#/components/schemas/VisibilityInfo"
linked_audit_message_channel_ids:
description:
The IDs of the audit message channels linked to the configuration
template.
example:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
items:
type: string
format: uuid
type: array
request_configuration_id:
description:
The ID of the request configuration linked to the configuration
template.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
member_oncall_schedule_ids:
description:
The IDs of the on-call schedules linked to the configuration
template.
example:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 7c86c85d-0651-43e2-a748-d69d658418e8
items:
type: string
format: uuid
type: array
break_glass_user_ids:
description:
The IDs of the break glass users linked to the configuration
template.
example:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
items:
type: string
format: uuid
type: array
require_mfa_to_approve:
description:
A bool representing whether or not to require MFA for reviewers to
approve requests for this configuration template.
example: False
type: boolean
require_mfa_to_connect:
description:
A bool representing whether or not to require MFA to connect to
resources associated with this configuration template.
example: False
type: boolean
ticket_propagation:
$ref: "#/components/schemas/TicketPropagationConfiguration"
custom_request_notification:
description:
Custom request notification sent upon request approval for this
configuration template.
type: string
maxLength: 800
nullable: true
example: "Check your email to register your account."
TicketPropagationConfiguration:
description:
Configuration for ticket propagation, when enabled, a ticket will
be created for access changes related to the users in this resource.
type: object
properties:
enabled_on_grant:
type: boolean
enabled_on_revocation:
type: boolean
ticket_provider:
$ref: "#/components/schemas/TicketingProviderEnum"
ticket_project_id:
type: string
required:
- enabled_on_grant
- enabled_on_revocation
UpdateConfigurationTemplateInfo:
description: |-
# UpdateConfigurationTemplateInfo Object
### Description
The `ConfigurationTemplate` object is used to represent an update to a configuration template.
### Usage Example
Use in the `PUT Configuration Templates` endpoint.
example:
configuration_template_id: 7c86c85d-0651-43e2-a748-d69d658418e8
admin_owner_id: 7c86c85d-0651-43e2-a748-d69d658418e8
visibility: private
linked_audit_message_channel_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
request_configuration_id: 7c86c85d-0651-43e2-a748-d69d658418e8
member_oncall_schedule_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
break_glass_user_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
require_mfa_to_approve: False
require_mfa_to_connect: False
name: Prod AWS Template
required:
- configuration_template_id
properties:
configuration_template_id:
description: The ID of the configuration template.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
name:
description: The name of the configuration template.
example: Prod AWS Template
type: string
admin_owner_id:
description: The ID of the owner of the configuration template.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
visibility:
description: The visibility info of the configuration template.
example: private
$ref: "#/components/schemas/VisibilityInfo"
linked_audit_message_channel_ids:
description:
The IDs of the audit message channels linked to the configuration
template.
example:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
items:
type: string
format: uuid
type: array
request_configurations:
type: array
items:
$ref: "#/components/schemas/RequestConfiguration"
description: The request configuration list linked to the configuration template.
request_configuration_list:
description:
The request configuration list linked to the configuration
template. Deprecated in favor of `request_configurations`.
$ref: "#/components/schemas/CreateRequestConfigurationInfoList"
deprecated: true
example:
request_configurations:
- request_configuration_id: 7c86c85d-0651-43e2-a748-d69d658418e8
organization_id: w86c85d-0651-43e2-a748-d69d658418e8
condition: null
allow_requests: True
auto_approval: False
require_mfa_to_request: False
max_duration_minutes: 120
recommended_duration_minutes: 120
require_support_ticket: False
reviewer_stages:
- reviewer_stage_id: 7c86c85d-0651-43e2-a748-d69d658418e8
owner_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
stage: 1
priority: 0
- request_configuration_id: 7c86c85d-0651-43e2-a748-d69d658418e9
organization_id: w86c85d-0651-43e2-a748-d69d658418e8
condition:
group_id: 1b978423-db0a-4037-a4cf-f79c60cb67b4
allow_requests: True
auto_approval: False
require_mfa_to_request: False
max_duration_minutes: 120
recommended_duration_minutes: 120
require_support_ticket: False
reviewer_stages:
- reviewer_stage_id: 7c86c85d-0651-43e2-a748-d69d658418e8
owner_ids:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
stage: 1
priority: 1
member_oncall_schedule_ids:
description:
The IDs of the on-call schedules linked to the configuration
template.
example:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 7c86c85d-0651-43e2-a748-d69d658418e8
items:
type: string
format: uuid
type: array
break_glass_user_ids:
description:
The IDs of the break glass users linked to the configuration
template.
example:
- 37cb7e41-12ba-46da-92ff-030abe0450b1
- 37cb7e41-12ba-46da-92ff-030abe0450b2
items:
type: string
format: uuid
type: array
require_mfa_to_approve:
description:
A bool representing whether or not to require MFA for reviewers to
approve requests for this configuration template.
example: False
type: boolean
require_mfa_to_connect:
description:
A bool representing whether or not to require MFA to connect to
resources associated with this configuration template.
example: False
type: boolean
ticket_propagation:
$ref: "#/components/schemas/TicketPropagationConfiguration"
custom_request_notification:
description:
Custom request notification sent upon request approval for this
configuration template.
type: string
maxLength: 800
nullable: true
example: "Check your email to register your account."
PaginatedConfigurationTemplateList:
description: |-
# PaginatedConfigurationTemplateList Object
### Description
The `PaginatedConfigurationTemplateList` object is used to store a list of configuration templates.
### Usage Example
Returned from the `GET Configuration Templates` endpoint.
example:
results:
- configuration_template_id: 7c86c85d-0651-43e2-a748-d69d658418e8
admin_owner_id: a4d7d928-783e-4599-8ec6-088d635af4ac
visibility: private
linked_audit_message_channel_ids:
- l3cb7e41-12ba-46da-92ff-030abe0450b1
- f3cb7e41-12ba-46da-92ff-030abe0450b2
request_configuration_id: r3cb7e41-12ba-46da-92ff-030abe0450b1
member_oncall_schedule_ids:
- 23cb7e41-12ba-46da-92ff-030abe0450b1
- m3cb7e41-12ba-46da-92ff-030abe0450b2
break_glass_user_ids:
- 63cb7e41-12ba-46da-92ff-030abe0450b1
- b3cb7e41-12ba-46da-92ff-030abe0450b2
require_mfa_to_approve: False
require_mfa_to_connect: False
properties:
results:
items:
$ref: "#/components/schemas/ConfigurationTemplate"
type: array
CreateRequestInfo:
description: All the information needed for creating a request
properties:
resources:
type: array
items:
type: object
properties:
id:
description:
The ID of the resource requested. Should not be specified if
group_id is specified.
example: group283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
access_level_remote_id:
description: The ID of the access level requested on the remote system.
example: arn:aws:iam::490306337630:role/SupportUser
type: string
access_level_name:
description:
The ID of the access level requested on the remote system. This
field is deprecated and no longer required. We will populate
based on the access_level_remote_id.
example: arn:aws:iam::490306337630:role/SupportUser
type: string
deprecated: true
groups:
type: array
items:
type: object
properties:
id:
description:
The ID of the group requested. Should not be specified if
resource_id is specified.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
access_level_remote_id:
description: The ID of the access level requested on the remote system.
example: arn:aws:iam::490306337630:role/SupportUser
type: string
access_level_name:
description: The ID of the access level requested on the remote system.
example: arn:aws:iam::490306337630:role/SupportUser
type: string
required:
- id
target_user_id:
description:
The ID of the user to be granted access. Should not be specified if
target_group_id is specified.
example: userd283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
target_group_id:
description:
The ID of the group the request is for. Should not be specified if
target_user_id is specified.
example: userd283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
reason:
type: string
support_ticket:
type: object
properties:
ticketing_provider:
$ref: "#/components/schemas/TicketingProviderEnum"
remote_id:
type: string
identifier:
type: string
url:
type: string
required:
- ticketing_provider
- remote_id
- identifier
- url
duration_minutes:
description:
The duration of the request in minutes. -1 represents an indefinite
duration
type: integer
minimum: -1
custom_metadata:
type: array
items:
type: object
properties:
name:
type: string
type:
$ref: "#/components/schemas/RequestTemplateCustomFieldTypeEnum"
value:
type: string
required:
- name
- type
- value
required:
- reason
- duration_minutes
- resources
- groups
SyncErrorList:
example:
sync_errors:
- app_id: b5a5ca27-0ea3-4d86-9199-2126d57d1fbd
first_seen: 2022-07-14T06:59:59Z
last_seen: 2022-08-23T04:32:46Z
error_message: Failed to connect to the remote system - insufficient credentials.
- app_id: b5a5ca27-0ea3-4d86-9199-2126d57d1fbd
first_seen: 2023-04-24T06:59:59Z
last_seen: 2024-08-21T04:32:46Z
error_message: Resource not found.
properties:
sync_errors:
items:
$ref: "#/components/schemas/SyncError"
type: array
type: object
required:
- sync_errors
SyncError:
description: |-
# SyncError Object
### Description
The `SyncError` object is used to represent a sync error.
### Usage Example
List from the `GET Sync Errors` endpoint.
example:
app_id: b5a5ca27-0ea3-4d86-9199-2126d57d1fbd
first_seen: 2022-07-14T06:59:59Z
last_seen: 2022-08-23T04:32:46Z
error_message: Failed to connect to the remote system - insufficient credentials.
properties:
first_seen:
description: The time when this error was first seen.
example: 2022-07-14T06:59:59Z
type: string
format: date-time
last_seen:
description: The time when this error was most recently seen.
example: 2022-07-14T06:59:59Z
type: string
format: date-time
error_message:
description: The error message associated with the sync error.
example: Failed to connect to the remote system - insufficient credentials.
type: string
app_id:
description: The ID of the app that the error occured for.
example: b5a5ca27-0ea3-4d86-9199-2126d57d1fbd
format: uuid
type: string
required:
- first_seen
- last_seen
- error_message
type: object
Bundle:
properties:
bundle_id:
description: The ID of the bundle.
example: a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1
format: uuid
type: string
readOnly: true
name:
description: The name of the bundle.
example: Bundle 1
type: string
description:
description: The description of the bundle.
example: Description of bundle 1
type: string
created_at:
type: string
format: date-time
description: The creation timestamp of the bundle, in ISO 8601 format
readOnly: true
updated_at:
type: string
format: date-time
description: The last updated timestamp of the bundle, in ISO 8601 format
readOnly: true
admin_owner_id:
description: The ID of the owner of the bundle.
example: 4aed3e8a-727b-4d72-8010-3b8710c50bec
format: uuid
type: string
total_num_items:
description: The total number of items in the bundle.
example: 15
type: integer
readOnly: true
total_num_resources:
description: The total number of resources in the bundle.
example: 10
type: integer
readOnly: true
total_num_groups:
description: The total number of groups in the bundle.
example: 5
type: integer
readOnly: true
PaginatedBundleList:
example:
next: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
previous: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
totalCount: 2
bundles:
- id: a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1
name: Bundle 1
description: Description of bundle 1
admin_owner_id: 4aed3e8a-727b-4d72-8010-3b8710c50bec
total_num_items: 0
total_num_resources: 0
total_num_groups: 0
- id: 8294e9c9-deb6-48e9-9c99-da2a1e04a87f
name: Bundle 2
description: Description of bundle 2
admin_owner_id: 4aed3e8a-727b-4d72-8010-3b8710c50bec
total_num_items: 0
total_num_resources: 0
total_num_groups: 0
properties:
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
nullable: true
type: string
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
total_count:
description: The total number of items in the result set.
example: 2
type: integer
bundles:
items:
$ref: "#/components/schemas/Bundle"
type: array
type: object
required:
- bundles
BundleResource:
properties:
bundle_id:
description: The ID of the bundle containing the resource.
example: a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1
format: uuid
type: string
readOnly: true
resource_id:
description: The ID of the resource within a bundle.
example: a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1
format: uuid
type: string
readOnly: true
access_level_name:
description: The access level of the resource within a bundle.
example: Read
type: string
access_level_remote_id:
description: The remote ID of the access level of the resource within a bundle.
example: arn:aws:iam::490306337630:role/SupportUser
type: string
PaginatedBundleResourceList:
example:
next: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
previous: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
total_count: 3
bundle_resources:
- id: a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1
name: Resource 1
access_level_name: read
access_level_remote_id: pull
properties:
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
nullable: true
type: string
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
total_count:
description: The total number of items in the result set.
example: 2
type: integer
bundle_resources:
items:
$ref: "#/components/schemas/BundleResource"
type: array
type: object
required:
- bundle_resources
BundleGroup:
properties:
bundle_id:
description: The ID of the bundle containing the group.
example: a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1
format: uuid
type: string
readOnly: true
group_id:
description: The ID of the group within a bundle.
example: a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1
format: uuid
type: string
readOnly: true
access_level_name:
description: The access level of the group within a bundle.
example: Read
type: string
access_level_remote_id:
description: The remote ID of the access level of the group within a bundle.
example: arn:aws:iam::490306337630:role/SupportUser
type: string
PaginatedBundleGroupList:
example:
next: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
previous: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
total_count: 2
bundle_groups:
- id: a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1
name: Group 1
- id: 8294e9c9-deb6-48e9-9c99-da2a1e04a87f
name: Group 2
properties:
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
nullable: true
type: string
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
total_count:
description: The total number of items in the result set.
example: 2
type: integer
bundle_groups:
items:
$ref: "#/components/schemas/BundleGroup"
type: array
type: object
required:
- bundle_groups
ScopedRolePermissionList:
example:
permissions:
- target_ids:
- a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1
- 8294e9c9-deb6-48e9-9c99-da2a1e04a87f
target_type: RESOURCE
permission_name: READ
properties:
permissions:
type: array
items:
$ref: "#/components/schemas/ScopedRolePermission"
type: object
required:
- permissions
ScopedRolePermission:
type: object
properties:
target_ids:
description:
The IDs of the entities that this permission applies to. If empty
of missing, the permission will have untargeted scope.
example:
- a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1
- 8294e9c9-deb6-48e9-9c99-da2a1e04a87f
items:
type: string
format: uuid
type: array
target_type:
$ref: "#/components/schemas/RolePermissionTargetTypeEnum"
permission_name:
$ref: "#/components/schemas/RolePermissionNameEnum"
allow_all:
type: boolean
required:
- target_type
- permission_name
- allow_all
SyncTask:
type: object
description:
Represents a sync task that has been completed, either successfully
or with errors.
properties:
id:
description: The ID of the sync task.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
completed_at:
description: The time when the sync task was completed.
example: 2023-10-01T12:00:00Z
type: string
format: date-time
required:
- id
- completed_at
example:
id: 7c86c85d-0651-43e2-a748-d69d658418e8
completed_at: 2023-10-01T12:00:00Z
RequestApprovalEnum:
type: string
enum: [REGULAR, ADMIN]
description: "The decision level for the approval"
example: "REGULAR"
Delegation:
type: object
description: |-
# Delegation Object
### Description
The `Delegation` object represents a delegation of access review requests from one user to another.
### Usage Example
List from the `GET Delegations` endpoint.
Get from the `GET Delegation` endpoint.
properties:
id:
description: The ID of the delegation.
example: 4aed3e8a-727b-4d72-8010-3b8710c50bec
format: uuid
type: string
delegator_user_id:
description: The ID of the user delegating their access review requests.
example: 123e4567-e89b-12d3-a456-426614174000
format: uuid
type: string
delegate_user_id:
description: The ID of the user being delegated to.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
start_time:
description: The start time of the delegation.
example: 2023-10-01T12:00:00Z
type: string
format: date-time
end_time:
description: The end time of the delegation.
example: 2023-10-01T12:00:00Z
type: string
format: date-time
reason:
description: The reason for the delegation.
example: "I need to be out of the office"
type: string
created_at:
description: The creation time of the delegation.
example: 2023-10-01T12:00:00Z
type: string
format: date-time
updated_at:
description: The last updated time of the delegation.
example: 2023-10-01T12:00:00Z
type: string
format: date-time
required:
- id
- delegator_user_id
- delegate_user_id
- start_time
- end_time
- reason
- created_at
- updated_at
PaginatedDelegationsList:
type: object
description: A list of delegations for your organization.
properties:
results:
description: The delegations in the result set.
type: array
items:
$ref: "#/components/schemas/Delegation"
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
nullable: true
type: string
total_count:
description: The total number of items in the result set.
example: 2
type: integer
CreateDelegationRequest:
type: object
description: Request body for creating a new delegation of access review
requests from one user to another.
properties:
delegator_user_id:
description: The ID of the user delegating their access review requests.
example: 123e4567-e89b-12d3-a456-426614174000
format: uuid
type: string
delegate_user_id:
description: The ID of the user being delegated to.
example: 7c86c85d-0651-43e2-a748-d69d658418e8
format: uuid
type: string
start_time:
description: The start time of the delegation.
example: 2023-10-01T12:00:00Z
type: string
format: date-time
end_time:
description: The end time of the delegation.
example: 2023-10-01T12:00:00Z
type: string
format: date-time
reason:
description: The reason for the delegation.
example: "I need to be out of the office"
type: string
required:
- delegator_user_id
- delegate_user_id
- start_time
- end_time
- reason
ApiAccessLevelEnum:
description: The access level of an API token.
enum:
- READ_ONLY
- FULL_ACCESS
type: string
EventStreamConnectionTypeEnum:
description: The type of event stream connection.
enum:
- WEBHOOK
type: string
WebhookAuthTypeEnum:
description: The authentication type for webhook connections.
enum:
- NONE
- API_KEY
- HMAC
type: string
WebhookApiKeyLocationEnum:
description: Where the API key is placed in webhook requests.
enum:
- HEADER
- QUERY_PARAM
type: string
WebhookApiKeyCredential:
description: An API key credential for webhook authentication.
properties:
id:
description: The unique identifier for the credential.
format: uuid
type: string
name:
description: The name of the API key.
type: string
value:
description: The value of the API key.
type: string
location:
$ref: "#/components/schemas/WebhookApiKeyLocationEnum"
required:
- id
- name
- value
- location
type: object
WebhookHmacCredential:
description: An HMAC credential for webhook authentication.
properties:
id:
description: The unique identifier for the credential.
format: uuid
type: string
secret:
description: The HMAC secret value.
type: string
created_at:
description: When the credential was created.
format: date-time
type: string
required:
- id
- secret
- created_at
type: object
WebhookCredentials:
description: Authentication credentials for a webhook connection.
properties:
auth_type:
$ref: "#/components/schemas/WebhookAuthTypeEnum"
api_key_credentials:
description: API key credentials, present when auth_type is API_KEY.
items:
$ref: "#/components/schemas/WebhookApiKeyCredential"
type: array
hmac_credential_1:
description: Primary HMAC credential, present when auth_type is HMAC.
nullable: true
$ref: "#/components/schemas/WebhookHmacCredential"
hmac_credential_2:
description: Secondary HMAC credential for rotation, present when auth_type is HMAC.
nullable: true
$ref: "#/components/schemas/WebhookHmacCredential"
required:
- auth_type
type: object
EventStreamConnection:
description: The connection configuration for an event stream.
properties:
name:
description: The name of the connection.
type: string
connection_type:
$ref: "#/components/schemas/EventStreamConnectionTypeEnum"
enabled:
description: Whether the connection is enabled.
type: boolean
webhook_url:
description: The webhook URL, present when connection_type is WEBHOOK.
type: string
credentials:
$ref: "#/components/schemas/WebhookCredentials"
required:
- name
- connection_type
- enabled
type: object
EventStream:
description: An event streaming connection that publishes events to an external system.
properties:
event_stream_id:
description: The ID of the event stream.
format: uuid
type: string
connection:
$ref: "#/components/schemas/EventStreamConnection"
required:
- event_stream_id
- connection
type: object
EventStreamList:
description: A list of event streams.
properties:
event_streams:
items:
$ref: "#/components/schemas/EventStream"
type: array
required:
- event_streams
type: object
CreateEventStreamInfo:
description: Information needed to create an event stream.
properties:
name:
description: The name for the event stream.
type: string
connection_type:
$ref: "#/components/schemas/EventStreamConnectionTypeEnum"
webhook_url:
description: The webhook URL. Required when connection_type is WEBHOOK.
type: string
credentials:
$ref: "#/components/schemas/WebhookCredentials"
required:
- name
- connection_type
type: object
UpdateEventStreamInfo:
description: Information needed to update an event stream.
properties:
name:
description: Updated name for the event stream.
type: string
enabled:
description: Whether the event stream should be enabled.
type: boolean
webhook_url:
description: Updated webhook URL.
type: string
credentials:
$ref: "#/components/schemas/WebhookCredentials"
type: object
Token:
description: A first-party API token.
example:
token_id: f454d283-ca87-4a8a-bdbb-df212eca5353
created_at: 2022-01-23T04:56:07Z
token_preview: ab123
token_label: My API Token
creator_user_id: d4a7d928-783e-4599-8ec6-088d635a5bcc
user_id: d4a7d928-783e-4599-8ec6-088d635a5bcc
access_level: READ_ONLY
properties:
token_id:
description: The ID of the API token.
example: f454d283-ca87-4a8a-bdbb-df212eca5353
format: uuid
type: string
created_at:
description: The date and time the token was created.
example: 2022-01-23T04:56:07Z
format: date-time
type: string
token_label:
description: A human-readable label for the token.
example: My API Token
type: string
creator_user_id:
description: The ID of the user who created the token.
example: d4a7d928-783e-4599-8ec6-088d635a5bcc
format: uuid
type: string
user_id:
description: The ID of the user the token authenticates as.
example: d4a7d928-783e-4599-8ec6-088d635a5bcc
format: uuid
type: string
last_used_at:
description: The date and time the token was last used.
example: 2022-01-23T04:56:07Z
format: date-time
nullable: true
type: string
access_level:
$ref: "#/components/schemas/ApiAccessLevelEnum"
expires_at:
description: The date and time the token expires.
example: 2023-01-23T04:56:07Z
format: date-time
nullable: true
type: string
required:
- token_id
- created_at
- token_label
- creator_user_id
- user_id
- access_level
type: object
PaginatedTokensList:
example:
next: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
previous: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
results:
- token_id: f454d283-ca87-4a8a-bdbb-df212eca5353
created_at: 2022-01-23T04:56:07Z
token_label: My API Token
creator_user_id: d4a7d928-783e-4599-8ec6-088d635a5bcc
user_id: d4a7d928-783e-4599-8ec6-088d635a5bcc
access_level: READ_ONLY
properties:
next:
description:
The cursor with which to continue pagination if additional result
pages exist.
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
nullable: true
type: string
previous:
description: The cursor used to obtain the current result page.
example: cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ
nullable: true
type: string
results:
items:
$ref: "#/components/schemas/Token"
type: array
required:
- results
type: object
StopCampaignRequest:
properties:
revoke_unreviewed:
default: false
description: Revoke all unreviewed access grants. Access grants with no reviewer decision will be immediately revoked.
type: boolean
type: object
securitySchemes:
BearerAuth:
scheme: bearer
type: http