openapi: 3.1.0
info:
  title: Disclosures Administration
  description: |-
    The Banking Disclosures API is an admin API that manages the disclosure documents for financial institution that a user may consent to. Disclosures may be assigned to different products within the Banking Products API or associated with the institution (such as a privacy policy or electronic use consent).

    A disclosure document resource holds the URI of a target document (typically, a PDF document). Each [disclosure](#schema-bankingDisclosure) also has a `type`, such as `privacyPolicy` or `productTermsAndConditions` or `electronicConsent`, which indicates the target document's type and purpose.

    Disclosures include a single `context` which indicates what the disclosure applies to. The `allProducts` context is used for when the disclosure document applies to all banking products. If the disclosure document only applies to a subset of products, the `specificProducts` `context` is used, and the products are listed in the `products` The `institution` `context` is used for disclosure documents related to the relationship between a financial institution and their customers rather than specific to banking products.

    The disclosure resource also holds the document's media type, the document's specific revision identification string, the active or archived state of the disclosure, and the time stamp of when the document was last modified.

    Use the [`listBankingDisclosures`](#op-listBankingDisclosures) to list all disclosures in the system and [`createBankingDisclosure`](#op-createBankingDisclosure) to create a new disclosure. Fetch a single disclosure with [`getBankingDisclosure`](#op-getBankingDisclosure). Update the disclosure with [`patchBankingDisclosure`](#op-patchBankingDisclosure). Use [`archiveDisclosure`](#op-archiveDisclosure) to archive a disclosure (mark it as no longer in use), and use [`unarchiveDisclosure`](#op-unarchiveDisclosure) to make it active again.
  version: 0.10.0
  contact:
    name: Apiture
    url: https://developer.apiture.com/help/support/
    email: api@apiture.com
  termsOfService: https://developer.apiture.com/docs/Apiture-API-License-Agreement.pdf
  license:
    name: Apiture API License
    url: https://developer.apiture.com/docs/Apiture-API-License-Agreement.pdf
x-apiture-namespace: bankingAdminDisclosures
tags:
  - name: Banking Disclosures
    description: Banking Disclosures
  - name: Banking Disclosure Actions
    description: Actions on Banking Disclosures
  - name: Banking Disclosure History Records
    description: Banking Disclosure History Records
servers:
  - url: /bankingAdmin
paths:
  /disclosures:
    get:
      summary: Return a collection of banking disclosures
      description: Return a collection of banking disclosures.
      operationId: listBankingDisclosures
      x-apiture-api: bankingAdminDisclosures
      x-apiture-group: bankingAdminDisclosures
      tags:
        - Banking Disclosures
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bankingDisclosures'
            application/vnd.restful+json:
              schema:
                $ref: '#/components/schemas/bankingDisclosures'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
      security:
        - accessToken:
            - bankingAdmin/read
      x-apiture-permission: listBankingDisclosures
    post:
      summary: Create a new banking disclosure
      description: Create a new banking disclosure within the banking disclosures collection.
      operationId: createBankingDisclosure
      x-apiture-api: bankingAdminDisclosures
      x-apiture-group: bankingDisclosures
      tags:
        - Banking Disclosures
      requestBody:
        required: true
        description: The data necessary to create a new banking disclosure.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/newBankingDisclosure'
      responses:
        '201':
          description: Created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bankingDisclosure'
            application/vnd.restful+json:
              schema:
                $ref: '#/components/schemas/bankingDisclosure'
          headers:
            Location:
              description: The URI of the new banking disclosure resource. (This is not the location of the disclosure _document_, just the metadata object that describes that document.)
              schema:
                type: string
                format: uri-reference
                maxLength: 2048
            ETag:
              $ref: '#/components/headers/ETag'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '422':
          description: |
            Unprocessable Entity. The request body and/or query parameters were well formed but otherwise invalid.

            This problem response may have one of the following `type` values:
            * [`https://static.api.apiture.com/errors/unsupportedDisclosureContentType/v1.0.0`](https://static.api.apiture.com/errors/unsupportedDisclosureContentType/v1.0.0)<br>
              The system does not support the given document media type.
              Remediation: Use a supported media type such as `application/pdf` or `text/html`.

            * [`https://static.api.apiture.com/errors/disclosureContentTypeMismatch/v1.0.0`](https://static.api.apiture.com/errors/disclosureContentTypeMismatch/v1.0.0)<br>
              The content at the disclosure `url` does not match the given `contentType`.
              Remediation: Use the content type that matches the content at the disclosure document URL.

            * [`https://static.api.apiture.com/errors/invalidUrl/v1.0.0`](https://static.api.apiture.com/errors/invalidUrl/v1.0.0)<br>
              The URL given in the request body is invalid.
              Remediation: Use the URL of an existing document that can be fetched without authentication.
          x-apiture-errors:
            - unsupportedDisclosureContentType
            - disclosureContentTypeMismatch
            - invalidUrl
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/problemResponse'
            application/vnd.restful+json:
              schema:
                $ref: '#/components/schemas/problemResponse'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
      security:
        - accessToken:
            - bankingAdmin/write
      x-apiture-permission: createBankingDisclosure
  /disclosures/{bankingDisclosureId}:
    parameters:
      - $ref: '#/components/parameters/bankingDisclosureIdPathParam'
    get:
      summary: Fetch a representation of this banking disclosure
      description: Return the JSON representation of this banking disclosure resource.
      operationId: getBankingDisclosure
      x-apiture-api: bankingAdminDisclosures
      x-apiture-group: bankingAdminDisclosures
      tags:
        - Banking Disclosures
      parameters:
        - $ref: '#/components/parameters/ifNoneMatchHeaderParam'
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bankingDisclosure'
            application/vnd.restful+json:
              schema:
                $ref: '#/components/schemas/bankingDisclosure'
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
        '304':
          $ref: '#/components/responses/304'
        '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'
      security:
        - accessToken:
            - bankingAdmin/read
      x-apiture-permission: getBankingDisclosure
    patch:
      summary: Update this banking disclosure
      description: Perform a partial update of this banking disclosure 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.
      x-apiture-note: |-
        Description update for future iterations when disclosure revisions are full supported:
        This operation should only be used for non-revision changes on the disclosure document.
        If the disclosure document changes, a new revision should be added via the [Add Disclosure Revision operation](#op-addDisclosureRevision). The revision change marks existing consents related to this disclosure document as `stale`.
      operationId: patchBankingDisclosure
      x-apiture-api: bankingAdminDisclosures
      x-apiture-group: bankingAdminDisclosures
      tags:
        - Banking Disclosures
      parameters:
        - $ref: '#/components/parameters/requiredIfMatchHeaderParam'
      requestBody:
        required: true
        description: The fields to update within the banking disclosure.
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/bankingDisclosurePatch'
          application/json:
            schema:
              $ref: '#/components/schemas/bankingDisclosurePatch'
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bankingDisclosure'
            application/vnd.restful+json:
              schema:
                $ref: '#/components/schemas/bankingDisclosure'
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '412':
          $ref: '#/components/responses/412'
        '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/orderChangeNotAllowed/v1.0.0`](https://static.api.apiture.com/errors/orderChangeNotAllowed/v1.0.0)<br>
              The disclosure document resource is ineligible for changes on the `order` property.
              Remediation: Choose a different disclosure document resource for changing the `order`.

            * [`https://static.api.apiture.com/errors/unsupportedDisclosureContentType/v1.0.0`](https://static.api.apiture.com/errors/unsupportedDisclosureContentType/v1.0.0)<br>
              The system does not support the given document media type.
              Remediation: Use a supported media type such as `application/pdf` or `text/html`.

            * [`https://static.api.apiture.com/errors/disclosureContentTypeMismatch/v1.0.0`](https://static.api.apiture.com/errors/disclosureContentTypeMismatch/v1.0.0)<br>
              The content at the disclosure `url` does not match the given `contentType`.
              Remediation: Use the content type that matches the content at the disclosure document URL.

            * [`https://static.api.apiture.com/errors/invalidUrl/v1.0.0`](https://static.api.apiture.com/errors/invalidUrl/v1.0.0)<br>
              The URL given in the request body is invalid.
              Remediation: Use the URL of an existing document that can be fetched without authentication.
          x-apiture-errors:
            - orderChangeNotAllowed
            - unsupportedDisclosureContentType
            - disclosureContentTypeMismatch
            - invalidUrl
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/problemResponse'
        '428':
          $ref: '#/components/responses/428'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
      security:
        - accessToken:
            - bankingAdmin/write
      x-apiture-permission: patchBankingDisclosure
  /disclosures/{bankingDisclosureId}/active:
    parameters:
      - $ref: '#/components/parameters/bankingDisclosureIdPathParam'
    post:
      operationId: unarchiveDisclosure
      x-apiture-api: bankingAdminDisclosures
      x-apiture-group: disclosures
      summary: Unarchive a disclosure
      description: 'Unarchive a disclosure. This changes the `state` property of the disclosure to `active`. This operation is idempotent: no changes are made if the disclosure is already `active`.'
      tags:
        - Banking Disclosure Actions
      responses:
        '200':
          description: OK. The operation succeeded. The disclosure was updated and its `state` changed to `active`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bankingDisclosure'
            application/vnd.restful+json:
              schema:
                $ref: '#/components/schemas/bankingDisclosure'
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
        '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'
      security:
        - accessToken:
            - bankingAdmin/write
      x-apiture-permission: unarchiveDisclosure
  /disclosures/{bankingDisclosureId}/archived:
    parameters:
      - $ref: '#/components/parameters/bankingDisclosureIdPathParam'
    post:
      operationId: archiveDisclosure
      x-apiture-api: bankingAdminDisclosures
      x-apiture-group: disclosures
      summary: Archive a disclosure
      description: 'Archive a disclosure. This changes the `state` property of the disclosure to `archived`. This operation is idempotent: no changes are made if the disclosure is already `archived`.'
      tags:
        - Banking Disclosure Actions
      responses:
        '200':
          description: OK. The operation succeeded. The disclosure was updated and its `state` changed to `archived`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bankingDisclosure'
            application/vnd.restful+json:
              schema:
                $ref: '#/components/schemas/bankingDisclosure'
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
        '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'
      security:
        - accessToken:
            - bankingAdmin/write
      x-apiture-permission: archiveDisclosure
  /disclosures/{bankingDisclosureId}/disclosureHistoryRecords:
    parameters:
      - $ref: '#/components/parameters/bankingDisclosureIdPathParam'
    get:
      summary: Return banking disclosure history records
      description: Return a list of history records for this banking disclosure.
      operationId: listBankingDisclosureHistoryRecords
      x-apiture-api: bankingAdminDisclosures
      x-apiture-group: bankingAdminDisclosures
      tags:
        - Banking Disclosure History Records
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bankingDisclosureHistoryRecords'
            application/vnd.restful+json:
              schema:
                $ref: '#/components/schemas/bankingDisclosureHistoryRecords'
        '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'
      security:
        - accessToken:
            - banking/read
      x-apiture-permission: listBankingDisclosureHistoryRecords
components:
  parameters:
    bankingDisclosureIdPathParam:
      name: bankingDisclosureId
      description: The unique identifier of this banking disclosure. This is an opaque string.
      in: path
      schema:
        $ref: '#/components/schemas/resourceId'
      required: true
    ifNoneMatchHeaderParam:
      name: If-None-Match
      description: The entity tag that was returned in the `ETag` response header of a previous call. If the resource's current entity tag value matches this header value, the `GET` will return 304 (Not Modified) and no response body, else the current resource representation and updated `ETag` is returned.
      in: header
      schema:
        $ref: '#/components/schemas/entityTag'
      x-resolved-from: ../../common/openapi.yaml#/components/parameters/ifNoneMatchHeaderParam
    requiredIfMatchHeaderParam:
      name: If-Match
      description: The entity tag that was returned in the `ETag` response header of a previous call. When this header is not included in the request, the operation fails with a 428 Precondition Required error. The passed entity tag must match the current entity tag of the resource. If the tags do not match, the operation fails with a 412 Precondition Failed error.
      in: header
      required: true
      schema:
        $ref: '#/components/schemas/entityTag'
      x-resolved-from: ../../common/openapi.yaml#/components/parameters/requiredIfMatchHeaderParam
  schemas:
    bankingDisclosureFields:
      title: Banking Disclosure Fields (v1.0.0)
      description: Fragment used to compose banking disclosure schemas.
      x-apiture-fragment: true
      type: object
      properties:
        context:
          description: |-
            The context of this disclosure document. Additional fields may be present based on the context.
            For example, if the context is `specificProducts`, the `products` field is present.
          $ref: '#/components/schemas/bankingDisclosureContext'
        type:
          description: The document type.
          $ref: '#/components/schemas/bankingDisclosureDocumentType'
        scope:
          description: If present, indicates whether the disclosure is limited to personal (retail) banking products, business (commercial) banking products, or both. This is only present if the disclosure's `context` is `institution`.
          $ref: '#/components/schemas/disclosureScope'
        title:
          description: The human-readable title for this document.
          type: string
          minLength: 4
          maxLength: 128
          format: text
          example: Terms and Conditions for 180 Day CD Accounts
        url:
          description: The URL where the document is located. This must be publicly accessible without authentication.
          type: string
          format: uri
          maxLength: 400
          example: http://cdn.apiture.com/TCF/product-documents/P003CD180/termsAndConditions-2023-05.pdf
        contentType:
          description: The [media type](https://tools.ietf.org/html/rfc6838) of this document.
          $ref: '#/components/schemas/contentType'
      x-apiture-version: 1.0.0
    mutableBankingDisclosureFields:
      x-apiture-version: 1.1.0
      title: Mutable Banking Disclosure Fields (v1.1.0)
      description: Fragment used to compose mutable banking disclosure schemas.
      x-apiture-fragment: true
      allOf:
        - $ref: '#/components/schemas/bankingDisclosureFields'
        - type: object
          properties:
            revisionId:
              $comment: This is not being used currently in any meaningful way, but is included for avoiding a breaking change later on. Allowable formats aren't prescribed but using the `createdAt` timestamp is suitable until work is done around supporting revisions.
              description: The revision identifier of this banking disclosure resource. This is an immutable string.
              type: string
              format: text
              maxLength: 255
              example: '20230601'
            order:
              description: The ordinal position of the banking disclosure resource within the banking disclosure collection. The collection is sorted by ascending order.
              type: integer
              format: int32
              minimum: -100
              maximum: 100
            products:
              description: Banking products that are associated with this banking disclosure resource. This property is only present when the `context` is `specificProducts`.
              type: array
              minItems: 0
              maxItems: 100
              items:
                $ref: '#/components/schemas/bankingProductItem'
    newBankingDisclosure:
      title: New Banking Disclosure (v1.0.0)
      description: Representation used to create a new banking disclosure. If not provided, the `order` will be at least one more than the largest `order` value of the other disclosures.
      type: object
      required:
        - title
        - type
        - context
        - contentType
        - url
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/mutableBankingDisclosureFields'
        - properties:
            products:
              description: Banking products that are associated with this banking disclosure resource. This property is only present when the `context` is `specificProducts`.
              type: array
              minItems: 0
              maxItems: 100
              items:
                $ref: '#/components/schemas/bankingProductItem'
      example:
        title: Terms and Conditions for 180 Day CD Accounts
        context: specificProducts
        type: termsAndConditions
        url: http://cdn.apiture.com/TCF/product-documents/P003CD180/termsAndConditions-2023-05.pdf
        contentType: application/pdf
        order: 23
        products:
          - id: 9d8f45ef9be307e1405d
            customerType: personal
            type: cd
            coreType: CD
            code: 180D_CDA
            label: 180 Day CD
            description: 180-day Certificate of Deposit account that earns 1.60%
      x-apiture-version: 1.0.0
    bankingDisclosure:
      x-apiture-version: 3.0.0
      title: Banking Disclosure (v3.0.0)
      description: Representation of banking disclosure resources.
      required:
        - id
        - title
        - context
        - type
        - state
        - url
        - contentType
        - order
        - revisionId
        - createdAt
        - updatedAt
      type: object
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/timestampFields'
        - $ref: '#/components/schemas/mutableBankingDisclosureFields'
        - $ref: '#/components/schemas/immutableBankingDisclosureFields'
      example:
        id: 86aac4ee-b695
        title: Terms and Conditions for 180 Day CD Accounts
        context: specificProducts
        type: termsAndConditions
        state: active
        url: http://cdn.apiture.com/TCF/product-documents/P003CD180/termsAndConditions-2023-05.pdf
        contentType: application/pdf
        order: 23
        revisionId: 440AEC4
        products:
          - id: 9d8f45ef9be307e1405d
            customerType: personal
            type: cd
            coreType: CD
            code: 180D_CDA
            label: 180 Day CD
            description: 180-day Certificate of Deposit account that earns 1.60%
        createdAt: '2022-05-01T09:54:23.023Z'
        updatedAt: '2022-05-01T12:31:15.108Z'
        updatedBy:
          id: 2802fc2f-c178
          firstName: Benny
          lastName: Billings
          username: bbillings
          state: active
    bankingDisclosurePatch:
      x-apiture-version: 1.1.0
      title: Banking Disclosure Patch (v1.1.0)
      description: |-
        Representation of a patch to a banking disclosure resource.
        The `url` and `contentType` fields are implicitly paired. If one is included in the patch, the other must be included as well.
      $comment: Disclosure document resources with a negative `order` may not be patched. They are intended to always maintain a higher ascending order relative to other resources.
      allOf:
        - $ref: '#/components/schemas/mutableBankingDisclosureFields'
      examples:
        - order: 10
        - url: http://cdn.apiture.com/TCF/product-documents/P003CD180/termsAndConditions-2023-05.pdf
          contentType: application/pdf
    disclosureScope:
      title: Disclosure Scope (v1.0.0)
      description: |+
        Indicates whether the disclosure is limited to personal (retail) banking products, business (commercial) banking products, or both.

        <strong><code>disclosureScope</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>personal</code></strong></td><td>Personal Banking Disclosure: <p>The disclosure is related to personal (retail) banking customers</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>business</code></strong></td><td>Business Banking Disclosure: <p>The disclosure is related to business (commercial) banking customers</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>both</code></strong></td><td>Personal and Business Banking Disclosure: <p>The disclosure is related to personal (retail) and business (commercial) banking customers</p>
        </td>
            </tr>
        </table>

      type: string
      enum:
        - personal
        - business
        - both
      x-apiture-enum: disclosureScope
      x-apiture-version: 1.0.0
    disclosureState:
      title: Disclosure State (v1.0.0)
      description: |+
        The state of a disclosure document resource. Use the [`archiveDisclosure`](#op-archiveDisclosure) and [`unarchiveDisclosure`](#op-unarchiveDisclosure) operations to change the state of a disclosure.

        <strong><code>disclosureState</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>active</code></strong></td><td>Active: <p>The disclosure is active and available for use</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>archived</code></strong></td><td>Archived: <p>The disclosure is archived and no longer in use.</p>
        </td>
            </tr>
        </table>

      type: string
      x-apiture-enum: disclosureState
      enum:
        - active
        - archived
      x-apiture-version: 1.0.0
    immutableBankingDisclosureFields:
      x-apiture-version: 1.0.1
      title: Banking Disclosure Item Fields (v1.0.1)
      description: Fields used to define other Banking Disclosure schemas.
      x-apiture-fragment: true
      type: object
      properties:
        id:
          description: The unique identifier for this banking disclosure resource. This is an immutable opaque string.
          $ref: '#/components/schemas/readOnlyResourceId'
        state:
          $ref: '#/components/schemas/disclosureState'
        updatedBy:
          description: The administrative user who last updated this disclosure resource.
          $ref: '#/components/schemas/adminUserReference'
    bankingDisclosureItem:
      x-apiture-version: 3.0.0
      title: Banking Disclosure Item (v3.0.0)
      description: Summary representation of a banking disclosure resource in banking disclosure collections.
      required:
        - id
        - title
        - state
        - context
        - type
        - url
        - contentType
        - revisionId
        - order
        - createdAt
        - updatedAt
      type: object
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/timestampFields'
        - $ref: '#/components/schemas/mutableBankingDisclosureFields'
        - $ref: '#/components/schemas/immutableBankingDisclosureFields'
      example:
        id: 86aac4ee-b695
        title: Terms and Conditions for 180 Day Personal CD Accounts
        context: specificProducts
        type: termsAndConditions
        state: active
        url: http://cdn.apiture.com/TCF/product-documents/P003CD180/termsAndConditions-2023-05.pdf
        contentType: application/pdf
        order: 23
        revisionId: '20230601'
        products:
          - id: 9d8f45ef9be307e1405d
            customerType: personal
            type: cd
            coreType: CD
            code: 180D_CDA
            label: 180 Day CD
            description: 180-day Certificate of Deposit account that earns 1.60%
        createdAt: '2022-05-01T09:54:23.023Z'
        updatedAt: '2022-05-01T12:31:15.108Z'
        updatedBy:
          id: 2802fc2f-c178
          firstName: Benny
          lastName: Billings
          username: bbillings
          state: active
    bankingDisclosures:
      x-apiture-version: 3.0.0
      title: Banking Disclosure Collection (v3.0.0)
      description: Collection of banking disclosures. The items in the collection are ordered in the `items` array.
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - type: object
          required:
            - items
          properties:
            items:
              description: An array containing a page of banking disclosure items.
              type: array
              maxItems: 10000
              items:
                $ref: '#/components/schemas/bankingDisclosureItem'
      example:
        items:
          - id: 86aac4ee-b695
            title: Terms and Conditions for 180 Day CD Accounts
            context: specificProducts
            type: termsAndConditions
            url: http://cdn.apiture.com/TCF/product-documents/P003CD180/termsAndConditions-2023-05.pdf
            contentType: application/pdf
            state: active
            order: 23
            revisionId: 440AEC4
            products:
              - id: 9d8f45ef9be307e1405d
                customerType: personal
                type: cd
                coreType: CD
                code: 180D_CDA
                label: 180 Day CD
                description: 180-day Certificate of Deposit account that earns 1.60%
            createdAt: '2022-05-01T09:54:23.023Z'
            updatedAt: '2022-05-01T12:31:15.108Z'
            updatedBy:
              id: 0399abed-fd3d
              firstName: Benny
              lastName: Billings
              username: bbillings
              state: active
          - id: d62c0701-0d74-4836-83f9-ebf3709442ea
            title: Privacy Policy for CD Accounts
            context: specificProducts
            type: privacyPolicy
            state: active
            url: http://cdn.apiture.com/TCF/product-documents/P01CD/privacyPolicy-2023-05.pdf
            contentType: application/pdf
            order: 25
            revisionId: 1.55.0
            products:
              - id: 9d8f45ef9be307e1405d
                customerType: personal
                type: cd
                coreType: CD
                code: 180D_CDA
                label: 180 Day CD
                description: 180-day Certificate of Deposit account that earns 1.60%
            createdAt: '2022-05-05T08:16:44.019Z'
            updatedAt: '2022-05-05T08:20:19.650Z'
            updatedBy:
              id: 2802fc2f-c178
              firstName: Benny
              lastName: Billings
              username: bbillings
              state: active
    bankingDisclosureContext:
      title: Banking Disclosure Context (v1.0.0)
      description: |+
        The contextual scope of the disclosure document.

        <strong><code>bankingDisclosureContext</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>institution</code></strong></td><td>Institution: <p>Disclosure documents scoped to the relationship between a financial institution and the banking customer</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>specificProducts</code></strong></td><td>Specific Products: <p>Disclosure documents scoped to specific products at a financial institution</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>allProducts</code></strong></td><td>All Products: <p>Disclosure documents scoped to all products at a financial institution</p>
        </td>
            </tr>
        </table>

      x-apiture-enum: bankingDisclosureContext
      type: string
      enum:
        - specificProducts
        - allProducts
        - institution
      x-apiture-version: 1.0.0
    bankingDisclosureHistoryRecords:
      title: Banking Disclosure History Record Collection (v1.0.0)
      description: Collection of banking disclosure history records.
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - type: object
          required:
            - items
          properties:
            items:
              description: An array containing a page of banking disclosure history record items.
              type: array
              maxItems: 10000
              items:
                $ref: '#/components/schemas/bankingDisclosureHistoryRecord'
      example:
        items:
          - type: created
            occurredAt: '2022-07-28T12:44:46.375Z'
          - type: updated
            occurredAt: '2022-07-29T11:22:26.364Z'
          - type: archived
            occurredAt: '2022-07-30T03:17:52.116Z'
      x-apiture-version: 1.0.0
    bankingDisclosureHistoryRecord:
      title: Banking Disclosure History Record (v1.0.0)
      description: Representation of banking disclosure history record resources.
      required:
        - type
        - occurredAt
      properties:
        type:
          description: The type of banking disclosure activity; this describes what the customer did with the banking disclosure.
          $ref: '#/components/schemas/bankingDisclosureHistoryRecordType'
        occurredAt:
          description: The date and time when the customer performed the action.
          $ref: '#/components/schemas/readOnlyTimestamp'
      example:
        type: created
        occurredAt: '2022-07-28T12:44:46.375Z'
      x-apiture-version: 1.0.0
    bankingDisclosureHistoryRecordType:
      title: Banking Disclosure History Record Type (v1.0.0)
      description: |+
        The type of a banking disclosure history record.

        <strong><code>bankingDisclosureHistoryRecordType</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>created</code></strong></td><td>Created: <p>The banking disclosure was created</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>updated</code></strong></td><td>Updated: <p>The banking disclosure was updated</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>archived</code></strong></td><td>Archived: <p>The banking disclosure was archived</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>unarchived</code></strong></td><td>Unarchived: <p>The banking disclosure was unarchived</p>
        </td>
            </tr>
        </table>

      type: string
      x-apiture-enum: bankingDisclosureHistoryRecordType
      enum:
        - created
        - updated
        - archived
        - unarchived
      x-apiture-version: 1.0.0
    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
    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
    entityTag:
      title: Entity Tag (v1.0.0)
      description: An strong or weak [HTTP Entity Tag (ETag)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag). Strong ETags take the form `"{printable-non-control-ASCII-characters}"` but for backwards compatibility the surrounding double quotes are optional. Weak ETags take the form `W/"{printable-non-control-ASCII-characters}"`.
      type: string
      minLength: 3
      maxLength: 512
      pattern: ^(([\x21\x23-\x7e]{1,512})|(W\/\"[\x21\x23-\x7e]{1,509}\"))$
      example: W/"325cf1cc-e370-4baf-8faf-c6db23f195a2"
      x-apiture-version: 1.0.0
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/entityTag
    bankingDisclosureDocumentType:
      x-apiture-version: 1.2.0
      title: Banking Disclosure Document Type (v1.2.0)
      description: |+
        The type of disclosure document.

        <strong><code>bankingDisclosureDocumentType</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>termsAndConditions</code></strong></td><td>Terms and Conditions: <p>Terms and conditions for a banking account</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>termsAndConditionsSupplement</code></strong></td><td>Supplement to Terms and Conditions: <p>A supplement or addendum to the terms and conditions for a banking account</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>attestation</code></strong></td><td>Attestation: <p>Personal attestation that all supplied information is truthful and correct</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>electronicConsent</code></strong></td><td>Electronic Consent: <p>Consent to use electronic communications between the financial institution and the banking customer</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>privacyDocument</code></strong></td><td>Privacy Document: <p>How the financial institution protects the customer&#39;s privacy. Deprecated. Use <code>privacyPolicy</code> instead.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>privacyPolicy</code></strong></td><td>Privacy Policy: <p>Policy describing how the financial institution protects the customer&#39;s privacy.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>digitalBankingAgreement</code></strong></td><td>Digital Banking Agreement: <p>Consent for usage of digital banking between the financial institution and the banking customer</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>other</code></strong></td><td>Other: <p>Another document type</p>
        </td>
            </tr>
        </table>

      type: string
      x-apiture-enum: bankingDisclosureDocumentType
      enum:
        - termsAndConditions
        - termsAndConditionsSupplement
        - electronicConsent
        - digitalBankingAgreement
        - privacyDocument
        - privacyPolicy
        - attestation
        - other
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/bankingDisclosureDocumentType
    contentType:
      x-apiture-version: 1.0.1
      title: Content Type (v1.0.1)
      description: The [media type](https://tools.ietf.org/html/rfc6838) of a file.
      type: string
      minLength: 8
      maxLength: 191
      pattern: ^[-a-z0-9]{4,48}\/[-+a-z0-9.]{3,142}$
      example: application/pdf
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/contentType
    bankingProductItem:
      x-apiture-version: 1.3.0
      title: Product Item (v1.3.0)
      description: Summary representation of a product resource in products collections. To fetch the full representation of this product, use the [`getBankingProduct`](#op-getBankingProduct) operation, passing this item's `id` field as the `bankingProductId` path parameter.
      required:
        - id
        - customerType
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/bankingProductFields'
        - type: object
          properties:
            id:
              description: The unique identifier for this product resource. This is an immutable opaque string.
              $ref: '#/components/schemas/readOnlyResourceId'
      example:
        id: 9d8f45ef9be307e1405d
        customerType: personal
        type: cd
        coreType: CD
        code: 180D_CDA
        label: 180 Day CD
        description: 180-day Certificate of Deposit account that earns 1.60%
      x-resolved-from: ../../products/openapi.yaml#/components/schemas/bankingProductItem
    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
    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
    adminUserReference:
      title: Admin User Reference (v1.0.0)
      description: A small object representing an administrative user's login account.
      type: object
      required:
        - id
        - firstName
        - lastName
        - username
        - state
      properties:
        id:
          description: The immutable, unique, opaque identifier for the user.
          $ref: '#/components/schemas/readOnlyResourceId'
        firstName:
          description: The user's first name.
          type: string
          format: text
          maxLength: 56
        lastName:
          description: The user's last name.
          type: string
          format: text
          maxLength: 56
        username:
          description: The user's login username.
          type: string
          format: text
          maxLength: 255
        state:
          $ref: '#/components/schemas/adminUserState'
      example:
        id: 0399abed-fd3d
        firstName: Benny
        lastName: Billings
        username: bbillings
        state: active
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/adminUserReference
      x-apiture-version: 1.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
    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
    bankingProductFields:
      x-apiture-version: 1.3.0
      title: Banking Product Fields (v1.3.0)
      description: Common fields of the product resource used to build other model schemas.
      type: object
      allOf:
        - $ref: '#/components/schemas/productReference'
        - type: object
          properties:
            customerType:
              description: Describes the target audience or consumer of the accounts, `personal` or `business`. Labels and descriptions for the enumeration values are in the `productTarget` key in the response of the `getLabels` operation.
              $ref: '#/components/schemas/productCustomerType'
      x-resolved-from: ../../products/openapi.yaml#/components/schemas/bankingProductFields
    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)'
    adminUserState:
      title: Admin User State (v1.0.0)
      description: |+
        The current state of the admin user.

        <strong><code>adminUserState</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>active</code></strong></td><td>Active: <p>The admin user is active</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>locked</code></strong></td><td>Locked: <p>The admin user&#39;s account is locked</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>removed</code></strong></td><td>Removed: <p>The admin user has been been removed from the system</p>
        </td>
            </tr>
        </table>

      type: string
      x-apiture-enum: adminUserState
      enum:
        - active
        - locked
        - removed
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/adminUserState
      x-apiture-version: 1.0.0
    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
    productReference:
      title: Product Reference (v2.4.0)
      x-apiture-version: 2.4.0
      description: A reference to a banking product.
      type: object
      required:
        - type
        - coreType
        - code
        - label
      properties:
        type:
          description: The type of account.
          $ref: '#/components/schemas/productType'
        coreType:
          description: The account product type in the banking core. For example, some cores may use `"D"` for a demand deposit (checking) account, some may use `"DDA"`.
          type: string
          pattern: ^[A-Z0-9]{1,4}$
          minLength: 1
          maxLength: 4
        code:
          description: The product's product code which uniquely identifies the product from other banking products. Codes are unique to the financial institution. For example, different products with the same `type` and the same `coreType` but different rates or other properties have different product codes, such as `CD3M`, `DDA_HI_YLD`, `P3207`.
          type: string
          format: text
          minLength: 1
          maxLength: 16
          example: CD001
        label:
          description: A human-readable label for this banking product.
          type: string
          minLength: 2
          maxLength: 48
          format: text
        description:
          description: A human-readable description of this banking product.
          type: string
          minLength: 2
          maxLength: 400
          format: markdown
      example:
        type: cd
        coreType: CD
        code: 180D_CDA
        label: 180 Day CD
        description: Certificate of Deposit with a 180 day term
      x-resolved-from: ../../products/openapi.yaml#/components/schemas/productReference
    productCustomerType:
      title: Product Customer Type (v1.0.0)
      description: |+
        Indicates the type of customer that uses this banking product: personal (retail) or business (commercial).

        <strong><code>productCustomerType</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>personal</code></strong></td><td>Personal: <p>Retail banking products for personal customers</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>business</code></strong></td><td>Business: <p>Commercial banking products for business customers</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>both</code></strong></td><td>Personal and Business: <p>Banking products for personal or business customers</p>
        </td>
            </tr>
        </table>

      type: string
      enum:
        - personal
        - business
        - both
      x-apiture-enum: productCustomerType
      x-resolved-from: ../../products/openapi.yaml#/components/schemas/productCustomerType
      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
    productType:
      x-apiture-version: 2.2.0
      title: Product Type (v2.2.0)
      description: |+
        The type (or category) of banking product.

        <strong><code>productType</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>savings</code></strong></td><td>Savings: <p>Savings Account</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>checking</code></strong></td><td>Checking: <p>Checking Account</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>cd</code></strong></td><td>CD: <p>Certificate of Deposit Account</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>ira</code></strong></td><td>IRA: <p>Individual Retirement Account</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>loan</code></strong></td><td>Loan: <p>Loan Account</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>creditCard</code></strong></td><td>Credit Card: <p>Credit Card Account</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>moneyMarket</code></strong></td><td>Money Market: <p>Money Market Account</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>healthSavings</code></strong></td><td>Health Savings: <p>Health Savings Account</p>
        </td>
            </tr>
        </table>

      type: string
      x-apiture-enum: productType
      enum:
        - savings
        - checking
        - cd
        - ira
        - loan
        - creditCard
        - moneyMarket
        - healthSavings
      x-resolved-from: ../../products/openapi.yaml#/components/schemas/productType
    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
  x-apiture-errors:
    orderChangeNotAllowed:
      description: The disclosure document resource is ineligible for changes on the `order` property.
      remediation: Choose a different disclosure document resource for changing the `order`.
    unsupportedDisclosureContentType:
      description: The system does not support the given document media type.
      remediation: Use a supported media type such as `application/pdf` or `text/html`.
    disclosureContentTypeMismatch:
      description: The content at the disclosure `url` does not match the given `contentType`.
      remediation: Use the content type that matches the content at the disclosure document URL.
    invalidUrl:
      description: The URL given in the request body is invalid.
      remediation: Use the URL of an existing document that can be fetched without authentication.
    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
    preconditionFailed:
      description: One or more conditions given in the request header fields evaluated to false when tested on the server.
      remediation: Update resources and use it's most recent ETag or modification time stamp.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/preconditionFailed
    preconditionRequired:
      description: The origin server requires the request to be conditional.
      remediation: Use a If-Unmodified-Since or If-Match request header corresponding to the most recent resource state.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/preconditionRequired
    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
  securitySchemes:
    accessToken:
      type: openIdConnect
      description: OpenId Connect (OIDC) authentication/authorization. The client uses the `authorization_endpoint` and `token_endpoint` to obtain an access token to pass in the `Authorization` header. Those endpoints are available via the OIDC Configuration URL. The actual URL may vary with each financial institution. See details at [Secure Access](https://dx.apiture.com/docs/api/concepts/api-keys/).
      openIdConnectUrl: https://auth.apiture.com/oidc/.well-known/openid-configuration
      x-resolved-from: ../../common/openapi.yaml#/components/securitySchemes/accessToken
  responses:
    '304':
      description: Not Modified. The resource has not been modified since it was last fetched.
      x-resolved-from: ../../common/openapi.yaml#/components/responses/304
    '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
    '412':
      description: |
        Precondition Failed. One or more conditions given in the request header fields evaluated to false when tested on the server.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/preconditionFailed/v1.0.0`](https://static.api.apiture.com/errors/preconditionFailed/v1.0.0)<br>
          One or more conditions given in the request header fields evaluated to false when tested on the server.
          Remediation: Update resources and use it's most recent ETag or modification time stamp.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/preconditionFailed'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
      x-resolved-from: ../../common/openapi.yaml#/components/responses/412
    '428':
      description: |
        Precondition Required. The origin server requires the request to be conditional.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/preconditionRequired/v1.0.0`](https://static.api.apiture.com/errors/preconditionRequired/v1.0.0)<br>
          The origin server requires the request to be conditional.
          Remediation: Use a If-Unmodified-Since or If-Match request header corresponding to the most recent resource state.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/preconditionRequired'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
      x-resolved-from: ../../common/openapi.yaml#/components/responses/428
    '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
  headers:
    ETag:
      description: The value of this resource's _entity tag_, to be passed with `If-Match` and `If-None-Match` request headers in other conditional API calls for this resource.
      schema:
        $ref: '#/components/schemas/entityTag'
      x-resolved-from: ../../common/openapi.yaml#/components/headers/ETag
x-apiture-traits:
  - api:
      name: disclosures
      namespace: bankingAdminDisclosures
      links: []
      applied: true
  - resource:
      name: banking disclosure
      etag: true
      cursorPaginated: false
      paginated: false
      applied: true
  - action:
      verb: archive
      name: disclosure
      state: archived
      etag: false
      pathPrefix: /disclosures/{bankingDisclosureId}
      applied: true
  - action:
      verb: unarchive
      name: disclosure
      state: active
      etag: false
      pathPrefix: /disclosures/{bankingDisclosureId}
      applied: true
  - security:
      baseScope: admin
      applied: true
x-resolved-from: ../../adminDisclosures/status-codes-openapi.yaml
x-resolved-at: '2024-12-09T22:05:37.698Z'
x-apiture-annotated-at: '2024-12-09T22:05:37.941Z'
