openapi: 3.1.0
info:
  title: Transaction Disputes
  description: |-
    Transaction disputes allow a customer or member of a financial institution to self-report suspicious activity or erroneous transactions. Each submitted transaction dispute requires supporting information which is collected through form items. The dispute category determines the required form items. A transaction may only have one open dispute at a time.

    After creating a dispute for a transaction, customers or members can attach files as additional supporting evidence. Files cannot be added or removed after a dispute is completed. Once uploaded, attachment metadata is accessible for review, while the file content remains unavailable.

    The financial institution reviews submitted disputes and marks them as rejected or approved. Before the transaction is completed, disputes can be canceled or deleted. If a dispute is rejected, customers or members may submit a new dispute for the transaction.

    Completed transaction disputes are available for six months after they are approved or rejected.
  version: 0.9.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: bankingTransactionDisputes
servers:
  - url: /banking
tags:
  - name: Transaction Disputes
    description: Banking Transaction Disputes
  - name: Transaction Dispute Attachments
    description: Banking Transaction Dispute Attachments
  - name: Transaction Dispute Categories
    description: Banking Transaction Dispute Categories
paths:
  /accounts/{accountId}/transactionDisputes:
    parameters:
      - $ref: '#/components/parameters/accountIdPathParam'
    get:
      summary: Return a account's disputes
      description: Return a list of transaction disputes for a given account.
      operationId: listTransactionDisputes
      x-apiture-api: bankingTransactionDisputes
      x-apiture-group: transactionDisputes
      tags:
        - Transaction Disputes
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/transactionDisputes'
        '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'
      security:
        - accessToken:
            - banking/read
      x-apiture-permission: listTransactionDisputes
    post:
      summary: Create a new transaction dispute
      description: |-
        Create a new transaction dispute within the transaction disputes collection.

        Attempting to create a new dispute fails with a 409 Conflict status if the transaction has an open dispute.
      operationId: createTransactionDispute
      x-apiture-api: bankingTransactionDisputes
      x-apiture-group: transactionDisputes
      tags:
        - Transaction Disputes
      requestBody:
        required: true
        description: The data necessary to create a new transaction dispute.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/newTransactionDispute'
      responses:
        '201':
          description: Created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/transactionDispute'
          headers:
            Location:
              description: The URI of the new transaction dispute.
              schema:
                type: string
                format: uri-reference
                maxLength: 2048
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Conflict. Only one transaction dispute can be open for a transaction at a time.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/problemResponse'
        '422':
          description: |
            Unprocessable Entity. The request body and/or query parameters were well formed but otherwise invalid.

            This error response may have one of the following `type` values:
            * [`https://static.api.apiture.com/errors/noSuchTransactionForDispute/v1.0.0`](https://static.api.apiture.com/errors/noSuchTransactionForDispute/v1.0.0)<br>
              There is no such transaction at the given `transaction.id`.
              Remediation: Use the `id` of a transaction from the list of transaction items.

            * [`https://static.api.apiture.com/errors/noSuchTransactionDisputeCategory/v1.0.0`](https://static.api.apiture.com/errors/noSuchTransactionDisputeCategory/v1.0.0)<br>
              There is no such category at the given `categoryId`.
              Remediation: Use a valid transaction dispute category.
          x-apiture-errors:
            - noSuchTransactionForDispute
            - noSuchTransactionDisputeCategory
          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'
      security:
        - accessToken:
            - banking/write
      x-apiture-permission: createTransactionDispute
  /accounts/{accountId}/transactionDisputes/{transactionDisputeId}:
    parameters:
      - $ref: '#/components/parameters/accountIdPathParam'
      - $ref: '#/components/parameters/transactionDisputeIdPathParam'
    get:
      summary: Fetch a representation of this transaction dispute
      description: Return the JSON representation of this transaction dispute resource.
      operationId: getTransactionDispute
      x-apiture-api: bankingTransactionDisputes
      x-apiture-group: transactionDisputes
      tags:
        - Transaction Disputes
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/transactionDispute'
        '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'
      security:
        - accessToken:
            - banking/read
      x-apiture-permission: getTransactionDispute
    delete:
      summary: Delete this transaction dispute resource
      description: Delete this transaction dispute resource and any resources that are owned by it. Deleting active transaction disputes cancels them.
      operationId: deleteTransactionDispute
      x-apiture-api: bankingTransactionDisputes
      x-apiture-group: transactionDisputes
      tags:
        - Transaction Disputes
      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. Transaction disputes cannot be deleted after they are resolved.

            This error response may have one of the following `type` values:
            * [`https://static.api.apiture.com/errors/transactionDisputeAlreadyProcessed/v1.0.0`](https://static.api.apiture.com/errors/transactionDisputeAlreadyProcessed/v1.0.0)<br>
              The transaction dispute cannot be modified or deleted after it has finished processing.
              Remediation: Choose a different transaction dispute.
          x-apiture-errors:
            - transactionDisputeAlreadyProcessed
          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'
      security:
        - accessToken:
            - banking/write
      x-apiture-permission: deleteTransactionDispute
  /accounts/{accountId}/transactionDisputes/{transactionDisputeId}/attachments:
    parameters:
      - $ref: '#/components/parameters/accountIdPathParam'
      - $ref: '#/components/parameters/transactionDisputeIdPathParam'
    post:
      summary: Create a new transaction dispute attachment
      description: Create a new transaction dispute attachment within the transaction dispute attachments collection for a transaction.
      operationId: createTransactionDisputeAttachment
      x-apiture-api: bankingTransactionDisputes
      x-apiture-group: transactionDisputeAttachments
      tags:
        - Transaction Dispute Attachments
      requestBody:
        required: true
        description: The data necessary to create a new transaction dispute attachment.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/newTransactionDisputeAttachment'
      responses:
        '201':
          description: Created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/transactionDisputeAttachmentSummaryItem'
          headers:
            Location:
              description: The URI of the new transaction dispute attachment.
              schema:
                type: string
                format: uri-reference
                maxLength: 2048
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Conflict. Attachments cannot be added to transaction disputes after they are resolved.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/problemResponse'
        '422':
          description: |
            Unprocessable Entity. The request body and/or query parameters were well formed but otherwise invalid.

            This error response may have one of the following `type` values:
            * [`https://static.api.apiture.com/errors/unsupportedTransactionDisputeAttachmentContentType/v1.0.0`](https://static.api.apiture.com/errors/unsupportedTransactionDisputeAttachmentContentType/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 `image/png`.

            * [`https://static.api.apiture.com/errors/tooManyTransactionDisputeAttachments/v1.0.0`](https://static.api.apiture.com/errors/tooManyTransactionDisputeAttachments/v1.0.0)<br>
              The transaction dispute already has the maximum number of allowed attachments.
              Remediation: Remove an existing attachement and try again.
          x-apiture-errors:
            - unsupportedTransactionDisputeAttachmentContentType
            - tooManyTransactionDisputeAttachments
          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'
      security:
        - accessToken:
            - banking/write
      x-apiture-permission: createTransactionDisputeAttachment
  /accounts/{accountId}/transactionDisputes/{transactionDisputeId}/attachments/{transactionDisputeAttachmentId}:
    parameters:
      - $ref: '#/components/parameters/accountIdPathParam'
      - $ref: '#/components/parameters/transactionDisputeIdPathParam'
      - $ref: '#/components/parameters/transactionDisputeAttachmentIdPathParam'
    get:
      summary: Fetch a representation of this transaction dispute attachment
      description: Return the JSON representation of this transaction dispute attachment resource.
      operationId: getTransactionDisputeAttachment
      x-apiture-api: bankingTransactionDisputes
      x-apiture-group: transactionDisputeAttachments
      tags:
        - Transaction Dispute Attachments
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/transactionDisputeAttachment'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          description: |
            Not Found.

            This error response may have one of the following `type` values:
            * [`https://static.api.apiture.com/errors/noSuchTransactionDispute/v1.0.0`](https://static.api.apiture.com/errors/noSuchTransactionDispute/v1.0.0)<br>
              There is no such transaction at the given `transactionDisputeId`.
              Remediation: Use the `transactionDisputeId` of a transaction dispute from the list of transaction dispute items.

            * [`https://static.api.apiture.com/errors/noSuchTransactionDisputeAttachment/v1.0.0`](https://static.api.apiture.com/errors/noSuchTransactionDisputeAttachment/v1.0.0)<br>
              There is no such transaction at the given `transactionDisputeAttachmentId`.
              Remediation: Use the `transactionDisputeAttachmentId` of list of attachments in the transaction dispute.
          x-apiture-errors:
            - noSuchTransactionDispute
            - noSuchTransactionDisputeAttachment
          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'
      security:
        - accessToken:
            - banking/write
      x-apiture-permission: getTransactionDisputeAttachment
    delete:
      summary: Delete this transaction dispute attachment resource
      description: Delete this transaction dispute attachment resource and any resources that are owned by it. Attachments may not be deleted after a transaction dispute is resolved.
      operationId: deleteTransactionDisputeAttachment
      x-apiture-api: bankingTransactionDisputes
      x-apiture-group: transactionDisputeAttachments
      tags:
        - Transaction Dispute Attachments
      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. Attachments cannot be removed from a transaction dispute after the dispute is resolved.
          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'
      security:
        - accessToken:
            - banking/write
      x-apiture-permission: deleteTransactionDisputeAttachment
  /transactionDisputeCategories:
    get:
      summary: Return a list of transaction dispute categories
      description: |-
        Return a list of transaction dispute categories.

        This is a _conditional operation_ when the `If-None-Match` header is used. If the client has a `transactionDisputeCategories` response and the `ETag` returned from a previous call, this operation returns a 304 Not Modified if called again when the categories have not changed.<br>**Warning**: The operation `listTransactionDisputeCategories` was deprecated on version `v0.8.0` of the API. Use the `listDisputeCategoriesForTransaction` operation instead. `listTransactionDisputeCategories` will be removed on version `v0.10.0` of the API.
      operationId: listTransactionDisputeCategories
      x-apiture-api: bankingTransactionDisputes
      x-apiture-group: transactionDisputeCategories
      tags:
        - Transaction Dispute Categories
      x-apiture-deprecated:
        since: 0.8.0
        replacement: the `listDisputeCategoriesForTransaction` operation
        removeOn: 0.10.0
      parameters:
        - $ref: '#/components/parameters/ifNoneMatchHeaderParam'
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/transactionDisputeCategories'
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
        '304':
          $ref: '#/components/responses/304'
        '400':
          $ref: '#/components/responses/400'
        '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:
            - banking/read
      x-apiture-permission: listTransactionDisputeCategories
      deprecated: true
  /accounts/{accountId}/transactions/{transactionId}/disputeCategories:
    get:
      summary: Return a list of transaction dispute categories
      description: |-
        Return a list of dispute categories for this transaction.

        This is a _conditional operation_ when the `If-None-Match` header is used. If the client has a `transactionDisputeCategories` response and the `ETag` returned from a previous call, this operation returns a 304 Not Modified if called again when the categories have not changed.
      operationId: listDisputeCategoriesForTransaction
      x-apiture-api: bankingTransactionDisputes
      x-apiture-group: transactionDisputeCategories
      tags:
        - Transaction Dispute Categories
      parameters:
        - $ref: '#/components/parameters/ifNoneMatchHeaderParam'
        - $ref: '#/components/parameters/accountIdPathParam'
        - $ref: '#/components/parameters/transactionIdPathParam'
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/transactionDisputeCategories'
            application/restful+json:
              schema:
                $ref: '#/components/schemas/transactionDisputeCategories'
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
        '304':
          $ref: '#/components/responses/304'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          description: |
            Not Found.

            This error response may have one of the following `type` values:
            * [`https://static.api.apiture.com/errors/noSuchAccount/v1.0.0`](https://static.api.apiture.com/errors/noSuchAccount/v1.0.0)<br>
              There is no such account at the given `accountId`.
              Remediation: Use the `accountId` of an account the user is entitled to view.

            * [`https://static.api.apiture.com/errors/noSuchTransaction/v1.0.0`](https://static.api.apiture.com/errors/noSuchTransaction/v1.0.0)<br>
              There is no such transaction at the given `transactionId`.
              Remediation: Use the `transactionId` of a transaction from the list of transaction items.
          x-apiture-errors:
            - $ref: '#/components/x-apiture-errors/noSuchAccount'
            - $ref: '#/components/x-apiture-errors/noSuchTransaction'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/problemResponse'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
      security:
        - accessToken:
            - banking/read
      x-apiture-permission: listDisputeCategoriesForTransaction
components:
  parameters:
    transactionDisputeIdPathParam:
      name: transactionDisputeId
      description: The unique identifier of this transaction dispute. This is an opaque string.
      in: path
      schema:
        $ref: '#/components/schemas/externalResourceId'
      required: true
    transactionDisputeAttachmentIdPathParam:
      name: transactionDisputeAttachmentId
      description: The unique identifier of this transaction dispute attachment. This is an opaque string.
      in: path
      schema:
        $ref: '#/components/schemas/externalResourceId'
      required: true
    accountIdPathParam:
      name: accountId
      description: The unique identifier of this account resource. This is an opaque string.
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/resourceId'
      x-resolved-from: ../../accounts/openapi.yaml#/components/parameters/accountIdPathParam
    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:
        type: string
        pattern: ^\P{Cc}{1,512}$
        maxLength: 512
      x-resolved-from: ../../common/openapi.yaml#/components/parameters/ifNoneMatchHeaderParam
    transactionIdPathParam:
      name: transactionId
      description: The unique identifier of this transaction resource. This is an opaque string.
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/transactionId'
      x-resolved-from: ../../transactions/openapi.yaml#/components/parameters/transactionIdPathParam
  schemas:
    transactionDisputeImmutableFields:
      x-apiture-version: 1.2.0
      title: Transaction Dispute Immutable Fields (v1.2.0)
      x-apiture-fragment: true
      description: Immutable fields of the transaction dispute resource used to build other model schemas.
      allOf:
        - $ref: '#/components/schemas/timestampFields'
        - type: object
          properties:
            id:
              description: The unique identifier for this transaction dispute resource. This is an immutable opaque string.
              $ref: '#/components/schemas/externalResourceId'
            state:
              $ref: '#/components/schemas/transactionDisputeState'
            transaction:
              $ref: '#/components/schemas/disputedTransactionReference'
    transactionDisputeState:
      title: Transaction Dispute State (v1.0.0)
      description: |+
        The state of a transaction dispute.

        <strong><code>transactionDisputeState</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>submitted</code></strong></td><td>Submitted: <p>The transaction dispute was submitted and is under review.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>rejected</code></strong></td><td>Rejected: <p>The transaction dispute was rejected after review by the financial institution.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>approved</code></strong></td><td>Approved: <p>The transaction dispute was approved after review by the financial institution.</p>
        </td>
            </tr>
        </table>

      x-apiture-enum: transactionDisputeState
      type: string
      enum:
        - submitted
        - rejected
        - approved
      x-apiture-version: 1.0.0
    transactionDisputeAllows:
      title: Transaction Dispute Allows (v1.0.0)
      description: Indicates what transaction dispute actions are allowed for the current customer, given the user's entitlements and the state of the transaction dispute.
      type: object
      required:
        - delete
      properties:
        delete:
          type: boolean
          description: The customer is allowed to delete the transaction dispute.
      example:
        delete: false
      x-apiture-version: 1.0.0
    transactionDisputeCategoryReference:
      x-apiture-version: 1.1.0
      title: Transaction Dispute Category Reference (v1.1.0)
      description: Representation of the dispute category for the transaction.
      type: object
      required:
        - id
      properties:
        id:
          description: The unique identifier of the category of the transaction dispute. This is an opaque string.
          $ref: '#/components/schemas/externalResourceId'
        label:
          $ref: '#/components/schemas/transactionDisputeCategoryLabel'
      example:
        id: a9cdfee9a712
        label: I did not authorize this transaction.
    newTransactionDispute:
      x-apiture-version: 2.1.0
      title: New Transaction Dispute (v2.1.0)
      description: |-
        Representation used to create a new transaction dispute. Disputes are created in the context of an account.

        A file can be attached as part of the dispute creation. Additional files can be added afterwards until the dispute is resolved (approved or rejected) through the [createTransactionDisputeAttachment](#op-createTransactionDisputeAttachment) operation.
      required:
        - category
        - formResponses
        - transaction
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - type: object
          properties:
            transaction:
              description: The transaction being disputed. The `id` is used to lookup the transaction. Additional fields are for informative use only.
              $ref: '#/components/schemas/disputedTransactionReference'
            attachment:
              $ref: '#/components/schemas/newTransactionDisputeAttachment'
            disputedAmount:
              description: The monetary amount being disputed for the transaction, defaulting to the full monetary amount of the transaction.
              $ref: '#/components/schemas/monetaryValue'
            category:
              $ref: '#/components/schemas/transactionDisputeCategoryReference'
            formResponses:
              description: |-
                A list of customer responses to transaction dispute form items. The responses coorespond 1-to-1 with the form items in the transaction dispute category; the number of values in the `items` array should match the count of form items.
                If the user did not provide a value for a non-required form item, the client should pass the corresponding form label and an empty array for the item's `values`.
              type: array
              minItems: 1
              maxItems: 100
              uniqueItems: true
              items:
                $ref: '#/components/schemas/transactionDisputeFormItemResponse'
      example:
        transaction:
          id: 88f5bf17-ecc4
          description: '**MACYS1234'
          amount: '25.00'
          occurredOn: '2023-05-18'
        category:
          id: a9cdfee9a712
          label: I did not authorize this transaction.
        disputedAmount: '25.00'
        attachment:
          type: disputeForm
          content: QmFzZS02NCBlbmNvZGVkIENTViBjb250ZW50IGhlcmUuLi4=
          fileName: macys-dispute-letter-nov-15-2023.pdf
        formResponses:
          - label: Why are you disputing this transaction?
            values:
              - The merchant did not issue a refund after my purchase was returned.
          - label: Has it been more than 15 days since your refund request?
            values:
              - 'Yes'
          - label: Have you had any refund requests previously denied by this merchant?
            values:
              - 'No'
          - label: Which of the following documents has the merchant provided to you?
            values:
              - Purchase Order
              - Transaction Receipt
              - Return Merchandise Authorization Form
          - label: When did you first notice the issue with the transaction?
            values: []
    transactionDisputeFormItemResponse:
      title: Transaction Dispute Form Item Response (v1.0.0)
      description: A pairing of a form item label and the customer responses. Some form item responses consist of multiple values from a predefined list.
      type: object
      required:
        - label
        - values
      properties:
        label:
          $ref: '#/components/schemas/transactionDisputeFormItemLabel'
        values:
          description: The responses from the customer for the given form item.
          type: array
          maxItems: 25
          $comment: This must match the maxItems constraint for transactionDisputeCategoryFormItem.
          uniqueItems: true
          items:
            $ref: '#/components/schemas/transactionDisputeFormItemResponseValue'
      example:
        label: Why are you disputing this transaction?
        values:
          - I did not authorize this transaction.
      x-apiture-version: 1.0.0
    transactionDisputeFormItemResponseValue:
      title: Transaction Dispute Form Item Response Value (v1.0.0)
      description: The user-provided response value for a form item. This string must be the `value` from the [category form item](schemas-transactionDisputeCategoryFormItemValue) if the category form item type is `binaryOption`, `oneOfManySelection` or `multipleSelection`.
      type: string
      format: text
      minLength: 1
      maxLength: 300
      example: I did not authorize this transaction.
      x-apiture-version: 1.0.0
    transactionDisputeItem:
      x-apiture-version: 2.1.0
      title: Transaction Dispute Item (v2.1.0)
      description: Summary representation of a transaction dispute resource in transaction disputes collection. To fetch the full representation of this transaction dispute, use the [`getTransactionDispute`](#op-getTransactionDispute) operation, passing this item's `id` field as the `transactionDisputeId` path parameter.
      required:
        - id
        - state
        - transaction
        - createdAt
        - updatedAt
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/transactionDisputeImmutableFields'
      example:
        id: 0399abed-fd3d
        state: submitted
        transaction:
          id: 88f5bf17-ecc4
          description: '**MACYS1234'
          amount: '25.00'
          occurredOn: '2023-05-18'
        createdAt: '2023-11-14T12:36:05.053Z'
        updatedAt: '2023-11-14T12:36:05.053Z'
    transactionDispute:
      x-apiture-version: 2.2.0
      title: Transaction Dispute (v2.2.0)
      description: Representation of a transaction dispute resource.
      required:
        - id
        - transaction
        - category
        - attachments
        - disputedAmount
        - state
        - allows
        - createdAt
        - updatedAt
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/transactionDisputeImmutableFields'
        - type: object
          properties:
            disputedAmount:
              description: The monetary amount being disputed for the transaction.
              $ref: '#/components/schemas/monetaryValue'
            category:
              $ref: '#/components/schemas/transactionDisputeCategoryReference'
            attachments:
              description: A list of attachment summary resources for this transaction dispute.
              type: array
              minItems: 0
              maxItems: 100
              uniqueItems: true
              items:
                $ref: '#/components/schemas/transactionDisputeAttachmentSummaryItem'
            allows:
              $ref: '#/components/schemas/transactionDisputeAllows'
      example:
        id: 0399abed-fd3d
        transaction:
          id: 88f5bf17-ecc4
          description: '**MACYS1234'
          amount: '25.00'
          occurredOn: '2023-05-18'
        category:
          id: a9cdfee9a712
          label: I did not authorize this transaction.
        attachments:
          - id: 0399abed-fd3d
            type: disputeForm
            contentType: application/pdf
            fileName: macys-dispute-letter-nov-15-2023.pdf
            createdAt: '2023-11-15T06:29:13.053Z'
            allows:
              delete: true
        disputedAmount: '25.00'
        state: submitted
        allows:
          delete: true
        createdAt: '2023-11-14T12:36:05.053Z'
        updatedAt: '2023-11-14T12:36:05.053Z'
    transactionDisputes:
      x-apiture-version: 2.1.0
      title: Transaction Dispute Collection (v2.1.0)
      description: Collection of transaction disputes. The items in the collection are ordered in the `items` array.
      required:
        - items
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - type: object
          properties:
            items:
              description: An array containing transaction dispute items.
              type: array
              maxItems: 1000
              items:
                $ref: '#/components/schemas/transactionDisputeItem'
      example:
        items:
          - id: 0399abed-fd3d
            state: approved
            transaction:
              id: 88f5bf17-ecc4
              description: '**MACYS1234'
              amount: '25.00'
              occurredOn: '2023-05-18'
            createdAt: '2023-11-10T18:24:36.059Z'
            updatedAt: '2023-11-14T12:36:05.053Z'
          - id: d62c0701-0d74-4836-83f9-ebf3709442ea
            state: submitted
            transaction:
              id: 88f5bf17-ecc4
              description: '**WALMART1337'
              amount: '97.46'
              occurredOn: '2023-11-01'
            createdAt: '2023-11-15T13:57:15.123Z'
            updatedAt: '2023-11-15T13:57:15.123Z'
    disputedTransactionReference:
      x-apiture-version: 2.0.0
      title: Disputed Transaction Reference (v2.0.0)
      description: A summary of transaction details for a transaction dispute.
      required:
        - id
      type: object
      properties:
        id:
          $ref: '#/components/schemas/transactionId'
        description:
          description: The transaction description assigned by the transaction cleansing service.
          type: string
          format: text
          maxLength: 128
        amount:
          description: The monetary amount for the transaction.
          $ref: '#/components/schemas/monetaryValue'
        occurredOn:
          description: The date of the transaction in `YYYY-MM-DD` [RFC 3339](https://tools.ietf.org/html/rfc3339) `date` format. This is derived and immutable.
          $ref: '#/components/schemas/date'
      example:
        id: 88f5bf17-ecc4
        description: '**MACYS1234'
        amount: '25.00'
        occurredOn: '2023-05-18'
    transactionDisputeAttachmentType:
      title: Transaction Dispute Attachment Type (v1.0.0)
      description: |+
        The type of document being attached to a transaction dispute.

        <strong><code>transactionDisputeAttachmentType</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>disputeForm</code></strong></td><td>Dispute Form: <p>A document that provides the reasons a customer or member is disputing a transaction.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>disputeLetter</code></strong></td><td>Dispute Letter: <p>A letter from a financial institution to inform customers or members of an issue for a transaction.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>supportingDocumentation</code></strong></td><td>Supporting Documentation: <p>Additional information or evidence provided by the customer, member, or merchant to support their claim or dispute, such as receipts, invoices, contracts, or other relevant documents that can help resolve the issue.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>other</code></strong></td><td>Uncategorized Document: <p>A document related to the transaction dispute that doesn&#39;t match one of the other attachment types.</p>
        </td>
            </tr>
        </table>

      type: string
      x-apiture-enum: transactionDisputeAttachmentType
      enum:
        - disputeForm
        - disputeLetter
        - supportingDocumentation
        - other
      x-apiture-version: 1.0.0
    transactionDisputeAttachmentAllows:
      title: Transaction Dispute Attachment Allows (v1.0.0)
      description: Indicates what transaction dispute attachment actions are allowed for the current customer, given the user's entitlements and the state of the transaction dispute this attachment belongs to.
      type: object
      required:
        - delete
      properties:
        delete:
          type: boolean
          description: The customer is allowed to delete the transaction dispute.
      example:
        delete: false
      x-apiture-version: 1.0.0
    transactionDisputeAttachmentFileName:
      title: Transaction Dispute Attachment File Name (v1.0.0)
      description: The file name for a transaction dispute attachment.
      type: string
      format: text
      minLength: 4
      maxLength: 255
      example: macys-dispute-letter-nov-15-2023.pdf
      x-apiture-version: 1.0.0
    transactionDisputeAttachmentFields:
      title: Transaction Dispute Attachment Fields (v1.0.0)
      x-apiture-fragment: true
      description: Common fields of the transaction dispute attachment resource used to build other model schemas.
      type: object
      properties:
        type:
          $ref: '#/components/schemas/transactionDisputeAttachmentType'
        fileName:
          $ref: '#/components/schemas/transactionDisputeAttachmentFileName'
      x-apiture-version: 1.0.0
    transactionDisputeAttachmentImmutableFields:
      x-apiture-version: 1.2.0
      title: Transaction Dispute Attachment Immutable Fields (v1.2.0)
      x-apiture-fragment: true
      description: Common immutable fields of the transaction dispute attachment resource used to build other model schemas.
      allOf:
        - $ref: '#/components/schemas/createdAtField'
        - type: object
          properties:
            id:
              description: The unique identifier for this transaction dispute attachment resource. This is an immutable opaque string.
              $ref: '#/components/schemas/externalResourceId'
            contentType:
              description: The [media type](https://tools.ietf.org/html/rfc6838) of this document.
              $ref: '#/components/schemas/contentType'
            allows:
              $ref: '#/components/schemas/transactionDisputeAttachmentAllows'
    transactionDisputeAttachmentContent:
      x-apiture-version: 1.0.1
      title: Transaction Dispute Attachment Content (v1.0.1)
      description: |-
        The [Base64-encoded](https://en.wikipedia.org/wiki/Base64) content containing the evidence or supporting documentation for a transaction dispute.

        The attachment allows portable document format (PDF), images (JPEG, PNG, and TIFF), Microsoft Word (.doc and .docx format) and Microsoft Excel (.xls and .xlsx format) files.

        The maximum length constraint allows for a (non-Base64 encoded) input file of at most 6,500,000 bytes.
      type: string
      format: byte
      contentEncoding: base64
      maxLength: 8905000
      example: QmFzZS02NCBlbmNvZGVkIFBERiBjb250ZW50IGNvbnRlbnQgaGVyZS4uLg==
    newTransactionDisputeAttachment:
      x-apiture-version: 1.0.1
      title: New Transaction Dispute Attachment (v1.0.1)
      description: Representation used to create a new transaction dispute attachment.
      required:
        - type
        - content
        - fileName
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/transactionDisputeAttachmentFields'
        - type: object
          properties:
            content:
              $ref: '#/components/schemas/transactionDisputeAttachmentContent'
      example:
        type: disputeForm
        content: QmFzZS02NCBlbmNvZGVkIENTViBjb250ZW50IGhlcmUuLi4=
        fileName: macys-dispute-letter-nov-15-2023.pdf
    transactionDisputeAttachmentSummaryItem:
      x-apiture-version: 1.2.0
      title: Transaction Dispute Attachment Summary Item (v1.2.0)
      description: Summary representation of a transaction dispute attachment summary resource in transaction dispute attachments collections. To fetch the full representation of this transaction dispute attachment, use the [`getTransactionDisputeAttachment`](#op-getTransactionDisputeAttachment) operation, passing this item's `id` field as the `transactionDisputeAttachmentId` path parameter.
      required:
        - id
        - type
        - contentType
        - fileName
        - createdAt
        - allows
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/transactionDisputeAttachmentFields'
        - $ref: '#/components/schemas/transactionDisputeAttachmentImmutableFields'
      example:
        id: 0399abed-fd3d
        type: disputeForm
        contentType: application/pdf
        fileName: macys-dispute-letter-nov-15-2023.pdf
        createdAt: '2023-11-15T06:29:13.053Z'
        allows:
          delete: true
    transactionDisputeAttachment:
      x-apiture-version: 2.1.0
      title: Transaction Dispute Attachment (v2.1.0)
      description: Representation of a transaction dispute attachment resource.
      required:
        - id
        - type
        - content
        - contentType
        - fileName
        - createdAt
        - allows
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/transactionDisputeAttachmentFields'
        - $ref: '#/components/schemas/transactionDisputeAttachmentImmutableFields'
        - type: object
          properties:
            content:
              $ref: '#/components/schemas/transactionDisputeAttachmentContent'
      example:
        id: 0399abed-fd3d
        type: disputeForm
        content: QmFzZS02NCBlbmNvZGVkIENTViBjb250ZW50IGhlcmUuLi4=
        contentType: application/pdf
        fileName: macys-dispute-letter-nov-15-2023.pdf
        createdAt: '2023-11-15T06:29:13.053Z'
        allows:
          delete: true
    transactionDisputeCategoryLabel:
      title: Transaction Dispute Category Label (v1.0.0)
      description: The human readable text describing the transaction dispute category.
      type: string
      format: text
      minLength: 1
      maxLength: 500
      example: There are unauthorized charges on my account.
      x-apiture-version: 1.0.0
    transactionDisputeFormItemLabel:
      title: Transaction Dispute Form Item Label (v1.0.0)
      description: The client should use this text as the UI label for the corresponding UI form/control.
      type: string
      format: text
      minLength: 1
      maxLength: 500
      example: Why are you disputing this transaction?
      x-apiture-version: 1.0.0
    transactionDisputeCategoryFields:
      x-apiture-version: 1.1.0
      title: Transaction Dispute Category Fields (v1.1.0)
      description: Common fields of the transaction dispute category resource used to build other model schemas.
      x-apiture-fragment: true
      type: object
      properties:
        id:
          description: The unique identifier of the transaction dispute category. This is an opaque string.
          $ref: '#/components/schemas/externalResourceId'
        label:
          $ref: '#/components/schemas/transactionDisputeCategoryLabel'
        formItems:
          description: A list of form items for the transaction dispute category.
          type: array
          minItems: 1
          maxItems: 100
          uniqueItems: true
          items:
            $ref: '#/components/schemas/transactionDisputeCategoryFormItem'
    transactionDisputeCategoryItem:
      x-apiture-version: 1.1.0
      title: Transaction Dispute Category (v1.1.0)
      description: Summary representation of a transaction dispute category.
      required:
        - id
        - label
        - formItems
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/transactionDisputeCategoryFields'
      example:
        id: 0399abed-fd3d
        label: There are unauthorized charges on my account.
        formItems:
          - label: Why are you disputing this transaction?
            type: singleLineText
            required: true
          - label: Was your debit card stolen?
            type: oneOfManySelection
            values:
              - label: 'Yes'
                value: 'Yes'
              - label: 'No'
                value: 'No'
            required: true
    transactionDisputeCategories:
      x-apiture-version: 1.1.0
      title: Transaction Dispute Category List (v1.1.0)
      description: List of transaction dispute categories. The items in the list are ordered in the `items` array.
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - type: object
          required:
            - items
          properties:
            items:
              description: An array containing a list of transaction dispute category items.
              type: array
              minItems: 1
              maxItems: 100
              items:
                $ref: '#/components/schemas/transactionDisputeCategoryItem'
      example:
        items:
          - id: 0399abed-fd3d
            label: There are unauthorized charges on my account.
            formItems:
              - label: Why are you disputing this transaction?
                type: singleLineText
                required: true
              - label: Was your debit card stolen?
                type: binaryOption
                values:
                  - label: 'Yes'
                    value: 'Yes'
                  - label: 'No'
                    value: 'No'
                required: true
              - label: When did you first notice your card was missing?
                type: oneOfManySelection
                values:
                  - label: Less than 1 day ago
                    value: Less than 1 day ago
                  - label: 1 to 3 days ago
                    value: 1 to 3 days ago
                  - label: More than 3 days ago
                    value: More than 3 days ago
                required: true
              - label: Additional comments about this transaction
                type: multipleLineText
                required: false
          - id: d62c0701-0d74-4836-83f9-ebf3709442ea
            label: I don't recognize this charge.
            formItems:
              - label: Which of the following describes the issue you are encountering?
                type: multipleSelection
                values:
                  - label: The date of the charge is wrong.
                    value: The date of the charge is wrong.
                  - label: The amount of the charge is wrong.
                    value: The amount of the charge is wrong.
                  - label: The charge is for goods or services that I didn't accept.
                    value: The charge is for goods or services that I didn't accept.
                  - label: The charge is for goods or services that weren't delivered to I as agreed.
                    value: The charge is for goods or services that weren't delivered to I as agreed.
                  - label: I was charged more than once for something.
                    value: I was charged more than once for something.
                  - label: I returned the item, but the credit wasn't posted to my account.
                    value: I returned the item, but the credit wasn't posted to my account.
                  - label: I paid for the item, but the payment wasn't posted to my account.
                    value: I paid for the item, but the payment wasn't posted to my account.
                required: true
              - label: Have you contacted the merchant?
                type: binaryOption
                itemGroup: 4567457a
                required: true
                values:
                  - label: 'Yes'
                    value: 'Yes'
                  - label: 'No'
                    value: 'No'
              - label: Has the merchant responded?
                type: binaryOption
                itemGroup: 4567457a
                required: true
                values:
                  - label: 'Yes'
                    value: 'Yes'
                  - label: 'No'
                    value: 'No'
    transactionDisputeCategoryFormItem:
      x-apiture-version: 1.0.1
      title: Transaction Dispute Category Form Item (v1.0.1)
      description: |-
        Summary representation of a transaction dispute category form item in a transaction dispute category.

        A transaction dispute category form item gathers details on a specific transaction for a certain dispute type, enabling a financial institution to assess and resolve the issue once the information has been provided.
      type: object
      required:
        - label
        - type
        - required
      properties:
        label:
          $ref: '#/components/schemas/transactionDisputeFormItemLabel'
        type:
          description: The type discriminator of the form item. The type informs additional constraints.
          $ref: '#/components/schemas/transactionDisputeCategoryFormItemType'
        values:
          description: The allowed values for the form item. This is only present when the `type` is `binaryOption`, `oneOfManySelection`, or `multipleSelection`.
          type: array
          uniqueItems: true
          minItems: 1
          maxItems: 20
          items:
            $ref: '#/components/schemas/transactionDisputeCategoryFormItemValue'
        itemGroup:
          description: For form items that are linked together, this is the shared item group identifier. Form items with the type `binaryOption` are typically linked.
          type: string
          format: text
          minLength: 1
          maxLength: 20
        required:
          description: When `true`, a value for this form item is required to submit a dispute. Form items that are part of an `itemGroup` require at least one value to be selected.
          type: boolean
          default: false
      example:
        label: Why are you disputing this transaction?
        type: singleLineText
        required: true
    transactionDisputeCategoryFormItemValue:
      title: Transaction Dispute Category Form Item Value (v1.0.0)
      description: A pairing of a human readable label and an internal value for a form item with a fixed set of allowed values.
      type: object
      required:
        - label
        - value
      properties:
        label:
          description: The human readable label for a form item value.
          $comment: The third party vendor doesn't have a field to differentiate the internal value and the human readable label. When integrating, both `label` and `value` will be the same value.
          type: string
          format: text
          minLength: 1
          maxLength: 300
        value:
          description: The internal representation for a form item value.
          type: string
          format: text
          minLength: 1
          maxLength: 300
      example:
        label: 'No'
        value: 'false'
      x-apiture-version: 1.0.0
    transactionDisputeCategoryFormItemType:
      title: Transaction Dispute Category Form Item Type (v1.0.0)
      description: |+
        Defines the type of this transaction dispute category form item. This determines what type of form control the client should use for this item in the generated form.

        <strong><code>transactionDisputeCategoryFormItemType</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>singleLineText</code></strong></td><td>Single Line Text: <p>A freeform line text input allowing a single line of text.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>multipleLineText</code></strong></td><td>Multiple Line Text: <p>A freeform text input allowing multiple lines of text.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>binaryOption</code></strong></td><td>Binary Option: <p>A form item that allows a choice between two options.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>oneOfManySelection</code></strong></td><td>One of Many Selection: <p>A form item that allows a single choice between more than two options.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>multipleSelection</code></strong></td><td>Multiple Selection: <p>A form item that allows multiple choices between more than two options.</p>
        </td>
            </tr>
        </table>

      type: string
      x-apiture-enum: transactionDisputeCategoryFormItemType
      enum:
        - singleLineText
        - multipleLineText
        - binaryOption
        - oneOfManySelection
        - multipleSelection
      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
    externalResourceId:
      x-apiture-version: 1.1.0
      title: External Resource Identifier (v1.1.0)
      description: The unique, opaque system identifier for an external resource. This case-sensitive ID is also used as path parameters in URLs or in other properties or parameters that reference an external resource by ID rather than URL.
      type: string
      format: text
      readOnly: true
      minLength: 1
      maxLength: 256
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/externalResourceId
    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
    transactionId:
      title: Transaction ID (v1.0.0)
      description: The transaction's unique identifier.
      readOnly: true
      type: string
      pattern: ^[-_:,.~$a-zA-Z0-9]{6,256}$
      minLength: 6
      maxLength: 256
      x-resolved-from: ../../transactions/openapi.yaml#/components/schemas/transactionId
      x-apiture-version: 1.0.0
    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
    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
    monetaryValue:
      x-apiture-version: 1.1.1
      title: Monetary Value (v1.1.1)
      description: The monetary value, supporting only positive amounts. The numeric value is  represented as a string so that it can be exact with no loss of precision.
      example: '3456.78'
      format: decimal
      type: string
      pattern: ^(0|[1-9][0-9]*)\.[0-9][0-9]$
      maxLength: 16
      x-apiture-since: 0.4.0
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/monetaryValue
    date:
      title: Date (v1.0.0)
      description: A date formatted in `YYYY-MM-DD` [RFC 3339](https://tools.ietf.org/html/rfc3339) `date` UTC format.
      type: string
      minLength: 10
      maxLength: 10
      format: date
      example: '2021-10-30'
      x-apiture-since: 0.5.0
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/date
      x-apiture-version: 1.0.0
    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)'
    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
    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
    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
    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
    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:
    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
  x-apiture-errors:
    noSuchTransactionDisputeCategory:
      description: There is no such category at the given `categoryId`.
      remediation: Use a valid transaction dispute category.
    transactionDisputeAlreadyProcessed:
      description: The transaction dispute cannot be modified or deleted after it has finished processing.
      remediation: Choose a different transaction dispute.
    unsupportedTransactionDisputeAttachmentContentType:
      description: The system does not support the given document media type.
      remediation: Use a supported media type such as `application/pdf` or `image/png`.
    tooManyTransactionDisputeAttachments:
      description: The transaction dispute already has the maximum number of allowed attachments.
      remediation: Remove an existing attachement and try again.
    noSuchTransactionForDispute:
      description: There is no such transaction at the given `transaction.id`.
      remediation: Use the `id` of a transaction from the list of transaction items.
    noSuchTransactionDispute:
      description: There is no such transaction at the given `transactionDisputeId`.
      remediation: Use the `transactionDisputeId` of a transaction dispute from the list of transaction dispute items.
    noSuchTransactionDisputeAttachment:
      description: There is no such transaction at the given `transactionDisputeAttachmentId`.
      remediation: Use the `transactionDisputeAttachmentId` of list of attachments in the transaction dispute.
    noSuchAccount:
      description: There is no such account at the given `accountId`
      remediation: Use the `accountId` of an account the user is entitled to view.
      x-resolved-from: ../../transactions/openapi.yaml#/components/x-apiture-errors/noSuchAccount
    noSuchTransaction:
      description: There is no such transaction at the given `transactionId`
      remediation: Use the `transactionId` of a transaction from the list of transaction items.
      x-resolved-from: ../../transactions/openapi.yaml#/components/x-apiture-errors/noSuchTransaction
    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
    '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 error 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 error 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 error 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 error 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 error 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 error 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:
        type: string
        pattern: ^\P{Cc}{1,512}$
        maxLength: 512
      x-resolved-from: ../../common/openapi.yaml#/components/headers/ETag
x-apiture-traits:
  - resource:
      name: transaction dispute category
      readOnly: true
      simpleModelSchema: true
      cursorPaginated: false
      paginated: false
      excludedMethods:
        - POST
        - PUT
        - PATCH
        - DELETE
      applied: true
  - resource:
      name: transaction dispute
      cursorPaginated: false
      paginated: false
      excludedMethods:
        - PUT
        - PATCH
      applied: true
  - resource:
      name: transaction dispute attachment
      pathPrefix: /transactionDisputes/{transactionDisputeId}
      cursorPaginated: false
      paginated: false
      excludedMethods:
        - PUT
        - PATCH
      applied: true
x-resolved-from: ../../transactionDisputes/status-codes-openapi.yaml
x-resolved-at: '2024-10-01T15:49:16.810Z'
x-apiture-annotated-at: '2024-10-01T15:49:17.068Z'
