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

# Get

> Returns an account role by its global id. Requires the `https://devx.{environment}.oleria.io/read` scope.



## OpenAPI

````yaml /developer-docs/api-reference/oleria-public-api-1.0.0.yaml get /v1/account-roles/{id}
openapi: 3.0.3
info:
  title: Oleria Public API
  version: 1.0.0
  description: >-
    REST API for Oleria's identity and access data. Each resource is a
    collection exposing list and get operations; responses return the complete
    object. Where Oleria can change what it reports, the change is a method on
    the same resource: disabling an account is `POST /v1/accounts/{id}/disable`,
    and membership is a sub-resource asserted with `PUT` and removed with
    `DELETE`. Those changes are applied in the source application
    asynchronously: each returns a job under `/v1/action-jobs` that reports the
    outcome for every target it affected, and whether Oleria's own data reflects
    it yet. Authenticate with OAuth 2.0 client credentials and send the access
    token as `Authorization: Bearer <token>`.
servers:
  - url: https://devx.{environment}.oleria.io
    description: Oleria API server.
    variables:
      environment:
        default: prod
        description: >-
          Your Oleria deployment, for example `acme` for
          `https://devx.acme.oleria.io`. Substitute it in the OAuth scope names
          as well, since OpenAPI applies a server variable to the URL only and
          the scopes are published with the placeholder still in them.
security: []
paths:
  /v1/account-roles/{id}:
    get:
      tags:
        - Account roles
      summary: Get
      description: >-
        Returns an account role by its global id. Requires the
        `https://devx.{environment}.oleria.io/read` scope.
      operationId: GetAccountRole
      parameters:
        - name: id
          in: path
          description: Global id of the account role.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The account role.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Oleria_AccountRole'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - oauth2:
            - https://devx.{environment}.oleria.io/read
components:
  schemas:
    Oleria_AccountRole:
      type: object
      description: >
        An Oleria AccountRole object represents a native or modeled underlying
        role for an identity provider or application that ultimately implies a
        set of entitlements. Note this is a different representation than Oleria
        Role which represents security roles used in role-based access control
        (RBAC) systems
      allOf:
        - $ref: '#/components/schemas/AccountRole'
        - $ref: '#/components/schemas/Oleria_AccountRoleGlobalIdentifiers'
        - $ref: '#/components/schemas/Oleria_AccountRoleEnrichedInformation'
        - $ref: '#/components/schemas/Oleria_AccountRoleAnalyticsInformation'
        - $ref: '#/components/schemas/Oleria_AccountRoleSystemOfRecordInformation'
        - required:
            - oleriaObjectMetadata
          type: object
          properties:
            oleriaObjectMetadata:
              $ref: '#/components/schemas/Oleria_ObjectMetadata'
    AccountRole:
      required:
        - id
        - name
        - objectMetadata
      type: object
      properties:
        displayName:
          type: string
          description: |
            Display name for the account role
        id:
          $ref: '#/components/schemas/LocallyUniqueId'
        impliedEntitlements:
          type: array
          description: >
            This describes the entitlements that are given to an
            [Account](#/components/schemas/Account) when it is assigned that
            role
          items:
            $ref: '#/components/schemas/EntitlementSpecification'
        membership:
          type: array
          description: >
            If an _AccountRole_ is a member of other _AccountRoles_ then the
            membership is listed via AccountRole.id values
          items:
            $ref: '#/components/schemas/LocallyUniqueId'
        name:
          type: string
          description: >
            The unique name of the native or modeled underlying role that is
            referenced by [Account](#/components/schemas/Account) objects via
            _accountRole_,
            [SSOAccountAssignmentSpecification](#/components/schemas/SSOAccountAssignmentSpecification)
            via _accountRoles_, and
            [SSOUserGroupAssignmentSpecification](#/components/schemas/SSOUserGroupAssignmentSpecification)
            via _accountRolesForGroup_
        objectDirectoryContainerFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        objectDirectoryContainerId:
          $ref: '#/components/schemas/LocallyUniqueObjectDirectoryId'
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
      description: >
        An AccountRole object represents a native or modeled underlying role for
        an identity provider or application that ultimately implies a set of
        entitlements
    Oleria_AccountRoleGlobalIdentifiers:
      required:
        - globalId
      type: object
      properties:
        globalId:
          type: string
        globalImpliedEntitlements:
          type: array
          items:
            $ref: '#/components/schemas/EntitlementSpecification'
        globalMembership:
          type: array
          items:
            type: string
        globalObjectDirectoryContainerId:
          type: string
      description: >
        Global identifiers translated from AccountRole local identifiers to be
        composed on Oleria AccountRole
    Oleria_AccountRoleEnrichedInformation:
      type: object
      description: >
        Enriched information derived from a combination of AccountRole data,
        additional identity signals
    Oleria_AccountRoleAnalyticsInformation:
      type: object
      description: >
        Analytics information calculated from identity security graph and added
        to the account role
    Oleria_AccountRoleSystemOfRecordInformation:
      type: object
      properties:
        sorPrimaryStewardEmail:
          type: string
      description: >
        System of Record information associated with an account role and managed
        in Oleria
    Oleria_ObjectMetadata:
      type: object
      properties:
        enrichmentVersion:
          type: string
        generatedTime:
          type: string
          format: date-time
      description: >
        object metadata supersets object metadata with platform enrichment
        provenance — the enrichment version and the time the record was
        generated
    ErrorResponse:
      type: object
      description: >-
        Error envelope. `code` is a stable machine-readable identifier;
        `message` is human-readable.
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: Stable, machine-readable error code (SCREAMING_SNAKE_CASE).
          example: NOT_FOUND
        details:
          type: object
          description: Optional free-form context for debugging.
          additionalProperties: true
        message:
          type: string
          description: Human-readable description of the error.
          example: No resource with the given id.
    LocallyUniqueId:
      minLength: 1
      type: string
      description: >
        An identifier (unique to the integrated or assigned application) of any
        object or entity represented in the Oleria system as well as any
        relationship or connection among entities when they are represented in
        Oleria. Oleria converts these identifiers to global ids so they can be
        unique in the context of the global system graph. The full list of
        Oleria objects or entities is defined by the object-type enumeration,
        and the full list of relationships or connections is defined by the
        relationship-type enumeration
    EntitlementSpecification:
      type: object
      properties:
        inferenceConfidence:
          type: number
          description: >
            If the entitlement is inferred, then this gives a confidence score
            between 0 and 1
        isInferred:
          type: boolean
          description: >
            If false, then the specified entitlement is considered "actual" i.e.
            known with 100% confidence, if true, then the entitlement is
            inferred from some set of properties and the _inferenceConfidence_
            indicates confidence in the "reality" of the entitlement given
            relevant data sources. Note: even if an entitlement has 100%
            confidence, authorized access via the entitlement always needs to be
            evaluated and tested in real-time
        reason:
          $ref: '#/components/schemas/EntitlementReason'
        reasonSpecificData:
          description: >-
            Reason specific data associated with entitlement AssignedAccessTo
            relationship
          oneOf:
            - $ref: '#/components/schemas/AccessControlEntitlementInformation'
            - $ref: '#/components/schemas/MFAEntitlementInformation'
            - $ref: '#/components/schemas/SSOEntitlementInformation'
      description: >-
        The EntitlementSpecification describes the entitlements associated with
        an AssignedAccessTo relationship used for access control entitlement or
        SSO entitlement purposes
    EntityIdentifierFederationInformation:
      type: object
      required:
        - isFederated
      properties:
        authenticationKey:
          type: string
        isFederated:
          type: boolean
      description: |
        Federation information used when specifying an _EntityIdentifier_
    LocallyUniqueObjectDirectoryId:
      type: string
      description: >
        An identifier (unique to the integrated application) for a
        [ObjectDirectory](#/components/schemas/ObjectDirectory) object
        represented in the Oleria system. Oleria converts these identifiers to
        global ids so they can be unique in the context of the global system
        graph. It is important for this identifier to be based on an underlying
        persistent and reusable application or identity provider id so
        connections to the object are robust to metadata changes and other
        relevant operations      
      example: >-
        repo:R_kgDOLL0doQ (GitHub based on repository node identifier),
        1BUxdX4M-H7X8GKRgTjprJS8fjY_Ij1giE82lQlny2kc (Google Drive based on file
        id)
    ObjectMetadata:
      required:
        - ApplicationInstanceId
        - GeneratedTime
      type: object
      properties:
        ApplicationInstanceId:
          type: string
        GeneratedTime:
          type: string
          format: date-time
        Profile:
          $ref: '#/components/schemas/SchemaProfile'
        ObjectOrRelationshipType:
          type: string
      description: >
        The _ObjectMetadata_ structure defines metadata that applies to every
        object and relationship, and is usually managed by the system that
        receives the data
    EntitlementReason:
      type: string
      description: >-
        EntitlementReason indicates why a particular entitlement has been
        assigned in the context of an EntitlementSpecification for an
        AssignedAccessTo relationship
      enum:
        - AccessControl
        - MFA
        - SSO
    AccessControlEntitlementInformation:
      type: object
      required:
        - enabled
      properties:
        accessControlMetadata:
          type: array
          description: >-
            An array of high level metadata values associated with the access
            control (separate from the metadata specifically associated with the
            underlying conditions or permissions). This would typically be
            application-specific encoding metadata associated with the
            entitlement that is not already schematized internally
          items:
            $ref: '#/components/schemas/MetadataItem'
        conditions:
          $ref: '#/components/schemas/ConditionSpecification'
        description:
          type: string
        enabled:
          type: boolean
        name:
          type: string
        permissions:
          $ref: '#/components/schemas/PermissionSetSpecification'
        shareableUri:
          type: string
          description: >
            A optional shareable URI that resolves to the access control target
            via the described entitlement and subject to the permissions
            described therein
        shareableUriLabel:
          type: string
          description: >
            An optional label that can be used when displaying the
            _shareableUri_
        sourceTag:
          type: string
          description: An application-specific reason for the entitlement
        type:
          $ref: '#/components/schemas/AccessControlEntitlementType'
      description: >-
        The AccessControlEntitlementInformation indicates _(typically in the
        context of an AssignedAccessTo edge)_  the entitlement conditions,
        permissions granted or denied, and any other contextual information used
        by the authorization function when evaluating the entitlement
    MFAEntitlementInformation:
      type: object
      properties:
        authorizedLocations:
          $ref: '#/components/schemas/AuthorizedLocationPolicy'
        conditions:
          $ref: '#/components/schemas/ConditionSpecification'
        mfaMetadata:
          type: array
          description: A array of additional metadata values associated with the MFA
          items:
            $ref: '#/components/schemas/MetadataItem'
      description: |
        Additional context for an MFA based entitlement specification
    SSOEntitlementInformation:
      type: object
      properties:
        assignment:
          $ref: '#/components/schemas/SSOAssignmentSpecification'
        protocol:
          $ref: '#/components/schemas/FederationProtocol'
        protocolMetadata:
          type: array
          description: >-
            A array of additional metadata values associated with the
            entitlement assignment protocol
          items:
            $ref: '#/components/schemas/MetadataItem'
      description: >-
        The SSOEntitlementInformation gives additional context for a entitlement
        based AssignedAccessTo edge for SSO purposes
    SchemaProfile:
      type: string
      enum:
        - Account
        - Membership
        - Governance
        - Risk
        - Access
        - Detection
    MetadataItem:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        namespace:
          type: string
        type:
          $ref: '#/components/schemas/MetadataValueType'
        value:
          type: object
    ConditionSpecification:
      type: object
      properties:
        context:
          type: array
          description: Additional context used when evaluating the conditional access
          items:
            $ref: '#/components/schemas/MetadataItem'
        overrides:
          type: array
          items:
            $ref: '#/components/schemas/ConditionOverrideSpecifier'
        rootOperator:
          $ref: '#/components/schemas/ConditionOperator'
    PermissionSetSpecification:
      type: object
      properties:
        fineGrainedResourceClass:
          type: string
          description: >-
            The class of resource that the _fineGrainedSpecifiers_ are
            associated with
          example: repo
        fineGrainedSpecifiers:
          type: array
          example:
            - manage_github_actions_permissions_policy
            - view_collaborators
          items:
            type: string
        formattedScopes:
          $ref: '#/components/schemas/PermissionScopeSpecification'
        isCreate:
          type: boolean
          description: Create access permission
        isDelete:
          type: boolean
          description: Delete access permission
        isExecute:
          type: boolean
          description: Execute access permission
        isPrivileged:
          type: boolean
          description: Privileged access permission
        isRead:
          type: boolean
          description: Read access permission
        isShare:
          type: boolean
          description: Sharing access permission
        isUpdate:
          type: boolean
          description: Update access permission
        ownershipLevel:
          $ref: '#/components/schemas/PermissionLevel'
        owners:
          type: array
          items:
            $ref: '#/components/schemas/EntityIdentifier'
        permissionGroupId:
          type: string
        specificationMetadata:
          type: array
          description: >-
            An array of additional metadata items associated with the permission
            specification
          items:
            $ref: '#/components/schemas/MetadataItem'
      description: >-
        Coarse and fine grained specification of a set of permissions that can
        be associated with an Oleria object or relationship
    AccessControlEntitlementType:
      type: string
      description: >-
        As part of
        [AccessControlEntitlementInformation](#/components/schemas/AccessControlEntitlementInformation),
        the type enumeration indicates if the permissions in the entitlement are
        granted or denied when the entitlement is evaluated by an authorization
        function
      enum:
        - Denial
        - Grant
    AuthorizedLocationPolicy:
      type: object
      required:
        - isInherited
      properties:
        isInherited:
          type: boolean
          description: >
            When set to true this indicates that the location policy is
            inherited from another object, otherwise the location policy is
            directly specified
        policy:
          oneOf:
            - $ref: '#/components/schemas/AuthorizedEntityLocationPolicy'
            - $ref: '#/components/schemas/AuthorizedInheritedLocationPolicy'
      description: >
        _AuthorizedLocationPolicy_ is used to specify locations authorized for
        use by accounts, groups, roles, employees, departments, etc.
    SSOAssignmentSpecification:
      type: object
      properties:
        assignedApplicationTrust:
          $ref: '#/components/schemas/AssignedApplicationTrust'
        assignedApplicationScopes:
          $ref: '#/components/schemas/PermissionScopeSpecification'
        lastModifiedDate:
          type: string
          description: |
            The date the _Account_ was last modified
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        type:
          $ref: '#/components/schemas/SSOAssignmentType'
        typeSpecificAssignment:
          oneOf:
            - $ref: '#/components/schemas/SSOAccountAssignmentSpecification'
            - $ref: '#/components/schemas/SSOUserGroupAssignmentSpecification'
    FederationProtocol:
      type: string
      description: Federation protocols that can be used for entitlements
      enum:
        - FirstParty
        - OAuth
        - OIDC
        - RADIUS
        - SAML
        - Trustfusion
    MetadataValueType:
      type: string
      enum:
        - array_boolean
        - array_float32
        - array_float64
        - array_int32
        - array_int64
        - array_string
        - boolean
        - float32
        - float64
        - int32
        - int64
        - oleria_global_id
        - oleria_local_id
        - pem
        - property_bag
        - rfc3339_date
        - string
    ConditionOverrideSpecifier:
      type: string
      enum:
        - AllowAdmin
        - AllowAll
        - AllowAnonymous
        - DenyAdmin
        - DenyAll
        - DenyAnonymous
    ConditionOperator:
      type: object
      properties:
        operator:
          oneOf:
            - $ref: '#/components/schemas/ConditionArrayOperator'
            - $ref: '#/components/schemas/ConditionComparisonOperator'
            - $ref: '#/components/schemas/ConditionContentSearchOperator'
            - $ref: '#/components/schemas/ConditionGraphOperator'
            - $ref: '#/components/schemas/ConditionLogicalOperator'
            - $ref: '#/components/schemas/ConditionSecureScriptOperator'
        type:
          $ref: '#/components/schemas/ConditionOperatorType'
    PermissionScopeSpecification:
      type: object
      properties:
        specifiers:
          type: array
          description: Formatted scopes as specified by type
          items:
            type: string
        type:
          $ref: '#/components/schemas/PermissionScopeType'
      description: Scope specification optionally specified in a PermissionSetSpecification
    PermissionLevel:
      type: string
      description: >
        The level of ownership of the permission granting access to a Resource
        or ResourceInstance:

        1. _AccessReviewOwner_ indicates that the assignee of the represented
        permission is a (or the) designated access reviewer and an owner from
        the perspective of Governance

        2. _NotApplicable_ indicates that a permission level is not relevant in
        the context of the permission set specification

        3. _Owner_ means that the assignee of the represented permission is also
        an owner of the Resource or ResourceInstance

        4. _User_ indicates that the assignee of the represented permission is
        simply a user or accessor or the Resource or ResourceInstance
      example: Owner
      enum:
        - AccessReviewOwner
        - NotApplicable
        - Owner
        - User
    EntityIdentifier:
      type: object
      properties:
        federationInformation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        objectId:
          $ref: '#/components/schemas/LocallyUniqueId'
        objectType:
          $ref: '#/components/schemas/ObjectType'
      description: >
        Used for typed indentification of an entity (node) in the graph with
        values for _objectId_ and _objectType_
    AuthorizedEntityLocationPolicy:
      type: object
      required:
        - allowAll
      properties:
        allowAll:
          type: boolean
          description: |
            When set to true this indicates that all locations are authorized
        authorizedLocations:
          type: array
          description: >
            These are the locations authorized for use by the entity that has
            this policy. If none are specified then no locations are allowed. If
            any are specified and it is desirable for the _assignedLocations_ to
            be authorized, then they must be explicitly included in the array
          items:
            $ref: '#/components/schemas/LocationSpecification'
      description: >
        _AuthorizedEntityLocationPolicy_ is used to specify locations authorized
        for use by the specific entity that it is attached to
    AuthorizedInheritedLocationPolicy:
      type: object
      properties:
        sourceObjectType:
          $ref: '#/components/schemas/ObjectType'
        sourceObjectId:
          $ref: '#/components/schemas/LocallyUniqueId'
      description: >
        _AuthorizedInheritedLocationPolicy_ is used to specify an object that is
        the source for the location authorization data used by the specific
        entity the _AuthorizedInheritedLocationPolicy_ is attached to
    AssignedApplicationTrust:
      type: string
      description: >
        The level of trust an identity provider indicates for the assignment of
        an application to an [Account](#/components/schemas/Account) or
        [UserGroup](#/components/schemas/UserGroup)
      enum:
        - Blocked
        - NotApplicable
        - Trusted
        - Unavailable
        - Untrusted
    SSOAssignmentType:
      type: string
      description: Types of SSO assigment associated with an entitlement
      enum:
        - Account
        - Group
    SSOAccountAssignmentSpecification:
      type: object
      properties:
        accountOverride:
          $ref: '#/components/schemas/AccountOverrideInformation'
        accountRoles:
          type: array
          description: >-
            The application-specific roles to be associated with accounts in the
            group e.g. member, admin, etc.
          items:
            type: string
        externalAccountId:
          type: string
          description: Account identifier in the external system being federated
        federationId:
          type: string
          description: Identifier used to match accounts across the federation relationship
        type:
          $ref: '#/components/schemas/SSOAccountAssignmentType'
    SSOUserGroupAssignmentSpecification:
      type: object
      properties:
        accountRolesForGroup:
          type: array
          description: >-
            The application-specific roles to be associated with accounts in the
            group e.g. member, admin, etc.
          items:
            type: string
        memberOverride:
          $ref: '#/components/schemas/UserGroupMemberOverrideInformation'
    ConditionArrayOperator:
      type: object
      required:
        - isArrayGeneratingDynamicValue
      properties:
        isArrayGeneratingDynamicValue:
          type: boolean
        arrayOpKey:
          $ref: '#/components/schemas/ConditionKey'
        arrayOpType:
          $ref: '#/components/schemas/ConditionArrayOperatorType'
        arrayOpValue:
          oneOf:
            - $ref: '#/components/schemas/ConditionArrayStaticValues'
            - $ref: '#/components/schemas/DynamicConditionValue'
      description: >-
        Condition used to specify conditional access based on presence or
        absence of the key data in the given array of values
    ConditionComparisonOperator:
      type: object
      properties:
        comparisonOpKey:
          $ref: '#/components/schemas/ConditionKey'
        comparisonOpType:
          $ref: '#/components/schemas/ConditionComparisonOperatorType'
        comparisonOpValue:
          $ref: '#/components/schemas/ConditionValue'
      description: >-
        Condition used to specify conditional access based on key - value
        comparison
    ConditionContentSearchOperator:
      type: object
      required:
        - searchOpIsDynamicCondition
      properties:
        searchOpIsDynamicCondition:
          type: boolean
        searchOpValue:
          oneOf:
            - $ref: '#/components/schemas/DynamicContentCondition'
            - $ref: '#/components/schemas/StaticContentCondition'
      description: >-
        Condition used to specify conditional access based on data inside a
        resource instance
    ConditionGraphOperator:
      type: object
      properties:
        graphOpSource:
          $ref: '#/components/schemas/ConditionGraphOperatorEntityIdentifier'
        graphOpTargets:
          type: array
          items:
            $ref: '#/components/schemas/ConditionGraphOperatorEntityIdentifier'
        graphOpTypes:
          $ref: '#/components/schemas/ConditionGraphOperatorType'
      description: >-
        Condition used to specify conditional access based on graph entity
        relationships
    ConditionLogicalOperator:
      type: object
      properties:
        logicalOpOperands:
          type: array
          items:
            $ref: '#/components/schemas/ConditionOperator'
        logicalOpType:
          $ref: '#/components/schemas/ConditionLogicalOperatorType'
      description: >-
        Condition used to specify conditional access based on a logical (AND,
        OR, NOT, EXISTS, ORDERED) operation
    ConditionSecureScriptOperator:
      type: object
      properties:
        contentType:
          $ref: '#/components/schemas/SecureScriptContentType'
        context:
          type: array
          description: >-
            Additional context used when accessing the data referenced by the
            condition key e.g. Function key parameters
          items:
            $ref: '#/components/schemas/MetadataItem'
        executionEngine:
          type: string
        scriptContent:
          type: string
        version:
          type: string
      description: A condition used to specify a script based conditional access expression
    ConditionOperatorType:
      type: string
      description: Categories of operators that can be used with conditional expressions
      enum:
        - Array
        - Comparison
        - ContentSearch
        - Graph
        - Logical
        - SecureScript
    PermissionScopeType:
      type: string
      description: >-
        The enumerated list of scope formats optionally specified in a
        PermissionSetSpecification
      enum:
        - OAuth
    ObjectType:
      type: string
      description: >-
        The enumerated list of all Oleria objects used to describe and manage
        any customer application's identity security. The definition of each
        object describes its usage
      example: Account
      enum:
        - Account
        - AccountRole
        - Activity
        - AssignedApplication
        - Authenticator
        - AuthenticatorEnrollment
        - Department
        - DirectoryProvider
        - Employee
        - IntegratedApplication
        - None
        - ObjectDirectory
        - PermissionSet
        - Person
        - ResourceClass
        - ResourceInstance
        - RiskDefinition
        - RiskViolation
        - Role
        - UserGroup
    LocationSpecification:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/LocationSpecificationType'
        typeSpecificData:
          oneOf:
            - $ref: '#/components/schemas/NetworkLocationSpecification'
            - $ref: '#/components/schemas/PhysicalLocationSpecification'
    AccountOverrideInformation:
      type: object
      properties:
        alias:
          minLength: 1
          type: string
          description: The username associated with the account in the application instance
          example: kirtd-oleria
        companyName:
          type: string
          description: The name of the company or enterprise associated with the account
          example: Oleria Corporation
        department:
          type: string
          description: >-
            The name of the company or enterprise department associated with the
            account
          example: Engineering
        displayName:
          type: string
          description: >-
            The user experience displayable name of the account holder e.g. a
            nickname. If this field is not set, then Oleria will set its value
            to name during processing
          example: Kirtliness
        email:
          type: string
          description: The primary email address of the account
          format: email
          example: kirt@oleria.com
        employeeNumber:
          type: string
          description: The employee number associated with the account holder
          example: '29375'
        jobFunction:
          type: string
          description: The job function associated with the owner of the account
          example: Engineering
        name:
          minLength: 1
          type: string
          description: The name (ideally full name) of the account holder
          example: Kirt Debique
        title:
          type: string
          description: The job title of the account holder
          example: Chief Architect
      description: >-
        When an SSO entitlement federation protocol allows override of account
        information, the overrides are specified via the
        AccountOverrideInformation
    SSOAccountAssignmentType:
      type: string
      description: Types of account assignment
      enum:
        - Direct
        - ViaGroup
    UserGroupMemberOverrideInformation:
      type: object
      required:
        - overridePriority
      properties:
        overrideMetadata:
          type: array
          description: >-
            An array of metadata items containing the override attribute name,
            type, and value
          items:
            $ref: '#/components/schemas/MetadataItem'
        overridePriority:
          type: number
          description: >-
            The priority used to resolve conflicts in assignment across multiple
            groups
      description: >-
        For SSO entitlement when accounts are assigned access via groups, this
        information is used to override certain attributes on the accounts
    ConditionKey:
      type: object
      properties:
        keySpecification:
          oneOf:
            - $ref: '#/components/schemas/ConditionKeyFunctionSpecifier'
            - $ref: '#/components/schemas/ConditionKeyObjectSpecifier'
        type:
          $ref: '#/components/schemas/ConditionKeyType'
        value:
          type: string
      description: >-
        Identifies the entity or function data used to evaluate the validity of
        a condition against the specified condition value
    ConditionArrayOperatorType:
      type: string
      description: Supported operators for array conditions
      enum:
        - In
        - NotIn
    ConditionArrayStaticValues:
      type: object
      properties:
        values:
          type: array
          items:
            $ref: '#/components/schemas/StaticConditionValue'
      description: Array of static values used as an operand in array conditions
    DynamicConditionValue:
      type: object
      properties:
        dynamicConditionValueContext:
          type: array
          description: >-
            This context can be passed to the function that resolves the dynamic
            specification to a static one
          items:
            $ref: '#/components/schemas/MetadataItem'
        dynamicConditionValueData:
          type: string
      description: >-
        Type for dynamic conditional access expression values. These will
        resolve to static ConditionValueTypes (or arrays of static
        ConditionValueTypes) by a relevant authorization function
    ConditionComparisonOperatorType:
      type: string
      description: Supported operators for comparison conditions
      enum:
        - Contains
        - DoesNotContain
        - Equal
        - GreaterThan
        - GreaterThanOrEqual
        - LessThan
        - LessThanOrEqual
        - NotEqual
    ConditionValue:
      type: object
      required:
        - isDynamic
      properties:
        data:
          oneOf:
            - $ref: '#/components/schemas/DynamicConditionValue'
            - $ref: '#/components/schemas/StaticConditionValue'
        isDynamic:
          type: boolean
      description: Typed condition value for static or dynamic values
    DynamicContentCondition:
      type: object
      required:
        - dynamicContentConditionCaseSensitive
        - dynamicContentConditionDiacriticSensitive
      properties:
        dynamicContentConditionCaseSensitive:
          type: boolean
        dynamicContentConditionDiacriticSensitive:
          type: boolean
        dynamicContentConditionLangage:
          type: string
        dynamicContentConditionResourceInstanceId:
          $ref: '#/components/schemas/LocallyUniqueResourceInstanceId'
        dynamicContentConditionSearch:
          $ref: '#/components/schemas/ConditionKey'
      description: >-
        A condition used to a target content search conditional access
        expression with a dynamic search string
    StaticContentCondition:
      type: object
      required:
        - staticContentConditionCaseSensitive
        - staticContentConditionDiacriticSensitive
      properties:
        staticContentConditionCaseSensitive:
          type: boolean
        staticContentConditionDiacriticSensitive:
          type: boolean
        staticContentConditionLanguage:
          type: string
        staticContentConditionResourceInstanceId:
          $ref: '#/components/schemas/LocallyUniqueResourceInstanceId'
        staticSearch:
          type: string
      description: >-
        A condition used to specify a target content search conditional access
        expression with a static search string
    ConditionGraphOperatorEntityIdentifier:
      type: object
      required:
        - isDynamicEntityIdentifier
      properties:
        isDynamicEntityIdentifier:
          type: boolean
        value:
          oneOf:
            - $ref: >-
                #/components/schemas/ConditionGraphOperatorConditionKeyEntityIdentifier
            - $ref: '#/components/schemas/EntityIdentifier'
      description: >-
        ConditionGraphOperatorEntityIdentifier is used to reference a entity
        (node) in the graph
    ConditionGraphOperatorType:
      type: string
      description: Supported operators for graph conditions
      enum:
        - AssignedAccessTo
        - MemberOf
    ConditionLogicalOperatorType:
      type: string
      description: Supported operators for logical conditions
      enum:
        - And
        - Exists
        - Not
        - Or
        - Ordered
    SecureScriptContentType:
      type: string
      description: Content types used to specify scripts for conditional access
      enum:
        - JavaScript
        - JSON
        - XML
    LocationSpecificationType:
      type: string
      enum:
        - Network
        - Physical
    NetworkLocationSpecification:
      type: object
      properties:
        ipAddressExclusions:
          type: array
          items:
            type: string
        ipAddressInclusions:
          type: array
          items:
            type: string
        name:
          type: string
        supplementaryInformation:
          $ref: '#/components/schemas/SupplementaryLocationInformation'
      description: >
        Specify a network location or zone with a name and a list of IP
        addresses or ranges (including in CIDR notation)
    PhysicalLocationSpecification:
      type: object
      properties:
        addressedObjectIdentifier:
          $ref: '#/components/schemas/AddressedObjectIdentifier'
        countryLevelInformation:
          $ref: '#/components/schemas/CountryLevelInformation'
        locality:
          $ref: '#/components/schemas/Locality'
        postcode:
          type: string
          description: |
            Postal code or ZIP code
          example: '98112'
        supplementaryInformation:
          $ref: '#/components/schemas/SupplementaryLocationInformation'
      description: >
        A subset of the ISO 19160-4:2023 delivery point specification. For
        context, the property examples reference the address - The Madrona
        Refuge Building, Suite 301, 1126 34th Avenue, Seattle, WA, 98112
    ConditionKeyFunctionSpecifier:
      type: object
      properties:
        parameters:
          type: array
          description: >-
            Optional parameters used when accessing the data referenced by the
            condition key e.g. Function key parameters
          items:
            $ref: '#/components/schemas/MetadataItem'
    ConditionKeyObjectSpecifier:
      type: object
      properties:
        name:
          type: string
      description: >-
        Contextual object specifier for a condition key that is derefencing its
        value from an object type
    ConditionKeyType:
      type: string
      description: >
        The following types of keys are used to specify conditional access
        expressions:

        1. A _Function_ key is used to identify a runtime function that will
        resolve to a value e.g. isLoggedIn, isImpersonatingUser, etc.

        2. A _Object_ key is used to identify a particular field on an object
        where the value of the field on the object is used to determine the
        validity of the condition
      enum:
        - Function
        - Object
    StaticConditionValue:
      type: object
      properties:
        staticConditionValueType:
          $ref: '#/components/schemas/ConditionValueType'
        staticConditionValueData:
          type: object
      description: Type for static conditional access expression values
    LocallyUniqueResourceInstanceId:
      type: string
      description: >
        An identifier (unique to the integrated application) for a
        [ResourceInstance](#/components/schemas/ResourceInstance) object
        represented in the Oleria system. Oleria converts these identifiers to
        global ids so they can be unique in the context of the global system
        graph. It is important for this identifier to be based on an underlying
        persistent and reusable application or identity provider id so
        connections to the object are robust to metadata changes and other
        relevant operations      
      example: >-
        repo:R_kgDOLL0doQ (GitHub based on repository node identifier),
        1BUxdX4M-H7X8GKRgTjprJS8fjY_Ij1giE82lQlny2kc (Google Drive based on file
        id)
    ConditionGraphOperatorConditionKeyEntityIdentifier:
      type: object
      properties:
        objectIdConditionKey:
          $ref: '#/components/schemas/ConditionKey'
        objectTypeConditionKey:
          $ref: '#/components/schemas/ConditionKey'
      description: >
        ConditionGraphOperatorConditionKeyEntityIdentifier is used to reference
        a entity (node) in the graph with
        [ConditionKey](#/components/schemas/ConditionKey)-based dynamic values
        for _objectId_ and _objectType_
    SupplementaryLocationInformation:
      type: object
      properties:
        geoLocation:
          $ref: '#/components/schemas/GeoLocation'
        additionalLocationMetadata:
          type: array
          items:
            $ref: '#/components/schemas/MetadataItem'
    AddressedObjectIdentifier:
      type: object
      properties:
        building:
          type: string
          description: >
            Element identifying the number or name and type of the location
            edifice or construction
          example: The Madrona Refuge Building
        door:
          type: string
          description: |
            Element identifying the apartment, room, or office
          example: Suite 301
        premisesIdentifier:
          type: string
          description: >
            Element designating the area or the object on an area associated
            with the location
          example: 1126 34th Avenue
      description: >
        Subset of an ISO 19160-4:2023 construct identifying a specific addess
        within a [Locality](#/components/schemas/Locality). For context, the
        property examples reference the address - The Madrona Refuge Building,
        Suite 301, 1126 34th Avenue, Seattle, WA, 98112
    CountryLevelInformation:
      type: object
      properties:
        countryCode:
          type: string
          description: >
            Element designating the ISO 3166-1 A-2 country code for the country,
            territory or area of geopolitical interest
          example: US
        countryName:
          type: string
          description: >
            Element designating the country, dependency, or area of geopolitical
            interest
          example: United States
        multiCountryRegion:
          type: string
          description: >
            Element indicating a region in which the country, territory, or area
            of geopolitical interest is located and by which it is potentially
            more effectively recognized
          example: North America
      description: >
        Subset of ISO 19160-4:2023 country level information. For context, the
        property examples reference the address - The Madrona Refuge Building,
        Suite 301, 1126 34th Avenue, Seattle, WA, 98112
    Locality:
      type: object
      properties:
        district:
          type: string
          description: >
            Element indicating the name of the area within or adjacent to the
            specified town
          example: Madrona (neighborhood in Seattle)
        region:
          type: string
          description: >
            Element specifying the geographic or administrative area of the
            country in which the town is situated
          example: Washington
        town:
          type: string
          description: >
            Element indicating the name of the populated place associated with
            the
            [LocationSpecification](#/components/schemas/LocationSpecification)
            in which this _Locality_ is being referenced
          example: Seattle
      description: >
        Subset of ISO 19160-4:2023 locality information identifying the
        geographical area. For context, the property examples reference the
        address - The Madrona Refuge Building, Suite 301, 1126 34th Avenue,
        Seattle, WA, 98112
    ConditionValueType:
      type: string
      description: >-
        Types for condition values used in specifying static conditional access
        expression values
      enum:
        - activity_type
        - boolean
        - float
        - int32
        - int64
        - object
        - object_type
        - relationship_type
        - string
    GeoLocation:
      type: object
      required:
        - latitude
        - longtitude
      properties:
        latitude:
          type: number
        longtitude:
          type: number
      description: Latitude and longtitude specification for a location
  responses:
    BadRequest:
      description: The request was malformed, for example an invalid cursor or page size.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: BAD_REQUEST
            message: The request was malformed.
    Unauthorized:
      description: Missing or invalid authentication token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: UNAUTHORIZED
            message: Missing or invalid authentication token.
    Forbidden:
      description: The token lacks the scope required for this resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: FORBIDDEN
            message: The token lacks the required scope.
    NotFound:
      description: No resource exists with the given id.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: NOT_FOUND
            message: No resource with the given id.
    TooManyRequests:
      description: Rate limit exceeded. Retry after the interval in the Retry-After header.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
            minimum: 0
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: TOO_MANY_REQUESTS
            message: Rate limit exceeded. Retry after the specified interval.
    InternalError:
      description: An unexpected error occurred.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: INTERNAL_ERROR
            message: An unexpected error occurred.
  securitySchemes:
    oauth2:
      type: oauth2
      description: >-
        OAuth 2.0 client-credentials flow. Request an access token from the
        token endpoint and send it as `Authorization: Bearer <token>`.
      flows:
        clientCredentials:
          tokenUrl: https://auth.prod.oleria.io/oauth/token
          scopes:
            https://devx.{environment}.oleria.io/delete: Irreversibly destroy an object in the source system.
            https://devx.{environment}.oleria.io/read: Read identity and access data, and the jobs that change it.
            https://devx.{environment}.oleria.io/write: >-
              Make reversible changes: grant, enable, assign, revoke and remove
              access.

````