openapi: 3.1.0
info:
  title: Client Interaction Events
  description: |-
    The Client Interaction Events API allows Apiture Digital Banking client applications to inform the Apiture Digital Banking platform of client interaction activity, such as starting a new (UI) client session, visiting pages or using application features, or invoking specific client actions (such as clicking on a button or menu action).

    A client interaction event is an abstraction (representation) of such activity performed in a client application. Each kind of event has an _event type_. Related events are also organized into _categories_. Event types and categories may be specific to one client application or they may be generic and apply to more than one client application. Each event type belongs to one category. There can be many event messages over time for each event type.

    An _event message_ is a concrete data representation of an _event_ that has occurred. The message contains event metadata (such as a unique event ID, timestamp, etc.) and the event's specific, associated `data` payload. Each event message is defined with the [`clientEventMessageItem`](#schema-clientEventMessageItem) schema, which includes the metadata. The `clientEventMessageItem` object has a `data` object whose value depends on the `clientEventMessageItem.type`. The `data` value is constrained to the schema whose name is derived from the `type`. The `data` event message schema name is the event type name with the suffix `EventSchema`. For example, the `data` value in a client event message with `type` of `clientSessionStarted` is defined by [`clientSessionStartedEventSchema`](#schema-clientSessionStartedEventSchema).

    Client applications may use the [`createClientInteractionEvent`](#op-createClientInteractionEvent) operation to register client-side events. See the table below for a list of such events the client may send.

    All operations in this API require an authenticated/authorized user. The user may be a banking customer (for digital banking client applications) or a financial institution operator/admin (for administrative applications).
    ## Event Types by Category
    Events are organized into categories, as follows:

    <table>
    <tr><th> Event <code>category</code> </th>
        <th> Event <code>type</code> </th>
        <th> Event Message Schema </th>
    </tr>

    <tr><td> <code>contentInteractions</code> </td>
       <td> <code>clicked</code></td>
       <td> <a href='#schema-clickedEventSchema'><code>clickedEventSchema</code></a></td>
    </tr>
    <tr><td> <code>screenInteractions</code> </td>
       <td> <code>screenViewed</code></td>
       <td> <a href='#schema-screenViewedEventSchema'><code>screenViewedEventSchema</code></a></td>
    </tr>
    <tr><td> <code>sessions</code> </td>
       <td> <code>clientSessionStarted</code></td>
       <td> <a href='#schema-clientSessionStartedEventSchema'><code>clientSessionStartedEventSchema</code></a></td>
    </tr>
    <tr><td> <code>sessions</code> </td>
       <td> <code>userEngaged</code></td>
       <td> <a href='#schema-userEngagedEventSchema'><code>userEngagedEventSchema</code></a></td>
    </tr>
    </table>
  version: 0.5.0
  contact:
    name: Apiture
    url: https://developer.apiture.com/help/support/
    email: api@apiture.com
  termsOfService: https://developer.apiture.com/docs/Apiture-API-License-Agreement.pdf
  license:
    name: Apiture API License
    url: https://developer.apiture.com/docs/Apiture-API-License-Agreement.pdf
x-apiture-namespace: bankingClientInteractionEvents
servers:
  - url: /clients
tags:
  - name: Client Interaction Events
    description: Banking Client Interaction Events
paths:
  /clientInteractionEvents:
    post:
      summary: Create a new client interaction event
      description: Create a new client interaction event within the client interaction events collection. This operation usually returns a 204 response so that the client does not block.
      operationId: createClientInteractionEvent
      x-apiture-api: bankingClientInteractionEvents
      x-apiture-group: clientInteractionEvents
      parameters:
        - $ref: '#/components/parameters/requiredInstitutionIdHeaderParam'
      tags:
        - Client Interaction Events
      requestBody:
        required: true
        description: The data necessary to create a new client interaction event.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/newClientInteractionEvent'
          application/vnd.restful+json:
            schema:
              $ref: '#/components/schemas/newClientInteractionEvent'
      security:
        - apiKey: []
      responses:
        '201':
          description: Created. The client interaction event was accepted and recorded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientInteractionEvent'
        '204':
          description: No Content. The client interaction event was accepted and recorded but the service returned no response.
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
components:
  securitySchemes:
    apiKey:
      type: apiKey
      name: API-Key
      in: header
      description: API Key based client identification. See details at [Secure Access](https://developer.apiture.com/docs/secure-access).
      x-resolved-from: ../../common/openapi.yaml#/components/securitySchemes/apiKey
  schemas:
    clientEventMessageItem:
      x-apiture-version: 1.1.0
      title: Client Event Message Item (v1.1.0)
      description: |-
        A data record representing a specific client application activity or action performed by a user. This conveys:
          * who did something (`userId`)
          * what they did (`type`, `category`),
          * when they did it (`occurredAt`),
          * client application state (`language`, `page_url`, `referrer_url`, `title`, `screenResolution`)
          * A unique `id` for this client event
          * additional `data` that is specific to the activity `type`.
      type: object
      required:
        - id
        - type
        - category
        - occurredAt
        - sessionId
        - sessionNumber
        - clientId
        - channel
        - data
      allOf:
        - $ref: '#/components/schemas/clientInteractionEventMessagePayload'
        - $ref: '#/components/schemas/clientInteractionEventFields'
        - type: object
          properties:
            id:
              description: The unique identifier for this event. This is an immutable opaque string.
              $ref: '#/components/schemas/resourceId'
            occurredAt:
              description: The date and time when the event occurred.
              $ref: '#/components/schemas/readOnlyTimestamp'
      example:
        id: d073754cd6ccd22146b0
        type: clientSessionStarted
        category: sessions
        occurredAt: '2024-01-25T09:34:26.375Z'
        page_url: https://www.banking.tiburon-cf.com
        referrer_url: http://www.tiburon-cf.com
        title: Open a new Account at Tiburon Community Financial
        screenResolution:
          width: 1792
          height: 1120
        sessionId: '2024-01-25T10:44:01.375Z'
        sessionNumber: 7
        clientId: 056c0a5d954897e4dc1a
        channel: web
        data: {}
    clientEventLinkFields:
      title: Client Event Link Fields (v1.0.0)
      x-apiture-fragment: true
      description: Fields in a Client Event Link object, used to compose other schemas. The `outbound` property is derived (present in responses) so it is not sent in [`createClientInteractionEvent`](#op-createClientInteractionEvent) requests.
      type: object
      properties:
        url:
          description: The full URL of the link target, if known.
          type: string
          minLength: 2
          maxLength: 2048
          format: uri-reference
        text:
          description: The text label/title of the link.
          type: string
          format: text
          minLength: 0
          maxLength: 200
        class:
          description: The CSS `class` of the link, if present/known. This contains one or more class names, space-delimited.
          type: string
          format: text
          minLength: 1
          maxLength: 400
        id:
          description: The HTML `id` of the link or other element, if present/known.
          type: string
          format: text
          minLength: 1
          maxLength: 80
        outbound:
          description: '`true` if the link is to a different application from the current application: the link''s origin differs from the current application''s origin. This property is derived and immutable.'
          readOnly: true
          type: boolean
      examples:
        - url: https://www.example.com/wire-transfer-confirmation
          text: Submit Wire Transfer
          class: secure action enabled
          id: submit-wire-transfer
        - url: https://www.example.com/wire-transfer-confirmation
          text: Submit Wire Transfer
          class: secure action enabled
          id: submit-wire-transfer
          outbound: false
      x-apiture-version: 1.0.0
    clientEventScreenResolution:
      title: Client Event Screen Resolution (v1.0.0)
      description: The Screen Resolution associated with a client event. These values are typically derived in a client with the Javascript expressions, `window.innerWidth` and `window.innerHeight`.
      type: object
      required:
        - width
        - height
      properties:
        width:
          description: The screen width, in pixels.
          type: integer
          format: int32
          minimum: 100
          maximum: 100000
        height:
          description: The screen height, in pixels.
          type: integer
          format: int32
          minimum: 100
          maximum: 100000
      x-apiture-version: 1.0.0
    clientInteractionEventLink:
      title: Client Interaction Event Link (v1.0.0)
      description: |-
        A link involved in a client interaction.

        The `scheme` and `'://'` separator and `host` from the `url` constitute the link's origin.
      type: object
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/clientEventLinkFields'
      example:
        class: action
        id: submit-wire-transfer
        url: https://www.example.com/wire-transfer-confirmation
        outbound: false
      x-apiture-version: 1.0.0
    clientInteractionEventMessageType:
      title: Client Interaction Event Message Type (v1.0.0)
      description: The type of this event. This is the key into the set of event types. This is a _lowerCamelCase_ string.
      type: string
      minLength: 4
      maxLength: 48
      pattern: ^[a-z][a-zA-Z0-9]{3,47}$
      example: wireTransferScheduled
      x-apiture-version: 1.0.0
    clientInteractionEventMessageCategory:
      title: Client Interaction Event Message Category (v1.0.0)
      description: An identifier for the category of the event. Multiple message types can belong to a category. This is a _lowerCamelCase_ string.
      type: string
      minLength: 4
      maxLength: 40
      pattern: ^[a-z][a-zA-Z0-9]{3,39}$
      example: wireTransfers
      x-apiture-version: 1.0.0
    clientInteractionEventChannel:
      title: Client Interaction Event Channel (v1.0.0)
      description: |+
        The client's application channel.

        <strong><code>clientInteractionEventChannel</code></strong> strings may have one of the following
        [enumerated values](https://developer.apiture.com/docs/concepts/label-groups#enumerations):

        <table>
        <tr>
          <th>Value</th><th>Description</th>
        </tr>

        <tr>
            <td><strong><code>unknown</code></strong></td><td>Unknown: <p>The client does not know the channel</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>web</code></strong></td><td>Web: <p>The client is a web application</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>mobile</code></strong></td><td>Mobile: <p>The client is a mobile application</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>other</code></strong></td><td>Other: <p>The client is delivered via some other channel</p>
        </td>
            </tr>
        </table>

      type: string
      x-apiture-enum: clientInteractionEventChannel
      enum:
        - unknown
        - web
        - mobile
        - other
      x-apiture-version: 1.0.0
    clientInteractionEventFields:
      x-apiture-version: 1.1.0
      title: Client Interaction Event Fields (v1.1.0)
      description: Common fields of the client interaction event resource used to compose other model schemas.
      x-apiture-fragment: true
      type: object
      properties:
        language:
          description: The language-locale code of the client, such as `'en-US'` or `'en'`. Normally, this is the language code and optional region/locale code, without weights or punctuation, of the first value in the [`Accept-Language` header](https://datatracker.ietf.org/doc/html/rfc3282#section-3) that the browser manages for HTTP requests.
          type: string
          pattern: ^([a-z]{2,3}(?:-[A-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})?)?)$
          minLength: 1
          maxLength: 16
          examples:
            - en-US
            - en
            - es-MX
            - en-US-Latn
        clientId:
          description: A value that uniquely identifies the end user/device/client application combination.
          $ref: '#/components/schemas/mutableResourceId'
        channel:
          description: The client application's delivery channel.
          $ref: '#/components/schemas/clientInteractionEventChannel'
        page_url:
          description: The complete URL of the current application page, including query parameters and anchor.
          type: string
          maxLength: 2048
          format: uri
        referrer_url:
          description: The URL of referrer (previous page), including query parameters and anchor, if any. Omitted if not known or there is no previous page (no referrer).
          type: string
          maxLength: 2048
          format: uri
        title:
          description: The `title` of the current page, if known.
          type: string
          format: text
          maxLength: 100
        screenResolution:
          description: The screen resolution of the current client screen/display, in a _width_ x _height_, in pixels. Present only if known.
          $ref: '#/components/schemas/clientEventScreenResolution'
        userId:
          description: A unique ID of the interactive user who is using the client application.
          $ref: '#/components/schemas/mutableResourceId'
        sessionId:
          description: A opaque string which identifies the user's session. Session IDs are not required to be unique across users or across time.
          $ref: '#/components/schemas/mutableResourceId'
          example: 7859270edbe87b9f969c
        sessionNumber:
          description: The sequential number of this user's renewed session. The first session (for example, after authenticating) is `0`. When the client extends the session when the session times out, the client should increment this number.
          type: integer
          format: int32
          minimum: 0
          maximum: 10000
        engagementDuration:
          description: The total time the end user has been engaged with the client application, in milliseconds. The maximum, 172,800,000ms, is 48 hours of continuous engagement.
          type: integer
          format: int32
          minimum: 0
          maximum: 172800000
        type:
          $ref: '#/components/schemas/clientInteractionEventMessageType'
        category:
          $ref: '#/components/schemas/clientInteractionEventMessageCategory'
        data:
          description: Additional `type`-specific data properties for this event. For example, the `data` value in a client event message with `type` of `clientSessionStarted` is defined by [`clientSessionStartedEventSchema`](#schema-clientSessionStartedEventSchema).
          $ref: '#/components/schemas/abstractClientInteractionEventDataSchema'
      example:
        page_url: https://www.banking.tiburon-cf.com
        referrer_url: http://www.tiburon-cf.com
        title: Open a new Account at Tiburon Community Financial
        screenResolution:
          width: 1792
          height: 1120
        sessionId: 7859270edbe87b9f969c
        engagementDuration: 180000
        sessionNumber: 7
        data: {}
    newClientInteractionEvent:
      x-apiture-version: 1.1.0
      title: New Client Interaction Event (v1.1.0)
      description: Representation used to create a new client interaction event.
      type: object
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/clientInteractionEventFields'
      required:
        - type
        - category
        - language
        - page_url
        - title
        - sessionId
        - sessionNumber
        - clientId
        - channel
      example:
        type: clientSessionStarted
        category: sessions
        language: en-US
        page_url: https://www.banking.tiburon-cf.com
        referrer_url: http://www.tiburon-cf.com
        title: Open a new Account at Tiburon Community Financial
        screenResolution:
          width: 1792
          height: 1120
        sessionId: 7859270edbe87b9f969c
        sessionNumber: 0
        engagementDuration: 180000
        clientId: 056c0a5d954897e4dc1a
        channel: web
    clientInteractionEventItem:
      x-apiture-version: 1.1.0
      title: Client Interaction Event Item (v1.1.0)
      description: Summary representation of a client interaction event resource within a list.
      type: object
      allOf:
        - $ref: '#/components/schemas/clientInteractionEventFields'
        - type: object
          properties:
            id:
              description: The unique identifier for this client interaction event resource. This is an immutable opaque string.
              $ref: '#/components/schemas/readOnlyResourceId'
            occurredAt:
              description: The date and time when the event occurred.
              $ref: '#/components/schemas/readOnlyTimestamp'
      required:
        - id
        - type
        - category
        - language
        - page_url
        - title
        - sessionId
        - sessionNumber
        - clientId
      example:
        id: d073754cd6ccd22146b0
        occurredAt: '2024-01-25T09:34:26.375Z'
        page_url: https://www.banking.tiburon-cf.com
        userId: philduciary_2298
        referrer_url: http://www.tiburon-cf.com
        title: Open a new Account at Tiburon Community Financial
        language: en-US
        screenResolution:
          width: 1792
          height: 1120
        sessionId: 7859270edbe87b9f969c
        sessionNumber: 7
        type: clientSessionStarted
        category: sessions
        clientId: 056c0a5d954897e4dc1a
        channel: web
        data: {}
    clientInteractionEvent:
      x-apiture-version: 1.1.0
      title: Client Interaction Event (v1.1.0)
      description: Representation of a client interaction event resource.
      type: object
      allOf:
        - $ref: '#/components/schemas/clientInteractionEventItem'
      example:
        id: d073754cd6ccd22146b0
        occurredAt: '2024-01-25T09:34:26.375Z'
        page_url: https://www.banking.tiburon-cf.com
        userId: philduciary_2298
        language: en-US
        referrer_url: http://www.tiburon-cf.com
        title: Open a new Account at Tiburon Community Financial
        screenResolution:
          width: 1792
          height: 1120
        sessionId: 7859270edbe87b9f969c
        sessionNumber: 7
        type: clientSessionStarted
        category: sessions
        clientId: 056c0a5d954897e4dc1a
        data: {}
    abstractClientInteractionEventDataSchema:
      title: Abstract Client Interaction Event Data Schema (v0.1.1)
      description: Abstract schema used to define other event message `data` object schemas.
      x-apiture-version: 0.1.1
      type: object
      properties: {}
    userEngagedEventSchema:
      title: User Engaged Event Schema (v0.2.1)
      description: |-
        Payload for client interaction event messages which record how long the client application user has been engaged with client application. The client should pass the `engagementDuration` property within the [`newClientInteractionEvent`](#schema-newClientInteractionEvent) object with this event.
        This schema defines the `data` object for event messages with category `sessions` and event message type of `userEngaged`.
      type: object
      x-apiture-version: 0.2.1
      x-apiture-event:
        type: userEngaged
        category: sessions
      unevaluatedProperties: false
      allOf:
        - $ref: '#/components/schemas/abstractClientInteractionEventDataSchema'
      example: {}
    clientSessionStartedEventSchema:
      title: Client Session Started Event Schema (v0.2.1)
      description: |-
        Payload for client interaction event messages triggered when the client starts a new user session, such as initially opening the application and authenticating.
        This schema defines the `data` object for event messages with category `sessions` and event message type of `clientSessionStarted`.
      type: object
      x-apiture-version: 0.2.1
      x-apiture-event:
        type: clientSessionStarted
        category: sessions
      unevaluatedProperties: false
      allOf:
        - $ref: '#/components/schemas/abstractClientInteractionEventDataSchema'
      example: {}
    clickedEventSchema:
      title: Clicked Event Schema (v0.2.1)
      description: |-
        Payload for client interaction event messages triggered when the user clicks on a link, menu item, button, or other clickable control.
        This schema defines the `data` object for event messages with category `contentInteractions` and event message type of `clicked`.
      type: object
      x-apiture-version: 0.2.1
      x-apiture-event:
        type: clicked
        category: contentInteractions
      required:
        - link
      unevaluatedProperties: false
      allOf:
        - $ref: '#/components/schemas/abstractClientInteractionEventDataSchema'
        - type: object
          properties:
            link:
              $ref: '#/components/schemas/clientInteractionEventLink'
      example:
        link:
          class: action enabled
          id: submit-wire-transfer
          url: https://www.example.com/wire-transfer-confirmation
    screenViewedEventSchema:
      title: Screen Viewed Event Schema (v0.2.1)
      description: |-
        Payload for client interaction event messages triggered when the user views a page or a screen (in a single page application)
        This schema defines the `data` object for event messages with category `screenInteractions` and event message type of `screenViewed`.
      type: object
      x-apiture-version: 0.2.1
      x-apiture-event:
        type: screenViewed
        category: screenInteractions
      unevaluatedProperties: false
      allOf:
        - $ref: '#/components/schemas/abstractClientInteractionEventDataSchema'
      example: {}
    clientInteractionEventMessagePayload:
      title: Client Interaction Event Message Payload (v1.0.0)
      description: Defines schema validation of the `data` object with the message schema that corresponds to the `type` of the event message. For example, if `type` is `clientSessionStarted`, the `data` object must satisfy the `clientSessionStartedEventSchema` schema.
      type: object
      x-apiture-fragment: true
      oneOf:
        - type: object
          properties:
            type:
              description: Matches an event message item for the event type `clicked`.
              type: string
              const: clicked
            data:
              $ref: '#/components/schemas/clickedEventSchema'
        - type: object
          properties:
            type:
              description: Matches an event message item for the event type `screenViewed`.
              type: string
              const: screenViewed
            data:
              $ref: '#/components/schemas/screenViewedEventSchema'
        - type: object
          properties:
            type:
              description: Matches an event message item for the event type `clientSessionStarted`.
              type: string
              const: clientSessionStarted
            data:
              $ref: '#/components/schemas/clientSessionStartedEventSchema'
        - type: object
          properties:
            type:
              description: Matches an event message item for the event type `userEngaged`.
              type: string
              const: userEngaged
            data:
              $ref: '#/components/schemas/userEngagedEventSchema'
      x-apiture-version: 1.0.0
    resourceId:
      x-apiture-version: 1.0.1
      title: Resource Identifier (v1.0.1)
      description: The unique, opaque system identifier for a resource. This case-sensitive ID is also used as path parameters in URLs or in other properties or parameters that reference a resource by ID rather than URL.
      type: string
      pattern: ^[-_:.~$a-zA-Z0-9]{6,48}$
      minLength: 6
      maxLength: 48
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/resourceId
    readOnlyTimestamp:
      title: Read-Only Timestamp (v1.0.0)
      description: 'A readonly or derived timestamp (an instant in time) formatted in [RFC 3339](https://tools.ietf.org/html/rfc3339) `date-time` UTC format: `YYYY-MM-DDThh:mm:ss.sssZ`.'
      type: string
      minLength: 20
      maxLength: 30
      format: date-time
      readOnly: true
      example: '2021-10-30T19:06:04.250Z'
      x-apiture-since: 0.4.0
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/readOnlyTimestamp
      x-apiture-version: 1.0.0
    mutableResourceId:
      title: Mutable Resource Identifier (v1.0.0)
      description: A mutable unique, opaque system identifier for a resource.
      type: string
      pattern: ^[-_:.~$a-zA-Z0-9]{1,55}$
      minLength: 1
      maxLength: 55
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/mutableResourceId
      x-apiture-version: 1.0.0
    abstractBody:
      title: Abstract Body (v0.2.0)
      x-apiture-version: 0.2.0
      description: An abstract schema used to define other request and response body model schemas.
      x-apiture-fragment: true
      type: object
      properties: {}
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/abstractBody
    readOnlyResourceId:
      x-apiture-version: 1.0.1
      title: Read-only Resource Identifier (v1.0.1)
      description: The unique, opaque system-assigned identifier for a resource. This case-sensitive ID is also used in URLs as path parameters or in other properties or parameters that reference a resource by ID rather than URL. Resource IDs are immutable.
      readOnly: true
      allOf:
        - $ref: '#/components/schemas/resourceId'
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/readOnlyResourceId
    institutionId:
      x-apiture-version: 1.1.0
      title: Institution ID (v1.1.0)
      description: The unique immutable identifier of a financial institution.
      type: string
      pattern: ^[A-Z0-9_]{2,8}$
      maxLength: 8
      minLength: 2
      example: TIBURON
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/institutionId
    problemResponse:
      title: Problem Response (v0.4.1)
      x-apiture-version: 0.4.1
      description: API problem or error response, as per [RFC 9457 application/problem+json](https://tools.ietf.org/html/rfc9457).
      type: object
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/apiProblem'
      example:
        id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
        type: https://static.api.apiture.com/errors/noSuchAccount/v1.0.0
        title: Account Not Found
        status: 422
        occurredAt: '2022-04-25T12:42:21.375Z'
        detail: No account exists for the given account reference
        instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/problemResponse
    apiProblem:
      x-apiture-version: 1.2.1
      title: API Problem (v1.2.1)
      description: API problem or error, as per [RFC 7807 application/problem+json](https://tools.ietf.org/html/rfc7807).
      type: object
      properties:
        type:
          type: string
          format: uri-reference
          description: |
            A [URI reference (RFC3986)](https://tools.ietf.org/html/rfc3986) that identifies the problem type. If present, this is the URL of human-readable HTML documentation for the problem type. When this member is not present, its value is assumed to be `"about:blank"`.
          example: https://static.api.apiture.com/errors/forbidden/v1.0.0
          maxLength: 2048
        title:
          type: string
          description: |
            A short, human-readable summary of the problem type. The title is usually the same for all problem with the same `type`.
          maxLength: 120
          format: text
          example: User is not authorized to perform the requested action or access the requested resource.
        status:
          type: integer
          format: int32
          description: |
            The [HTTP status code](https://datatracker.ietf.org/doc/html/rfc7231#section-6) for this occurrence of the problem.
          minimum: 100
          maximum: 599
          example: 403
        detail:
          type: string
          description: |
            A human-readable explanation specific to this occurrence of the problem.
          maxLength: 256
          format: text
          example: User is not authorized to perform this operation.
        instance:
          type: string
          format: uri-reference
          description: |
            A URI reference that identifies the specific occurrence of the problem. This is the URI of an API resource that the problem is related to, with a unique error correlation ID URI fragment
          example: https://prduction.api.apiture.com/banking/accounts/ad80fc3e722q5402a#189c13ff-c54c-45f7-b8e0-c88984ba724d
          maxLength: 2048
        id:
          description: The unique identifier for this problem. This is an immutable opaque string.
          $ref: '#/components/schemas/readOnlyResourceId'
        occurredAt:
          description: The timestamp when the problem occurred, in [RFC 3339](https://tools.ietf.org/html/rfc3339) date-time `YYYY-MM-DDThh:mm:ss.sssZ` format, UTC.
          $ref: '#/components/schemas/readOnlyTimestamp'
        problems:
          description: Optional root-causes if there are multiple problems in the request or API call processing.
          type: array
          maxItems: 128
          items:
            $ref: '#/components/schemas/apiProblem'
        attributes:
          type: object
          description: Additional optional attributes related to the problem. This data conforms to the schema associated with the error type.
      example:
        id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
        type: https://static.api.apiture.com/errors/accountNotFound/v1.0.0
        title: Account Not Found
        status: 422
        occurredAt: '2022-04-25T12:42:21.375Z'
        detail: No account exists at the given account_url
        instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/apiProblem
    requiredIdentityChallenge:
      x-apiture-version: 1.2.3
      title: Required Challenge (v1.2.3)
      description: A request from the service for the user to verify their identity. This contains a challenge ID, the corresponding operation ID, and a list of challenge factors for identity verification. The user must complete one of these challenge factors to satisfy the challenge. This schema defines the attributes in the 401 [Unauthorized problem response](#schema-apiProblem) when the 401 problem type name is `challengeRequired`. See the "Challenge API" for details.
      type: object
      required:
        - operationId
        - challengeId
        - factors
      properties:
        operationId:
          $ref: '#/components/schemas/challengeOperationId'
        challengeId:
          description: The unique ID of this challenge instance. This is an opaque string. This is passed when starting a challenge factor or when validating the identity challenge responses.
          $ref: '#/components/schemas/readOnlyResourceId'
        factors:
          description: 'A list of challenge factors. The user must complete one of these challenge factors. The `labels` in each factor identify one or more channels the user may use, such as a list of email addresses the system may use to send a one-time passcode to the user. ***Note**: The same channel may be used by multiple factors in the array of factors. For example, the user''s primary mobile phone number may be used for both an `sms` factor and a `voice` factor.'
          type: array
          minItems: 1
          maxItems: 8
          items:
            $ref: '#/components/schemas/challengeFactor'
      example:
        operationId: createTransfer
        challengeId: 0504076c566a3cf7009c
        factors:
          - type: sms
            labels:
              - '9876'
            id: 85c0ee5753fcd0b0953f
          - type: voice
            labels:
              - '9876'
            id: d089e10a80a8627df37b
          - type: voice
            labels:
              - '6754'
            id: 10506ecf9d1c2ee00403
          - type: email
            labels:
              - an****nk@example.com
              - an****98@example.com
            id: e917d671cb2f030b56f1
          - type: authenticatorToken
            labels:
              - Acme fob
            id: fe6c452d7da0bbb4e407
          - type: securityQuestions
            securityQuestions:
              questions:
                - id: q1
                  prompt: What is your mother's maiden name?
                - id: q4
                  prompt: What is your high school's name?
                - id: q9
                  prompt: What is the name of your first pet?
            id: df33c6f88a37d6b3f0a6
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/requiredIdentityChallenge
    challengeOperationId:
      x-apiture-version: 1.0.1
      title: Challenge Operation ID (v1.0.1)
      description: The ID of an operation/action for which the user must verify their identity via an identity challenge. This is passed when starting a challenge factor or when validating the identity challenge responses.
      type: string
      pattern: ^[-a-zA-Z0-9$_]{6,48}$
      minLength: 6
      maxLength: 48
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeOperationId
    challengeFactor:
      x-apiture-version: 1.2.1
      title: Challenge Factor (v1.2.1)
      description: A challenge factor. See [`requiredIdentityChallenge`](#schema-requiredIdentityChallenge) for multiple examples.
      type: object
      required:
        - type
      properties:
        id:
          description: |-
            The ID of an a challenge factor. This ID is unique within the challenge factors associated with a challenge. The client should pass this `id` value as the `factorId` when starting or verifying a challenge factor.

            *Note*: The `id` will become `required` in a future update to this schema.
          $ref: '#/components/schemas/challengeFactorId'
        type:
          $ref: '#/components/schemas/challengeFactorType'
        labels:
          description: A list of text label which identifies the channel(s) through which the user completes the challenge. For an `sms` or `voice` challenge, the only label item is the last four digits of the corresponding phone number. For an `email` challenge, each label is the masked email address.
          type: array
          minItems: 1
          maxItems: 4
          items:
            type: string
            maxLength: 300
            format: text
        securityQuestions:
          $ref: '#/components/schemas/challengeSecurityQuestions'
      example:
        type: sms
        labels:
          - '9876'
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeFactor
    challengeFactorId:
      title: Challenge Factor ID (v1.0.0)
      description: The ID of an a challenge factor. This ID is unique within the factors offered with a challenge.
      type: string
      pattern: ^[-a-zA-Z0-9$_]{3,48}$
      minLength: 3
      maxLength: 48
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeFactorId
      x-apiture-version: 1.0.0
    challengeFactorType:
      title: Challenge Factor Type (v1.0.0)
      description: |+
        The name of challenge factor.

        <strong><code>challengeFactorType</code></strong> strings may have one of the following
        [enumerated values](https://developer.apiture.com/docs/concepts/label-groups#enumerations):

        <table>
        <tr>
          <th>Value</th><th>Description</th>
        </tr>

        <tr>
            <td><strong><code>sms</code></strong></td><td>SMS: <p>One-time passcode sent to the primary mobile phone number</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>email</code></strong></td><td>Email: <p>One-time passcode sent to the primary email address</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>voice</code></strong></td><td>Voice: <p>One-time passcode communicated via automated voice phone call</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>authenticatorToken</code></strong></td><td>authenticator Token: <p>One-time passcode issued by a pre-registered hardware device, such as a token key fob, or an authenticator app</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>securityQuestions</code></strong></td><td>Security Questions: <p>Prompt with the user&#39;s security questions registered with their security profile</p>
        </td>
            </tr>
        </table>

      type: string
      x-apiture-enum: challengeFactorType
      enum:
        - sms
        - email
        - voice
        - securityQuestions
        - authenticatorToken
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeFactorType
      x-apiture-version: 1.0.0
    challengeSecurityQuestions:
      x-apiture-version: 1.0.1
      title: Challenge Security Questions (v1.0.1)
      description: Describes a `securityQuestions` challenge. This is omitted if the challenge `type` is not `securityQuestions`.
      type: object
      required:
        - questions
      properties:
        questions:
          description: The array of security questions.
          type: array
          minItems: 1
          maxItems: 8
          items:
            $ref: '#/components/schemas/challengeSecurityQuestion'
      example:
        questions:
          - id: q1
            prompt: What is your mother's maiden name?
          - id: q4
            prompt: What is your high school's name?
          - id: q9
            prompt: What is the name of your first pet?
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeSecurityQuestions
    challengeSecurityQuestion:
      x-apiture-version: 1.0.1
      title: Challenge Security Question (v1.0.1)
      description: A single security question within the `questions` array of the [`challengeSecurityQuestions`](#schema-challengeSecurityQuestions)
      type: object
      required:
        - id
        - prompt
      properties:
        id:
          description: The unique ID of security question prompt. This should be included in the [`challengeVerification`](#schema-challengeVerification) response as the `promptId`.
          $ref: '#/components/schemas/challengePromptId'
        prompt:
          description: The text prompt of this security question.
          type: string
          format: text
          maxLength: 80
      example:
        id: 74699fa628911e762ea5
        prompt: What is your mother's maiden name?
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeSecurityQuestion
    challengePromptId:
      title: Challenge Prompt ID (v1.0.0)
      description: The unique ID of a prompt (such as a security question) in a challenge factor.
      type: string
      pattern: ^[-_:.~$a-zA-Z0-9]+$
      minLength: 1
      maxLength: 48
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengePromptId
      x-apiture-version: 1.0.0
  parameters:
    requiredInstitutionIdHeaderParam:
      name: Institution-Id
      description: The unique identifier of the financial institution.
      in: header
      required: true
      schema:
        $ref: '#/components/schemas/institutionId'
      x-resolved-from: ../../common/openapi.yaml#/components/parameters/requiredInstitutionIdHeaderParam
  responses:
    '400':
      description: |
        Bad Request. The request body, request headers, and/or query parameters are not well-formed.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/badRequest/v1.0.0`](https://static.api.apiture.com/errors/badRequest/v1.0.0)<br>
          The request body and/or parameters was not well-formed.
          Remediation: Correct any syntax or schema errors in the request body or parameters.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/badRequest'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/badRequest/v1.0.0
              title: Bad Request
              status: 400
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: Input did not parse as JSON
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/badRequest/v1.0.0
              title: Bad Request
              status: 400
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: Input did not parse as JSON
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/400
    '401':
      description: |
        Unauthorized. The operation requires authentication but no authentication or insufficient authentication was given.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/unauthorized/v1.0.0`](https://static.api.apiture.com/errors/unauthorized/v1.0.0)<br>
          The request lacks valid authentication credentials for the target resource or operation.
          Remediation: Authenticate the user and pass the required authorization with the request.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/unauthorized'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/unauthorized/v1.0.0
              title: Unauthorized
              status: 401
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The request lacks valid authentication credentials
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/unauthorized/v1.0.0
              title: Unauthorized
              status: 401
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The request lacks valid authentication credentials
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/401
    '403':
      description: |
        Forbidden. The authenticated caller is not authorized to perform the requested operation.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/forbidden/v1.0.0`](https://static.api.apiture.com/errors/forbidden/v1.0.0)<br>
          The user or agent is not allowed to perform this operation; authentication credentials were provided in the request, but the server considers them insufficient to grant access.
          Remediation: Check the user's permissions and entitlements before attempting the operation.

        * [`https://static.api.apiture.com/errors/customerDisabled/v1.0.0`](https://static.api.apiture.com/errors/customerDisabled/v1.0.0)<br>
          The customer is disabled.
          Remediation: Have the customer contact the financial institution for support.

        * [`https://static.api.apiture.com/errors/antiMalwareRequired/v1.0.0`](https://static.api.apiture.com/errors/antiMalwareRequired/v1.0.0)<br>
          The financial institution requires the customer to have anti-malware software installed.
          Remediation: Direct the user to the software requirements guide to install the correct anti-malware software.

        * [`https://static.api.apiture.com/errors/modificationForbidden/v1.0.0`](https://static.api.apiture.com/errors/modificationForbidden/v1.0.0)<br>
          The customer is properly authenticated but not authorized to create, modify, or delete resources.
          Remediation: Avoid modification operation for customers with read-only authorization.

        * [`https://static.api.apiture.com/errors/challengeRequired/v1.0.0`](https://static.api.apiture.com/errors/challengeRequired/v1.0.0)<br>
          The operation requires the customer to complete an identity challenge.
          Remediation: Complete the challenge as per the problem response, and add an additional `Challenge` header to the call.
        The `attributes` object in the error may have the properties defined by the [`requiredIdentityChallenge` schema](#schema-requiredIdentityChallenge).
        * [`https://static.api.apiture.com/errors/challengeBlocked/v1.0.0`](https://static.api.apiture.com/errors/challengeBlocked/v1.0.0)<br>
          The user has failed challenges too many times and is blocked from attempting more or performing operations which require additional authentication.
          Remediation: Have the user end their login session and login again.

        * [`https://static.api.apiture.com/errors/noIdentityChallengeFactors/v1.0.0`](https://static.api.apiture.com/errors/noIdentityChallengeFactors/v1.0.0)<br>
          This operation requires an identity challenge, but the user does not have the necessary registered authentication factors.
          Remediation: Have the user register one or more challenge security code delivery factors.

        * [`https://static.api.apiture.com/errors/invalidIdentityChallengeHeader/v1.0.0`](https://static.api.apiture.com/errors/invalidIdentityChallengeHeader/v1.0.0)<br>
          The additional on-time `Challenge` header in this request is expired, already used, or otherwise invalid.
          Remediation: Supply a valid, unexpired, unclaimed `Challenge` header in the request.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/forbidden'
        - $ref: '#/components/x-apiture-errors/customerDisabled'
        - $ref: '#/components/x-apiture-errors/antiMalwareRequired'
        - $ref: '#/components/x-apiture-errors/modificationForbidden'
        - $ref: '#/components/x-apiture-errors/challengeRequired'
        - $ref: '#/components/x-apiture-errors/challengeBlocked'
        - $ref: '#/components/x-apiture-errors/noIdentityChallengeFactors'
        - $ref: '#/components/x-apiture-errors/invalidIdentityChallengeHeader'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/forbidden/v1.0.0
              title: Forbidden
              status: 403
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The request has valid authentication, but the authenticated agent is forbidden from accessing this resource or operation
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/forbidden/v1.0.0
              title: Forbidden
              status: 403
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The request has valid authentication, but the authenticated agent is forbidden from accessing this resource or operation
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/403
    '422':
      description: |
        Unprocessable Entity. The request body and/or query parameters were well-formed but otherwise invalid.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/unprocessableEntity/v1.0.0`](https://static.api.apiture.com/errors/unprocessableEntity/v1.0.0)<br>
          The syntax of the request entity is correct but was unable to process the contained instructions.
          Remediation: Provide a semantically correct request.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/unprocessableEntity'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/unprocessableEntity/v1.0.0
              title: Unprocessable Entity
              status: 422
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The request body and/or query parameters were well-formed but otherwise invalid.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/unprocessableEntity/v1.0.0
              title: Unprocessable Entity
              status: 422
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The request body and/or query parameters were well-formed but otherwise invalid.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/422
    '429':
      description: |
        Too Many Requests. The client has sent too many requests in a given amount of time.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/tooManyRequests/v1.0.0`](https://static.api.apiture.com/errors/tooManyRequests/v1.0.0)<br>
          The client has sent too many requests in a given amount of time, exceeding rate limiting.
          Remediation: Slow down the rate of API calls.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/tooManyRequests'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/tooManyRequests/v1.0.0
              title: Too Many Requests
              status: 429
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The user has sent too many requests in a given amount of time.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/tooManyRequests/v1.0.0
              title: Too Many Requests
              status: 429
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The user has sent too many requests in a given amount of time.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/429
    4XX:
      description: Client Request Problem. The client request had a problem not listed under another specific 400-level HTTP response code. View the `detail` in the problem response for additional details.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/methodNotAllowed/v1.0.0
              title: Method Not Allowed
              status: 405
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: This HTTP method is not allowed for the given resource URL.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/methodNotAllowed/v1.0.0
              title: Method Not Allowed
              status: 405
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: This HTTP method is not allowed for the given resource URL.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/4XX
    5XX:
      description: Server Problem. The server encountered a problem not listed under another specific 500-level HTTP response code. View the `detail` in the problem response for additional details.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/gatewayTimeout/v1.0.0
              title: Insufficient Storage
              status: 507
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The server is unable to store the representation needed to successfully complete the request.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/gatewayTimeout/v1.0.0
              title: Insufficient Storage
              status: 507
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The server is unable to store the representation needed to successfully complete the request.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/5XX
  x-apiture-errors:
    badRequest:
      description: The request body and/or parameters was not well-formed.
      remediation: Correct any syntax or schema errors in the request body or parameters.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/badRequest
    unauthorized:
      description: The request lacks valid authentication credentials for the target resource or operation.
      remediation: Authenticate the user and pass the required authorization with the request.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/unauthorized
    forbidden:
      description: The user or agent is not allowed to perform this operation; authentication credentials were provided in the request, but the server considers them insufficient to grant access.
      remediation: Check the user's permissions and entitlements before attempting the operation.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/forbidden
    customerDisabled:
      description: The customer is disabled.
      remediation: Have the customer contact the financial institution for support.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/customerDisabled
    antiMalwareRequired:
      description: The financial institution requires the customer to have anti-malware software installed.
      remediation: Direct the user to the software requirements guide to install the correct anti-malware software.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/antiMalwareRequired
    modificationForbidden:
      description: The customer is properly authenticated but not authorized to create, modify, or delete resources.
      remediation: Avoid modification operation for customers with read-only authorization.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/modificationForbidden
    challengeRequired:
      description: The operation requires the customer to complete an identity challenge.
      remediation: Complete the challenge as per the problem response, and add an additional `Challenge` header to the call.
      attributes:
        $ref: '#/components/schemas/requiredIdentityChallenge'
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/challengeRequired
    challengeBlocked:
      description: The user has failed challenges too many times and is blocked from attempting more or performing operations which require additional authentication.
      remediation: Have the user end their login session and login again.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/challengeBlocked
    noIdentityChallengeFactors:
      description: This operation requires an identity challenge, but the user does not have the necessary registered authentication factors.
      remediation: Have the user register one or more challenge security code delivery factors.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/noIdentityChallengeFactors
    invalidIdentityChallengeHeader:
      description: The additional on-time `Challenge` header in this request is expired, already used, or otherwise invalid.
      remediation: Supply a valid, unexpired, unclaimed `Challenge` header in the request.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/invalidIdentityChallengeHeader
    unprocessableEntity:
      description: The syntax of the request entity is correct but was unable to process the contained instructions.
      remediation: Provide a semantically correct request.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/unprocessableEntity
    tooManyRequests:
      description: The client has sent too many requests in a given amount of time, exceeding rate limiting.
      remediation: Slow down the rate of API calls.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/tooManyRequests
x-apiture-traits:
  - resource:
      name: client interaction event
      excludeMethods:
        - list
        - get
        - put
        - patch
        - delete
      applied: true
x-resolved-from: ../../clientInteractionEvents/status-codes-openapi.yaml
x-resolved-at: '2024-12-09T22:11:47.158Z'
x-apiture-annotated-at: '2024-12-09T22:11:47.396Z'
