openapi: 3.1.0
info:
  title: Apiture Digital Banking System Integration Instances
  description: This API provides system-level management of instances and associated settings of dynamically defined _integrations_ within Apiture's digital banking client applications. Integrations embed third-party experiences or other types of third-party software integrations within Apiture Digital Banking applications, using [SAML](https://developer.okta.com/docs/concepts/saml/)-based identity provider single-sign on. This API manages integration _instances_ which specify whether an integration is available and its configuration for a specific institution.
  version: 0.4.1
  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: adminIntegrationInstances
tags:
  - name: Integration Instances
    description: Third-party Integration Instances
  - name: Integration Instance Actions
    description: Actions on Integration Instances
  - name: Integration Definitions
    description: Third-party Integration Definitions
servers:
  - url: /bankingAdmin
paths:
  /liveIntegrationDefinitions:
    get:
      summary: Return a collection of integration definitions
      description: Return a collection of integration definitions, excluding those in staged status.
      operationId: listLiveIntegrationDefinitions
      x-apiture-api: adminIntegrationInstances
      x-apiture-group: integrationDefinitions
      x-apiture-unauthenticated: true
      tags:
        - Integration Definitions
      security:
        - cookieAuth: []
      parameters:
        - name: institutionId
          in: query
          description: Filter the response to only include integrations that are available to the specific institution. That includes definitions with a matching `institutionId` available to a `single` institution as well as definitions available to `all` institutions. If this filter is omitted, all available integrations are returned.
          schema:
            $ref: '#/components/schemas/institutionId'
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/integrationDefinitions'
        '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'
  /integrationInstances:
    get:
      summary: Return a collection of integration instances
      description: Return a collection of integration instances.
      operationId: listIntegrationInstances
      x-apiture-api: adminIntegrationInstances
      x-apiture-group: integrationInstances
      x-apiture-unauthenticated: true
      tags:
        - Integration Instances
      security:
        - cookieAuth: []
      parameters:
        - name: institutionId
          in: query
          description: Filter the response to only include integration instances whose `institutionId` matches the this value.
          schema:
            $ref: '#/components/schemas/institutionId'
        - name: availability
          in: query
          description: Filter the response to only include integration instances with the specified availability.
          style: pipeDelimited
          explode: false
          schema:
            type: array
            minItems: 1
            maxItems: 4
            uniqueItems: true
            items:
              type: string
              enum:
                - web
                - mobile
                - business
                - personal
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/integrationInstances'
        '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'
  /integrations/{integrationId}/institutionInstances/{institutionId}:
    parameters:
      - $ref: '#/components/parameters/integrationIdPathParam'
      - $ref: '#/components/parameters/institutionIdPathParam'
    post:
      summary: Create a new integration instance
      description: |-
        Create a new integration, adding it to the the integrations collection.
        This operation can be performed as a dry run, which validates the data and compiles the referenced parameters against the JSON schema, but does not create an integration instance.
        A dry run returns the same 4xx responses as the normal invocation when the request encounters any validation errors, but returns a response of 204 (No Content) if the request is valid.
        When `?dryRun` is `false` or omitted, the operation creates the wire transfer template unless there are request errors.
        The availability criteria of an integration instance have to fall within the limits of the integration definition it refers to. E.g. an integration definition that only allows web availability cannot have an integration instance that is available on mobile.
        Note: By default, new integration instances are created as being in `beta` mode unless specified otherwise in the payload.
      operationId: createIntegrationInstance
      x-apiture-api: adminIntegrationInstances
      x-apiture-group: integrationInstances
      x-apiture-unauthenticated: true
      tags:
        - Integration Instances
      security:
        - cookieAuth: []
      parameters:
        - $ref: '#/components/parameters/dryRunQueryParam'
      requestBody:
        description: The data necessary to create a new integration.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/newIntegrationInstance'
      responses:
        '201':
          description: Created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/integrationInstance'
          headers:
            Location:
              description: The URI of the new integration instance.
              schema:
                type: string
                format: uri-reference
                maxLength: 400
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: |
            Conflict.

            This problem response may have one of the following `type` values:
            * [`https://static.api.apiture.com/errors/integrationAlreadyExists/v1.0.0`](https://static.api.apiture.com/errors/integrationAlreadyExists/v1.0.0)<br>
              An instance of the integration already exists for this institution.
              Remediation: Modify the existing integration instance or delete it before creating a new one.
          x-apiture-errors:
            - integrationAlreadyExists
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/problemResponse'
        '422':
          x-apiture-errors:
            - invalidIntegrationData
            - invalidJsonData
          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/invalidIntegrationData/v1.0.0`](https://static.api.apiture.com/errors/invalidIntegrationData/v1.0.0)<br>
              The integration data does not conform to the integration instance JSON schema.
              Remediation: Correct the code or data according to the `detail` and / or `problems`.
            The `attributes` object in the error may have the properties defined for [`invalidIntegrationData`](https://static.api.apiture.com/errors/invalidIntegrationData/v1.0.0).
            * [`https://static.api.apiture.com/errors/invalidJsonData/v1.0.0`](https://static.api.apiture.com/errors/invalidJsonData/v1.0.0)<br>
              Unable to validate the JSON data.
              Remediation: Correct the code or data according to the `detail` and / or `problems`.
            The `attributes` object in the error may have the properties defined for [`invalidJsonData`](https://static.api.apiture.com/errors/invalidJsonData/v1.0.0).
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/problemResponse'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
    get:
      summary: Fetch a representation of this integration
      description: Return a representation of the integration instance.
      operationId: getIntegrationInstance
      x-apiture-api: adminIntegrationInstances
      x-apiture-group: integrationInstances
      x-apiture-unauthenticated: true
      tags:
        - Integration Instances
      security:
        - cookieAuth: []
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/integrationInstance'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
    patch:
      summary: Update this integration instance
      description: Perform a partial update of this integration instance as per [JSON Merge Patch] (https://datatracker.ietf.org/doc/html/rfc7396) format and processing rules. Only fields in the request body are updated on the resource; fields which are omitted are not updated. Attempting to update the `mode` property to a different value produces an error; use the corresponding operation to change the mode instead.
      operationId: patchIntegrationInstance
      x-apiture-api: adminIntegrationInstances
      x-apiture-group: integrationInstances
      x-apiture-unauthenticated: true
      tags:
        - Integration Instances
      security:
        - cookieAuth: []
      requestBody:
        description: The integration instance parameters to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/integrationInstancePatch'
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/integrationInstance'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          x-apiture-errors:
            - invalidIntegrationData
            - invalidJsonData
          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/invalidIntegrationData/v1.0.0`](https://static.api.apiture.com/errors/invalidIntegrationData/v1.0.0)<br>
              The integration data does not conform to the integration instance JSON schema.
              Remediation: Correct the code or data according to the `detail` and / or `problems`.
            The `attributes` object in the error may have the properties defined for [`invalidIntegrationData`](https://static.api.apiture.com/errors/invalidIntegrationData/v1.0.0).
            * [`https://static.api.apiture.com/errors/invalidJsonData/v1.0.0`](https://static.api.apiture.com/errors/invalidJsonData/v1.0.0)<br>
              Unable to validate the JSON data.
              Remediation: Correct the code or data according to the `detail` and / or `problems`.
            The `attributes` object in the error may have the properties defined for [`invalidJsonData`](https://static.api.apiture.com/errors/invalidJsonData/v1.0.0).
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/problemResponse'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
    delete:
      summary: Delete this integration instance
      description: Delete this integration instance. This operation can only be called on integration instances that are `disabled`. Attempting to delete an integration instance that is not `disabled` produces an error.
      operationId: deleteIntegrationInstance
      x-apiture-api: adminIntegrationInstances
      x-apiture-group: integrationInstances
      x-apiture-unauthenticated: true
      tags:
        - Integration Instances
      security:
        - cookieAuth: []
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: |
            Conflict.

            This problem response may have one of the following `type` values:
            * [`https://static.api.apiture.com/errors/integrationInUse/v1.0.0`](https://static.api.apiture.com/errors/integrationInUse/v1.0.0)<br>
              The integration instance cannot be deleted because it is not `disabled`.
              Remediation: Disable all the integration instance before deleting it.
          x-apiture-errors:
            - integrationInUse
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/problemResponse'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
  /integrations/{integrationId}/institutionInstances/{institutionId}/enabled:
    parameters:
      - $ref: '#/components/parameters/integrationIdPathParam'
      - $ref: '#/components/parameters/institutionIdPathParam'
    post:
      summary: Enable an integration instance.
      description: |-
        Mark an integration instance as enabled and active. Such integration instances are available for use by all customers of the financial institution meeting the specified availability criteria.
        The operation can only be performed for integration instances for which the associated integration definition is `enabled` (i.e. not `beta` or `disabled`).
        This operation is idempotent: it does nothing if the integration instance state is already `enabled`.
      operationId: enableIntegrationInstance
      x-apiture-api: adminIntegrationInstances
      x-apiture-group: integrationInstances
      x-apiture-unauthenticated: true
      tags:
        - Integration Instance Actions
      security:
        - cookieAuth: []
      responses:
        '200':
          description: OK. The integration instance was marked as enabled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/integrationInstance'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
  /integrations/{integrationId}/institutionInstances/{institutionId}/disabled:
    parameters:
      - $ref: '#/components/parameters/integrationIdPathParam'
      - $ref: '#/components/parameters/institutionIdPathParam'
    post:
      summary: Disable an integration instance.
      description: |-
        Mark an integration instance as disabled. (Note: Only integration instances that are `disabled` can be [`deleted`](#op-deleteIntegrationInstance)) This sets the `state` of the integration instance to `disabled`.
        This operation is idempotent: it does nothing if the integration instance state is already `disabled`.
      operationId: disableIntegrationInstance
      x-apiture-api: adminIntegrationInstances
      x-apiture-group: integrationInstances
      x-apiture-unauthenticated: true
      tags:
        - Integration Instance Actions
      security:
        - cookieAuth: []
      responses:
        '200':
          description: OK. The integration instance was marked as enabled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/integrationInstance'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
  /integrations/{integrationId}/institutionInstances/{institutionId}/beta:
    parameters:
      - $ref: '#/components/parameters/integrationIdPathParam'
      - $ref: '#/components/parameters/institutionIdPathParam'
    post:
      summary: Transition an integration instance to Beta mode.
      description: |-
        Mark an integration instance as operating in _beta_ mode. Integration instances in beta mode are ony accessible to users that have the beta mode property for this integration enabled.
        This operation can be performed for integration instances that are in a state of `enabled`, `disabled`, or `beta`.
        The operation only succeeds for integration instances for which the associated integration definition is not `disabled`.
        This sets the `state` to `beta`. Use either [`enableIntegrationInstance`](#op-enableIntegrationInstance) to change the state to `enabled` or [`disableIntegrationInstance`](#op-disableIntegrationInstance) to set the state to `disabled`.
        This operation is idempotent: it does nothing if the integration instance state is already `beta`.
      operationId: enableIntegrationInstanceBetaMode
      x-apiture-api: adminIntegrationInstances
      x-apiture-group: integrationInstances
      x-apiture-unauthenticated: true
      tags:
        - Integration Instance Actions
      security:
        - cookieAuth: []
      responses:
        '200':
          description: OK. The integration instance was marked as enabled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/integrationInstance'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
components:
  parameters:
    integrationIdPathParam:
      name: integrationId
      description: The integration identifier path parameter. This is a human-readable unique identifier for the integration definition.
      in: path
      schema:
        $ref: '#/components/schemas/integrationId'
      required: true
    institutionIdPathParam:
      name: institutionId
      description: The institution identifier path parameter. This is a human-readable and unique identifier for the institution.
      in: path
      schema:
        $ref: '#/components/schemas/institutionId'
      required: true
    dryRunQueryParam:
      name: dryRun
      in: query
      description: |-
        Indicates that the associated operation should only validate the request and not change the state.
        If the request is valid, the operation returns 204 No Content. If the request is invalid, it returns the corresponding 4xx error response.
      schema:
        description: When `true`, only validate the request without executing it.
        type: boolean
        default: false
  schemas:
    integrationInstances:
      x-apiture-version: 2.0.0
      title: Integration Instance Collection (v2.0.0)
      description: Collection of integration instance items.
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - type: object
          required:
            - items
          properties:
            items:
              description: An array containing integration summary items.
              type: array
              maxItems: 1000
              items:
                $ref: '#/components/schemas/integrationInstanceItem'
      example:
        items:
          - id: ULTRA_PAY
            createdAt: '2021-10-30T19:06:04.250Z'
            updatedAt: '2021-10-30T19:06:04.250Z'
            state: enabled
            description: string
            availability:
              web: true
              mobile: true
              personal: true
              business: true
            createdBy: fxim_user_1
    integrationInstanceItem:
      x-apiture-version: 2.0.0
      title: Integration Instance Item (v2.0.0)
      description: Integration instance item within collections/lists.
      type: object
      required:
        - id
        - state
        - description
        - createdBy
        - createdAt
      allOf:
        - $ref: '#/components/schemas/timestampFields'
        - $ref: '#/components/schemas/mutableIntegrationInstanceFields'
        - $ref: '#/components/schemas/immutableIntegrationInstanceFields'
        - properties:
            id:
              $ref: '#/components/schemas/integrationId'
            availability:
              description: Indicates the client and customer criteria to use the integration instance.
              $ref: '#/components/schemas/integrationInstanceAvailability'
            createdBy:
              description: Opaque identifier representing the user that created the integration instance. The identifier is only used for logging and filtering purposes.
              $ref: '#/components/schemas/resourceId'
      example:
        id: ULTRA_PAY
        description: Fintech1 SSO Integration
        createdAt: '2021-10-30T19:06:04.250Z'
        updatedAt: '2021-10-30T19:06:04.250Z'
        state: enabled
        availability:
          web: true
          mobile: true
          personal: true
          business: true
        createdBy: fxim_user_1
    integrationInstanceAvailability:
      title: Integration Instance Availability (v1.0.0)
      description: Defines the run-time contexts in which this integration is available.
      type: object
      required:
        - web
        - mobile
        - personal
        - business
      properties:
        web:
          description: The integration is available within the online banking (web) client application.
          type: boolean
        mobile:
          description: The integration is available within the mobile application.
          type: boolean
        personal:
          description: The integration is available to personal (retail) banking customers.
          type: boolean
        business:
          description: The integration is available to business and small business customers.
          type: boolean
      x-apiture-version: 1.0.0
    mutableIntegrationInstanceFields:
      x-apiture-version: 2.0.0
      title: Mutable Integration Instance Fields (v2.0.0)
      description: Mutable Integration Instance fields used to compose other schemas.
      x-apiture-fragment: true
      type: object
      properties:
        label:
          description: The label to be used in the online banking web client menu.
          type: string
          maxLength: 128
          minLength: 4
          format: text
        mobileLabel:
          description: The label to be used in the mobile banking application. If omitted `label` is used.
          type: string
          maxLength: 128
          minLength: 4
          format: text
        mobileDisplayImage:
          description: The default image to be used in the mobile banking application. This is a Base64 encoded jpg, gif, png or svg. The maximum allowed original size of the image is 100KB (prior to encoding). The file type is determined by the [file signature](https://en.wikipedia.org/wiki/List_of_file_signatures).
          type: string
          format: base64
          maxLength: 136536
        availability:
          $ref: '#/components/schemas/integrationInstanceAvailability'
        defaultRelayState:
          description: The default relay state for the SAML request.
          type: string
          format: text
          maxLength: 255
        parameterValues:
          description: JSON object defining custom integration parameter values for the integration. The integration instance values for these parameters are configured in the financial institution admin application and must match the parameter JSON schema of the definition.
          $ref: '#/components/schemas/jsonObject'
        primaryTermsContent:
          description: The path of the primary terms of service for the integration instance. This references content uploaded via the FXIM control panel content upload feature. The path is expected to start with `/content`.
          allOf:
            - $ref: '#/components/schemas/integrationTermsOfServiceContent'
        primaryTermsRequired:
          description: Determines whether the primary terms of service are presented every time the user uses the integration (`always`), only the first time the user uses the integration (`once`), or never (`never`).
          type: string
          $ref: '#/components/schemas/integrationTermsOfServiceFrequency'
        secondaryTermsContent:
          description: The secondary terms of service for the integration instance. This references content uploaded via the FXIM control panel content upload feature. The path is expected to start with `/content`.
          allOf:
            - $ref: '#/components/schemas/integrationTermsOfServiceContent'
        secondaryTermsRequired:
          description: Determines whether the secondary terms of service are presented every time the user uses the integration (`always`), only the first time the user uses the integration (`once`), or never (`never`).
          type: string
          $ref: '#/components/schemas/integrationTermsOfServiceFrequency'
      example:
        id: MY_INTEG
        state: enabled
        label: Fintech1 SSO Integration Web
        mobileLabel: Fintech1 Mobile
        mobileDisplayImage: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQAAAAA3bvkkAAAACklEQVR4AWNgAAAAAgABc3UBGAAAAABJRU5ErkJggg==
        availability:
          web: true
          mobile: true
          personal: true
          business: true
        institutionId: TCF
        defaultRelayState: RelStat123
        parameterValues:
          type: object
          properties: {}
        primaryTermsContent: /content/myInteg/primaryTerms
        primaryTermsRequired: once
        secondaryTermsContent: /content/myInteg/secondaryTerms
        secondaryTermsRequired: always
    integrationInstanceState:
      title: Integration Instance State (v1.0.0)
      description: |+
        The state of an integration instance.

        <strong><code>integrationInstanceState</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>disabled</code></strong></td><td>Disabled: <p>Not available to any users</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>enabled</code></strong></td><td>Enabled: <p>Live, available to all users that meet the criteria</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>beta</code></strong></td><td>Beta Mode: <p>Limited availability, only available to users enabled for beta test</p>
        </td>
            </tr>
        </table>

      type: string
      x-apiture-enum: integrationInstanceState
      enum:
        - disabled
        - enabled
        - beta
      x-apiture-version: 1.0.0
    immutableIntegrationInstanceFields:
      x-apiture-version: 1.1.0
      title: Immutable Integration Instance Fields (v1.1.0)
      description: Immutable Integration Instance Fields.
      x-apiture-fragment: true
      type: object
      allOf:
        - $ref: '#/components/schemas/timestampFields'
        - properties:
            state:
              $ref: '#/components/schemas/integrationInstanceState'
            institutionId:
              description: The unique immutable identifier of the financial institution the integration instance is executed for. The identifier is used for logging purposes. This is only applicable if `availability.institutions` is `single`.
              $ref: '#/components/schemas/institutionId'
    newIntegrationInstance:
      x-apiture-version: 2.0.0
      title: New Integration Instance (v2.0.0)
      description: The instance of a new third-party integration.
      required:
        - id
        - parameterValues
        - primaryTermsRequired
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/mutableIntegrationInstanceFields'
      example:
        id: MY_INTEG
        label: Fintech1 Feature
        mobileLabel: Fintech1 feature
        mobileDisplayImage: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQAAAAA3bvkkAAAACklEQVR4AWNgAAAAAgABc3UBGAAAAABJRU5ErkJggg==
        availability:
          web: true
          mobile: true
          personal: true
          business: true
        institutionId: TCF
        defaultRelayState: RelStat123
        parameterValues: {}
        primaryTermsContent: /content/myInteg/primaryTerms
        primaryTermsRequired: once
        secondaryTermsContent: /content/myInteg/secondaryTerms
        secondaryTermsRequired: always
    integrationInstancePatch:
      x-apiture-version: 2.0.0
      title: Integration Instance Patch (v2.0.0)
      description: Request body to patch an integration instance.
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/mutableIntegrationInstanceFields'
      example:
        label: Fintech1 Feature
        mobileLabel: Fintech1 Feature
        mobileDisplayImage: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQAAAAA3bvkkAAAACklEQVR4AWNgAAAAAgABc3UBGAAAAABJRU5ErkJggg==
        availability:
          web: true
          mobile: true
          personal: true
          business: true
        institutionId: TCF
        defaultRelayState: RelStat123
        parameterValues: {}
        primaryTermsContent: /content/myInteg/primaryTerms
        primaryTermsRequired: once
        secondaryTermsContent: /content/myInteg/secondaryTerms
        secondaryTermsRequired: always
    integrationInstance:
      x-apiture-version: 2.0.0
      title: Integration Instance (v2.0.0)
      description: The instance of a third-party integration.
      required:
        - id
        - institutionId
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/mutableIntegrationInstanceFields'
        - $ref: '#/components/schemas/immutableIntegrationInstanceFields'
        - type: object
          properties:
            id:
              $ref: '#/components/schemas/integrationId'
      example:
        id: MY_INTEG
        state: enabled
        availability:
          web: true
          mobile: true
          personal: true
          business: true
        institutionId: TCF
        label: Fintech1 Feature
        mobileLabel: Fintech1 Feature
        mobileDisplayImage: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQAAAAA3bvkkAAAACklEQVR4AWNgAAAAAgABc3UBGAAAAABJRU5ErkJggg==
        defaultRelayState: RelStat123
        parameterValues: {}
        primaryTermsContent: /content/myInteg/primaryTerms
        primaryTermsRequired: once
        secondaryTermsContent: /content/myInteg/secondaryTerms
        secondaryTermsRequired: always
    integrationTermsOfServiceContent:
      title: Integration Terms Of Service Content (v1.0.0)
      description: The relative path of the primary terms of service for the integration instance. This references content uploaded via the FXIM control panel content upload feature. The path must start with `/content`.
      type: string
      pattern: ^\/content\/.*
      maxLength: 255
      x-apiture-version: 1.0.0
    integrationTermsOfServiceFrequency:
      title: Integration terms of service frequency (v1.0.0)
      description: |+
        The frequency with which the terms of service are presented to the user.

        <strong><code>integrationTermsOfServiceFrequency</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>always</code></strong></td><td>Always: <p>The content is always displayed, i.e. every time a user activates the integration</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>once</code></strong></td><td>Once: <p>The content is only displayed the first time the user activates the integration or when the recorded steps are reset.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>never</code></strong></td><td>never: <p>The content is not displayed to the user. This can be used to temporarily deactivate consent steps.</p>
        </td>
            </tr>
        </table>

      type: string
      x-apiture-enum: integrationTermsOfServiceFrequency
      enum:
        - always
        - once
        - never
      x-apiture-version: 1.0.0
    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
    integrationDefinitions:
      x-apiture-version: 5.0.0
      title: Integration definition collection (v5.0.0)
      description: Collection of integration definition items.
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - type: object
          required:
            - items
          properties:
            items:
              description: An array containing integration summary items.
              type: array
              maxItems: 1000
              items:
                $ref: '#/components/schemas/integrationDefinitionItem'
      example:
        items:
          - id: ULTRA_PAY
            createdAt: '2021-10-30T19:06:04.250Z'
            updatedAt: '2021-10-30T19:06:04.250Z'
            partnerDomain: fintech-partner.com
            state: enabled
            staged: false
            activeInstanceCount: 14
            description: string
            availability:
              web: true
              mobile: true
              retail: true
              commercial: true
              institutions: single
            assertionEncryptionSupported: true
            serviceProviderMetadataUrl: https://my.audience.com/saml/metadata.xml
            serviceProviderHostsMetadata: true
      x-resolved-from: ../../systemIntegrationDefinitions/openapi.yaml#/components/schemas/integrationDefinitions
    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
    integrationId:
      title: Integration Instance Identifier (v1.0.0)
      description: The unique, human-readable identifier for the integration instance.
      type: string
      minLength: 2
      maxLength: 16
      pattern: ^[A-Z0-9_]{2,16}$
      example: ULTRA_PAY
      x-resolved-from: ../../userIntegrations/openapi.yaml#/components/schemas/integrationId
      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
    timestampFields:
      x-apiture-version: 1.1.0
      title: Timestamp Fields (v1.1.0)
      description: Timestamps which describe when a resource was created or last updated.
      x-apiture-fragment: true
      allOf:
        - $ref: '#/components/schemas/createdAtField'
        - type: object
          properties:
            updatedAt:
              description: The date-time when the resource was last updated, in [RFC 3339](https://tools.ietf.org/html/rfc3339) date-time `YYYY-MM-DDThh:mm:ss.sssZ` format, UTC. This is derived and immutable.
              $ref: '#/components/schemas/readOnlyTimestamp'
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/timestampFields
    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
    jsonObject:
      title: JSON Object (v1.0.0)
      description: A JSON object.
      type: object
      x-resolved-from: ../../devIntegrationDefinitions/openapi.yaml#/components/schemas/jsonObject
      x-apiture-version: 1.0.0
    integrationDefinitionItem:
      x-apiture-version: 5.0.0
      title: Integration Definition Item (v5.0.0)
      description: Integration definition item within collections/lists.
      type: object
      required:
        - id
        - staged
        - state
        - description
        - partnerDomain
        - serviceProviderHostsMetadata
        - createdAt
      allOf:
        - $ref: '#/components/schemas/timestampFields'
        - $ref: '#/components/schemas/mutableIntegrationDefinitionFields'
        - $ref: '#/components/schemas/immutableIntegrationDefinitionFields'
        - properties:
            id:
              $ref: '#/components/schemas/integrationDefinitionId'
            staged:
              type: boolean
              description: If `true`, the integration definition is a staged for deployment. If `false`, this is the live, deployed version of an integration definition.
            description:
              description: The description of the client application.
              type: string
              format: text
              maxLength: 4000
            availability:
              description: Indicates if the integration definition can be used by any institution. or only one institution.
              $ref: '#/components/schemas/integrationDefinitionAvailability'
            partnerDomain:
              description: The internet domain name (in lowercase) of the partner that owns the integration definition.
              allOf:
                - $ref: '#/components/schemas/integrationPartnerDomain'
      example:
        id: ULTRA_PAY
        description: Fintech1 SSO Integration
        createdAt: '2021-10-30T19:06:04.250Z'
        updatedAt: '2021-10-30T19:06:04.250Z'
        partnerDomain: fintech-partner.com
        state: enabled
        staged: false
        activeInstanceCount: 14
        availability:
          web: true
          mobile: true
          retail: true
          commercial: true
          institutions: single
        assertionEncryptionSupported: true
        serviceProviderMetadataUrl: https://my.audience.com/saml/metadata.xml
        serviceProviderHostsMetadata: true
      x-resolved-from: ../../systemIntegrationDefinitions/openapi.yaml#/components/schemas/integrationDefinitionItem
    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
    createdAtField:
      description: A field used to represent the `createdAt` date-time for a resource.
      x-apiture-fragment: true
      type: object
      properties:
        createdAt:
          description: The date-time when this resource was created, in [RFC 3339](https://tools.ietf.org/html/rfc3339) date-time `YYYY-MM-DDThh:mm:ss.sssZ` format, UTC. This is derived and immutable.
          $ref: '#/components/schemas/readOnlyTimestamp'
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/createdAtField
      x-apiture-version: 1.0.0
      title: ' (v1.0.0)'
    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
    mutableIntegrationDefinitionFields:
      x-apiture-version: 3.0.0
      title: Mutable Integration Definition Fields (v3.0.0)
      description: Mutable Integration Definition fields used to compose other schemas.
      x-apiture-fragment: true
      type: object
      properties:
        description:
          description: The description of the client application.
          type: string
          format: text
          minLength: 4
          maxLength: 4000
        label:
          description: The label to be used in the online banking web client menu.
          type: string
          maxLength: 128
          minLength: 4
          format: text
        mobileLabel:
          description: The label to be used in the mobile banking application, if different from the `label`.
          type: string
          maxLength: 128
          minLength: 4
          format: text
        availability:
          $ref: '#/components/schemas/integrationDefinitionAvailability'
        institutionId:
          description: The unique immutable identifier of the financial institution the integration definition is executed for. The identifier is used for logging purposes. Only applicable if `availability.institutions` is `single`.
          $ref: '#/components/schemas/institutionId'
        audienceUrl:
          description: The audience URL for the SAML request.
          type: string
          format: uri
          maxLength: 255
        defaultRelayState:
          description: The default relay state for the SAML request.
          type: string
          format: text
          maxLength: 255
        signatureAlgorithm:
          description: The signature algorithm used for the SAML request. The value has to match one of the `signatureAlgorithms` returned by [`getSupportedIntegrationParameters`](#op-getSupportedIntegrationParameters).
          type: string
          maxLength: 15
          pattern: ^[-a-zA-Z0-9-_ ]{0,15}$
        digestAlgorithm:
          description: The digest / hash algorithm used for the SAML request. The value has to match one of the `digestAlgorithms` returned by [`getSupportedIntegrationParameters`](#op-getSupportedIntegrationParameters).
          type: string
          maxLength: 15
          pattern: ^[-a-zA-Z0-9-_ ]{0,15}$
        encryptionAlgorithm:
          description: The encryption algorithm used for the SAML request. The value has to match one of the `encryptionAlgorithms` returned by [`getSupportedIntegrationParameters`](#op-getSupportedIntegrationParameters).
          type: string
          maxLength: 15
          pattern: ^[-a-zA-Z0-9-_ ]{0,15}$
        assertionEncryptionSupported:
          description: '`true` if this integration supports assertion value encryption.'
          type: boolean
        serviceProviderHostsMetadata:
          description: If `true`, the SAML metadata at the `serviceProviderMetadataUrl` is hosted by the service provider. If `false`, the `serviceProviderMetadataUrl` represents a relative path.
          type: boolean
        serviceProviderMetadataUrl:
          description: The SAML Metadata URL for the service provider integration target. When `serviceProviderHostsMetadata` is `false`, this is assumed to point to an URL hosted by the Apiture platform provider,
          type: string
          format: uri-reference
          minLength: 1
          maxLength: 255
          example: https://auth.apiture.com/saml/sp/743d1fe4-f123-488e-9a20-1b5194bfa86c/metadata
        parameterSchema:
          description: JSON schema defining custom integration parameters required by the integration. The integration instance values for these parameters are configured in the financial institution admin application.
          $ref: '#/components/schemas/jsonObject1'
        requiredProperties:
          description: Additional properties, separate from customer, institution, integration and environment properties, that this integration requires to be set. Each value has to match the `name` of one of the `additionalProperties` returned by [`getSupportedIntegrationParameters`](#op-getSupportedIntegrationParameters).
          type: array
          maxItems: 100
          items:
            $ref: '#/components/schemas/integrationPropertyName'
        usesSpecificCustomerId:
          description: If `true`, the integration uses an integration-specific customer identifier. A value for an integration-specific customer identifier has to be provided when defining an integration instance in the administration API.
          type: boolean
        specificCustomerIdLabel:
          description: Label for the integration-specific customer identifier shown in the financial institution admin application. when defining an integration instance in the administration API. Required if `usesSpecificCustomerId` is `true`.
          type: string
          format: text
          minLength: 1
          maxLength: 255
        specificCustomerIdDescription:
          description: Description for the integration-specific customer identifier when defining an integration instance in the administration API. Required if `usesSpecificCustomerId` is `true`.
          type: string
          format: text
          minLength: 1
          maxLength: 255
        targetUrlTemplate:
          description: The URL template to redirect or post to (depending on the `targetMethod`). The URL template string may contain one or more of the substitution variables `{{base64Saml}}`, `{{institutionId}}`, `{{configuration.<name>}}`,`{{vendorCustId}}`. The respective value(s) for the variable is replaced at runtime. For example, when the configuration for `vendorCustomerId` for an instance is set to `fin` in the financial institution admin application, The URL `https://{{configuration.vendorCustomerId}}.foo.com/` translates to `https://fin.foo.com/`.
          type: string
          format: uri
          minLength: 1
          maxLength: 255
        targetMethod:
          description: The method used to provide the data to the integration target. The value has to match one of the `targetMethods` returned by [`getSupportedIntegrationParameters`](#op-getSupportedIntegrationParameters).
          type: string
          minLength: 1
          maxLength: 15
          pattern: ^[-a-zA-Z0-9-_ ]{0,15}$
      example:
        id: MY_INTEG
        description: Fintech1 Integration.
        staged: false
        state: enabled
        activeInstanceCount: 14
        label: Fintech1 SSO Integration
        mobileLabel: Fintech1 feature
        usesSpecificCustomerId: true
        specificCustomerIdLabel: Customer ID
        specificCustomerIdDescription: Unique Fintech1 Customer ID (GUID)
        availability:
          web: true
          mobile: true
          retail: true
          commercial: true
          institutions: single
        institutionId: TCF
        partnerDomain: fintech-partner.com
        audienceUrl: https://my.audience.com/
        defaultRelayState: RelStat123
        signatureAlgorithm: RSA-SHA256
        digestAlgorithm: SHA256
        encryptionAlgorithm: AES256-GCM
        assertionEncryptionSupported: true
        serviceProviderMetadataUrl: https://my.audience.com/saml/metadata.xml
        serviceProviderHostsMetadata: true
        targetMethod: SAML-POST
        targetUrlTemplate: https://my-integration.example.com/sp/saml?cust=%7B%7BinstitutionId%7D%7D
        parameterSchema:
          type: object
          properties:
            value1:
              description: ...
              type: string
              format: text
              minLength: 1
              maxLength: 200
            value2:
              description: ...
              type: integer
              format: int32
              minimum: 1
              maximum: 100
            value3:
              description: ...
              type: string
              enum:
                - a
                - b
                - c
      x-resolved-from: ../../systemIntegrationDefinitions/openapi.yaml#/components/schemas/mutableIntegrationDefinitionFields
    immutableIntegrationDefinitionFields:
      x-apiture-version: 3.0.0
      title: Immutable Integration Definition Fields (v3.0.0)
      description: Immutable Integration Definition Fields.
      x-apiture-fragment: true
      type: object
      allOf:
        - $ref: '#/components/schemas/timestampFields'
        - properties:
            id:
              description: A client-specified ID for this integration. If omitted, the system will generate a unique ID.
              $ref: '#/components/schemas/integrationDefinitionId'
            partnerDomain:
              description: The unique ID of the partner who implements the integration.
              $ref: '#/components/schemas/integrationPartnerDomain'
            state:
              $ref: '#/components/schemas/integrationDefinitionState'
            activeInstanceCount:
              type: integer
              minimum: 0
              maximum: 10000
              format: int32
              description: The number of active (not disabled) integration instances configured for this integration definition. Integration definitions that have an `activeInstanceCount` greater than 0 cannot be deleted.
      x-resolved-from: ../../systemIntegrationDefinitions/openapi.yaml#/components/schemas/immutableIntegrationDefinitionFields
    integrationDefinitionId:
      title: Integration Definition Identifier (v1.0.0)
      description: The unique, human-readable identifier for the integration definition.
      type: string
      minLength: 2
      maxLength: 16
      pattern: ^[A-Z0-9_]{2,16}$
      example: ULTRA_PAY
      x-resolved-from: ../../systemIntegrationDefinitions/openapi.yaml#/components/schemas/integrationDefinitionId
      x-apiture-version: 1.0.0
    integrationDefinitionAvailability:
      x-apiture-version: 3.0.0
      title: Integration Definition Availability (v3.0.0)
      description: Defines the run-time contexts in which this integration is available.
      type: object
      required:
        - web
        - mobile
        - retail
        - commercial
        - institutions
      properties:
        web:
          description: The integration is available within the online banking (web) client application.
          type: boolean
        mobile:
          description: The integration is available within the mobile application.
          type: boolean
        retail:
          description: The integration is available to retail (personal) banking customers.
          type: boolean
          x-apiture-note: formerly called _personal_
        commercial:
          description: The integration is available to commercial (business and small business ) banking customers.
          x-apiture-note: formerly called _business_
          type: boolean
        institutions:
          $ref: '#/components/schemas/integrationDefinitionInstitutionAvailability'
      x-resolved-from: ../../systemIntegrationDefinitions/openapi.yaml#/components/schemas/integrationDefinitionAvailability
    integrationPartnerDomain:
      title: Integration Partner Domain (v1.0.0)
      description: The internet domain name (in lowercase) of an integration partner.
      type: string
      format: text
      minLength: 4
      maxLength: 100
      pattern: ^((?!-))(xn--)?[a-z0-9][a-z0-9-_]{0,61}[a-z0-9]{0,1}\.(xn--)?([a-z0-9\-]{1,61}|[a-z0-9-]{1,30}\.[a-z]{2,})$
      example: fintech-partner.com
      x-resolved-from: ../../systemIntegrationDefinitions/openapi.yaml#/components/schemas/integrationPartnerDomain
      x-apiture-version: 1.0.0
    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
    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
    jsonObject1:
      title: JSON Object (v1.0.0)
      description: A JSON object.
      type: object
      x-resolved-from: ../../systemIntegrationDefinitions/openapi.yaml#/components/schemas/jsonObject
      x-apiture-version: 1.0.0
    integrationPropertyName:
      title: Integration Property Name (v1.0.0)
      description: The name of a data property that may be assigned in an integration.
      type: string
      pattern: ^[a-zA-Z][a-zA-Z0-9]{1,31}$
      minLength: 2
      maxLength: 32
      x-resolved-from: ../../systemIntegrationDefinitions/openapi.yaml#/components/schemas/integrationPropertyName
      x-apiture-version: 1.0.0
    integrationDefinitionState:
      title: Integration Definition State (v1.0.0)
      description: |+
        The state of an integration definition.

        <strong><code>integrationDefinitionState</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>disabled</code></strong></td><td>Disabled</td>
            </tr>
        <tr>
            <td><strong><code>enabled</code></strong></td><td>Enabled</td>
            </tr>
        </table>

      type: string
      x-apiture-enum: integrationDefinitionState
      enum:
        - disabled
        - enabled
      x-resolved-from: ../../systemIntegrationDefinitions/openapi.yaml#/components/schemas/integrationDefinitionState
      x-apiture-version: 1.0.0
    integrationDefinitionInstitutionAvailability:
      title: Integration Definition Visibility (v1.0.0)
      description: |+
        Integration Definition Visibility.

        <strong><code>integrationDefinitionInstitutionAvailability</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>single</code></strong></td><td>Single Institution: <p>The integration is only available to a single financial institution</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>all</code></strong></td><td>All Institutions: <p>The integration is available to all financial institutions</p>
        </td>
            </tr>
        </table>

      type: string
      x-apiture-enum: integrationDefinitionInstitutionAvailability
      enum:
        - single
        - all
      x-resolved-from: ../../systemIntegrationDefinitions/openapi.yaml#/components/schemas/integrationDefinitionInstitutionAvailability
      x-apiture-version: 1.0.0
    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
  securitySchemes:
    cookieAuth:
      type: apiKey
      in: cookie
      name: secure.fx.sid.fxweb
  x-apiture-errors:
    invalidJsonData:
      description: Unable to validate the JSON data.
      remediation: Correct the code or data according to the `detail` and / or `problems`
      attributes:
        properties:
          problems:
            description: Describes why the operation failed, providing an array of JSON schema and/or TypeScript errors.
            type: array
            maxItems: 1000
            items:
              $ref: '#/components/schemas/apiProblem'
    invalidIntegrationData:
      description: The integration data does not conform to the integration instance JSON schema
      remediation: Correct the code or data according to the `detail` and / or `problems`
      attributes:
        properties:
          problems:
            description: Describes why the operation failed, providing an array of JSON schema and/or TypeScript errors.
            type: array
            maxItems: 1000
            items:
              $ref: '#/components/schemas/apiProblem'
    integrationInUse:
      description: The integration instance cannot be deleted because it is not `disabled`.
      remediation: Disable all the integration instance before deleting it.
    integrationAlreadyExists:
      description: An instance of the integration already exists for this institution.
      remediation: Modify the existing integration instance or delete it before creating a new one.
    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
    notFound:
      description: The resource at the requested URL does not exist.
      remediation: Use the URL of an existing resource.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/notFound
    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
  responses:
    '204':
      description: No Content. The operation succeeded but returned no response body.
      x-resolved-from: ../../common/openapi.yaml#/components/responses/204
    '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
    '404':
      description: |
        Not found. There is no such resource at the request URL.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/notFound/v1.0.0`](https://static.api.apiture.com/errors/notFound/v1.0.0)<br>
          The resource at the requested URL does not exist.
          Remediation: Use the URL of an existing resource.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/notFound'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/notFound/v1.0.0
              title: Not Found
              status: 404
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The resource at the request URL does not exist.
              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/notFound/v1.0.0
              title: Not Found
              status: 404
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The resource at the request URL does not exist.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/404
    '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-resolved-from: ../../adminIntegrationInstances/status-codes-openapi.yaml
x-resolved-at: '2024-12-09T22:18:59.081Z'
x-apiture-annotated-at: '2024-12-09T22:18:59.340Z'
