> ## 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.

# List

> Returns a page of non-human identities. Pass `pageToken` from the previous response's `nextPageToken` to fetch the next page. A page can be empty while the results are still being prepared. Keep requesting pages until the response has no `nextPageToken`. Scoped to non-human identities (service principals, machine accounts, and tokens) and ordered with the highest-risk identities first (by impersonation blast-radius). Each identity carries Oleria's access-risk posture and the count of accounts it can impersonate. The filter and ordering are applied server-side and cannot be changed by the caller. Requires the `https://devx.{environment}.oleria.io/read` scope.



## OpenAPI

````yaml /developer-docs/api-reference/oleria-public-api-1.0.0.yaml get /v1/non-human-identities
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/non-human-identities:
    get:
      tags:
        - Non-human identities
      summary: List
      description: >-
        Returns a page of non-human identities. Pass `pageToken` from the
        previous response's `nextPageToken` to fetch the next page. A page can
        be empty while the results are still being prepared. Keep requesting
        pages until the response has no `nextPageToken`. Scoped to non-human
        identities (service principals, machine accounts, and tokens) and
        ordered with the highest-risk identities first (by impersonation
        blast-radius). Each identity carries Oleria's access-risk posture and
        the count of accounts it can impersonate. The filter and ordering are
        applied server-side and cannot be changed by the caller. Requires the
        `https://devx.{environment}.oleria.io/read` scope.
      operationId: ListNonHumanIdentities
      parameters:
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/pageToken'
        - $ref: '#/components/parameters/applicationInstanceId'
      responses:
        '200':
          description: A page of non-human identities.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NonHumanIdentityList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - oauth2:
            - https://devx.{environment}.oleria.io/read
components:
  parameters:
    pageSize:
      name: pageSize
      in: query
      description: Maximum items per page.
      schema:
        type: integer
        format: int32
        default: 50
        minimum: 1
        maximum: 200
    pageToken:
      name: pageToken
      in: query
      description: >-
        Opaque page token from the previous response's `nextPageToken`. Omit it
        for the first page; pass it back exactly as received. Do not parse or
        construct it.
      schema:
        type: string
    applicationInstanceId:
      name: applicationInstanceId
      in: query
      description: >-
        Scope the list to a single application instance, identified by its id
        (UUID). An application instance is one connected integration in your
        tenant: a specific Okta, Workday, and so on. Omit it to list across all
        of your instances.
      schema:
        type: string
        format: uuid
  schemas:
    NonHumanIdentityList:
      type: object
      required:
        - items
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Oleria_Account'
        nextPageToken:
          type: string
          description: >-
            Opaque token for the next page; pass it back as `pageToken`. Present
            whenever more pages remain, including when this page is empty
            because the results are still being prepared, and absent only once
            the collection is fully returned. Do not parse or construct it.
    Oleria_Account:
      type: object
      description: >
        An Oleria Account object represents a user, machine, or token account in
        an enterprise SaaS application, identity provider, MFA provider, or
        directory service e.g. Okta, PingOne, ActiveDirectory, GitHub,
        Salesforce, or ServiceNow
      allOf:
        - $ref: '#/components/schemas/Account'
        - $ref: '#/components/schemas/Oleria_AccountGlobalIdentifiers'
        - $ref: '#/components/schemas/Oleria_AccountEnrichedInformation'
        - $ref: '#/components/schemas/Oleria_AccountAnalyticsInformation'
        - $ref: '#/components/schemas/Oleria_AccountSystemOfRecordInformation'
        - required:
            - oleriaObjectMetadata
          type: object
          properties:
            oleriaObjectMetadata:
              $ref: '#/components/schemas/Oleria_ObjectMetadata'
    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.
    Account:
      required:
        - accountRole
        - alias
        - authenticationFunctions
        - email
        - enabled
        - hasAPIAccess
        - id
        - isAdmin
        - mfaRequirements
        - objectMetadata
        - ssoRequirements
        - subType
        - type
      type: object
      properties:
        accountRole:
          type: string
          description: >
            The source application-specific role associated with the account
            e.g. member, admin, etc. This preserves the underlying information
            used to determine __type__ and __userType__ of the account, and is
            referenced when doing identity provider assignment
          example: MEMBER
        accountRoleDisplayName:
          type: string
          example: Org Members
        alias:
          minLength: 1
          type: string
          description: The username associated with the account in the application instance
          example: kirtd-oleria
        alternateEmails:
          type: array
          items:
            type: string
            description: Alternate email aliases for the account's primary email
            format: email
        approvedApplicationPermissions:
          type: array
          items:
            $ref: '#/components/schemas/PermissionSetSpecification'
        approvedApplicationUsages:
          type: array
          description: >
            Approved application usages associated with this account (see
            [ApprovedApplicationUsage](#/components/schemas/ApprovedApplicationUsage))
          items:
            type: string
        assignedLocations:
          type: array
          description: >
            These are the locations assigned as delivery points for this
            _Account_. It is typically populated by identity providers in lieu
            of the definitive data coming from HRIS integrations
          items:
            $ref: '#/components/schemas/LocationSpecification'
        authenticationFunctions:
          type: array
          description: >
            Authentication functions associated with this account (see
            [AccountAuthenticationFunction](#/components/schemas/AccountAuthenticationFunction))
          items:
            type: string
        authenticationMethods:
          type: array
          items:
            $ref: '#/components/schemas/AuthenticationMethod'
        authenticationMethodSelectionPolicy:
          $ref: '#/components/schemas/AuthenticationMethodSelectionPolicy'
        authorizedLocations:
          $ref: '#/components/schemas/AuthorizedLocationPolicy'
        companyName:
          type: string
          description: |
            The name of the company or enterprise associated with the _Account_
          example: Oleria Corporation
        costCenter:
          type: string
          description: |
            The cost center associated with the owner of the _Account_
          example: '232345'
        countryCode:
          type: string
          description: |
            ISO-3166-1 A-2 country code assigned to the account
          example: US
        createdBy:
          $ref: '#/components/schemas/LocallyUniqueAccountId'
        createdByFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        createdDate:
          type: string
          description: |
            The date the _Account_ was created
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        department:
          type: string
          description: >
            The name of the company or enterprise department associated with the
            _Account_
          example: Platform Engineering
        directoryEntryFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        directoryEntryId:
          type: string
          description: >
            The _directoryEntryId_ is emitted when this _Account_ object is
            synced with an _Account_ emitted by a directory. The id here should
            match the synced _Account.id_
        directoryProviderFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        directoryProviderId:
          type: string
          description: >
            The _directoryProviderId_ indicates the
            [DirectoryProvider](#/components/schemas/DirectoryProvider) defining
            the sync relationship for this account
        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'
        enabled:
          type: boolean
          description: |
            Is the _Account_ enabled?
          example: true
        expirationDate:
          type: string
          description: |
            The date the _Account_ expires if applicable
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        federationId:
          $ref: '#/components/schemas/FederationId'
        hasAPIAccess:
          type: boolean
          description: >
            Is the _Account_ authorized to access the application's API
            endpoints?
          example: false
        hashIdentifiers:
          type: array
          description: >
            The hash identifiers are typically emitted in connection with
            Machine and Token accounts to expose the fact that they can be
            "unlocked" by access to key material matching the hash. The relevant
            [hash algorithm
            prefix](#/components/schemas/HashOrFingerprintAlgorithmPrefix) plus
            the hash are added to the array of strings so they can be connected
            to owner or steward accounts by Oleria
          items:
            type: string
        id:
          $ref: '#/components/schemas/LocallyUniqueAccountId'
        isAdmin:
          type: boolean
          description: |
            Is the _Account_ an administrator?
          example: true
        jobCode:
          type: string
          description: >
            Identifier of the job or job profile of the _Account_'s owner, also
            known as the Job ID

            (Workday _Job Code_ — the Job Profile's reference ID; SuccessFactors
            _Job Classification_ code)
          example: '343949'
        jobFamily:
          type: string
          description: >
            The job family of the _Account_ owner's job — a grouping of related
            jobs that share

            core knowledge and background requirements (Workday and
            SuccessFactors _Job Family_).

            Narrower than _jobFamilyGroup_ and broader than _specialization_
          example: Software Engineering
        jobFamilyGroup:
          type: string
          description: |
            The broadest grouping of job families for the _Account_ owner's job
            (Workday _Job Family Group_)
          example: Technology
        jobFunction:
          type: string
          description: >
            The functional role or occupation of the _Account_'s owner. A
            role-level descriptor,

            not a broad grouping — occupational groupings belong in _jobFamily_
            / _jobFamilyGroup_
          example: Product Manager
        lastActivityDate:
          type: string
          description: |
            The date of the last activity performed by the _Account_
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        lastModifiedBy:
          $ref: '#/components/schemas/LocallyUniqueAccountId'
        lastModifiedByFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        lastModifiedDate:
          type: string
          description: |
            The date the _Account_ was last modified
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        lastPasswordChangedDate:
          type: string
          description: |
            The date the _Account_ password was last changed
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        licenseLevel:
          $ref: '#/components/schemas/AccountLicenseLevel'
        licenseStatus:
          $ref: '#/components/schemas/AccountLicenseStatus'
        licenseType:
          type: string
          description: >
            The application-specific license type (or plan) used by the
            _Account_
          example: Enterprise Plan
        managerEmails:
          type: array
          description: |
            Array of manager emails for the employee that has the _Account_
          items:
            type: string
        mfaRequirements:
          $ref: '#/components/schemas/MFARequirements'
        name:
          minLength: 1
          type: string
          description: |
            The name (ideally full name) of the _Account_ holder
          example: Kirt Debique
        objectDirectoryContainerFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        objectDirectoryContainerId:
          $ref: '#/components/schemas/LocallyUniqueObjectDirectoryId'
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
        profileMetadata:
          type: array
          description: >
            An array of profile key-value pairs extending the schema of the
            _Account_ object
          items:
            $ref: '#/components/schemas/MetadataItem'
        provisioning:
          type: array
          items:
            $ref: '#/components/schemas/ProvisioningParticipant'
        secondaryAccountRoles:
          type: array
          description: >
            Additional underlying account roles associated with the _Account_
            object
          items:
            type: string
        sourceTag:
          type: string
          description: >
            An application-specific tag representing the _Account_ information
            data source
          example: OrgOwners
        specialization:
          type: string
          description: >
            A finer sub-discipline within the _Account_ owner's _jobFamily_.
            There is no standard

            Workday or SuccessFactors foundation field for this — it is sourced
            from an org-defined

            specialty or sub-classification. Not the Workday _Job Category_
            field, which is a

            regulatory/EEO classification. Distinct from the business _title_
          example: Site Reliability
        ssoRequirements:
          $ref: '#/components/schemas/SSORequirements'
        subType:
          $ref: '#/components/schemas/AccountSubType'
        title:
          type: string
          description: |
            The job title of the _Account_ holder
          example: Chief Architect
        type:
          $ref: '#/components/schemas/AccountType'
      description: >-
        An Account object represents a user's account in an identity provider,
        enterprise application, or directory e.g. Okta, PingOne,
        ActiveDirectory, GitHub, Salesforce, or ServiceNow
    Oleria_AccountGlobalIdentifiers:
      required:
        - globalId
      type: object
      properties:
        globalAuthorizedLocations:
          $ref: '#/components/schemas/AuthorizedLocationPolicy'
        globalCreatedBy:
          type: string
        globalDirectoryEntryId:
          type: string
        globalDirectoryProviderId:
          type: string
        globalId:
          type: string
        globalLastModifiedBy:
          type: string
        globalObjectDirectoryContainerId:
          type: string
        globalProfileMetadata:
          type: array
          items:
            $ref: '#/components/schemas/MetadataItem'
      description: >
        Global identifiers translated from Account local identifiers to be
        composed on Oleria Account
    Oleria_AccountEnrichedInformation:
      required:
        - enrichedMFAStatus
        - enrichedNormalizedEmail
        - enrichedSharingRiskCategory
      type: object
      properties:
        enrichedDataClassifications:
          $ref: '#/components/schemas/DataClassifications'
        enrichedNonHumanIdentityRisk:
          allOf:
            - $ref: '#/components/schemas/NonHumanIdentityRisk'
          description: >
            Aggregate access-risk posture for a non-human identity
            (Machine/Token account), derived from its

            impersonation and application-assignment relationships. Omitted for
            human accounts.
        enrichedNormalizedAlternateEmails:
          type: array
          description: >-
            Normalized version of each alternate email found in
            Account.AlternateEmails
          items:
            type: string
        enrichedNormalizedEmail:
          type: string
          description: Normalized version of the email found in Account.Email
        enrichedSharingRiskCategory:
          $ref: '#/components/schemas/SharingRiskCategory'
        enrichedMFAStatus:
          $ref: '#/components/schemas/MFAStatus'
      description: >
        Enriched information derived from a combination of Account data,
        additional identity signals
    Oleria_AccountAnalyticsInformation:
      type: object
      properties:
        analyticsAccessToResourceInstancesCount:
          type: integer
          nullable: true
          format: int64
          description: >
            Cached count of resource instances this account can access. Values
            above 1000 may be approximate.
        analyticsAssignedApplicationCount:
          type: integer
          nullable: true
          format: int32
        analyticsAssignedGroupCount:
          type: integer
          nullable: true
          format: int32
        analyticsAssignedOwners:
          type: array
          description: >
            Names of owners assigned through Oleria's ownership-governance
            workflow - for example,

            non-human-identity ownership assignment.
          items:
            type: string
        analyticsAssignedRoleCount:
          type: integer
          nullable: true
          format: int32
        analyticsDataLabelsCount:
          type: integer
          nullable: true
          format: int32
        analyticsDaysSinceLastActivity:
          type: integer
          nullable: true
          format: int32
        analyticsImpersonationTargetCount:
          type: integer
          nullable: true
          format: int32
          description: >
            Number of user accounts this non-human identity (Machine/Token
            account) can impersonate - a

            blast-radius indicator for NHI access risk. 0 when the identity has
            no impersonation reach. Null for

            human accounts or when not computed.
        analyticsLastActivityDate:
          type: string
          format: date-time
          description: |
            Most recent activity observed on this account.
        analyticsSourceOwners:
          type: array
          description: >
            Names of owners derived from the source system's management
            relationships.
          items:
            type: string
      description: >
        Analytics information calculated from identity security graph and added
        to the account
    Oleria_AccountSystemOfRecordInformation:
      type: object
      properties:
        sorPrimaryStewardEmail:
          type: string
      description: >
        System of Record information associated with an account 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
    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
    LocationSpecification:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/LocationSpecificationType'
        typeSpecificData:
          oneOf:
            - $ref: '#/components/schemas/NetworkLocationSpecification'
            - $ref: '#/components/schemas/PhysicalLocationSpecification'
    AuthenticationMethod:
      type: object
      properties:
        type:
          type: string
        description:
          type: string
      description: >
        Authentication methods describe how an
        [Account](#/components/schemas/Account) is required to authenticate to
        an enterprise application or identity provider.
        [Account](#/components/schemas/Account) include a list of enrolled
        authentication methods for the account, and
        [Activity](#/components/schemas/Activity) will include the
        authentication method used for login and other events. The type
        [AuthenticationMethodType](#/components/schemas/AuthenticationMethodType)
        is a string that can be one of many different authentication methods
        recognized by Oleria
    AuthenticationMethodSelectionPolicy:
      type: object
      properties:
        accountConditions:
          $ref: '#/components/schemas/ConditionSpecification'
        assignedApplicationConditions:
          $ref: '#/components/schemas/ConditionSpecification'
        authorizedLocations:
          $ref: '#/components/schemas/AuthorizedLocationPolicy'
        excludedAuthenticationMethods:
          type: array
          items:
            $ref: '#/components/schemas/AuthenticationMethod'
        includedAuthenticationMethods:
          type: array
          items:
            $ref: '#/components/schemas/AuthenticationMethod'
      description: >
        This policy expresses the selection criteria used by an IDP or MFA
        provider to select authentication methods for use at authentication time
        (usually as a subset of the enforced authentication methods)
    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.
    LocallyUniqueAccountId:
      type: string
      description: >
        An identifier (unique to integrated application) for an
        [Account](#/components/schemas/Account) 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: >-
        user:U_kgDOB7P6Rg (GitHub based on node identifier), 838439349399
        (Google Workspace based on user id), user:wiz-inc-4db1c46901 (GitHub
        based on app slug)
    EntityIdentifierFederationInformation:
      type: object
      required:
        - isFederated
      properties:
        authenticationKey:
          type: string
        isFederated:
          type: boolean
      description: |
        Federation information used when specifying an _EntityIdentifier_
    FederationId:
      type: string
      description: >-
        A FederationId is an account username override used in the context of an
        authenticated session or in some contexts an Oleria
        LocallyUniqueAccountId
      example: kirt@oleria.dev
    AccountLicenseLevel:
      type: string
      description: >-
        The license regime under which the account is currently active or was
        last activated
      example: Paid
      enum:
        - Free
        - NotApplicable
        - Paid
        - Unassigned
        - Unavailable
    AccountLicenseStatus:
      type: string
      description: Is the account license active or inactive?
      example: Active
      enum:
        - Active
        - Inactive
        - NotApplicable
    MFARequirements:
      type: string
      description: |
        MFA requirements for an [Account](#/components/schemas/Account)         
      example: Required
      enum:
        - Adaptive
        - EnrollmentRequired
        - Excluded
        - NotApplicable
        - NotRequired
        - Required
        - Unavailable
    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
    MetadataItem:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        namespace:
          type: string
        type:
          $ref: '#/components/schemas/MetadataValueType'
        value:
          type: object
    ProvisioningParticipant:
      type: object
      properties:
        authenticationKey:
          type: string
          description: >-
            Authentication key used to match the other side of the sync
            relationship
        entitySync:
          $ref: '#/components/schemas/EntitySyncSpecification'
        syncKey:
          type: string
          description: >-
            The syncKey identifies the matching entity used for the sync
            relationship and the syncMethod indicates how the sync is
            accomplished
          example: Oleria Repository Writers
        syncMethod:
          $ref: '#/components/schemas/SyncMethodType'
      description: >
        For IDP to application provisioning sync (as distinct from directory
        provider sync), the _ProvisioningParticipant_ structure provides
        information about a specific IDP to application connection for an entity
        (account, group, role, etc.)
    SSORequirements:
      type: string
      description: |
        SSO requirements for an [Account](#/components/schemas/Account)       
      example: Required
      enum:
        - Configured
        - NotApplicable
        - NotConfigured
        - Required
        - Unavailable
    AccountSubType:
      type: string
      description: >
        The following sub-types of account are supported:

        1. _Application_ is used to represent accounts used to represent an
        "installed" application or custom created service principal for
        application or federated use. When the sub-type is _Application_, the
        source application should also emit
        [ApprovedApplicationUsage](#/components/schemas/ApprovedApplicationUsage)
        for the account

        2. _AnonymousUser_ is used to represent anonymous accounts typically in
        the context of sharing resources

        3. _ExternalUser_ is used to represent accounts that are outside of the
        application-defined customer organizational unit, and is typically used
        in the context of sharing resources]

        4. _StandardUser_ accounts are any user accounts not classified as
        _AnonymousUser_ or _ExternalUser_ and is typically the majority of
        accounts managed by an enterprise application

        5. _System_ is used to represent system bots and pre-defined or
        configurable system service principals e.g. the merge queue bot in
        GitHub

        5. _Unavailable_ should be indicated when the sub-type of the account
        cannot be definitively determined as _AnonymousUser_, _ExternalUser_,
        _StandardUser_, _Application_, or _System_ based on the absence of
        endpoint functionality or lack of access
      example: Standard
      enum:
        - Application
        - AnonymousUser
        - ExternalUser
        - StandardUser
        - System
        - Unavailable
    AccountType:
      type: string
      description: >
        1. _Machine_ accounts are used to represent system-defined accounts and
        service principals registered with the enterprise application that can
        take some sort of audited action

        2. _Token_ accounts are used to represent tokens used to impersonate
        accounts with some restricted scope e.g. personal access tokens

        3. _User_ accounts are used to represent human users of the application
      example: User
      enum:
        - Machine
        - Token
        - User
    DataClassifications:
      type: array
      items:
        $ref: '#/components/schemas/DataClassification'
    NonHumanIdentityRisk:
      type: object
      description: >
        Aggregate access-risk posture for a non-human identity, summarized
        across its impersonation and

        application-assignment relationships. Each dimension is the highest
        level observed across those

        relationships.
      properties:
        permissionLevel:
          allOf:
            - $ref: '#/components/schemas/NonHumanIdentityRiskLevel'
          description: >
            Sensitivity and breadth of the permissions the identity can exercise
            - what actions it can perform.
        privilegeLevel:
          allOf:
            - $ref: '#/components/schemas/NonHumanIdentityRiskLevel'
          description: >
            Degree of administrative elevation of the identity's access - how
            privileged it is.
        scopeLevel:
          allOf:
            - $ref: '#/components/schemas/NonHumanIdentityRiskLevel'
          description: >
            Breadth of the access surface the identity can reach - how broad its
            reachable targets are.
    SharingRiskCategory:
      type: string
      description: >-
        Categories of risk implied by sharing to an entity (account) evaluated
        as having the given risk category
      enum:
        - AnonymousEndpoint
        - RegisteredEnterpriseEndpoint
        - RegisteredInternetEndpoint
        - TrustedApplicationEndpoint
        - Unavailable
    MFAStatus:
      type: object
      properties:
        adaptiveAuthenticationMethodSelectionPolicies:
          type: array
          items:
            $ref: '#/components/schemas/AdaptiveAuthenticationMethodSelectionPolicy'
        authenticationMethodSelectionPolicies:
          type: array
          items:
            $ref: '#/components/schemas/AuthenticationMethodSelectionPolicy'
        enforcementStatus:
          $ref: '#/components/schemas/MFAEnforcementStatus'
        enrolledAuthenticationMethods:
          $ref: '#/components/schemas/AuthenticationMethods'
        enforcedAuthenticationMethods:
          $ref: '#/components/schemas/AuthenticationMethods'
        participatingEntities:
          type: array
          items:
            $ref: '#/components/schemas/EntityReference'
      description: >
        _MFAStatus_ describes the MFA usage currently being enforced for an
        account including those derived from authentication policy, adaptive
        security requirements, authorized location constraints, and more. It
        also includes information about how MFA authentication is
        operationalized for the account via a list of participating entities
        such that a graph topology can be built to represent the source of the
        MFA policies being enforced
    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_
    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
    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'
    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
    SchemaProfile:
      type: string
      enum:
        - Account
        - Membership
        - Governance
        - Risk
        - Access
        - Detection
    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
    EntitySyncSpecification:
      type: object
      properties:
        attributeControls:
          type: array
          items:
            $ref: '#/components/schemas/EntitySyncAttributeMapping'
        protocol:
          $ref: '#/components/schemas/EntitySyncProtocol'
        protocolControls:
          type: array
          items:
            $ref: '#/components/schemas/EntitySyncProtocolSpecifiers'
      description: >-
        An EntitySyncSpecification expresses how accounts are synced among IDPs,
        directories, and enterprise applications
    SyncMethodType:
      type: string
      description: >-
        Sync methods for user groups between IDPs and enterprise applications
        where the UserGroup.syncKey identifies the matching group name used for
        the sync relationship and the UserGroup.syncMethod is a SyncMethodType
        indicating how the sync is accomplished
      enum:
        - ApplicationSpecific
        - Bidirectional
        - None
        - Pull
        - Push
        - Receive
    DataClassification:
      type: object
      properties:
        businessImpact:
          $ref: '#/components/schemas/ImpactLevel'
        compliance:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceRegime'
        customerImpact:
          $ref: '#/components/schemas/ImpactLevel'
        dataSensitivity:
          $ref: '#/components/schemas/DataSensitivity'
        description:
          type: string
        id:
          $ref: '#/components/schemas/DataClassificationId'
        name:
          type: string
      description: >-
        DataClassification objects are emitted by integrated applications to
        indicate classification labels that have been created in the enterprise
        application system and assigned certain impact level, compliance regime,
        and data sensitivity properties where applicable. The Oleria aggregates
        these classifications across integrated applications and allows security
        teams customize as well as group by, filter by, and order by these
        labels when reviewing identity security and access information
    NonHumanIdentityRiskLevel:
      type: string
      description: >
        Per-dimension access-posture level for a non-human identity (scope,
        permission, or privilege).

        Distinct from RiskSeverity, which scores activities, risk definitions,
        and violations.
      example: High
      enum:
        - High
        - Medium
        - Low
        - None
        - Unknown
    AdaptiveAuthenticationMethodSelectionPolicy:
      type: object
      properties:
        policy:
          $ref: '#/components/schemas/AuthenticationMethodSelectionPolicy'
        riskLevel:
          $ref: '#/components/schemas/AuthenticationRiskLevel'
      description: |
        Defines selection policies for an authentication risk level
    MFAEnforcementStatus:
      type: string
      description: What level of MFA enforcement is being done on an account
      enum:
        - AdaptiveAndEnforced
        - AdaptiveAndNotEnforced
        - Enforced
        - Excluded
        - NotApplicable
        - NotEnforced
        - Unavailable
    AuthenticationMethods:
      type: object
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/AuthenticationMethod'
    EntityReference:
      type: object
      properties:
        objectData:
          oneOf:
            - $ref: '#/components/schemas/Account'
            - $ref: '#/components/schemas/AccountRole'
            - $ref: '#/components/schemas/Activity'
            - $ref: '#/components/schemas/AssignedApplication'
            - $ref: '#/components/schemas/Authenticator'
            - $ref: '#/components/schemas/AuthenticatorEnrollment'
            - $ref: '#/components/schemas/Department'
            - $ref: '#/components/schemas/DirectoryProvider'
            - $ref: '#/components/schemas/Employee'
            - $ref: '#/components/schemas/IntegratedApplication'
            - $ref: '#/components/schemas/ObjectDirectory'
            - $ref: '#/components/schemas/PermissionSet'
            - $ref: '#/components/schemas/Person'
            - $ref: '#/components/schemas/ResourceClass'
            - $ref: '#/components/schemas/ResourceInstance'
            - $ref: '#/components/schemas/RiskDefinition'
            - $ref: '#/components/schemas/RiskViolation'
            - $ref: '#/components/schemas/Role'
            - $ref: '#/components/schemas/UserGroup'
        objectType:
          $ref: '#/components/schemas/ObjectType'
      description: |
        Used for typed reference to an entity (node) in the graph
    PermissionScopeType:
      type: string
      description: >-
        The enumerated list of scope formats optionally specified in a
        PermissionSetSpecification
      enum:
        - OAuth
    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
    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
    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
    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'
    EntitySyncAttributeMapping:
      type: object
      properties:
        attributeSync:
          type: array
          items:
            $ref: '#/components/schemas/EntitySyncAttributeSpecifiers'
        id:
          type: string
        sourceAttributeName:
          type: string
        sourceEntityType:
          $ref: '#/components/schemas/ObjectType'
        targetAttributeName:
          type: string
        targetEntityType:
          $ref: '#/components/schemas/ObjectType'
      description: >-
        An EntitySyncAttributeMapping expresses how specific account or group
        fields are mapped during sync of objects among IDPs, directories, and
        enterprise applications
    EntitySyncProtocol:
      type: string
      description: >-
        These specifiers are used to identify different protocols for syncing
        account and group information among IDPs, directories, and enterprise
        applications
      enum:
        - AD
        - LDAP
        - SAML
        - SCIM
    EntitySyncProtocolSpecifiers:
      type: string
      description: >-
        These specifiers are used to express the protocol actions used to sync
        accounts among IDPs, directories, and enterprise applications
      enum:
        - Create
        - Deactivate
        - Delete
        - SyncPassword
        - Update
    ImpactLevel:
      type: string
      description: >-
        Impact of compromise of a secured information on the business or
        customer (enumeration ordered descending by criticality)
      enum:
        - MissionCritical
        - Critical
        - High
        - Moderate
        - Low
        - None
    ComplianceRegime:
      type: string
      description: >-
        Data compliance standards and information security categories that a
        security classification may be used in
      enum:
        - CCPA
        - CDPA
        - COPPA
        - CPA
        - GDPR
        - GLB
        - HIPAA
        - ISO-27001
        - ISO-27018
        - PCI
        - PII
        - SOC
        - SOC2
        - UCPA
    DataSensitivity:
      type: string
      description: >-
        Sensitivity of the data associated with a resource (enumeration ordered
        descending by sensitivity)
      enum:
        - TopSecret
        - Secret
        - Confidential
        - ExtremelySensitive
        - Protected
        - AuthorizedDisclosure
        - Open
        - NotApplicable
    DataClassificationId:
      type: string
      description: >-
        An identifier for a specific data classification associated with an
        integrated application instance
    AuthenticationRiskLevel:
      type: string
      enum:
        - Critical
        - Default
        - High
        - Low
        - Moderate
    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
    Activity:
      required:
        - activatedPermissionsAvailable
        - activityType
        - actorAccountId
        - affectedObjectId
        - affectedObjectType
        - applicationActivityType
        - errorCode
        - id
        - objectMetadata
        - timestamp
      type: object
      properties:
        activatedPermissionsAvailable:
          type: boolean
          description: >
            If this is true, then the activatedPermissionSets are correct even
            if len(activatedPermissionSets) is zero. Otherwise, the activated
            permissions should be treated as unknown
        activatedPermissionSets:
          type: array
          description: >
            An array of permission specifications (one per resource class)
            associated with this activity
          items:
            $ref: '#/components/schemas/PermissionSetSpecification'
        activity:
          type: string
          description: The description of the activity that was logged
          example: CI
        activityMetadata:
          type: array
          description: >-
            An array of additional metadata values associated with the activity
            including cached activity data about the affected object using a
            namespace string equal to the affectedObjectType
          items:
            $ref: '#/components/schemas/MetadataItem'
        activityType:
          $ref: '#/components/schemas/ActivityType'
        actorAccountFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        actorAccountId:
          $ref: '#/components/schemas/LocallyUniqueAccountId'
        actorAuthenticationContext:
          type: string
          description: >
            An authentication method specific context that may be used by the
            platform to connect authentication activity and sessions across
            ApplicationInstances. For example, an enterprise application that
            has SSO to an identity provider could emit an event with an
            authentication method of SSO and an authentication context with the
            base64 encoded SHA256 hash of the authentication token. The
            corresponding IDP would emit an authentication activity with a
            method of Passkey and the same authentication token. This enables
            enrichment of application activities with the SSO authentication
            method. When the authentication context is empty (because the
            application could not provide the hash of the token), the Oleria
            platform will use other heuristics to try to connect the application
            activity with IDP authentication
          example: fBDpDdUUN1z0jMIUg1saZQmaA9Dx3B+0IPdcHG0fN4c=
        actorAuthenticationMethods:
          type: array
          description: Authentication methods associated with this activity and actor
          example:
            - BiometricAuthenticator
            - Passkey
          items:
            $ref: '#/components/schemas/AuthenticationMethod'
        actorAuthenticationScopes:
          $ref: '#/components/schemas/PermissionScopeSpecification'
        actorImpersonatorReference:
          $ref: '#/components/schemas/ImpersonatorReferenceInformation'
        actorLocation:
          $ref: '#/components/schemas/LocationSpecification'
        affectedObjectFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        affectedObjectId:
          $ref: '#/components/schemas/LocallyUniqueId'
        affectedObjectType:
          $ref: '#/components/schemas/ObjectType'
        applicationActivityType:
          type: string
          description: >-
            The application-specific activity type that is sometimes schematized
            to an Oleria activity type as defined by ActivityType. If there is a
            schematized corresponding activity type, then
            applicationActivityType gives additional application-specific
            information about the activity e.g. Login.Success ==
            org.sso_response for GitHub in the SSO login scenario. If there is
            not a relevant schematized type then activityType is
            ApplicationSpecific and the applicationActivityType is used to
            communicate the full information about the type of activity e.g.
            workflows.completed_workflow_run (GitHub), drive.access (Google
            Workspace)
          example: >-
            org.sso_response (GitHub), workflows.completed_workflow_run
            (GitHub), drive.access (Google Workspace)
        authenticationContextHistory:
          type: array
          description: >
            Historical _actorAuthenticationContext_ entries that can be
            associated with this _Activity_
          items:
            type: string
        browserName:
          type: string
          description: >-
            The name of the browser used for a web-based activity if applicable
            and available
          example: Chrome
        browserVersion:
          type: string
          description: >-
            The version of the browser used for a web-based activity if
            applicable and available
          example: '126'
        errorCode:
          type: integer
          description: >-
            For any activity type indicating failure e.g. login.failed, a reason
            code can be emitted with the activity
          example: 404
        errorCodeType:
          $ref: '#/components/schemas/ActivityErrorCodeType'
        errorDescription:
          type: string
          description: Error description string
          example: The requested resource was not found
        id:
          $ref: '#/components/schemas/LocallyUniqueId'
        ipAddress:
          type: string
          format: ip
          example: 192.39.212.89
        objectDirectoryContainerFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        objectDirectoryContainerId:
          $ref: '#/components/schemas/LocallyUniqueObjectDirectoryId'
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
        oleriaActivityTypeSpecificData:
          type: object
          description: >-
            Activity type specific data when activity type is an
            OleriaActivityType
          oneOf:
            - $ref: '#/components/schemas/AccessToDeletedActivityData'
            - $ref: '#/components/schemas/AuthenticationMethods'
            - $ref: '#/components/schemas/ContainerContentActivityInformation'
            - $ref: '#/components/schemas/LabelInformation'
            - $ref: '#/components/schemas/OwnershipChangeActivityData'
            - $ref: '#/components/schemas/RelationshipActivityData'
            - $ref: '#/components/schemas/UnmanagedApplicationEntitlementInfo'
        osName:
          type: string
          description: >-
            The name of the operating system being used by the source of the
            activity if available
          example: OSX
        osVersion:
          type: string
          description: >-
            The version of the operating system being used by the source of the
            activity if available
          example: 10.15.7
        pageUri:
          type: string
          description: >-
            The URI of the entity being used by the source of a web-based
            activity if applicable and available
          format: uri
          example: /lightning/r/Opportunity/006Dn000007rkDYIAY/view
        requestorAccountFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        requestorAccountId:
          $ref: '#/components/schemas/LocallyUniqueAccountId'
        secondaryAffectedObjects:
          type: array
          items:
            $ref: '#/components/schemas/EntityIdentifier'
        timestamp:
          type: string
          description: The timestamp of the activity
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
      description: >
        An Activity object represents an entry in an identity provider or
        application audit log. Activities are used by Oleria to deliver account
        analytics, group analytics, role mining, graph activity overlay, and
        many other features. A key part of interpreting an activity is through
        the lens of the activity type (especially Oleria schematized activity
        types). The [ActivityType](#/components/schemas/ActivityType) gives a
        description on how to interpret type specific data and what to expect
        for the activity's affected object
    AssignedApplication:
      required:
        - id
        - name
        - objectMetadata
      type: object
      properties:
        authenticationRequirements:
          $ref: '#/components/schemas/AuthenticationRequirements'
        id:
          $ref: '#/components/schemas/LocallyUniqueAssignedApplicationId'
        labels:
          type: array
          items:
            $ref: '#/components/schemas/MetadataItem'
        name:
          type: string
          description: The name of the assigned application
          example: GitHub Enterprise Cloud
        objectDirectoryContainerFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        objectDirectoryContainerId:
          $ref: '#/components/schemas/LocallyUniqueObjectDirectoryId'
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
        oauthClientId:
          type: string
          description: >-
            Plain-text OAuth client ID for this application instance.
            Informational — authenticationRequirements.authenticationKeys
            carries the authoritative hashed representation used for matching.
            Emitted alongside the hashed representation to support display and
            diagnostics.
          example: 1234567890abcdef.apps.googleusercontent.com
        samlEntityId:
          type: string
          description: >-
            Plain-text SAML service provider entity ID for this application
            instance. Informational —
            authenticationRequirements.authenticationKeys carries the
            authoritative hashed representation used for matching. Emitted
            alongside the hashed representation to support display and
            diagnostics.
          example: https://github.com/enterprises/acme-corp
        vendorName:
          type: string
          description: >-
            Name of the vendor for the enterprise application or identity
            provider product
          example: Microsoft
      description: >-
        An AssignedApplication object represents an enterprise SaaS application
        that has its access managed by an identity provider in the Oleria
        system. The identity provider may enumerate access to applications that
        are integrated or have not yet been integrated with Oleria (see the
        relationship definition UserGroupEntitledToAssignedApplication).
    Authenticator:
      required:
        - authenticationKeys
        - authenticationMethods
        - id
        - isActive
        - name
        - objectMetadata
      type: object
      properties:
        id:
          $ref: '#/components/schemas/LocallyUniqueId'
        authenticationKeys:
          type: array
          description: >
            Each array item is a base64 encoded SHA256 hash of authentication
            configuration properties.The authenticationKeys property is used by
            Oleria to match enterprise application IntegratedApplication objects
            with corresponding identity provider configured AssignedApplication
            objects assigned to accounts or groups. When these objects are
            connected and there's a match in authenticationKeys and federated
            identity, the Oleria platform will connect
            [Account](#/components/schemas/Account) objects that have an
            Identity
            [AccountAuthenticationFunction](#/components/schemas/AccountAuthenticationFunction)
            with their corresponding [Account](#/components/schemas/Account)
            objects that have an ApplicationAccount
            [AccountAuthenticationFunction](#/components/schemas/AccountAuthenticationFunction),
            and indicate an SSO-based login flow is available. The following
            protocol configurations are supported:
              1. SAML configurations encode the SAML certificate raw public key info
              2. First party configurations e.g. Microsoft Entra to Microsoft 365 Apps encode the app type + the first party instance specific instance key with a ":" delimiter
              3. OIDC configurations encode the lowercased issuer URL (with trailing slash appended) and the client ID, joined by a "," delimiter, SHA256 hashed and base64 (standard encoding) encoded. Example input: "https://login.example.com/tenant/v2.0/,client-id-abc"
              4. RADIUS configuration encoding is TBD
          example:
            - XD+NWux+oeqdAa1eUPtNC06g/HtrzM6AbNiZU2MhHSM=
          items:
            type: string
        authenticationMethods:
          type: array
          items:
            $ref: '#/components/schemas/AuthenticationMethod'
        description:
          type: string
        isActive:
          type: boolean
        name:
          type: string
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
      description: >
        An authenticator represents an IDP configured authentication mechanism
        that is available for assignment, enrollment, and login
    AuthenticatorEnrollment:
      required:
        - accountKey
        - authenticationMethods
        - enrolledAt
        - enrollmentStatus
        - id
        - objectMetadata
      type: object
      properties:
        id:
          $ref: '#/components/schemas/LocallyUniqueId'
        accountKey:
          type: string
          description: >
            The freeform string used by the authenticator provider to identify
            the enrolled account. Used by the platform to correlate this
            enrollment to an Account by matching against Account.alias,
            Account.email, or Account.alternateEmails via the authenticationKeys
            linkage.
        authenticationMethods:
          type: array
          items:
            $ref: '#/components/schemas/AuthenticationMethod'
          description: >-
            The authentication methods enrolled for this enrollment. Narrows the
            methods available on the parent Authenticator to those specifically
            active for this account enrollment.
        enrollmentStatus:
          $ref: '#/components/schemas/AuthenticatorEnrollmentStatus'
        enrolledAt:
          type: string
          format: date-time
          description: Timestamp when the enrollment was created
        revokedAt:
          type: string
          format: date-time
          description: Timestamp when the enrollment was revoked (if applicable)
        deviceInfo:
          $ref: '#/components/schemas/AuthenticatorEnrollmentDeviceInfo'
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
      description: >
        An AuthenticatorEnrollment represents a specific account's enrollment in
        an Authenticator. It records the enrolled authentication methods, the
        account key used to correlate to an Account, the enrollment lifecycle
        (status, timestamps), and optional device binding (e.g., a biometric
        device registered for a HYPR authenticator enrollment).
    Department:
      required:
        - id
        - name
        - objectMetadata
      type: object
      properties:
        authorizedLocations:
          $ref: '#/components/schemas/AuthorizedLocationPolicy'
        companyCode:
          type: string
          example: E39284
        createdDate:
          type: string
          description: |
            The date the _Department_ object was created
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        id:
          $ref: '#/components/schemas/LocallyUniqueDepartmentId'
        lastModifiedDate:
          type: string
          description: |
            The date the _Department object was last modified
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        name:
          type: string
          example: Engineering
        objectDirectoryContainerFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        objectDirectoryContainerId:
          $ref: '#/components/schemas/LocallyUniqueObjectDirectoryId'
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
        type:
          type: string
          description: >
            The type for the _Department_ object allowing it to represent
            different types of organizational units (this can be used as a
            display name)
          example: Division, Business Unit
      description: Business department or division
    DirectoryProvider:
      required:
        - directoryIntegratedApplicationAuthenticationKey
        - directoryIntegratedApplicationInstanceKey
        - id
        - name
        - objectMetadata
      type: object
      properties:
        directoryIntegratedApplicationAuthenticationKey:
          type: string
        directoryIntegratedApplicationInstanceKey:
          $ref: '#/components/schemas/IntegratedApplicationInstanceKey'
        entitySync:
          $ref: '#/components/schemas/EntitySyncSpecification'
        id:
          $ref: '#/components/schemas/LocallyUniqueId'
        name:
          type: string
          description: |
            Name associated with this directory provider connnection
        objectDirectoryContainerFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        objectDirectoryContainerId:
          $ref: '#/components/schemas/LocallyUniqueObjectDirectoryId'
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
        vendorName:
          type: string
          description: |
            Name of the vendor for the directory provider product
          example: Microsoft
      description: >
        This object is emitted by an IDP to indicate knowledge of and a sync
        relationship with (via
        [IntegratedApplicationRegisteredWithDirectoryProvider](#/components/schemas/IntegratedApplicationRegisteredWithDirectoryProvider))
        a directory
    Employee:
      required:
        - employmentType
        - id
        - objectMetadata
        - workName
      type: object
      properties:
        assignedLocations:
          type: array
          description: >
            These are the locations assigned as delivery points for this
            _Employee_
          items:
            $ref: '#/components/schemas/LocationSpecification'
        authorizedLocations:
          $ref: '#/components/schemas/AuthorizedLocationPolicy'
        companyName:
          type: string
          description: The official name of the employee's company
          example: Oleria Corporation
        costCenter:
          type: string
          description: |
            The cost center for the _Employee_
          example: '232345'
        createdDate:
          type: string
          description: |
            The date the _Employee_ object was created
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        employeeNumber:
          type: string
          description: |
            Business assigned _Employee_ number
          example: K34312
        employmentType:
          type: string
          description: |
            Business assigned employment type
          example: Contingent Staff, Full-time
        endDate:
          type: string
          description: |
            The _Employee_'s end date at the business
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        id:
          $ref: '#/components/schemas/LocallyUniqueEmployeeId'
        identityProofs:
          type: array
          items:
            $ref: '#/components/schemas/EmployeeProofOfIdentity'
        jobCode:
          type: string
          description: >
            Identifier of the _Employee_'s job or job profile, also known as the
            Job ID

            (Workday _Job Code_ — the Job Profile's reference ID; SuccessFactors
            _Job Classification_ code)
          example: '343949'
        jobFamily:
          type: string
          description: >
            The job family the _Employee_'s job belongs to — a grouping of
            related jobs that

            share core knowledge and background requirements (Workday and
            SuccessFactors _Job Family_).

            Narrower than _jobFamilyGroup_ and broader than _specialization_
          example: Software Engineering
        jobFamilyGroup:
          type: string
          description: >
            The broadest grouping of job families the _Employee_'s job belongs
            to

            (Workday _Job Family Group_)
          example: Technology
        jobFunction:
          type: string
          description: >
            The functional role or occupation the _Employee_ performs. A
            role-level descriptor,

            not a broad grouping — occupational groupings belong in _jobFamily_
            / _jobFamilyGroup_
          example: Software Architect
        lastDateWorked:
          type: string
          description: >
            The _Employee_'s last work date at the business (may be different
            from _endDate_)
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        lastModifiedDate:
          type: string
          description: |
            The date the _Employee_ object was last modified
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        objectDirectoryContainerFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        objectDirectoryContainerId:
          $ref: '#/components/schemas/LocallyUniqueObjectDirectoryId'
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
        primaryWorkEmail:
          type: string
          description: |
            The primary email address of the _Employee_
          format: email
          example: kirt@oleria.com
        resignationSubmissionDate:
          type: string
          description: |
            The _Employee_'s resignation date if applicable
          format: date-time
        specialization:
          type: string
          description: >
            A finer sub-discipline within the _Employee_'s _jobFamily_. There is
            no standard

            Workday or SuccessFactors foundation field for this — it is sourced
            from an org-defined

            specialty or sub-classification. Not the Workday _Job Category_
            field, which is a

            regulatory/EEO classification. Distinct from the business _title_
          example: Site Reliability
        startDate:
          type: string
          description: |
            The _Employee_'s start date at the business
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        title:
          type: string
          description: |
            The _Employee_'s title
          example: Chief Architect
        workEmails:
          type: array
          description: >
            Array of work emails for the _Employee_ (must include the
            _primaryWorkEmail_ when present)
          items:
            type: string
        workName:
          type: string
          description: |
            Full name used for employment purposes
      description: Employee at a business
    IntegratedApplication:
      required:
        - authenticationRequirements
        - category
        - id
        - key
        - name
        - objectMetadata
      type: object
      properties:
        authenticationRequirements:
          $ref: '#/components/schemas/AuthenticationRequirements'
        category:
          $ref: '#/components/schemas/ApplicationCategory'
        id:
          $ref: '#/components/schemas/LocallyUniqueIntegratedApplicationId'
        key:
          $ref: '#/components/schemas/IntegratedApplicationInstanceKey'
        labels:
          type: array
          items:
            $ref: '#/components/schemas/MetadataItem'
        name:
          $ref: '#/components/schemas/IntegratedApplicationInstanceName'
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
        supportedFederatedRelationships:
          type: array
          description: >
            An array of relationship types supported for federated connections
            e.g.
            [EntityAssignedAccessToObject](#/components/schemas/EntityAssignedAccessToObject)
            or
            [IdentityAccountMemberOfUserGroup](#/components/schemas/IdentityAccountMemberOfUserGroup).
            If federated connections are supported, then Oleria will use data in
            the edges emitted by the source application to do composite graph
            connections for the relevant source entities
          items:
            $ref: '#/components/schemas/RelationshipType'
        unsupportedTypes:
          $ref: '#/components/schemas/UnsupportedTypeSet'
          description: >
            Declares object and relationship types that this integration does
            not support despite its declared schema profile. Omitted when the
            integration fully satisfies its declared profile contract. See
            UnsupportedTypeSet for semantics.
        vendorName:
          type: string
          description: >-
            Name of the vendor for the enterprise application or identity
            provider product
          example: Microsoft
      description: >-
        An IntegratedApplication object represents a registered and integrated
        enterprise SaaS application, identity provider, or directory in the
        Oleria system
    ObjectDirectory:
      required:
        - id
        - name
        - objectMetadata
        - policyPropagation
        - policySettings
        - prohibitInheritedLabels
        - prohibitInheritedPermissions
        - resourceClass
      type: object
      properties:
        applicationType:
          type: string
          description: An application-specific type for the ObjectDirectory
          example: >-
            OU (AD), Environment (PingOne), Account (AWS), Management Group
            (Azure)
        authenticationRequirements:
          $ref: '#/components/schemas/AuthenticationRequirements'
        description:
          type: string
          description: Description of the object directory
        id:
          $ref: '#/components/schemas/LocallyUniqueId'
        labels:
          type: array
          items:
            $ref: '#/components/schemas/MetadataItem'
        name:
          type: string
          description: Name of the object directory
        objectDirectoryContainerFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        objectDirectoryContainerId:
          $ref: '#/components/schemas/LocallyUniqueObjectDirectoryId'
        objectDirectoryLabels:
          type: array
          description: >
            An array of
            [ObjectDirectoryLabel](#/components/schemas/ObjectDirectoryLabel)
            designations
          items:
            type: string
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
        policyPropagation:
          $ref: '#/components/schemas/ObjectDirectoryPolicyPropagation'
        policySettings:
          $ref: '#/components/schemas/ObjectDirectoryPolicySettings'
        prohibitInheritedLabels:
          type: boolean
          description: >
            Inherited labels e.g. container -> contained are not allowed on this
            object directory. Only directly assigned labels are honored
          example: false
        prohibitInheritedPermissions:
          type: boolean
          description: >
            Inherited permissions e.g. container -> contained are not allowed on
            this object directory. Only direct permissions are honored
          example: true
        resourceClass:
          type: string
          description: >
            The unique application-specific type of the _ObjectDirectory_ which
            connects it to a particular
            [ResourceClass](#/components/schemas/ResourceClass) via the
            _ResourceClass.name_ field
          example: repo
        secondaryResourceClasses:
          type: array
          items:
            type: string
      description: >
        An ObjectDirectory is an object representing a container of
        heterogeneous access control objects including
        [Account](#/components/schemas/Account), _ObjectDirectory_,
        [ResourceInstance](#/components/schemas/ResourceInstance),
        [Role](#/components/schemas/Role), and
        [UserGroup](#/components/schemas/UserGroup)
    PermissionSet:
      type: object
      properties:
        assignedObjectId:
          $ref: '#/components/schemas/LocallyUniqueId'
        cause:
          type: string
          description: >-
            The application-specific reason the permission set has access to the
            resource
          example: repo
        id:
          $ref: '#/components/schemas/LocallyUniquePermissionSetId'
        level:
          $ref: '#/components/schemas/PermissionLevel'
        name:
          minLength: 1
          type: string
          description: The name of the permission set
          example: private-repo permissions
        objectDirectoryContainerFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        objectDirectoryContainerId:
          $ref: '#/components/schemas/LocallyUniqueObjectDirectoryId'
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
        resourceClass:
          type: string
          description: >-
            The application-specific class of resource the permission set has
            access to
          example: repo
        sourceTag:
          type: string
          description: >-
            An application-specific tag representing the permission set
            information data source
          example: alpha
      description: >
        A PermissionSet object represents a "bundle" of permissions used by an
        entity ([Account](#/components/schemas/Account),
        [Role](#/components/schemas/Role), or
        [UserGroup](#/components/schemas/Role)) to access a
        [ResourceInstance](#/components/schemas/ResourceInstance) (or other
        objects). The AccessTo edges that go from the PermissionSet to the
        target object is where the specification of the permission is emitted
        e.g. see
        [PermissionAccessToResourceInstance](#/components/schemas/PermissionAccessToResourceInstance).
        Note that the PermissionSet object is being deprecated in favor of
        source applications emitting direct permission edges via
        [EntityAssignedAccessToObject](#/components/schemas/EntityAssignedAccessToObject)
      deprecated: true
    Person:
      required:
        - id
        - name
        - objectMetadata
      type: object
      properties:
        createdDate:
          type: string
          description: The date the object was created
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        id:
          $ref: '#/components/schemas/LocallyUniquePersonId'
        lastModifiedDate:
          type: string
          description: The date the object was last modified
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        name:
          type: string
          description: The name of the person
          example: Kirt Debique
        objectDirectoryContainerFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        objectDirectoryContainerId:
          $ref: '#/components/schemas/LocallyUniqueObjectDirectoryId'
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
        personalEmails:
          type: array
          description: >
            Array of personal emails for the _Person_ (must include the
            _primaryPersonalEmail_)
          items:
            type: string
        personalLocations:
          type: array
          description: >
            These are the locations assigned as delivery points for this
            _Person_
          items:
            $ref: '#/components/schemas/LocationSpecification'
        primaryPersonalEmail:
          type: string
          description: |
            Primary personal email for the _Person_
          example: kirt@bricklanerecords.com
      description: A human
    ResourceClass:
      required:
        - id
        - name
        - objectMetadata
      type: object
      properties:
        displayName:
          minLength: 1
          type: string
          description: >-
            The display name of the resource class (typically used to represent
            the resource class in a user experience)
          example: Repositories
        id:
          $ref: '#/components/schemas/LocallyUniqueResourceClassId'
        name:
          minLength: 1
          type: string
          description: >-
            The name of the resource class (this may be different from
            displayName)
          example: repo
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
        pageUri:
          type: string
          description: The URI of the resource entity
          format: uri
          example: /lightning/r/Opportunity
        sourceTag:
          type: string
          description: >-
            An application-specific tag representing the resource class
            information data source
          example: GitHub
      description: >-
        A ResourceClass object represents a class of resource instances within
        an application e.g. Opportunities in Salesforce. It is
        application-defined whether or not resource instances are expressly
        grouped under Resource objects or if they are represented directly as
        ResourceInstance objects with relevant ResourceInstance-specific nesting
    ResourceInstance:
      required:
        - id
        - isDeleted
        - name
        - objectMetadata
        - prohibitInheritedLabels
        - prohibitInheritedPermissions
        - resourceClass
      type: object
      properties:
        contentHashesOrFingerprints:
          type: array
          description: >
            Exposes [hashes or
            fingerprints](#/components/schemas/HashOrFingerprintAlgorithmPrefix)
            of the content represented by this _ResourceInstance_
          items:
            type: string
        createdBy:
          $ref: '#/components/schemas/LocallyUniqueAccountId'
        createdByFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        createdDate:
          type: string
          description: The date the resource instance was created
          format: date-time
        id:
          $ref: '#/components/schemas/LocallyUniqueResourceInstanceId'
        isDeleted:
          type: boolean
          description: >-
            Has this resource instance been deleted? A deleted resource instance
            may still be represented in the Oleria composite graph of an
            application's identity security
          example: false
        labels:
          type: array
          items:
            $ref: '#/components/schemas/MetadataItem'
        lastModifiedBy:
          $ref: '#/components/schemas/LocallyUniqueAccountId'
        lastModifiedByFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        lastModifiedDate:
          type: string
          description: The date the resource instance was last modified
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        name:
          minLength: 1
          type: string
          description: The name of the resource instance
          example: oleria
        objectDirectoryContainerFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        objectDirectoryContainerId:
          $ref: '#/components/schemas/LocallyUniqueObjectDirectoryId'
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
        pageUri:
          type: string
          description: The URI of the resource instance entity
          format: uri
          example: >-
            /lightning/r/Opportunity/006Dn000007rkDYIAY/view,
            https://github.com/roanokedatasecurity/oleria
        prohibitInheritedLabels:
          type: boolean
          description: >
            Inherited labels e.g. container -> contained are not allowed on this
            resource instance. Only directly assigned labels are honored
          example: false
        prohibitInheritedPermissions:
          type: boolean
          description: >
            Inherited permissions e.g. container -> contained are not allowed on
            this resource instance. Only direct permissions are honored
          example: true
        resourceClass:
          type: string
          description: >
            The unique application-specific type of the _ResourceInstance_ which
            connects it to a particular
            [ResourceClass](#/components/schemas/ResourceClass) via the
            _ResourceClass.name_ field
          example: repo
        secondaryResourceClasses:
          type: array
          items:
            type: string
        sourceTag:
          type: string
          description: >-
            An application-specific tag representing the resource instance
            information data source
      description: >-
        A ResourceInstance object represents an application-specific instance of
        a resource controlled by the application's access control system e.g.
        Repositories in GitHub or Files in Google Drive
    RiskDefinition:
      type: object
      properties:
        consequence:
          type: string
          description: The consequence of the risk being violated
          example: >-
            Personal access tokens are impersonation passkeys that can create
            significant security exposure if compromised.
        id:
          type: string
          description: A identifier for the definition (unique to the application)
          example: >-
            github-config-risk-org-has-personal-access-token-authorizations-with-no-expiration
        mappingId:
          type: string
          description: >-
            A globally unique identifier used to map risk violations to
            definitions
          example: F7B2EE88-C51F-4FF1-AC23-BFB4082F7FD3
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
        recommendation:
          type: string
          description: A recommendation for remediation of a risk violation
          example: >-
            Under SSO Linked Identity for the user, view access tokens and
            revoke the access token authorization
        severity:
          $ref: '#/components/schemas/RiskSeverity'
        sourceTag:
          type: string
          description: >-
            An application-specific tag representing the risk definition
            information data source
          example: GitHub Configuration Risks
        title:
          type: string
          description: The title of the risk
          example: >-
            Organization should not have personal access tokens with NO
            expiration date
        type:
          $ref: '#/components/schemas/RiskType'
        violationDataType:
          $ref: '#/components/schemas/RiskViolationDataType'
      description: A RiskDefinition object represents a class of risk in the Oleria system
      deprecated: true
    RiskViolation:
      required:
        - affectedObjectId
        - affectedObjectType
        - id
        - mappingId
        - objectMetadata
      type: object
      properties:
        affectedObjectFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        affectedObjectId:
          $ref: '#/components/schemas/LocallyUniqueId'
        affectedObjectType:
          $ref: '#/components/schemas/ObjectType'
        id:
          type: string
          description: A identifier for the violation (unique to the application)
          example: A8C2EE88-D62F-5A01-BD33-C0C5082F80E4
        mappingId:
          type: string
          description: >-
            A globally unique identifier used to map risk violations to
            definitions
          example: F7B2EE88-C51F-4FF1-AC23-BFB4082F7FD3
        objectDirectoryContainerFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        objectDirectoryContainerId:
          $ref: '#/components/schemas/LocallyUniqueObjectDirectoryId'
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
        violationMetadata:
          type: array
          description: >-
            A string to string array of additional metadata values associated
            with the risk violation
          items:
            $ref: '#/components/schemas/MetadataItem'
      description: A RiskViolation object represents a risk that has occurred
    Role:
      required:
        - applicationRoleType
        - id
        - isCustom
        - name
        - objectMetadata
        - type
      type: object
      properties:
        applicationRoleType:
          type: string
          description: >-
            This is an application-specific string indicating the type of role
            being represented by the Role object. Typically this is the
            information used to derive the RoleType specified in the Role.type
            field or something related to the source of the Role specified in
            Role.sourceTag
        authorizedLocations:
          $ref: '#/components/schemas/AuthorizedLocationPolicy'
        createdBy:
          $ref: '#/components/schemas/LocallyUniqueAccountId'
        createdByFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        createdDate:
          type: string
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        description:
          type: string
          description: >-
            The description of the role indicating its purpose in grouping
            permissions and granting access to resources
          example: oleria Repos Writers
        id:
          $ref: '#/components/schemas/LocallyUniqueRoleId'
        isCustom:
          type: boolean
          description: >-
            Is this a custom-defined role? If true, then the Role.type equals
            Custom
          example: false
        lastModifiedBy:
          $ref: '#/components/schemas/LocallyUniqueAccountId'
        lastModifiedByFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        lastModifiedDate:
          type: string
          description: The date the role was last modified
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        name:
          minLength: 1
          type: string
          description: >-
            The name of the role which is typically informative of the role's
            purpose for granting access to resources (see also description)
          example: oleria Repo Maintainers
        objectDirectoryContainerFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        objectDirectoryContainerId:
          $ref: '#/components/schemas/LocallyUniqueObjectDirectoryId'
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
        sourceTag:
          type: string
          description: >-
            An application-specific tag representing the role information data
            source
          example: oleria
        type:
          $ref: '#/components/schemas/RoleType'
      description: >-
        A Role object represents a security role that can be assigned to
        accounts and groups in an application and is typically used in
        role-based access control (RBAC) systems to group and represents one or
        more sets of permissions that grant access to resources
    UserGroup:
      required:
        - applicationGroupType
        - id
        - name
        - objectMetadata
        - type
      type: object
      properties:
        applicationGroupType:
          type: string
          description: >-
            This is an application-specific string indicating the type of group
            being represented by the UserGroup object. Typically this is the
            information used to derive the UserGroupType specified in the
            UserGroup.type field
          example: EmailDistributionList
        authenticationRequirements:
          $ref: '#/components/schemas/AuthenticationRequirements'
        authorizedLocations:
          $ref: '#/components/schemas/AuthorizedLocationPolicy'
        createdBy:
          $ref: '#/components/schemas/LocallyUniqueAccountId'
        createdByFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        createdDate:
          type: string
          description: The date the group was created
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        description:
          type: string
          description: The description of the group
          example: AI Maintainers
        directoryEntryFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        directoryEntryId:
          type: string
          description: >
            The _directoryEntryId_ is emitted when this _UserGroup_ object is
            synced with an _UserGroup_ object emitted by a directory. The id
            here should match the synced _UserGroup.id_
        directoryProviderFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        directoryProviderId:
          type: string
          description: >
            The _directoryProviderId_ indicates the
            [DirectoryProvider](#/components/schemas/DirectoryProvider) defining
            the directory sync relationship for this group            
        email:
          type: string
          description: The email address associated with the group
          format: email
          example: ai-maintainers@oleria.com
        id:
          $ref: '#/components/schemas/LocallyUniqueUserGroupId'
        labels:
          type: array
          description: >
            Label tags associated with the group, particularly when used for
            data classification and sensitivity targeting          
          items:
            $ref: '#/components/schemas/MetadataItem'
        lastModifiedBy:
          $ref: '#/components/schemas/LocallyUniqueAccountId'
        lastModifiedByFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        lastModifiedDate:
          type: string
          description: The date the group was last modified
          format: date-time
          example: '2024-05-02T03:17:34.948Z'
        name:
          minLength: 1
          type: string
          description: >-
            The name (title) of the group which is typically informative of the
            group's purpose for granting access to resources (see also
            description)
          example: AI Maintainers
        objectDirectoryContainerFederation:
          $ref: '#/components/schemas/EntityIdentifierFederationInformation'
        objectDirectoryContainerId:
          $ref: '#/components/schemas/LocallyUniqueObjectDirectoryId'
        objectMetadata:
          $ref: '#/components/schemas/ObjectMetadata'
        profileMetadata:
          type: array
          description: >
            An array of profile key-value pairs extending the schema of the
            _UserGroup_ object          
          items:
            $ref: '#/components/schemas/MetadataItem'
        provisioning:
          type: array
          description: >
            An array detailing all participants in a provisioning relationship
            with this _UserGroup_
          items:
            $ref: '#/components/schemas/ProvisioningParticipant'
        sourceTag:
          type: string
          description: >-
            An application-specific tag representing the group information data
            source
          example: OrgTeams
        type:
          $ref: '#/components/schemas/UserGroupType'
      description: >-
        A UserGroup object represents groups of accounts (users) associated with
        an application or IDP e.g. Google Groups, GitHub Teams, or Salesforce
        Groups
    GeoLocation:
      type: object
      required:
        - latitude
        - longtitude
      properties:
        latitude:
          type: number
        longtitude:
          type: number
      description: Latitude and longtitude specification for a location
    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
    EntitySyncAttributeSpecifiers:
      type: string
      enum:
        - OnCreate
        - OnUpdate
    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
    ActivityType:
      type: string
      description: >
        An Oleria schematization of activity types to enable type specific
        system processing. The following table details the type-specific data
        associated with these schematized activities as well as the affected
        object. Note: for enterprise applications and directories,
        xxxApplication == IntegratedApplication; for identity providers a)
        xxxApplication == AssignedApplication for SSO login activity, b)
        xxxApplication == IntegratedApplication for any other activities
        including local login and logout


        | Activity Type                             |
        Data                                                                |
        Affected Object             |

        |-------------------------------------------|---------------------------------------------------------------------|-----------------------------|

        | AccessTo.Deleted                          |
        [Link](#/components/schemas/AccessToDeletedActivityData)            |
        ResourceInstance            |

        | Account.AccountRoleChanged                |
        N/A                                                                 |
        Account                     |

        | Account.Disabled                          |
        N/A                                                                 |
        Account                     |

        | Account.Enabled                           |
        N/A                                                                 |
        Account                     |

        | Account.Impersonated                      |
        N/A                                                                 |
        Account                     |

        | Authentication.Methods.Added              |
        [Link](#/components/schemas/AuthenticationMethods)                  |
        Integrated Application      |

        | Authentication.Methods.Authorized         |
        [Link](#/components/schemas/AuthenticationMethods)                  |
        Integrated Application      |

        | Authentication.Methods.Removed            |
        [Link](#/components/schemas/AuthenticationMethods)                  |
        Integrated Application      |

        | Authentication.Methods.ResetAllowed       |
        N/A                                                                 |
        Integrated Application      |

        | Authentication.Methods.ResetDisallowed    |
        N/A                                                                 |
        Integrated Application      |

        | Authentication.Methods.Revoked            |
        [Link](#/components/schemas/AuthenticationMethods)                  |
        Integrated Application      |

        | Authentication.Methods.Updated            |
        [Link](#/components/schemas/AuthenticationMethods)                  |
        Integrated Application      |

        | Authentication.Policy.General.Added       |
        N/A                                                                 |
        Integrated Application      |

        | Authentication.Policy.General.Removed     |
        N/A                                                                 |
        Integrated Application      |

        | Authentication.Policy.General.Updated     |
        N/A                                                                 |
        Integrated Application      |

        | Authentication.Policy.Method.NotRequired  |
        [Link](#/components/schemas/AuthenticationMethods)                  |
        Integrated Application      |

        | Authentication.Policy.Method.Required     |
        [Link](#/components/schemas/AuthenticationMethods)                  |
        Integrated Application      |

        | Authentication.Policy.MFA.Adaptive        |
        N/A                                                                 |
        Integrated Application      |

        | Authentication.Policy.MFA.NotRequired     |
        N/A                                                                 |
        Integrated Application      |

        | Authentication.Policy.MFA.Required        |
        N/A                                                                 |
        Integrated Application      |

        | Authentication.Policy.Password.Added      |
        N/A                                                                 |
        Integrated Application      |

        | Authentication.Policy.Password.Removed    |
        N/A                                                                 |
        Integrated Application      |

        | Authentication.Policy.Password.Updated    |
        N/A                                                                 |
        Integrated Application      |

        | Authentication.Policy.SSO.NotRequired     |
        N/A                                                                 |
        Integrated Application      |

        | Authentication.Policy.SSO.Required        |
        N/A                                                                 |
        Integrated Application      |

        | Authentication.Policy.SSO.Updated         |
        N/A                                                                 |
        Integrated Application      |

        | Authentication.Secret.Added               |
        N/A                                                                 |
        Secret dependent            |

        | Authentication.Secret.Removed             |
        N/A                                                                 |
        Secret dependent            |

        | Authentication.Secret.Rotated             |
        N/A                                                                 |
        Secret dependent            |

        | Authentication.Secret.Updated             |
        N/A                                                                 |
        Secret dependent            |

        | Authorization.Access.Authorized           |
        N/A                                                                 |
        Resource Instance           |

        | Authorization.Access.Denied               |
        N/A                                                                 |
        Resource Instance           |

        | Authorization.Access.Granted              |
        N/A                                                                 |
        Resource Instance           |

        | Authorization.Access.Requested            |
        N/A                                                                 |
        Resource Instance           |

        | Authorization.Access.Revoked              |
        N/A                                                                 |
        Resource Instance           |

        | Authorization.Access.Updated              |
        N/A                                                                 |
        Resource Instance           |

        | Authorization.Requirements.Created        |
        N/A                                                                 |
        Resource Instance           |

        | Authorization.Requirements.Deleted        |
        N/A                                                                 |
        Resource Instance           |

        | Authorization.Requirements.Updated        |
        N/A                                                                 |
        Resource Instance           |

        | Authorization.UnmanagedApplication.Granted |
        [Link](#/components/schemas/UnmanagedApplicationEntitlementInfo) |
        Account                     |

        | Authorization.UnmanagedApplication.Revoked |
        [Link](#/components/schemas/UnmanagedApplicationEntitlementInfo) |
        Account                     |

        | Container.Content.Activity               
        |[Link](#/components/schemas/ContainerContentActivityInformation)     |
        Resource Instance           |

        | Content.Download.Failed                   |
        N/A                                                                 |
        Resource Instance           |

        | Content.Download.Success                  |
        N/A                                                                 |
        Resource Instance           |

        | Content.Upload.Failed                     |
        N/A                                                                 |
        Resource Instance           |

        | Content.Upload.Success                    |
        N/A                                                                 |
        Resource Instance           |

        | Endpoint.Access.AccountToService.Failed   |
        N/A                                                                 |
        Integrated Application      |

        | Endpoint.Access.AccountToService.Success  |
        N/A                                                                 |
        Integrated Application      |

        | Endpoint.Access.AccountToUnmanagedApplication.Failed |
        N/A                                                     |
        Account                     |

        | Endpoint.Access.AccountToUnmanagedApplication.Success |
        N/A                                                    |
        Account                     |

        | Endpoint.Access.ServiceToService.Failed   |
        N/A                                                                 |
        Integrated Application      |

        | Endpoint.Access.ServiceToService.Success  |
        N/A                                                                 |
        Integrated Application      |

        | Label.Added                               |
        [Link](#/components/schemas/LabelInformation)                       |
        Label target dependent      |

        | Label.Created                             |
        [Link](#/components/schemas/LabelInformation)                       |
        Label target dependent      |

        | Label.Destroyed                           |
        [Link](#/components/schemas/LabelInformation)                       |
        Label target dependent      |

        | Label.Updated                             |
        [Link](#/components/schemas/LabelInformation)                       |
        Label target dependent      |

        | Label.Removed                             |
        [Link](#/components/schemas/LabelInformation)                       |
        Label target dependent      |

        | License.Added                             |
        N/A                                                                 |
        License dependent           |

        | License.Assigned                          |
        N/A                                                                 |
        License dependent           |

        | License.Removed                           |
        N/A                                                                 |
        License dependent           |

        | License.Unassigned                        |
        N/A                                                                 |
        License dependent           | 

        | License.Updated                           |
        N/A                                                                 |
        License dependent           |

        | Login.Failed                              |
        N/A                                                                 |
        xxxApplication              |

        | Login.Remote.Failed                       |
        N/A                                                                 |
        Resource Instance           |

        | Login.Remote.Success                      |
        N/A                                                                 |
        Resource Instance           |

        | Login.Success                             |
        N/A                                                                 |
        xxxApplication              |

        | Logout                                    |
        N/A                                                                 |
        xxxApplication              |

        | Logout.Remote                             |
        N/A                                                                 |
        Resource Instance           |

        | Object.Created                            |
        N/A                                                                 |
        Object dependent            |

        | Object.Deleted                            |
        N/A                                                                 |
        Object dependent            |

        | Object.Updated                            |
        N/A                                                                 |
        Object dependent            |

        | Ownership.Added                           |
        [Link](#/components/schemas/OwnershipChangeActivityData)            |
        Resource whose ownership changed |

        | Ownership.Removed                         |
        [Link](#/components/schemas/OwnershipChangeActivityData)            |
        Resource whose ownership changed |

        | Ownership.Transferred                     |
        [Link](#/components/schemas/OwnershipChangeActivityData)            |
        Resource whose ownership changed |

        | Password.ChangedByUser                    |
        N/A                                                                 |
        User Account                |

        | Password.ChangedForUser                   |
        N/A                                                                 |
        User Account                |

        | Password.ResetByUser                      |
        N/A                                                                 |
        User Account                |

        | Password.ResetForUser                     |
        N/A                                                                 |
        User Account                |

        | Relationship.Created                      |
        [Link](#/components/schemas/RelationshipActivityData)               |
        None                        |

        | Relationship.Deleted                      |
        [Link](#/components/schemas/RelationshipActivityData)               |
        None                        |

        | Relationship.Updated                      |
        [Link](#/components/schemas/RelationshipActivityData)               |
        None                        |

        | Security.Notification                     |
        N/A                                                                 |
        Setting dependent           |

        | Settings.Updated                          |
        N/A                                                                 |
        Setting dependent           |

        | Suspicious.Login.Failed                   |
        N/A                                                                 |
        xxxApplication              |

        | Suspicious.Login.Success                  |
        N/A                                                                 |
        xxxApplication              |

        | App.Custom                                |
        N/A                                                                 |
        App dependent               |
      example: Login.Success
      enum:
        - AccessTo.Deleted
        - Account.AccountRoleChanged
        - Account.Disabled
        - Account.Enabled
        - Account.Impersonated
        - Authentication.Methods.Added
        - Authentication.Methods.Authorized
        - Authentication.Methods.Removed
        - Authentication.Methods.ResetAllowed
        - Authentication.Methods.ResetDisallowed
        - Authentication.Methods.Revoked
        - Authentication.Methods.Updated
        - Authentication.Policy.General.Added
        - Authentication.Policy.General.Removed
        - Authentication.Policy.General.Updated
        - Authentication.Policy.Method.NotRequired
        - Authentication.Policy.Method.Required
        - Authentication.Policy.MFA.Adaptive
        - Authentication.Policy.MFA.NotRequired
        - Authentication.Policy.MFA.Required
        - Authentication.Policy.Password.Added
        - Authentication.Policy.Password.Removed
        - Authentication.Policy.Password.Updated
        - Authentication.Policy.SSO.NotRequired
        - Authentication.Policy.SSO.Required
        - Authentication.Policy.SSO.Updated
        - Authentication.Secret.Added
        - Authentication.Secret.Removed
        - Authentication.Secret.Rotated
        - Authentication.Secret.Updated
        - Authorization.Access.Authorized
        - Authorization.Access.Denied
        - Authorization.Access.Granted
        - Authorization.Access.Requested
        - Authorization.Access.Revoked
        - Authorization.Access.Updated
        - Authorization.Requirements.Created
        - Authorization.Requirements.Deleted
        - Authorization.Requirements.Updated
        - Authorization.UnmanagedApplication.Granted
        - Authorization.UnmanagedApplication.Revoked
        - Container.Content.Activity
        - Content.Download.Failed
        - Content.Download.Success
        - Content.Upload.Failed
        - Content.Upload.Success
        - Endpoint.Access.AccountToService.Failed
        - Endpoint.Access.AccountToService.Success
        - Endpoint.Access.AccountToUnmanagedApplication.Failed
        - Endpoint.Access.AccountToUnmanagedApplication.Success
        - Endpoint.Access.ServiceToService.Failed
        - Endpoint.Access.ServiceToService.Success
        - Label.Added
        - Label.Created
        - Label.Destroyed
        - Label.Updated
        - Label.Removed
        - License.Added
        - License.Assigned
        - License.Removed
        - License.Unassigned
        - License.Updated
        - Login.Failed
        - Login.Remote.Failed
        - Login.Remote.Success
        - Login.Success
        - Logout
        - Logout.Remote
        - Object.Created
        - Object.Deleted
        - Object.Updated
        - Ownership.Added
        - Ownership.Removed
        - Ownership.Transferred
        - Password.ChangedByUser
        - Password.ChangedForUser
        - Password.ResetByUser
        - Password.ResetForUser
        - Relationship.Created
        - Relationship.Deleted
        - Relationship.Updated
        - Secret.Added
        - Secret.Deleted
        - Secret.Revocation.Failed
        - Secret.Revocation.Success
        - Secret.Updated
        - Secret.Verification.Failed
        - Secret.Verification.Success
        - Security.Notification
        - Settings.Updated
        - Suspicious.Login.Failed
        - Suspicious.Login.Success
        - Token.Revocation.Failed
        - Token.Revocation.Requested
        - Token.Revocation.Success
        - App.Custom
    ImpersonatorReferenceInformation:
      type: object
      properties:
        accountReference:
          description: >-
            Reference to the impersonating account which is interpreted based on
            the impersonationType
          oneOf:
            - $ref: '#/components/schemas/FederatedAccountAccessInformation'
            - $ref: '#/components/schemas/LocalAccountAccessInformation'
            - $ref: '#/components/schemas/PrivateTokenAccountAccessInformation'
        type:
          $ref: '#/components/schemas/ImpersonationType'
      description: >-
        The ImpersonatorReferenceInformation describes the impersonating account
        for an activity that is based on the impersonation auth method
    ActivityErrorCodeType:
      type: string
      enum:
        - HTTP
        - IntegratedApplication
    AccessToDeletedActivityData:
      type: object
      properties:
        fromId:
          $ref: '#/components/schemas/LocallyUniqueId'
        toId:
          $ref: '#/components/schemas/LocallyUniqueId'
      description: >-
        Activity specific data for
        [AccessTo.Deleted](#/components/schemas/ActivityType)
    ContainerContentActivityInformation:
      type: object
      properties:
        activityType:
          $ref: '#/components/schemas/ActivityType'
        applicationActivityType:
          type: string
        description:
          type: string
        name:
          type: string
        oleriaActivityTypeSpecificData:
          type: object
          description: >-
            Activity type specific data when activity type is an Oleria
            ActivityType
          oneOf:
            - $ref: '#/components/schemas/AccessToDeletedActivityData'
            - $ref: '#/components/schemas/ContainerContentActivityInformation'
            - $ref: '#/components/schemas/RelationshipActivityData'
            - $ref: '#/components/schemas/AuthenticationMethods'
            - $ref: '#/components/schemas/EntityIdentifier'
        uri:
          type: string
      description: >
        This data structure is used to convey information regarding a content
        notification coming out of a container
    LabelInformation:
      type: object
      properties:
        description:
          type: string
        name:
          type: string
      description: >
        Information used to describe a label for data classification, data
        sensitivity, etc.
    OwnershipChangeActivityData:
      type: object
      properties:
        newOwnerId:
          $ref: '#/components/schemas/EntityIdentifier'
        priorOwnerId:
          $ref: '#/components/schemas/EntityIdentifier'
      description: >
        Activity-specific data for the Ownership.* activity family. Carries the
        owner principal(s) for ownership state changes. EntityIdentifier (not
        LocallyUniqueAccountId) because owners can be non-account principals
        (ServicePrincipals, etc.). priorOwnerId is null for Ownership.Added;
        newOwnerId is null for Ownership.Removed; both populated for
        Ownership.Transferred.
    RelationshipActivityData:
      type: object
      properties:
        federationSpecification:
          $ref: '#/components/schemas/FederatedRelationshipSpecification'
        relationshipFromId:
          $ref: '#/components/schemas/LocallyUniqueId'
        relationshipFromType:
          $ref: '#/components/schemas/ObjectType'
        relationshipId:
          $ref: '#/components/schemas/LocallyUniqueId'
        relationshipToId:
          $ref: '#/components/schemas/LocallyUniqueId'
        relationshipToType:
          $ref: '#/components/schemas/ObjectType'
        relationshipType:
          $ref: '#/components/schemas/RelationshipType'
        relationshipTypeSpecificData:
          oneOf:
            - $ref: '#/components/schemas/EntitlementSpecification'
            - $ref: '#/components/schemas/ImpersonationRestrictions'
            - $ref: '#/components/schemas/PermissionSetSpecification'
            - $ref: '#/components/schemas/ScopedMembershipPermissions'
      description: >-
        Details the information about a relationship (edge) associated with a
        Relationship.XXX activity
    UnmanagedApplicationEntitlementInfo:
      type: object
      required:
        - applicationName
        - grantedScopesStatus
        - vendorVerificationStatus
      description: >
        Type-specific data for Authorization.UnmanagedApplication.Granted and
        Authorization.UnmanagedApplication.Revoked activity events. Carries the
        state of an OAuth grant from a user to a Shadow IT / unmanaged
        application discovered via IdP OAuth grant logs.


        An unmanaged application is one where a user granted OAuth access via
        their own initiative, bypassing IT governance entirely. This is distinct
        from admin-provisioned SSO applications (EntitlementReason.SSO) and
        undergoverned applications (where an admin made a deliberate
        provisioning decision without full governance lifecycle).


        For unmanaged application usage signals, see
        Endpoint.Access.AccountToUnmanagedApplication.Success/Failed — those
        activity types carry no type-specific data; scope usage is expressed via
        activatedPermissionSets on the Activity object.
      properties:
        applicationDescription:
          type: string
          description: >-
            Human-readable description of the unmanaged app from the IdP OAuth
            app registration. Primarily useful for human triage; lower-signal
            for platform risk scoring.
        applicationMetadata:
          type: array
          description: >-
            Application-specific additional context about the unmanaged
            application.
          items:
            $ref: '#/components/schemas/MetadataItem'
        applicationName:
          minLength: 1
          type: string
          description: >-
            Display name of the shadow/unmanaged app as reported by the IdP. If
            the IdP has no name, the source application should synthesize one
            from clientId.
        clientId:
          type: string
          description: >-
            OAuth client ID of the unmanaged app. Enables cross-tenant
            correlation of the same OAuth registration. Also serves as a
            fallback identifier when applicationName is ambiguous.
        grantedScopes:
          $ref: '#/components/schemas/PermissionScopeSpecification'
          description: >-
            The OAuth scopes the user granted to the unmanaged app. Populated
            only when grantedScopesStatus is GrantedAndObservable.
        grantedScopesStatus:
          $ref: '#/components/schemas/GrantedScopesStatus'
        vendorName:
          type: string
          description: >-
            Developer or vendor name as reported by the IdP. Consistent with
            vendorName usage on AssignedApplication, IntegratedApplication, and
            DirectoryProvider.
        vendorVerificationStatus:
          $ref: '#/components/schemas/VendorVerificationStatus'
    AuthenticationRequirements:
      type: object
      required:
        - isMFAAuthority
        - isSSOBasedMFARequired
      properties:
        authenticationKeys:
          type: array
          description: >
            Each array item is a base64 encoded SHA256 hash of authentication
            configuration properties.The authenticationKeys property is used by
            Oleria to match enterprise application IntegratedApplication objects
            with corresponding identity provider configured AssignedApplication
            objects assigned to accounts or groups. When these objects are
            connected and there's a match in authenticationKeys and federated
            identity, the Oleria platform will connect
            [Account](#/components/schemas/Account) objects that have an
            Identity
            [AccountAuthenticationFunction](#/components/schemas/AccountAuthenticationFunction)
            with their corresponding [Account](#/components/schemas/Account)
            objects that have an ApplicationAccount
            [AccountAuthenticationFunction](#/components/schemas/AccountAuthenticationFunction),
            and indicate an SSO-based login flow is available. The following
            protocol configurations are supported:
              1. SAML configurations encode the SAML certificate raw public key info
              2. First party configurations e.g. Microsoft Entra to Microsoft 365 Apps encode the app type + the first party instance specific instance key with a ":" delimiter
              3. OIDC configurations encode the lowercased issuer URL (with trailing slash appended) and the client ID, joined by a "," delimiter, SHA256 hashed and base64 (standard encoding) encoded. Example input: "https://login.example.com/tenant/v2.0/,client-id-abc"
              4. RADIUS configuration encoding is TBD
          example:
            - XD+NWux+oeqdAa1eUPtNC06g/HtrzM6AbNiZU2MhHSM=
          items:
            type: string
        adaptiveAuthenticationMethodSelectionPolicy:
          type: array
          items:
            $ref: '#/components/schemas/AdaptiveAuthenticationMethodSelectionPolicy'
        authenticationMethodSelectionPolicy:
          $ref: '#/components/schemas/AuthenticationMethodSelectionPolicy'
        availableAuthenticationMethods:
          type: array
          items:
            $ref: '#/components/schemas/AuthenticationMethod'
        enforcedAuthenticationMethods:
          type: array
          items:
            $ref: '#/components/schemas/AuthenticationMethod'
        isMFAAuthority:
          type: boolean
          description: >-
            Is this the MFA authority for authentication associated with this
            application. If false, then a connected identity provider is usually
            the MFA authority
          example: true
        isSSOBasedMFARequired:
          type: boolean
          description: >-
            Does that application require MFA to be done at the configured IDP
            to allow login
          example: false
        passwordPolicy:
          $ref: '#/components/schemas/PasswordPolicy'
        secondaryFactorRequirements:
          $ref: '#/components/schemas/MFARequirements'
        ssoExclusions:
          type: array
          description: >
            An array of account ids for accounts that are excluded from SSO
            requirements. These are typically used in the context of break glass
            scenarios
          items:
            $ref: '#/components/schemas/LocallyUniqueAccountId'
      description: >-
        AuthenticationRequirements are used to specify authentication
        requirement configuration for Oleria integrated applications as
        described by their corresponding IntegratedApplication object
    LocallyUniqueAssignedApplicationId:
      type: string
      description: >
        An identifier for an
        [AssignedApplication](#/components/schemas/AssignedApplication) object
        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 id so connections to the object are robust to
        metadata changes and other relevant operations.
      example: 0oa1qcscnzkl4DTym1d8 (Okta)
    AuthenticatorEnrollmentStatus:
      type: string
      enum:
        - Active
        - Pending
        - Revoked
        - Suspended
      description: >
        The lifecycle status of an AuthenticatorEnrollment. Active indicates a
        fully enrolled and usable enrollment. Pending indicates enrollment
        initiated but not yet completed (e.g., device registration required).
        Revoked indicates the enrollment has been explicitly revoked. Suspended
        indicates the enrollment is temporarily inactive.
    AuthenticatorEnrollmentDeviceInfo:
      required:
        - deviceId
        - deviceType
        - registeredAt
      type: object
      properties:
        deviceId:
          type: string
          description: >-
            Unique identifier for the device as assigned by the authenticator
            provider
        deviceType:
          type: string
          description: >-
            Type of device bound to this enrollment (e.g., TouchID,
            WindowsHello, YubiKey). Free-form string to accommodate
            provider-specific device taxonomies.
        deviceName:
          type: string
          description: >-
            Human-readable display name for the device, if provided by the
            authenticator provider
        registeredAt:
          type: string
          format: date-time
          description: Timestamp when the device was registered to this enrollment
      description: >
        Device binding information for an AuthenticatorEnrollment. Present when
        the authenticator requires a specific physical device (e.g.,
        device-bound biometric or hardware security key).
    LocallyUniqueDepartmentId:
      type: string
      description: >
        An identifier for a [Department](#/components/schemas/Department) object
        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 id so connections to the object are robust to
        metadata changes and other relevant operations.
      example: A34938434
    IntegratedApplicationInstanceKey:
      type: string
      description: >-
        The unique application-specific key that maps to a specific service
        instance integrated with Oleria. This key is used to prevent instance
        collision when adding integrations to the system
      example: O_kgDOCfJllg (GitHub)
    LocallyUniqueEmployeeId:
      type: string
      description: >
        An identifier for an [Employee](#/components/schemas/Employee) object 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 id so connections to the object are robust to
        metadata changes and other relevant operations.
      example: E232235
    EmployeeProofOfIdentity:
      type: object
      properties:
        countryOfId:
          type: string
          description: ISO 3166-1 A-2 country code
        typeOfId:
          type: string
          description: Type of the identity proof for the given country
      description: Indicates how the employee's identity was verified
    ApplicationCategory:
      type: string
      description: |
        Categories of application that can be integrated with Oleria
      enum:
        - BusinessApplication
        - CloudDataService
        - CloudInfrastructure
        - Collaboration
        - Communications
        - CRM
        - CustomApplication
        - DeveloperTool
        - DirectoryService
        - Finance
        - HRIS
        - IdentityProvider
        - ITSM
        - LogAnalytics
        - Productivity
        - Security
        - Storage
    LocallyUniqueIntegratedApplicationId:
      type: string
      description: >
        An identifier for an
        [IntegratedApplication](#/components/schemas/IntegratedApplication)
        object 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 id so connections to the object are robust to
        metadata changes and other relevant operations. For the
        IntegratedApplication object this can be based on the key field
      example: app:O_kgDOCfJllg (GitHub)
    IntegratedApplicationInstanceName:
      minLength: 1
      type: string
      description: >-
        The name of application-specific service instance that has been
        integrated with Oleria e.g. GitHub organization, Salesforce instance,
        Google Workspace domain, Microsoft 365 tenant, etc. This is typically
        the unit of registration within the application of a customer's
        organization or enterprise and is associated with an
        IntegratedApplicationKey.
      example: roanokedatasecurity
    RelationshipType:
      type: string
      description: >-
        The enumerated list of all Oleria relationships used to describe and
        manage the connections among Oleria objects. Furthermore, these
        connections amongst objects complete the definiton of an Oleria
        composite graph used to represent a customer's full (potentally
        cross-application) identity security. The definition of each
        relationship describes its usage and the description includes a
        "GraphNotation:" which gives a normative way of describing the
        relationship using the connected ObjectTypes, abstract Relationship, and
        potential field matching.
      example: ResourceInstanceContainsResourceInstance
      enum:
        - AccountCanImpersonateAccount
        - AccountMemberOfRole
        - AccountMemberOfUserGroup
        - ApplicationAccountCanImpersonateApplicationAccount
        - ApplicationAccountMemberOfRole
        - ApplicationAccountMemberOfUserGroup
        - AssignedApplicationHasAccountRole
        - DepartmentContainsDepartment
        - EmployeeManagesEmployee
        - EmployeeServingInDepartment
        - EnrollmentViaAuthenticator
        - EntityAssignedAccessToObject
        - EntityCanImpersonateEntity
        - EntityManagedViaObject
        - IdentityAccountAssignedAccessToAssignedApplication
        - IdentityAccountCanImpersonateIdentityAccount
        - IdentityAccountMemberOfRole
        - IdentityAccountMemberOfUserGroup
        - IntegratedApplicationHasAccountRole
        - IntegratedApplicationRegisteredWithDirectoryProvider
        - ObjectHasExtension
        - ObjectDirectoryContainsObject
        - PermissionSetAccessToResourceInstance
        - PersonIsEmployee
        - ResourceClassHasResourceInstance
        - ResourceInstanceContainsResourceInstance
        - RoleAccessToResourceClass
        - RoleAssignedAccessToAssignedApplication
        - RoleHasPermissionSet
        - RoleMemberOfRole
        - UserGroupAssignedAccessToAssignedApplication
        - UserGroupAssignedAccessToResourceInstance
        - UserGroupMemberOfRole
        - UserGroupMemberOfUserGroup
        - UserGroupSyncsWithUserGroup
    UnsupportedTypeSet:
      type: object
      description: >
        Declares object types and relationship types that an integration does
        not support despite its declared schema profile. When set on an
        IntegratedApplication, downstream consumers use this to distinguish
        "integration does not support this type" from "no data of this type
        exists yet."


        When omitted, the integration fully satisfies its declared profile
        contract.


        Relationship closure is implicit — all relationships involving an
        excluded object type are also excluded. The relationshipTypes field is
        only needed for relationship-specific exclusions where the endpoint
        object types ARE still supported (e.g., supports Role and UserGroup but
        not group-to-role assignment).
      properties:
        objectTypes:
          type: array
          description: >-
            Object types not supported by this integration despite the declared
            schema profile. All relationships involving these types are
            implicitly excluded.
          items:
            $ref: '#/components/schemas/ObjectType'
        relationshipTypes:
          type: array
          description: >-
            Relationship types explicitly excluded where endpoint object types
            ARE still supported. Only needed for relationship-specific
            exclusions not covered by objectTypes closure.
          items:
            $ref: '#/components/schemas/RelationshipType'
    ObjectDirectoryPolicyPropagation:
      type: string
      enum:
        - ContainedWinsContainerIgnored
        - ContainerWinsContainedIgnored
        - MergeWithContainedWinsConflicts
        - MergeWithContainerWinsConflicts
        - NotApplicable
    ObjectDirectoryPolicySettings:
      type: object
      properties:
        accessControlRoles:
          type: array
          description: >
            The roles that this policy applies to users and groups in the object
            directory subject to optional
            [Account](#/components/schemas/Account) and
            [UserGroup](#/components/schemas/UserGroup) filtering
          items:
            $ref: '#/components/schemas/LocallyUniqueRoleId'
        accountFiltering:
          type: array
          description: |
            The subset of accounts to which this policy applies
          items:
            $ref: '#/components/schemas/LocallyUniqueAccountId'
        fullDataSet:
          type: array
          description: >
            Represents all policies applied in this container as an array of
            property bags
          items:
            $ref: '#/components/schemas/PropertyBag'
        userGroupFiltering:
          type: array
          description: |
            The subset of groups to which this policy applies
          items:
            $ref: '#/components/schemas/LocallyUniqueUserGroupId'
      description: >
        Policy settings associated with the ObjectDirectory specified as a
        property bag and some specific promoted properties
    LocallyUniquePermissionSetId:
      type: string
      description: >
        An identifier (unique to the integrated application) for a
        [PermissionSet](#/components/schemas/PermissionSet) 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: >-
        permission:dNQ3VfJohqdsoPmBMn1UBZ1Qb-zcNJS1LwvF3K29-6Y= (GitHub based on
        a hash of underlying fine grained permission attributes and representing
        the equivalent of a fine grained permission set specific to a resource
        instance)
    LocallyUniquePersonId:
      type: string
      description: >
        An identifier for a [Person](#/components/schemas/Person) object 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 id so connections to the object are robust to metadata
        changes and other relevant operations.
      example: P232435
    LocallyUniqueResourceClassId:
      type: string
      description: >
        An identifier (unique to the integrated application) for a
        [ResourceClass](#/components/schemas/ResourceClass) 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. Ideally
        this id is a straightforward derivation of the class name      
      example: class:repo (GitHub based on resources)
    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)
    RiskSeverity:
      type: string
      description: The risk level of an Oleria activity, risk definition, or risk violation
      example: Critical
      enum:
        - Critical
        - High
        - Low
        - Moderate
    RiskType:
      type: string
      description: >-
        The risk type indicates if this risk is associated with access,
        identity, or general security or application configuration issues
      example: Access
      enum:
        - Access
        - Identity
        - Security
    RiskViolationDataType:
      type: string
      description: >
        A categorization of the data type of the risk violation giving an
        indication of both the affected object and the violation metadata as
        follows:


        | Data Type                   | Affected
        Object                                                     |
        Metadata                    |

        |-----------------------------|---------------------------------------------------------------------|-----------------------------|

        | Account                     |
        [Account](#/components/schemas/Account)                             |
        N/A                         |

        | AssignedApplication         |
        [AssignedApplication](#/components/schemas/AssignedApplication)     |
        N/A                         |

        | Certificate                 |
        [IntegratedApplication](#/components/schemas/IntegratedApplication) |
        PEM encoded certificate     |

        | Configuration               |
        [IntegratedApplication](#/components/schemas/IntegratedApplication) |
        N/A                         |
      enum:
        - Account
        - AssignedApplication
        - Certificate
        - Configuration
    LocallyUniqueRoleId:
      type: string
      description: >
        An identifier (unique to the integrated application) for a
        [Role](#/components/schemas/Role) 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: 0PSHu000003fo6tOAA (Salesforce based on permission set ids)
    RoleType:
      type: string
      description: >
        The type of the role used to group permissions in role based access
        control (RBAC) systems and thus give access to particular resources are
        described as follows:

        1. _Custom_ roles are created by administrators or users (with
        sufficient privilege) to represent a custom set of permissions that
        grant unique access to application resources

        2. _Modeled_ roles are roles created to model access to resources in the
        application, but are not "physically" represented in the application's
        schema. An example of modeled roles are each repository's access roles
        in GitHub. These are represented as modeled roles in Oleria because each
        repository evaluates roie membership and access with its own virtual
        instance of the standard read, write, triage, maintain, and admin GitHub
        roles. 

        3. _Standard_ roles are the documented or system installed application
        roles described by the application and represented in the Oleria schema
      example: Standard
      enum:
        - Custom
        - Modeled
        - Standard
    LocallyUniqueUserGroupId:
      type: string
      description: >
        An identifier (unique to the integrated or assigned application) for a
        [UserGroup](#/components/schemas/UserGroup) 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: >-
        team:T_kgDOLL0doQ (GitHub), 37d284db-1d76-4587-aa78-5a33cfcc021f:member
        (SharePoint)
    UserGroupType:
      type: string
      description: >
        The following group types are supported: 

        1. _Built-in_ groups are used to represent system-defined groups that
        can be leveraged by the application administrator to give access to
        resources via roles and permissions assigned to the group. Account
        membership in built-in groups is typically explicit

        2. _Custom_ groups are created by administrators or users (with
        appropriate privilege) to give access to resources via roles and
        permissions assigned to the group.  Account membership in custom groups
        is typically explicit

        3. _Dynamic_ groups are created by administrators or users (with
        appropriate privilege) where membership in the group is dynamic and
        based on a defined set of attributes evaluated either periodically or at
        access control evaluation

        4. _Modeled_ groups are an Oleria representation of an RBAC group like
        concept in the application typically used to represent concept like
        Everyone

        5. _Sync_ groups are synchronized between an identity provider and
        enterprise application (or directory)
      example: Custom
      enum:
        - Built-in
        - Custom
        - Dynamic
        - Modeled
        - Sync
    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
    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
    FederatedAccountAccessInformation:
      type: object
      properties:
        authenticationKey:
          type: string
          description: >
            If present, the authentication key can be used to find a specific
            federation target application instance. It is required for some
            federation protocols e.g. Trustfusion where the federationId is a
            locally unique account id
        federationId:
          $ref: '#/components/schemas/FederationId'
        federationProtocol:
          $ref: '#/components/schemas/FederationProtocol'
      description: >-
        The FederatedAccountAccessInformation details the information required
        to connect accounts across a federated link
    LocalAccountAccessInformation:
      type: object
      properties:
        accountId:
          $ref: '#/components/schemas/LocallyUniqueAccountId'
      description: >-
        The LocalAccountAccessInformation details the information required to
        connect accounts within an application instance
    PrivateTokenAccountAccessInformation:
      type: object
      properties:
        tokenData:
          type: string
      description: Used to describe an impersonator reference by a private token
    ImpersonationType:
      type: string
      enum:
        - Federated
        - Local
        - PrivateToken
    FederatedRelationshipSpecification:
      type: object
      required:
        - isFederated
      properties:
        connectionType:
          $ref: '#/components/schemas/FederatedRelationshipConnectionType'
        isFederated:
          type: boolean
        sourceAuthenticationKey:
          type: string
        targetAuthenticationKey:
          type: string
      description: >
        Used to specify if an emitted relationship is federated, and if so, how
        Oleria can connect the participating objects in a composite graph
    ImpersonationRestrictions:
      type: object
      required:
        - resourceSpecifierIsClass
      properties:
        resourceIdOrClass:
          type: string
        resourceSpecifierIsClass:
          type: boolean
        scopedPermissions:
          $ref: '#/components/schemas/PermissionSetSpecification'
      description: >-
        The ImpersonationRestrictions describes any resource and scope
        (permission) restrictions that apply in the context of an impersonation
        relationship
    ScopedMembershipPermissions:
      type: object
      properties:
        aggregateOwnershipLevel:
          $ref: '#/components/schemas/PermissionLevel'
        name:
          type: string
        specifications:
          type: array
          items:
            $ref: '#/components/schemas/PermissionSetSpecification'
      description: >
        Permission scoping data associated with membership in
        [Roles](#/components/schemas/Role) and
        [UserGroups](#/components/schemas/UserGroup)
    GrantedScopesStatus:
      type: string
      description: >-
        Observability status of OAuth scopes granted to an unmanaged
        application. Distinguishes between scopes that are known, granted but
        not observable, and not granted at all.
      enum:
        - GrantedAndObservable
        - GrantedButUnobservable
        - NotGranted
    VendorVerificationStatus:
      type: string
      description: >-
        Whether the IdP has verified the identity of the vendor or publisher who
        registered the OAuth client. Used globally wherever vendor verification
        state is relevant.
      enum:
        - Verified
        - Unverified
        - VerificationStatusUnknown
    PasswordPolicy:
      type: object
      required:
        - expirationLengthInDays
        - length
        - resetViaSelfServiceAllowed
        - reuseDisallowed
      properties:
        characters:
          type: array
          items:
            $ref: '#/components/schemas/PasswordCharacterTypes'
        expirationLengthInDays:
          type: integer
          description: A value of 0 indicates passwords never expire.
        length:
          type: integer
          description: A value of 0 indicates no minimum password length requirement.
        mfaRequirements:
          $ref: '#/components/schemas/MFARequirements'
        reuseDisallowed:
          type: boolean
        resetViaSelfServiceAllowed:
          type: boolean
        policyMetadata:
          type: array
          description: >-
            An array of additional metadata items associated with the permission
            specification
          items:
            $ref: '#/components/schemas/MetadataItem'
      description: >
        The set of rules used by an organization, department, group, etc. to
        ensure the creation and maintenance of secure passwords
    PropertyBag:
      type: object
      properties:
        description:
          type: string
          description: Description of the property bag
        id:
          type: string
          description: Unique identifier for the property bag
        items:
          type: array
          description: An array of properties associated with the property bag
          items:
            $ref: '#/components/schemas/MetadataItem'
        name:
          type: string
          description: Name of the property bag
      description: >
        A named and identified collection of related properties expressed as an
        array of [MetadataItem](#/components/schemas/MetadataItem)
    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
    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_
    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
    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
    FederatedRelationshipConnectionType:
      type: string
      enum:
        - Source
        - SourceAndTarget
        - Target
    PasswordCharacterTypes:
      type: string
      enum:
        - AlphaUppercase
        - AlphaLowercase
        - AlphaCaseInsensitive
        - Numeric
        - SpecialSymbolic
    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
    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'
    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
  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.
    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.

````