openapi: 3.0.1
info:
  title: rail API Specification
  description: |
    Welcome to the rail Developer Guide!
  version: 1.1.2
servers:
  - url: https://sandbox.layer2financial.com/api
    description: Sandbox - Stable API Instance
  - url: https://platform.layer2financial.com/api
    description: Production - Stable API Instance
tags:
  - name: Applications
    description: >-
      Applications represent the onboarding journey for your customers. They are
      used to collect KYC information and documents required to open accounts on
      the platform. Visit our guides for a detailed understanding on how to use
      these APIs.
  - name: Accounts
    description: >-
      Accounts are used to hold funds on the platform. Once a customer is
      onboarded via the application process, you can create accounts for them in
      various currencies.
  - name: Counterparties
    description: >-
      Counterparties represent external entities that you may wish to send or
      receive funds from. All counterparties are verified to ensure compliance
      with regulatory requirements prior to being available for use for
      withdrawals.
  - name: Customers
    description: >-
      Customers can only be created via the application process. Once created,
      customers can have multiple accounts associated with them.
  - name: Deposits
    description: >-
      Deposits are used to request instructions for funding platform managed
      accounts from external sources. A given account may have many deposits
      associated with it depending on the supported rails and configurations.
  - name: Documents
    description: 'Document uploading and management functions. '
  - name: Exchanges
    description: >-
      Exchanges are used to convert funds from one currency to another. This is
      achieved by moving money between 2 platform accounts that are denominated
      in different currencies. We have eliminated the complexity of traditional
      currency trading.
  - name: Payments
    description: >-
      Payments are used to orchestrate end to end payment flows from external
      parties or from within the platform. 
  - name: Transactions
    description: >-
      Transactions are created to record the movement of funds between accounts.
      The transactions endpoint allows the bulk retrieval of transaction data
      for reconciliation and reporting purposes.
  - name: Transfers
    description: >-
      Transfer are used to move funds between two platform managed accounts that
      are denominated in the same currency.
  - name: Withdrawals
    description: >-
      Move funds from a platform managed account to an external counterparty via
      supported rails.
  - name: Settlements
    description: >-
      Settlement services for funds confirmation and reconciliation. Settlements
      are a deprecated concept and will be removed in future versions of the
      API. Please use Payments for all new integrations.
  - name: Subscriptions (Webhooks)
    description: >-
      Manage your callback (webhook) subscriptions. Subscriptions allow you to
      receive real-time notifications of events that occur within your platform
      instance. Visit the guides for a full breakdown of all available events.
paths:
  /v1/withdrawals:
    post:
      tags:
        - Withdrawals
      summary: Create Withdrawal
      description: >-
        Request a new withdrawal. On successful request, the withdrawal must be
        accepted before it is queued for execution. Withdrawals accepted before 
      operationId: createWithdrawal
      parameters:
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Withdrawal'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseWithdrawalBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - withdrawals:write
  /v1/withdrawals/{withdrawal_id}/cancel:
    post:
      tags:
        - Withdrawals
      summary: Cancel Withdrawal
      description: >-
        Cancel a withdrawal. This will submit a withdrawal cancellation request.
        Some withdrawals may not be cancellable, if the funds have already been
        processed and sent externally.
      operationId: cancelWithdrawal
      parameters:
        - name: id
          in: path
          description: Withdrawal ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseWithdrawalCancellation'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - withdrawals:write
  /v1/withdrawals/{withdrawal_id}/accept:
    post:
      tags:
        - Withdrawals
      summary: Accept Withdrawal
      description: >-
        Accept a withdrawal. This will execute the withdrawal and may not be
        reversible
      operationId: acceptWithdrawal
      parameters:
        - name: id
          in: path
          description: Withdrawal ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
        - name: x-signature
          in: header
          description: >-
            Client signature to validate the provence of the API request. See
            [signing](https://docs.rail.io/guides/requestsigning/) section for
            more details.
          schema:
            type: string
        - name: x-timestamp
          in: header
          description: >-
            Current timestamp, represented AS unix epoch seconds. Mandatory when
            x-signature is provided.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseWithdrawalBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - withdrawals:write
  /v1/transfers:
    post:
      tags:
        - Transfers
      summary: Create Transfer
      description: Request a new transfer. The transfer must be accepted prior to executing
      operationId: createTransfer
      parameters:
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestTransfer'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseTransfer'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - transfers:write
  /v1/transfers/{transfer_id}/accept:
    post:
      tags:
        - Transfers
      summary: Accept Transfer
      description: >-
        Accept a requested transfer. This will execute the transfer and may not
        be reversible depending on the owner of the destination account
      operationId: confirmTransfer
      parameters:
        - name: id
          in: path
          description: Transfer ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
        - name: x-signature
          in: header
          description: >-
            Client signature to validate the provence of the API request. See
            [signing](https://docs.rail.io/guides/requestsigning/) section for
            more details.
          schema:
            type: string
        - name: x-timestamp
          in: header
          description: >-
            Current timestamp, represented AS unix epoch seconds. Mandatory when
            x-signature is provided.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseTransferBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - transfers:write
  /v1/subscriptions:
    get:
      tags:
        - Subscriptions (Webhooks)
      summary: Get Subscriptions
      description: Return all subscriptions
      operationId: getSubscriptions
      parameters:
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseSubscriptions'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - subscriptions:read
    post:
      tags:
        - Subscriptions (Webhooks)
      summary: Create Subscription
      description: Creates a new event call back subscription
      operationId: createSubscription
      parameters:
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Subscription'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseSubscription'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - subscriptions:write
  /v1/payments:
    post:
      tags:
        - Payments
      summary: Create Payment
      description: >-
        Create a payment request for a platform account in order to receive
        funds from an external third party.
      operationId: createPayments
      parameters:
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Payment'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponsePaymentBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - payments:write
  /v1/payments/{payment_id}/accept:
    post:
      tags:
        - Payments
      summary: Accept Payment
      description: >-
        Accept a Payment. On acceptance, payment instructions will be returned
        (if source = counterparty) or funds will begin processing (if source =
        account).
      operationId: acceptPayment
      parameters:
        - name: id
          in: path
          description: Payment ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponsePaymentBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - payments:write
  /v1/exchanges/{exchange_id}/accept:
    post:
      tags:
        - Exchanges
      summary: Accept Exchange
      description: >-
        Accept an exchange quote. This will execute the exchange and is not
        reversible
      operationId: acceptExchange
      parameters:
        - name: id
          in: path
          description: Exchange ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
        - name: x-signature
          in: header
          description: >-
            Client signature to validate the provence of the API request. See
            [signing](https://docs.rail.io/guides/requestsigning/) section for
            more details.
          schema:
            type: string
        - name: x-timestamp
          in: header
          description: >-
            Current timestamp, represented AS unix epoch seconds. Mandatory when
            x-signature is provided.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestExchangeAccept'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseExchange'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - exchanges:write
  /v1/exchanges/market:
    post:
      tags:
        - Exchanges
      summary: Create Exchange (Market)
      description: >-
        When requesting a market exchange, the quote received is indicative
        ONLY. This represents an approximate  rate from our liquidity providers.
        On accepting a market exchange the trade is performed at the current
        market rate which will be different to the quote presented to you.


        Note: Not all custodians support all order types. Where the order type
        is not possible (Quote/Market/Fix Destination/ Fix Source) an error will
        be returned.
      operationId: createExchangeMarket
      parameters:
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestExchange'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseExchange'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - exchanges:write
  /v1/documents/{document_id}:
    post:
      tags:
        - Documents
      summary: Upload Document
      description: >-
        Uploads a document to the system. Subsequent uploads to the same id will
        overwrite previous documents.ß
      operationId: uploadDocument
      parameters:
        - name: id
          in: path
          description: Document ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
                - file
              type: object
              properties:
                file:
                  type: string
                  description: >-
                    Supported extensions: PDF, JPEG/JPG, PNG.


                    Max Size: 30MB.


                    File name: No special characters. The file MUST have an
                    extension.
                  format: binary
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDocumentBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - applications:write
  /v1/deposits:
    post:
      tags:
        - Deposits
      summary: Create Deposit
      description: >-
        Create a deposit request for a platform account in order to send funds
        into the account.
      operationId: createDeposits
      parameters:
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Deposit'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/DEPOSIT_PUSH'
                  - $ref: '#/components/schemas/DEPOSIT_PULL'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - deposits:write
  /v1/deposits/{deposit_id}/accept:
    post:
      tags:
        - Deposits
      summary: Accept Deposit
      description: >-
        Accept a Deposit. This is only needed for `PULL` deposits, `PUSH`
        deposits do not need to be accepted. On acceptance, this will initiate
        the funds pull from the source counterparty. It is not reversible
      operationId: acceptDeposit
      parameters:
        - name: id
          in: path
          description: Deposit ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
        - name: x-signature
          in: header
          description: >-
            Client signature to validate the provence of the API request. See
            [signing](https://docs.rail.io/guides/requestsigning/) section for
            more details.
          schema:
            type: string
        - name: x-timestamp
          in: header
          description: >-
            Current timestamp, represented AS unix epoch seconds. Mandatory when
            x-signature is provided.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDepositBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - deposits:write
  /v1/counterparties:
    get:
      tags:
        - Counterparties
      summary: Retrieve Counterparties
      description: Retrieves a list of counterparties given the filter parameters provided
      operationId: getCounterparties
      parameters:
        - name: page
          in: query
          description: Page of records to get (default 0 = first page)
          schema:
            type: integer
            format: int32
        - name: page_size
          in: query
          description: Records to return per page (default = 20)
          schema:
            type: integer
            format: int32
        - name: customer_id
          in: query
          description: Customer ID to whom the counterparty belongs
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseCounterparties'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - accounts:read
    post:
      tags:
        - Counterparties
      summary: Create Counterparty
      description: >-
        Create a new counterparty for the purpose of pulling funds into the
        platform or pushing out
      operationId: createCounterparty
      parameters:
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CounterParty'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseCounterpartyBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - accounts:write
  /v1/counterparties/{counterparty_id}/link/details:
    post:
      tags:
        - Counterparties
      summary: Retrieve Linking Details
      description: >-
        Retrieve the linking instructions for embedding in a UI to launch
        account linking from providers such as MX or Plaid.
      operationId: getLinkingDetails
      parameters:
        - name: id
          in: path
          description: Counterparty ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CounterPartyLinkingDetails'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CounterPartyLinkingDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - accounts:write
  /v1/counterparties/{counterparty_id}/link/connect:
    post:
      tags:
        - Counterparties
      summary: Connect Linked Account
      description: >-
        Established the connection between a counterparty and external linked
        account. 
      operationId: connectLinkAccount
      parameters:
        - name: id
          in: path
          description: Counterparty ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CounterPartyLinkingConnect'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseCounterpartyBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - accounts:write
  /v1/counterparties/{counterparty_id}/link/accounts:
    post:
      tags:
        - Counterparties
      summary: Retrieve Linkable Accounts
      description: >-
        Retrieve the accounts that are available for linking for a `LINKED`
        counterparty via a provider such as MX or Plaid. 
      operationId: getLinkAccounts
      parameters:
        - name: id
          in: path
          description: Counterparty ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CounterPartyLinkingAccounts'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CounterPartyLinkingAccounts'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - accounts:write
  /v1/applications:
    get:
      tags:
        - Applications
      summary: Retrieve Applications
      description: Retrieves a list of applications given the filter parameters provided
      operationId: getApplications
      parameters:
        - name: page
          in: query
          description: Page of records to get (default 0 = first page)
          schema:
            type: integer
            format: int32
        - name: page_size
          in: query
          description: Records to return per page (default = 20)
          schema:
            type: integer
            format: int32
        - name: order_by
          in: query
          description: Field to order result set by (e.g. `customer_id`)
          schema:
            type: string
        - name: order
          in: query
          description: Direction of ordering (`ASC` or `DESC`)
          schema:
            type: string
        - name: status
          in: query
          description: Application status
          schema:
            type: string
        - name: application_type
          in: query
          description: Application Type
          schema:
            type: string
        - name: terms_and_conditions_accepted
          in: query
          description: Have Terms and Conditions being Accepted
          schema:
            type: boolean
        - name: information_attested
          in: query
          description: Information Attested
          schema:
            type: boolean
        - name: customer_id
          in: query
          description: Customer ID
          schema:
            type: string
        - name: customer_name
          in: query
          description: Customer Name
          schema:
            type: string
        - name: email_address
          in: query
          description: Customer Email Address
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseApplications'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - applications:read
    post:
      tags:
        - Applications
      summary: Create Application
      description: >-
        Start a new application to onboard a person or corporation. Once the
        application is created, proceed to add individuals and update as needed,
        and then submit once the status allows for it. 
      operationId: createApplication
      parameters:
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestApplication'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseApplicationBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - applications:write
  /v1/applications/{application_id}/submit:
    post:
      tags:
        - Applications
      summary: Submit Application
      description: >-
        Submit the application for processing, can only be performed once the
        application status is  "READY_FOR_SUBMISSION".
      operationId: submitApplication
      parameters:
        - name: id
          in: path
          description: Application ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseApplicationBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - applications:write
  /v1/applications/{application_id}/individual:
    post:
      tags:
        - Applications
      summary: Add Individual
      description: >-
        Adds an individual to the corporate application. Not applicable for
        individual applications
      operationId: addIndividualToApplication
      parameters:
        - name: id
          in: path
          description: Application ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestIndividual'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseIndividualBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - applications:write
  /v1/applications/{application_id}/accesscode:
    post:
      tags:
        - Applications
      summary: Request Access Code
      description: 'Generate an access code for use with the rail Customer Onboarding SDK. '
      operationId: createApplicationOneTimeCode
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseApplicationAccessCode'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - applications:write
  /v1/accounts/deposits:
    get:
      tags:
        - Accounts
      summary: Retrieve Accounts
      description: Retrieves a list of accounts given the filter parameters provided
      operationId: getAccounts
      parameters:
        - name: page
          in: query
          description: Page of records to get (default 0 = first page)
          schema:
            type: integer
            format: int32
        - name: page_size
          in: query
          description: Records to return per page (default = 20)
          schema:
            type: integer
            format: int32
        - name: customer_id
          in: query
          description: Account holder customer ID
          schema:
            type: string
        - name: product_type
          in: query
          description: >-
            * `CLIENT` - Accounts at the Client level for managing client
            treasury operations

            * `DEPOSIT` - Accounts at the Customer level account for managing
            customer funds on platform

            * `VIRTUAL` - Accounts at the Customer level account for tracking
            externally managed customer funds 


            [see account concepts](#section/Concepts/Accounts) for more details.
          schema:
            type: string
            enum:
              - CLIENT
              - DEPOSIT
              - VIRTUAL
        - name: status
          in: query
          description: >+
            * `OPEN` - Account is open and available for use in line with its
            product configuration

            * `CLOSED` - Account is permanently closed, no further actions can
            be performed on the account.  

            * `PENDING` - Account is under additional review prior to moving to
            the OPEN or CLOSED state. No actions can be performed on the
            account.  

            * `FROZEN` - Account has been temporarily locked for all actions
            (deposits, transfers, exchanges and withdrawals).  

            * `EDD` -  Account (and/or customer) requires enhanced due diligence
            to be performed. The accounts will operate as if frozen. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            account is available for use.  

          schema:
            type: string
            enum:
              - OPEN
              - CLOSED
              - FROZEN
              - PENDING
              - EDD
              - DORMANT
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseAccounts'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - accounts:read
    post:
      tags:
        - Accounts
      summary: Open Account
      description: Opens a new account for a customer of a given product type
      operationId: openAccount
      parameters:
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestAccountOpen'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseAccountBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - accounts:write
  /v1/customers/{customer_id}:
    get:
      tags:
        - Customers
      summary: Retrieve Customer
      description: Retrieve customer details
      operationId: getCustomerDetails
      parameters:
        - name: id
          in: path
          description: Customer ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/CUSTOMER_INDIVIDUAL'
                  - $ref: '#/components/schemas/CUSTOMER_CORPORATION'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - customers:read
      x-order:
        value: '1'
    patch:
      tags:
        - Customers
      summary: 'Update Customer '
      description: >-
        Update customer details. For individuals (officers) linked to a
        corporate customer, modify the individual resource directly using
        [Update Individual](#operation/updateIndividual).
      operationId: updateCustomer
      parameters:
        - name: id
          in: path
          description: Customer ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestCustomerPatch'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseCustomerBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - customers:write
  /v1/customers/{customer_id}/individuals/{individual_id}:
    get:
      tags:
        - Customers
      summary: Retrieve Individual
      description: >-
        Retrieve individual details. This operation is only for corporate
        customers that have individual officers with access to the account
      operationId: getIndividual
      parameters:
        - name: id
          in: path
          description: >-
            Corporate Customer ID. This operation can only be performed on
            corporate customers.
          required: true
          schema:
            type: string
        - name: individual_id
          in: path
          description: Individual ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseIndividual'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - customers:read
    patch:
      tags:
        - Customers
      summary: Update Individual
      description: >-
        Update individual details. This operation is only for corporate
        customers that have individual officers with access to the account
      operationId: updateIndividual
      parameters:
        - name: id
          in: path
          description: Customer ID
          required: true
          schema:
            type: string
        - name: individual_id
          in: path
          description: Individual ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestPatchGeneric'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseIndividualBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - customers:write
  /v1/counterparties/{counterparty_id}:
    get:
      tags:
        - Counterparties
      summary: Retrieve Counterparty
      description: Retrieves a list of counterparties given the filter parameters provided
      operationId: getCounterparty
      parameters:
        - name: id
          in: path
          description: Counterparty ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseCounterparty'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - accounts:read
    patch:
      tags:
        - Counterparties
      summary: 'Update Counterparty '
      description: >-
        Update Counterparty details. There are limits to what can be updated
        once the counterparty has been approved for use. 
      operationId: updateCounterparty
      parameters:
        - name: id
          in: path
          description: Counterparty ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestCounterpartyPatch'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseCounterpartyBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - accounts:write
  /v1/applications/{application_id}:
    get:
      tags:
        - Applications
      summary: Retrieve Application
      description: Retrieve full details of the  application
      operationId: getApplication
      parameters:
        - name: id
          in: path
          description: Application ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/INDIVIDUAL'
                  - $ref: '#/components/schemas/CORPORATION'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - applications:read
    patch:
      tags:
        - Applications
      summary: 'Update Application '
      description: >-
        Update applicant properties. For Individuals attached to a corporation,
        you much patch the individuals directly using [Update
        Individual](#operation/updateIndividual_1).
      operationId: updateApplication
      parameters:
        - name: id
          in: path
          description: Application ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestApplicationPatch'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseApplicationBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - applications:write
  /v1/applications/{application_id}/individual/{individual_id}:
    delete:
      tags:
        - Applications
      summary: Delete Individual
      description: >-
        Deletes an individual from a corporate application. This action is
        permanent and cannot be reversed. All related details of the individual
        (including uploaded documents) will also be deleted.
      operationId: deleteIndividual
      parameters:
        - name: id
          in: path
          description: Application ID
          required: true
          schema:
            type: string
        - name: individual_id
          in: path
          description: Individual ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseIndividualBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - applications:write
    patch:
      tags:
        - Applications
      summary: Update Individual
      description: >-
        Update individual properties. This applies only for corporate
        applications where individuals associated to the company need to be
        updated.
      operationId: updateIndividual_1
      parameters:
        - name: id
          in: path
          description: Application ID
          required: true
          schema:
            type: string
        - name: individual_id
          in: path
          description: Individual ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestIndividualPatch'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseIndividualBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - applications:write
  /v1/accounts/deposits/{id}:
    get:
      tags:
        - Accounts
      summary: Retrieve Account
      description: Retrieves the base set of account details for a given account ID
      operationId: getAccount
      parameters:
        - name: id
          in: path
          description: Account ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseAccount'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - accounts:read
    patch:
      tags:
        - Accounts
      summary: 'Update Account '
      description: >-
        Update an account details. Currently only the account status can be
        updated.
      operationId: updateDepositAccount
      parameters:
        - name: id
          in: path
          description: Account ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestAccountPatch'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseAccountBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - accounts:write
  /v1/withdrawals/{withdrawal_id}:
    get:
      tags:
        - Withdrawals
      summary: Retrieve Withdrawal
      description: Retrieves details of a previously requested withdrawal
      operationId: getWithdrawal
      parameters:
        - name: id
          in: path
          description: Withdrawal ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/WITHDRAWAL_CRYPTO'
                  - $ref: '#/components/schemas/WITHDRAWAL_ACH'
                  - $ref: '#/components/schemas/WITHDRAWAL_FEDWIRE'
                  - $ref: '#/components/schemas/WITHDRAWAL_SWIFT'
                  - $ref: '#/components/schemas/WITHDRAWAL_SEPACT'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - withdrawals:read
  /v1/withdrawals/{withdrawal_id}/status:
    get:
      tags:
        - Withdrawals
      summary: Retrieve Withdrawal Status
      description: Retrieves status of a previously requested withdrawal
      operationId: getWithdrawalStatus
      parameters:
        - name: id
          in: path
          description: Withdrawal ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseWithdrawalStatus'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - withdrawals:read
  /v1/withdrawals/{withdrawal_id}/receipt:
    get:
      tags:
        - Withdrawals
      summary: Retrieve Withdrawal Receipt
      description: Retrieves a receipt for a previously completed withdrawal.
      operationId: getWithdrawalReceipt
      parameters:
        - name: id
          in: path
          description: Withdrawal ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: Bearer token for authentication
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/octet-stream: {}
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - withdrawals:read
  /v1/transfers/{transfer_id}:
    get:
      tags:
        - Transfers
      summary: Retrieve Transfer
      description: Retrieves details of a previously requested transfer
      operationId: getTransfer
      parameters:
        - name: id
          in: path
          description: Transfer ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseTransfer'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - transfers:read
  /v1/transactions:
    get:
      tags:
        - Transactions
      summary: Retrieve Transactions
      description: >-
        Retrieves a list of transactions across all accounts given the query
        parameters provided
      operationId: getTransactions
      parameters:
        - name: page
          in: query
          description: Page of records to get (default 0 = first page)
          required: false
          schema:
            type: integer
            format: int32
        - name: page_size
          in: query
          description: Records to return per page (default = 20)
          required: false
          schema:
            type: integer
            format: int32
        - name: order
          in: query
          description: Sort order by transaction date (ASC or DESC)
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
        - name: start_date
          in: query
          description: Filter for transactions from this date
          required: false
          schema:
            type: string
            format: date
        - name: end_date
          in: query
          description: Filter for transactions to this date
          required: false
          schema:
            type: string
            format: date
        - name: account_id
          in: query
          description: Filter transactions by account ID
          schema:
            type: string
        - name: category_id
          in: query
          description: Filter transactions by category ID
          schema:
            type: string
        - name: category_type
          in: query
          description: Filter transactions by category type
          schema:
            type: string
            enum:
              - ADJUSTMENT
              - DEPOSIT
              - EXCHANGE
              - TRANSFER
              - WITHDRAWAL
        - name: transaction_status
          in: query
          description: Filter transactions by transaction status
          schema:
            type: string
            enum:
              - AUTHORIZED
              - PENDING
              - POSTED
              - CANCELLED
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseTransactions'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - accounts:read
  /v1/transactions/{id}:
    get:
      tags:
        - Transactions
      summary: Retrieve Transaction
      description: Retrieves details of a single transaction
      operationId: getTransaction
      parameters:
        - name: id
          in: path
          description: Transaction ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseTransactionDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - accounts:read
  /v1/settlements/{settlement_id}:
    get:
      tags:
        - Settlements
      summary: Retrieve Settlement
      description: >-
        Returns a detailed breakdown of an outbound settlement by account and
        customer. Filterable by source and destination accounts.
      operationId: getSettlement
      parameters:
        - name: id
          in: path
          description: Settlement ID
          required: true
          schema:
            type: string
        - name: source_account_id
          in: query
          description: Source Account ID to filter settlement on
          required: false
          schema:
            type: string
        - name: destination_account_id
          in: query
          description: Destination Account ID to filter settlement on
          required: false
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseSettlement'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      deprecated: true
      security:
        - OAuth2Flow:
            - settlements:read
  /v1/payments/{payment_id}:
    get:
      tags:
        - Payments
      summary: Retrieve Payment
      description: Retrieves details of a previously requested payment
      operationId: getPayment
      parameters:
        - name: id
          in: path
          description: Payment ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponsePayment'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - payments:read
  /v1/payments/{payment_id}/status:
    get:
      tags:
        - Payments
      summary: Retrieve Payment Status
      description: >-
        Retrieves status of a previously created payment. Provides insight into
        any actions or RFIs that require attention.
      operationId: getPaymentStatus
      parameters:
        - name: payment_id
          in: path
          description: Payment ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponsePaymentStatus'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - payments:read
  /v1/exchanges/{exchange_id}:
    get:
      tags:
        - Exchanges
      summary: Retrieve Exchange
      description: Retrieves details of a previously requested exchange
      operationId: getExchange
      parameters:
        - name: id
          in: path
          description: Exchange ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseExchange'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - exchanges:read
  /v1/documents/{document_id}/download:
    get:
      tags:
        - Documents
      summary: Download Document
      description: Downloads a previously upload document
      operationId: downloadDocument
      parameters:
        - name: id
          in: path
          description: Document ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/octet-stream: {}
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - applications:read
  /v1/deposits/{deposit_id}:
    get:
      tags:
        - Deposits
      summary: Retrieve Deposit
      description: Retrieves details of a previously requested deposit
      operationId: getDeposit
      parameters:
        - name: id
          in: path
          description: Deposit ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/DEPOSIT_PUSH'
                  - $ref: '#/components/schemas/DEPOSIT_PULL'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - deposits:read
  /v1/customers:
    get:
      tags:
        - Customers
      summary: Retrieve Customers
      description: 'Retrieve customers matching the provided query parameters '
      operationId: getCustomers
      parameters:
        - name: page
          in: query
          description: Page of records to get (default 0 = first page)
          schema:
            type: integer
            format: int32
        - name: page_size
          in: query
          description: Records to return per page (default = 20)
          schema:
            type: integer
            format: int32
        - name: type
          in: query
          description: Type of Customer
          schema:
            type: string
            enum:
              - INDIVIDUAL
              - CORPORATION
        - name: status
          in: query
          description: >+
            * `ACTIVE` - Customer is active and available for use in line with
            client configuration. 

            * `CLOSED` -  Customer is permanently closed, no further actions can
            be performed on it or associated accounts. 

            * `PENDING` -  Customer is under additional review. No actions can
            be performed on the account.   

            * `FROZEN` - Customer and associated accounts have been temporarily
            locked for all actions. 

            * `EDD` -  Customer requires enhanced due diligence to be performed.
            The customer and accounts will operate as if frozen. 

            * `DORMANT` - No activity has been seen in the last 12 months.
            Customer and accounts are available for use.  

          schema:
            type: string
            enum:
              - ACTIVE
              - CLOSED
              - FROZEN
              - PENDING
              - EDD
              - DORMANT
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseCustomers'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - customers:read
      x-order:
        value: '2'
  /v1/applications/{application_id}/status:
    get:
      tags:
        - Applications
      summary: Retrieve Application Status
      description: 'Retrieve the detailed status of an application '
      operationId: getApplicationStatus
      parameters:
        - name: id
          in: path
          description: Application ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseApplicationState'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - applications:read
  /v1/accounts/deposits/{id}/transactions:
    get:
      tags:
        - Accounts
      summary: Retrieve Transactions
      description: Retrieves all transactions under the given account
      operationId: getTransactions_1
      parameters:
        - name: id
          in: path
          description: Account ID
          required: true
          schema:
            type: string
        - name: page
          in: query
          description: Page of records to get (default 0 = first page)
          required: false
          schema:
            type: integer
            format: int32
        - name: page_size
          in: query
          description: Records to return per page (default = 20)
          required: false
          schema:
            type: integer
            format: int32
        - name: order
          in: query
          description: Sort order by transaction date (ASC or DESC)
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
        - name: start_date
          in: query
          description: Filter for transaction from this date
          required: false
          schema:
            type: string
            format: date
        - name: end_date
          in: query
          description: Filter for transaction to this date
          required: false
          schema:
            type: string
            format: date
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseTransactions'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - accounts:read
  /v1/accounts/deposits/{id}/transactions/{id}:
    get:
      tags:
        - Accounts
      summary: Retrieve Transaction
      description: Retrieves details of a single transaction under the given account
      operationId: getTransaction_1
      parameters:
        - name: id
          in: path
          description: Transaction ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseTransactionDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - accounts:read
  /v1/accounts/deposits/{id}/statements:
    get:
      tags:
        - Accounts
      summary: Retrieve Statements
      description: Retrieves a paginated list of statements for a given account id.
      operationId: getStatements
      parameters:
        - name: id
          in: path
          description: Account ID
          required: true
          schema:
            type: string
        - name: page
          in: query
          description: Page of records to get (default 0 = first page)
          required: false
          schema:
            type: integer
            format: int32
        - name: page_size
          in: query
          description: Records to return per page (default = 20)
          required: false
          schema:
            type: integer
            format: int32
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseStatements'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - accounts:read
  /v1/accounts/deposits/{account_id}/statements/{statement_id}:
    get:
      tags:
        - Accounts
      summary: Retrieve Statement
      description: >-
        Retrieves the statement for a specific month and year for a given
        account id.
      operationId: getStatement
      parameters:
        - name: account_id
          in: path
          description: Account ID
          required: true
          schema:
            type: string
        - name: statement_id
          in: path
          description: Statement ID
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseStatement'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - accounts:read
  /v1/subscriptions/{subscription_id}:
    delete:
      tags:
        - Subscriptions (Webhooks)
      summary: Delete Subscription
      description: Delete an existing subscription
      operationId: deleteSubscription
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth bearer token (see authentication flows)
          schema:
            type: string
        - name: x-l2f-request-id
          in: header
          description: >-
            Optional Unique ID per request, useful for fault
            resolution/diagnosis and audit.
          schema:
            type: string
        - name: x-l2f-idempotency-id
          in: header
          description: >-
            Unique ID used to safely retry an operation. See
            [idempotency](https://docs.rail.io/guides/idempotence/) section for
            more details.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseSubscriptionBase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Flow:
            - subscriptions:write
components:
  schemas:
    ResponseWithdrawalBase:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/WithdrawalBase'
    WithdrawalBase:
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the withdrawal request
          readOnly: true
        status:
          type: string
          description: >+
            Status of the withdrawal. 

            * `REQUESTED` - Withdrawal request is created and has passed
            validation. It must be accepted at which point it will be executed. 

            * `ACCEPTED` - Withdrawal request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `EXPIRED` - Occurs when a withdrawal request was not accepted
            within a reasonable time frame. The request cannot be replayed from
            this state.  

            * `CANCELLED` - Withdrawal request was cancelled. Only available
            prior to acceptance. The  request cannot be replayed from this
            state.  

            * `CANCELLING` - Withdrawal request is being cancelled. 

            * `EXECUTED` -  Withdrawal request has been executed, it is
            completed with all ledger entries performed.  

            * `REJECTED` - Withdrawal request was rejected and cannot be
            executed.  

          readOnly: true
          enum:
            - REQUESTED
            - REJECTED
            - EXPIRED
            - ACCEPTED
            - EXECUTED
            - CANCELLED
            - CANCELLING
    Error:
      type: object
      properties:
        code:
          type: string
          description: Layer2 Standard Error Code
        description:
          type: string
          description: Error Description
      description: Error List
    ResponseError:
      type: object
      properties:
        errors:
          type: array
          description: Error List
          items:
            $ref: '#/components/schemas/Error'
    Withdrawal:
      required:
        - amount
        - created_timestamp
        - destination_counterparty_id
        - purpose
        - source_account_id
        - withdrawal_rail
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the withdrawal request
          readOnly: true
        status:
          type: string
          description: >+
            Status of the withdrawal. 

            * `REQUESTED` - Withdrawal request is created and has passed
            validation. It must be accepted at which point it will be executed. 

            * `ACCEPTED` - Withdrawal request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `EXPIRED` - Occurs when a withdrawal request was not accepted
            within a reasonable time frame. The request cannot be replayed from
            this state.  

            * `CANCELLED` - Withdrawal request was cancelled. Only available
            prior to acceptance. The  request cannot be replayed from this
            state.  

            * `CANCELLING` - Withdrawal request is being cancelled. 

            * `EXECUTED` -  Withdrawal request has been executed, it is
            completed with all ledger entries performed.  

            * `REJECTED` - Withdrawal request was rejected and cannot be
            executed.  

          readOnly: true
          enum:
            - REQUESTED
            - REJECTED
            - EXPIRED
            - ACCEPTED
            - EXECUTED
            - CANCELLED
            - CANCELLING
        created_timestamp:
          type: string
          description: Time when the withdrawal request was generated
          format: date-time
          readOnly: true
        withdrawal_rail:
          type: string
          description: >-
            The rail to be used for the withdrawal. The destination counterparty
            must have the appropriate rail configuration.
          enum:
            - ACH
            - FEDWIRE
            - SEPA_CT
            - SWIFT
            - CRYPTO
            - EFT
        description:
          type: string
          description: Description of the transaction
        source_account_id:
          type: string
          description: Source account ID from which funds will be withdrawn.
        purpose:
          type: string
          description: >-
            Purpose of the withdrawal. (Note: The purpose "PERSONAL_ACCOUNT" is
            only valid with counterparties that have
            profile.relationship_to_customer set as "SELF".)
          enum:
            - PERSONAL_ACCOUNT
            - FAMILY
            - INSURANCE
            - INVESTMENT
            - REAL_ESTATE
            - TUITION
            - MEDICAL
            - TRAVEL
            - TRADE_TRANSACTIONS
            - UTILITY
            - TAX
            - LOAN
            - BILLS
            - PAYROLL
            - TELECOM
            - INTELLECTUAL_PROPERTY
            - CHARITABLE_DONATIONS
            - MORTGAGE
            - EXPENSES_REIMBURSEMENT
            - PROFESSIONAL_SERVICES
            - MARKETING
            - RENTAL_PROPERTY
        amount:
          type: number
          description: Amount to be withdrawn (uses the source account currency)
        destination_counterparty_id:
          type: string
          description: >-
            Destination counterparty where funds will be sent. This counterparty
            must be configured with the required rail information.
      discriminator:
        propertyName: withdrawal_rail
        mapping:
          ACH: '#/components/schemas/WithdrawalACH'
          FEDWIRE: '#/components/schemas/WithdrawalFedwire'
          SEPA_CT: '#/components/schemas/WithdrawalSepaCT'
          SWIFT: '#/components/schemas/WithdrawalSwift'
          CRYPTO: '#/components/schemas/WithdrawalCrypto'
          CHAPS: '#/components/schemas/WithdrawalChaps'
          FPS: '#/components/schemas/WithdrawalFps'
          IMPS: '#/components/schemas/WithdrawalImps'
          SPEI: '#/components/schemas/WithdrawalSPEI'
          UAEFTS: '#/components/schemas/WithdrawalUAEFTS'
    WithdrawalACH:
      required:
        - amount
        - created_timestamp
        - destination_counterparty_id
        - purpose
        - source_account_id
        - withdrawal_rail
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the withdrawal request
          readOnly: true
        status:
          type: string
          description: >+
            Status of the withdrawal. 

            * `REQUESTED` - Withdrawal request is created and has passed
            validation. It must be accepted at which point it will be executed. 

            * `ACCEPTED` - Withdrawal request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `EXPIRED` - Occurs when a withdrawal request was not accepted
            within a reasonable time frame. The request cannot be replayed from
            this state.  

            * `CANCELLED` - Withdrawal request was cancelled. Only available
            prior to acceptance. The  request cannot be replayed from this
            state.  

            * `CANCELLING` - Withdrawal request is being cancelled. 

            * `EXECUTED` -  Withdrawal request has been executed, it is
            completed with all ledger entries performed.  

            * `REJECTED` - Withdrawal request was rejected and cannot be
            executed.  

          readOnly: true
          enum:
            - REQUESTED
            - REJECTED
            - EXPIRED
            - ACCEPTED
            - EXECUTED
            - CANCELLED
            - CANCELLING
        created_timestamp:
          type: string
          description: Time when the withdrawal request was generated
          format: date-time
          readOnly: true
        withdrawal_rail:
          type: string
          description: >-
            The rail to be used for the withdrawal. The destination counterparty
            must have the appropriate rail configuration.
          enum:
            - ACH
            - FEDWIRE
            - SEPA_CT
            - SWIFT
            - CRYPTO
            - EFT
        description:
          type: string
          description: Description of the transaction
        source_account_id:
          type: string
          description: Source account ID from which funds will be withdrawn.
        purpose:
          type: string
          description: >-
            Purpose of the withdrawal. (Note: The purpose "PERSONAL_ACCOUNT" is
            only valid with counterparties that have
            profile.relationship_to_customer set as "SELF".)
          enum:
            - PERSONAL_ACCOUNT
            - FAMILY
            - INSURANCE
            - INVESTMENT
            - REAL_ESTATE
            - TUITION
            - MEDICAL
            - TRAVEL
            - TRADE_TRANSACTIONS
            - UTILITY
            - TAX
            - LOAN
            - BILLS
            - PAYROLL
            - TELECOM
            - INTELLECTUAL_PROPERTY
            - CHARITABLE_DONATIONS
            - MORTGAGE
            - EXPENSES_REIMBURSEMENT
            - PROFESSIONAL_SERVICES
            - MARKETING
            - RENTAL_PROPERTY
        amount:
          type: number
          description: Amount to be withdrawn (uses the source account currency)
        destination_counterparty_id:
          type: string
          description: >-
            Destination counterparty where funds will be sent. This counterparty
            must be configured with the required rail information.
        memo:
          maxLength: 10
          type: string
          description: Memo to provide on the outbound ACH
    WithdrawalChaps:
      required:
        - amount
        - created_timestamp
        - destination_counterparty_id
        - purpose
        - source_account_id
        - withdrawal_rail
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the withdrawal request
          readOnly: true
        status:
          type: string
          description: >+
            Status of the withdrawal. 

            * `REQUESTED` - Withdrawal request is created and has passed
            validation. It must be accepted at which point it will be executed. 

            * `ACCEPTED` - Withdrawal request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `EXPIRED` - Occurs when a withdrawal request was not accepted
            within a reasonable time frame. The request cannot be replayed from
            this state.  

            * `CANCELLED` - Withdrawal request was cancelled. Only available
            prior to acceptance. The  request cannot be replayed from this
            state.  

            * `CANCELLING` - Withdrawal request is being cancelled. 

            * `EXECUTED` -  Withdrawal request has been executed, it is
            completed with all ledger entries performed.  

            * `REJECTED` - Withdrawal request was rejected and cannot be
            executed.  

          readOnly: true
          enum:
            - REQUESTED
            - REJECTED
            - EXPIRED
            - ACCEPTED
            - EXECUTED
            - CANCELLED
            - CANCELLING
        created_timestamp:
          type: string
          description: Time when the withdrawal request was generated
          format: date-time
          readOnly: true
        withdrawal_rail:
          type: string
          description: >-
            The rail to be used for the withdrawal. The destination counterparty
            must have the appropriate rail configuration.
          enum:
            - ACH
            - FEDWIRE
            - SEPA_CT
            - SWIFT
            - CRYPTO
            - EFT
        description:
          type: string
          description: Description of the transaction
        source_account_id:
          type: string
          description: Source account ID from which funds will be withdrawn.
        purpose:
          type: string
          description: >-
            Purpose of the withdrawal. (Note: The purpose "PERSONAL_ACCOUNT" is
            only valid with counterparties that have
            profile.relationship_to_customer set as "SELF".)
          enum:
            - PERSONAL_ACCOUNT
            - FAMILY
            - INSURANCE
            - INVESTMENT
            - REAL_ESTATE
            - TUITION
            - MEDICAL
            - TRAVEL
            - TRADE_TRANSACTIONS
            - UTILITY
            - TAX
            - LOAN
            - BILLS
            - PAYROLL
            - TELECOM
            - INTELLECTUAL_PROPERTY
            - CHARITABLE_DONATIONS
            - MORTGAGE
            - EXPENSES_REIMBURSEMENT
            - PROFESSIONAL_SERVICES
            - MARKETING
            - RENTAL_PROPERTY
        amount:
          type: number
          description: Amount to be withdrawn (uses the source account currency)
        destination_counterparty_id:
          type: string
          description: >-
            Destination counterparty where funds will be sent. This counterparty
            must be configured with the required rail information.
        memo:
          maxLength: 17
          type: string
          description: Memo to provide on the outbound CHAPS
    WithdrawalCrypto:
      required:
        - amount
        - created_timestamp
        - destination_counterparty_id
        - purpose
        - source_account_id
        - withdrawal_rail
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the withdrawal request
          readOnly: true
        status:
          type: string
          description: >+
            Status of the withdrawal. 

            * `REQUESTED` - Withdrawal request is created and has passed
            validation. It must be accepted at which point it will be executed. 

            * `ACCEPTED` - Withdrawal request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `EXPIRED` - Occurs when a withdrawal request was not accepted
            within a reasonable time frame. The request cannot be replayed from
            this state.  

            * `CANCELLED` - Withdrawal request was cancelled. Only available
            prior to acceptance. The  request cannot be replayed from this
            state.  

            * `CANCELLING` - Withdrawal request is being cancelled. 

            * `EXECUTED` -  Withdrawal request has been executed, it is
            completed with all ledger entries performed.  

            * `REJECTED` - Withdrawal request was rejected and cannot be
            executed.  

          readOnly: true
          enum:
            - REQUESTED
            - REJECTED
            - EXPIRED
            - ACCEPTED
            - EXECUTED
            - CANCELLED
            - CANCELLING
        created_timestamp:
          type: string
          description: Time when the withdrawal request was generated
          format: date-time
          readOnly: true
        withdrawal_rail:
          type: string
          description: >-
            The rail to be used for the withdrawal. The destination counterparty
            must have the appropriate rail configuration.
          enum:
            - ACH
            - FEDWIRE
            - SEPA_CT
            - SWIFT
            - CRYPTO
            - EFT
        description:
          type: string
          description: Description of the transaction
        source_account_id:
          type: string
          description: Source account ID from which funds will be withdrawn.
        purpose:
          type: string
          description: >-
            Purpose of the withdrawal. (Note: The purpose "PERSONAL_ACCOUNT" is
            only valid with counterparties that have
            profile.relationship_to_customer set as "SELF".)
          enum:
            - PERSONAL_ACCOUNT
            - FAMILY
            - INSURANCE
            - INVESTMENT
            - REAL_ESTATE
            - TUITION
            - MEDICAL
            - TRAVEL
            - TRADE_TRANSACTIONS
            - UTILITY
            - TAX
            - LOAN
            - BILLS
            - PAYROLL
            - TELECOM
            - INTELLECTUAL_PROPERTY
            - CHARITABLE_DONATIONS
            - MORTGAGE
            - EXPENSES_REIMBURSEMENT
            - PROFESSIONAL_SERVICES
            - MARKETING
            - RENTAL_PROPERTY
        amount:
          type: number
          description: Amount to be withdrawn (uses the source account currency)
        destination_counterparty_id:
          type: string
          description: >-
            Destination counterparty where funds will be sent. This counterparty
            must be configured with the required rail information.
    WithdrawalFedwire:
      required:
        - amount
        - created_timestamp
        - destination_counterparty_id
        - purpose
        - source_account_id
        - withdrawal_rail
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the withdrawal request
          readOnly: true
        status:
          type: string
          description: >+
            Status of the withdrawal. 

            * `REQUESTED` - Withdrawal request is created and has passed
            validation. It must be accepted at which point it will be executed. 

            * `ACCEPTED` - Withdrawal request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `EXPIRED` - Occurs when a withdrawal request was not accepted
            within a reasonable time frame. The request cannot be replayed from
            this state.  

            * `CANCELLED` - Withdrawal request was cancelled. Only available
            prior to acceptance. The  request cannot be replayed from this
            state.  

            * `CANCELLING` - Withdrawal request is being cancelled. 

            * `EXECUTED` -  Withdrawal request has been executed, it is
            completed with all ledger entries performed.  

            * `REJECTED` - Withdrawal request was rejected and cannot be
            executed.  

          readOnly: true
          enum:
            - REQUESTED
            - REJECTED
            - EXPIRED
            - ACCEPTED
            - EXECUTED
            - CANCELLED
            - CANCELLING
        created_timestamp:
          type: string
          description: Time when the withdrawal request was generated
          format: date-time
          readOnly: true
        withdrawal_rail:
          type: string
          description: >-
            The rail to be used for the withdrawal. The destination counterparty
            must have the appropriate rail configuration.
          enum:
            - ACH
            - FEDWIRE
            - SEPA_CT
            - SWIFT
            - CRYPTO
            - EFT
        description:
          type: string
          description: Description of the transaction
        source_account_id:
          type: string
          description: Source account ID from which funds will be withdrawn.
        purpose:
          type: string
          description: >-
            Purpose of the withdrawal. (Note: The purpose "PERSONAL_ACCOUNT" is
            only valid with counterparties that have
            profile.relationship_to_customer set as "SELF".)
          enum:
            - PERSONAL_ACCOUNT
            - FAMILY
            - INSURANCE
            - INVESTMENT
            - REAL_ESTATE
            - TUITION
            - MEDICAL
            - TRAVEL
            - TRADE_TRANSACTIONS
            - UTILITY
            - TAX
            - LOAN
            - BILLS
            - PAYROLL
            - TELECOM
            - INTELLECTUAL_PROPERTY
            - CHARITABLE_DONATIONS
            - MORTGAGE
            - EXPENSES_REIMBURSEMENT
            - PROFESSIONAL_SERVICES
            - MARKETING
            - RENTAL_PROPERTY
        amount:
          type: number
          description: Amount to be withdrawn (uses the source account currency)
        destination_counterparty_id:
          type: string
          description: >-
            Destination counterparty where funds will be sent. This counterparty
            must be configured with the required rail information.
        memo:
          maxLength: 50
          type: string
          description: Memo to provide on the outbound Fedwire
    WithdrawalFps:
      required:
        - amount
        - created_timestamp
        - destination_counterparty_id
        - purpose
        - source_account_id
        - withdrawal_rail
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the withdrawal request
          readOnly: true
        status:
          type: string
          description: >+
            Status of the withdrawal. 

            * `REQUESTED` - Withdrawal request is created and has passed
            validation. It must be accepted at which point it will be executed. 

            * `ACCEPTED` - Withdrawal request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `EXPIRED` - Occurs when a withdrawal request was not accepted
            within a reasonable time frame. The request cannot be replayed from
            this state.  

            * `CANCELLED` - Withdrawal request was cancelled. Only available
            prior to acceptance. The  request cannot be replayed from this
            state.  

            * `CANCELLING` - Withdrawal request is being cancelled. 

            * `EXECUTED` -  Withdrawal request has been executed, it is
            completed with all ledger entries performed.  

            * `REJECTED` - Withdrawal request was rejected and cannot be
            executed.  

          readOnly: true
          enum:
            - REQUESTED
            - REJECTED
            - EXPIRED
            - ACCEPTED
            - EXECUTED
            - CANCELLED
            - CANCELLING
        created_timestamp:
          type: string
          description: Time when the withdrawal request was generated
          format: date-time
          readOnly: true
        withdrawal_rail:
          type: string
          description: >-
            The rail to be used for the withdrawal. The destination counterparty
            must have the appropriate rail configuration.
          enum:
            - ACH
            - FEDWIRE
            - SEPA_CT
            - SWIFT
            - CRYPTO
            - EFT
        description:
          type: string
          description: Description of the transaction
        source_account_id:
          type: string
          description: Source account ID from which funds will be withdrawn.
        purpose:
          type: string
          description: >-
            Purpose of the withdrawal. (Note: The purpose "PERSONAL_ACCOUNT" is
            only valid with counterparties that have
            profile.relationship_to_customer set as "SELF".)
          enum:
            - PERSONAL_ACCOUNT
            - FAMILY
            - INSURANCE
            - INVESTMENT
            - REAL_ESTATE
            - TUITION
            - MEDICAL
            - TRAVEL
            - TRADE_TRANSACTIONS
            - UTILITY
            - TAX
            - LOAN
            - BILLS
            - PAYROLL
            - TELECOM
            - INTELLECTUAL_PROPERTY
            - CHARITABLE_DONATIONS
            - MORTGAGE
            - EXPENSES_REIMBURSEMENT
            - PROFESSIONAL_SERVICES
            - MARKETING
            - RENTAL_PROPERTY
        amount:
          type: number
          description: Amount to be withdrawn (uses the source account currency)
        destination_counterparty_id:
          type: string
          description: >-
            Destination counterparty where funds will be sent. This counterparty
            must be configured with the required rail information.
        memo:
          maxLength: 17
          type: string
          description: Memo to provide on the outbound FPS
    WithdrawalImps:
      required:
        - amount
        - created_timestamp
        - destination_counterparty_id
        - purpose
        - source_account_id
        - withdrawal_rail
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the withdrawal request
          readOnly: true
        status:
          type: string
          description: >+
            Status of the withdrawal. 

            * `REQUESTED` - Withdrawal request is created and has passed
            validation. It must be accepted at which point it will be executed. 

            * `ACCEPTED` - Withdrawal request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `EXPIRED` - Occurs when a withdrawal request was not accepted
            within a reasonable time frame. The request cannot be replayed from
            this state.  

            * `CANCELLED` - Withdrawal request was cancelled. Only available
            prior to acceptance. The  request cannot be replayed from this
            state.  

            * `CANCELLING` - Withdrawal request is being cancelled. 

            * `EXECUTED` -  Withdrawal request has been executed, it is
            completed with all ledger entries performed.  

            * `REJECTED` - Withdrawal request was rejected and cannot be
            executed.  

          readOnly: true
          enum:
            - REQUESTED
            - REJECTED
            - EXPIRED
            - ACCEPTED
            - EXECUTED
            - CANCELLED
            - CANCELLING
        created_timestamp:
          type: string
          description: Time when the withdrawal request was generated
          format: date-time
          readOnly: true
        withdrawal_rail:
          type: string
          description: >-
            The rail to be used for the withdrawal. The destination counterparty
            must have the appropriate rail configuration.
          enum:
            - ACH
            - FEDWIRE
            - SEPA_CT
            - SWIFT
            - CRYPTO
            - EFT
        description:
          type: string
          description: Description of the transaction
        source_account_id:
          type: string
          description: Source account ID from which funds will be withdrawn.
        purpose:
          type: string
          description: >-
            Purpose of the withdrawal. (Note: The purpose "PERSONAL_ACCOUNT" is
            only valid with counterparties that have
            profile.relationship_to_customer set as "SELF".)
          enum:
            - PERSONAL_ACCOUNT
            - FAMILY
            - INSURANCE
            - INVESTMENT
            - REAL_ESTATE
            - TUITION
            - MEDICAL
            - TRAVEL
            - TRADE_TRANSACTIONS
            - UTILITY
            - TAX
            - LOAN
            - BILLS
            - PAYROLL
            - TELECOM
            - INTELLECTUAL_PROPERTY
            - CHARITABLE_DONATIONS
            - MORTGAGE
            - EXPENSES_REIMBURSEMENT
            - PROFESSIONAL_SERVICES
            - MARKETING
            - RENTAL_PROPERTY
        amount:
          type: number
          description: Amount to be withdrawn (uses the source account currency)
        destination_counterparty_id:
          type: string
          description: >-
            Destination counterparty where funds will be sent. This counterparty
            must be configured with the required rail information.
        memo:
          maxLength: 50
          type: string
          description: Memo to provide on the outbound IMPS
    WithdrawalSPEI:
      required:
        - amount
        - created_timestamp
        - destination_counterparty_id
        - purpose
        - source_account_id
        - withdrawal_rail
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the withdrawal request
          readOnly: true
        status:
          type: string
          description: >+
            Status of the withdrawal. 

            * `REQUESTED` - Withdrawal request is created and has passed
            validation. It must be accepted at which point it will be executed. 

            * `ACCEPTED` - Withdrawal request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `EXPIRED` - Occurs when a withdrawal request was not accepted
            within a reasonable time frame. The request cannot be replayed from
            this state.  

            * `CANCELLED` - Withdrawal request was cancelled. Only available
            prior to acceptance. The  request cannot be replayed from this
            state.  

            * `CANCELLING` - Withdrawal request is being cancelled. 

            * `EXECUTED` -  Withdrawal request has been executed, it is
            completed with all ledger entries performed.  

            * `REJECTED` - Withdrawal request was rejected and cannot be
            executed.  

          readOnly: true
          enum:
            - REQUESTED
            - REJECTED
            - EXPIRED
            - ACCEPTED
            - EXECUTED
            - CANCELLED
            - CANCELLING
        created_timestamp:
          type: string
          description: Time when the withdrawal request was generated
          format: date-time
          readOnly: true
        withdrawal_rail:
          type: string
          description: >-
            The rail to be used for the withdrawal. The destination counterparty
            must have the appropriate rail configuration.
          enum:
            - ACH
            - FEDWIRE
            - SEPA_CT
            - SWIFT
            - CRYPTO
            - EFT
        description:
          type: string
          description: Description of the transaction
        source_account_id:
          type: string
          description: Source account ID from which funds will be withdrawn.
        purpose:
          type: string
          description: >-
            Purpose of the withdrawal. (Note: The purpose "PERSONAL_ACCOUNT" is
            only valid with counterparties that have
            profile.relationship_to_customer set as "SELF".)
          enum:
            - PERSONAL_ACCOUNT
            - FAMILY
            - INSURANCE
            - INVESTMENT
            - REAL_ESTATE
            - TUITION
            - MEDICAL
            - TRAVEL
            - TRADE_TRANSACTIONS
            - UTILITY
            - TAX
            - LOAN
            - BILLS
            - PAYROLL
            - TELECOM
            - INTELLECTUAL_PROPERTY
            - CHARITABLE_DONATIONS
            - MORTGAGE
            - EXPENSES_REIMBURSEMENT
            - PROFESSIONAL_SERVICES
            - MARKETING
            - RENTAL_PROPERTY
        amount:
          type: number
          description: Amount to be withdrawn (uses the source account currency)
        destination_counterparty_id:
          type: string
          description: >-
            Destination counterparty where funds will be sent. This counterparty
            must be configured with the required rail information.
        memo:
          maxLength: 1
          type: string
          description: Memo to provide on the outbound SPEI
    WithdrawalSepaCT:
      required:
        - amount
        - created_timestamp
        - destination_counterparty_id
        - purpose
        - source_account_id
        - withdrawal_rail
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the withdrawal request
          readOnly: true
        status:
          type: string
          description: >+
            Status of the withdrawal. 

            * `REQUESTED` - Withdrawal request is created and has passed
            validation. It must be accepted at which point it will be executed. 

            * `ACCEPTED` - Withdrawal request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `EXPIRED` - Occurs when a withdrawal request was not accepted
            within a reasonable time frame. The request cannot be replayed from
            this state.  

            * `CANCELLED` - Withdrawal request was cancelled. Only available
            prior to acceptance. The  request cannot be replayed from this
            state.  

            * `CANCELLING` - Withdrawal request is being cancelled. 

            * `EXECUTED` -  Withdrawal request has been executed, it is
            completed with all ledger entries performed.  

            * `REJECTED` - Withdrawal request was rejected and cannot be
            executed.  

          readOnly: true
          enum:
            - REQUESTED
            - REJECTED
            - EXPIRED
            - ACCEPTED
            - EXECUTED
            - CANCELLED
            - CANCELLING
        created_timestamp:
          type: string
          description: Time when the withdrawal request was generated
          format: date-time
          readOnly: true
        withdrawal_rail:
          type: string
          description: >-
            The rail to be used for the withdrawal. The destination counterparty
            must have the appropriate rail configuration.
          enum:
            - ACH
            - FEDWIRE
            - SEPA_CT
            - SWIFT
            - CRYPTO
            - EFT
        description:
          type: string
          description: Description of the transaction
        source_account_id:
          type: string
          description: Source account ID from which funds will be withdrawn.
        purpose:
          type: string
          description: >-
            Purpose of the withdrawal. (Note: The purpose "PERSONAL_ACCOUNT" is
            only valid with counterparties that have
            profile.relationship_to_customer set as "SELF".)
          enum:
            - PERSONAL_ACCOUNT
            - FAMILY
            - INSURANCE
            - INVESTMENT
            - REAL_ESTATE
            - TUITION
            - MEDICAL
            - TRAVEL
            - TRADE_TRANSACTIONS
            - UTILITY
            - TAX
            - LOAN
            - BILLS
            - PAYROLL
            - TELECOM
            - INTELLECTUAL_PROPERTY
            - CHARITABLE_DONATIONS
            - MORTGAGE
            - EXPENSES_REIMBURSEMENT
            - PROFESSIONAL_SERVICES
            - MARKETING
            - RENTAL_PROPERTY
        amount:
          type: number
          description: Amount to be withdrawn (uses the source account currency)
        destination_counterparty_id:
          type: string
          description: >-
            Destination counterparty where funds will be sent. This counterparty
            must be configured with the required rail information.
        memo:
          maxLength: 140
          type: string
          description: Memo to provide on the outbound SEPA CT
    WithdrawalSwift:
      required:
        - amount
        - created_timestamp
        - destination_counterparty_id
        - purpose
        - source_account_id
        - withdrawal_rail
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the withdrawal request
          readOnly: true
        status:
          type: string
          description: >+
            Status of the withdrawal. 

            * `REQUESTED` - Withdrawal request is created and has passed
            validation. It must be accepted at which point it will be executed. 

            * `ACCEPTED` - Withdrawal request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `EXPIRED` - Occurs when a withdrawal request was not accepted
            within a reasonable time frame. The request cannot be replayed from
            this state.  

            * `CANCELLED` - Withdrawal request was cancelled. Only available
            prior to acceptance. The  request cannot be replayed from this
            state.  

            * `CANCELLING` - Withdrawal request is being cancelled. 

            * `EXECUTED` -  Withdrawal request has been executed, it is
            completed with all ledger entries performed.  

            * `REJECTED` - Withdrawal request was rejected and cannot be
            executed.  

          readOnly: true
          enum:
            - REQUESTED
            - REJECTED
            - EXPIRED
            - ACCEPTED
            - EXECUTED
            - CANCELLED
            - CANCELLING
        created_timestamp:
          type: string
          description: Time when the withdrawal request was generated
          format: date-time
          readOnly: true
        withdrawal_rail:
          type: string
          description: >-
            The rail to be used for the withdrawal. The destination counterparty
            must have the appropriate rail configuration.
          enum:
            - ACH
            - FEDWIRE
            - SEPA_CT
            - SWIFT
            - CRYPTO
            - EFT
        description:
          type: string
          description: Description of the transaction
        source_account_id:
          type: string
          description: Source account ID from which funds will be withdrawn.
        purpose:
          type: string
          description: >-
            Purpose of the withdrawal. (Note: The purpose "PERSONAL_ACCOUNT" is
            only valid with counterparties that have
            profile.relationship_to_customer set as "SELF".)
          enum:
            - PERSONAL_ACCOUNT
            - FAMILY
            - INSURANCE
            - INVESTMENT
            - REAL_ESTATE
            - TUITION
            - MEDICAL
            - TRAVEL
            - TRADE_TRANSACTIONS
            - UTILITY
            - TAX
            - LOAN
            - BILLS
            - PAYROLL
            - TELECOM
            - INTELLECTUAL_PROPERTY
            - CHARITABLE_DONATIONS
            - MORTGAGE
            - EXPENSES_REIMBURSEMENT
            - PROFESSIONAL_SERVICES
            - MARKETING
            - RENTAL_PROPERTY
        amount:
          type: number
          description: Amount to be withdrawn (uses the source account currency)
        destination_counterparty_id:
          type: string
          description: >-
            Destination counterparty where funds will be sent. This counterparty
            must be configured with the required rail information.
        memo:
          maxLength: 140
          type: string
          description: Memo to provide on the outbound SWIFT
    WithdrawalUAEFTS:
      required:
        - amount
        - created_timestamp
        - destination_counterparty_id
        - purpose
        - source_account_id
        - withdrawal_rail
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the withdrawal request
          readOnly: true
        status:
          type: string
          description: >+
            Status of the withdrawal. 

            * `REQUESTED` - Withdrawal request is created and has passed
            validation. It must be accepted at which point it will be executed. 

            * `ACCEPTED` - Withdrawal request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `EXPIRED` - Occurs when a withdrawal request was not accepted
            within a reasonable time frame. The request cannot be replayed from
            this state.  

            * `CANCELLED` - Withdrawal request was cancelled. Only available
            prior to acceptance. The  request cannot be replayed from this
            state.  

            * `CANCELLING` - Withdrawal request is being cancelled. 

            * `EXECUTED` -  Withdrawal request has been executed, it is
            completed with all ledger entries performed.  

            * `REJECTED` - Withdrawal request was rejected and cannot be
            executed.  

          readOnly: true
          enum:
            - REQUESTED
            - REJECTED
            - EXPIRED
            - ACCEPTED
            - EXECUTED
            - CANCELLED
            - CANCELLING
        created_timestamp:
          type: string
          description: Time when the withdrawal request was generated
          format: date-time
          readOnly: true
        withdrawal_rail:
          type: string
          description: >-
            The rail to be used for the withdrawal. The destination counterparty
            must have the appropriate rail configuration.
          enum:
            - ACH
            - FEDWIRE
            - SEPA_CT
            - SWIFT
            - CRYPTO
            - EFT
        description:
          type: string
          description: Description of the transaction
        source_account_id:
          type: string
          description: Source account ID from which funds will be withdrawn.
        purpose:
          type: string
          description: >-
            Purpose of the withdrawal. (Note: The purpose "PERSONAL_ACCOUNT" is
            only valid with counterparties that have
            profile.relationship_to_customer set as "SELF".)
          enum:
            - PERSONAL_ACCOUNT
            - FAMILY
            - INSURANCE
            - INVESTMENT
            - REAL_ESTATE
            - TUITION
            - MEDICAL
            - TRAVEL
            - TRADE_TRANSACTIONS
            - UTILITY
            - TAX
            - LOAN
            - BILLS
            - PAYROLL
            - TELECOM
            - INTELLECTUAL_PROPERTY
            - CHARITABLE_DONATIONS
            - MORTGAGE
            - EXPENSES_REIMBURSEMENT
            - PROFESSIONAL_SERVICES
            - MARKETING
            - RENTAL_PROPERTY
        amount:
          type: number
          description: Amount to be withdrawn (uses the source account currency)
        destination_counterparty_id:
          type: string
          description: >-
            Destination counterparty where funds will be sent. This counterparty
            must be configured with the required rail information.
        memo:
          maxLength: 100
          type: string
          description: Memo to provide on the outbound UAEFTS
    ResponseWithdrawalCancellation:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/WithdrawalCancel'
    WithdrawalCancel:
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the withdrawal cancellation
          readOnly: true
        status:
          type: string
          description: >-
            Status of the withdrawal cancellation. This will always be
            `CANCELLING`.
          readOnly: true
          enum:
            - REQUESTED
            - REJECTED
            - EXPIRED
            - ACCEPTED
            - EXECUTED
            - CANCELLED
            - CANCELLING
    ResponseTransfer:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Transfer'
    Transfer:
      required:
        - created_timestamp
        - destination_details
        - id
        - source_details
        - status
        - valid_until
      type: object
      properties:
        id:
          type: string
          description: >-
            Unique ID of the transfer request, to be used to accept the transfer
            and lookup status
          readOnly: true
        status:
          type: string
          description: >+
            Status of the transfer. Cannot be modified directly by the client. 

            * `REQUESTED` - Transfer request is created and has passed
            validation. It must be accepted at which point it will be executed. 

            * `ACCEPTED` - Transfer request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `EXPIRED` - Occurs when a transfer request was not accepted within
            a reasonable time frame. The transfer cannot be replayed from this
            state.  

            * `CANCELLED` - Transfer request was cancelled. Only available prior
            to acceptance. The transfer request cannot be replayed from this
            state.  

            * `EXECUTED` -  Transfer request has been executed, it is completed
            with all ledger entries performed.  

            * `REJECTED` - Transfer request was rejected and cannot be
            executed.  

          readOnly: true
          enum:
            - REQUESTED
            - ACCEPTED
            - EXPIRED
            - CANCELLED
            - EXECUTED
            - REJECTED
        created_timestamp:
          type: string
          description: Time when the transfer request was generated
          format: date-time
          readOnly: true
        valid_until:
          type: string
          description: >-
            Time when this transfer request expires and can no longer be
            accepted. Upon expiry a new transfer must be requested
          format: date-time
          readOnly: true
        source_details:
          $ref: '#/components/schemas/TransferSourceAccount'
        destination_details:
          $ref: '#/components/schemas/TransferDestinationAccount'
    TransferDestinationAccount:
      required:
        - amount_to_credit
        - destination_account_id
      type: object
      properties:
        destination_account_id:
          type: string
          description: Destination account ID
        asset_type_id:
          type: string
          description: >
            Asset type IDs follow a simple structure as follows:
            `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset type to
            test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        amount_to_credit:
          type: number
          description: Amount that will be credited to the destination account
      description: >-
        Details of transaction to be performed on the destination account on
        acceptance
    TransferSourceAccount:
      required:
        - amount_to_debit
        - source_account_id
      type: object
      properties:
        source_account_id:
          type: string
          description: Source account ID
        asset_type_id:
          type: string
          description: >
            Asset type IDs follow a simple structure as follows:
            `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset type to
            test with include. 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        amount_to_debit:
          type: number
          description: Amount that will be debited from the source account
      description: >-
        Details of transaction to be performed on the source account on
        acceptance
    RequestTransfer:
      required:
        - amount
        - destination_account_id
        - source_account_id
      type: object
      properties:
        source_account_id:
          type: string
          description: Source account from which funds will be withdrawn
        destination_account_id:
          type: string
          description: Destination account where funds will be deposited
        amount:
          type: number
          description: >-
            Amount to transfer from the source account to the destination
            account
        description:
          type: string
          description: (Optional) Description of the transfer
    ResponseTransferBase:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/TransferBase'
    TransferBase:
      required:
        - id
        - status
      type: object
      properties:
        id:
          type: string
          description: >-
            Unique ID of the transfer request, to be used to accept the transfer
            and lookup status
          readOnly: true
        status:
          type: string
          description: >+
            Status of the transfer. Cannot be modified directly by the client. 

            * `REQUESTED` - Transfer request is created and has passed
            validation. It must be accepted at which point it will be executed. 

            * `ACCEPTED` - Transfer request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `EXPIRED` - Occurs when a transfer request was not accepted within
            a reasonable time frame. The transfer cannot be replayed from this
            state.  

            * `CANCELLED` - Transfer request was cancelled. Only available prior
            to acceptance. The transfer request cannot be replayed from this
            state.  

            * `EXECUTED` -  Transfer request has been executed, it is completed
            with all ledger entries performed.  

            * `REJECTED` - Transfer request was rejected and cannot be
            executed.  

          readOnly: true
          enum:
            - REQUESTED
            - ACCEPTED
            - EXPIRED
            - CANCELLED
            - EXECUTED
            - REJECTED
    ResponseSubscription:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Subscription'
    Subscription:
      required:
        - callback_url
        - event_type
        - id
        - signature_verification_key
      type: object
      properties:
        id:
          type: string
          description: Subscription ID
          readOnly: true
        event_type:
          type: string
          description: Subscription Event Type
          enum:
            - ACCOUNT_EDD_L2F
            - ACCOUNT_FROZEN_L2F
            - ACCOUNT_PENDING_L2F
            - ACCOUNT_CLOSED
            - ACCOUNT_DORMANT
            - ACCOUNT_EDD
            - ACCOUNT_FROZEN
            - ACCOUNT_OPEN
            - ACCOUNT_PENDING
            - ACCOUNT_DEPOSIT_INSTRUCTIONS_UPDATE
            - APPLICATION_CHANGE_REQUESTED
            - APPLICATION_READY_FOR_SUBMISSION
            - APPLICATION_APPROVED
            - APPLICATION_INCOMPLETE
            - APPLICATION_PROCESSING
            - APPLICATION_REJECTED
            - APPLICATION_SUBMITTED
            - COUNTERPARTY_EDD_L2F
            - COUNTERPARTY_FROZEN_L2F
            - COUNTERPARTY_PENDING_L2F
            - COUNTERPARTY_ACTIVE
            - COUNTERPARTY_CLOSED
            - COUNTERPARTY_EDD
            - COUNTERPARTY_FROZEN
            - COUNTERPARTY_PENDING
            - CUSTOMER_EDD_L2F
            - CUSTOMER_FROZEN_L2F
            - CUSTOMER_PENDING_L2F
            - CUSTOMER_ACTIVE
            - CUSTOMER_CLOSED
            - CUSTOMER_EDD
            - CUSTOMER_FROZEN
            - CUSTOMER_PENDING
            - TRANSACTION_AUTHORIZED
            - TRANSACTION_CANCELLED
            - TRANSACTION_PENDING
            - TRANSACTION_POSTED
            - WITHDRAWAL_CHANGES_REQUESTED
        callback_url:
          type: string
          description: Endpoint to call on event
        signature_verification_key:
          type: string
          description: Signature verification key
          readOnly: true
      description: Subscription List
    PaymentBase:
      required:
        - id
      type: object
      properties:
        id:
          type: string
          description: >-
            Unique ID of the payment, to be used to lookup payment details and
            status
          readOnly: true
        status:
          type: string
          description: >+
            Status of the payment

            * `REQUESTED` - Payment request is created and has passed
            validation. It must be accepted before it can be used 

            * `ACCEPTED` - Payment request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `INPROGRESS` - Payment is in progress. 

            * `EXECUTED` -  Payment Processing have been completed.  

            * `FAILURE` - There is a problem or failure with the payment. View
            payment details for more information.  

          readOnly: true
          enum:
            - ACCEPTED
    ResponsePaymentBase:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/PaymentBase'
    Instruction:
      required:
        - instruction_type
      type: object
      properties:
        instruction_type:
          type: string
          description: Type of Instruction
          example: CRYPTO
          enum:
            - CRYPTO
            - ACH
            - FEDWIRE
      description: >-
        List of all available deposit instructions for this account. For crypto
        accounts typically expect a single entry. For FIAT accounts, there may
        be several entries for each of the supported rails on that account
        type. 
      readOnly: true
      example:
        - instruction_type: CRYPTO
          address: '0x000121'
          blockchain: ETHEREUM
          network: MAINNET
          asset_type_id: ETHEREUM_MAINNET_ETH
        - instruction_type: SWIFT
          account_holder_name: string
          account_number: string
          account_routing_number: string
          swift_bic: string
          account_holder_address:
            unit_number: string
            address_line1: string
            address_line2: string
            address_line3: string
            city: string
            state: string
            postal_code: string
            country_code: string
          institution_name: string
          institution_address:
            unit_number: string
            address_line1: string
            address_line2: string
            address_line3: string
            city: string
            state: string
            postal_code: string
            country_code: string
          asset_type_id: string
        - instruction_type: FEDWIRE
          account_holder_name: string
          account_number: string
          account_routing_number: string
          account_holder_address:
            unit_number: string
            address_line1: string
            address_line2: string
            address_line3: string
            city: string
            state: string
            postal_code: string
            country_code: string
          institution_name: string
          institution_address:
            unit_number: string
            address_line1: string
            address_line2: string
            address_line3: string
            city: string
            state: string
            postal_code: string
            country_code: string
          memo: string
          asset_type_id: string
        - instruction_type: ACH
          account_holder_name: string
          account_number: string
          account_routing_number: string
          description: string
          asset_type_id: string
      discriminator:
        propertyName: instruction_type
        mapping:
          CRYPTO: '#/components/schemas/InstructionCrypto'
          FEDWIRE: '#/components/schemas/InstructionFedwire'
          ACH: '#/components/schemas/InstructionAch'
          SWIFT: '#/components/schemas/InstructionSwift'
      oneOf:
        - $ref: '#/components/schemas/InstructionCrypto'
        - $ref: '#/components/schemas/InstructionFedwire'
        - $ref: '#/components/schemas/InstructionAch'
        - $ref: '#/components/schemas/InstructionSwift'
    InstructionAch:
      required:
        - account_holder_name
        - account_number
        - account_routing_number
        - instruction_type
        - memo
      type: object
      properties:
        instruction_type:
          type: string
          description: Type of Instruction
          example: CRYPTO
          enum:
            - CRYPTO
            - ACH
            - FEDWIRE
        account_holder_name:
          type: string
          description: Name on account to send fund to
        account_number:
          type: string
          description: Account number to send funds to
        account_routing_number:
          type: string
          description: Routing number of account to send funds to
        memo:
          maxLength: 10
          type: string
          description: >-
            Memo to provide on the ACH. It is critical that the memo be
            completed accurately and completely when sending the ACH. Failure to
            do so may severely delay processing of the deposit
        asset_type_id:
          type: string
          description: >
            Asset type IDs follow a simple structure as follows:
            `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset type to
            test with include. 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
    InstructionCrypto:
      required:
        - address
        - blockchain
        - instruction_type
        - network
      type: object
      properties:
        instruction_type:
          type: string
          description: Type of Instruction
          example: CRYPTO
          enum:
            - CRYPTO
            - ACH
            - FEDWIRE
        address:
          type: string
          description: Issued address for the receipt of funds.
        blockchain:
          type: string
          description: Blockchain the address is issued for use on
        network:
          type: string
          description: >-
            Network (on the target blockchain) that the address is issued for
            use on
        asset_type_id:
          type: string
          description: >
            Asset type IDs follow a simple structure as follows:
            `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset type to
            test with include. 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
    InstructionFedwire:
      required:
        - account_holder_address
        - account_holder_name
        - account_number
        - account_routing_number
        - institution_address
        - instruction_type
        - memo
      type: object
      properties:
        instruction_type:
          type: string
          description: Type of Instruction
          example: CRYPTO
          enum:
            - CRYPTO
            - ACH
            - FEDWIRE
        account_holder_name:
          type: string
          description: Name on account to send fund to
        account_number:
          type: string
          description: Account number to send funds to
        account_routing_number:
          type: string
          description: Routing number of account to send funds to
        account_holder_address:
          $ref: '#/components/schemas/account_holder_address'
        institution_name:
          type: string
          description: Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
        memo:
          maxLength: 50
          type: string
          description: >-
            Memo to provide on the Fedwire. It is critical that the memo be
            completed accurately and completely when sending the Fedwire.
            Failure to do so may severely delay processing of the deposit
        asset_type_id:
          type: string
          description: >
            Asset type IDs follow a simple structure as follows:
            `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset type to
            test with include. 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
    InstructionSwift:
      required:
        - account_holder_address
        - account_holder_name
        - account_number
        - account_routing_number
        - institution_address
        - institution_name
        - instruction_type
        - swift_bic
      type: object
      properties:
        instruction_type:
          type: string
          description: Type of Instruction
          example: CRYPTO
          enum:
            - CRYPTO
            - ACH
            - FEDWIRE
        account_holder_name:
          type: string
          description: Name on account to send fund to
        account_number:
          type: string
          description: Account number to send funds to
        account_routing_number:
          type: string
          description: Routing number of account to send funds to
        swift_bic:
          type: string
          description: Counterparty SWIFT/BIC Number
        account_holder_address:
          $ref: '#/components/schemas/account_holder_address'
        institution_name:
          type: string
          description: Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
        asset_type_id:
          type: string
          description: >
            Asset type IDs follow a simple structure as follows:
            `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset type to
            test with include. 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
    Payment:
      required:
        - id
        - payment_destination
        - payment_info
        - payment_source
      type: object
      properties:
        id:
          type: string
          description: >-
            Unique ID of the payment, to be used to lookup payment details and
            status
          readOnly: true
        status:
          type: string
          description: >+
            Status of the payment

            * `REQUESTED` - Payment request is created and has passed
            validation. It must be accepted before it can be used 

            * `ACCEPTED` - Payment request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `INPROGRESS` - Payment is in progress. 

            * `EXECUTED` -  Payment Processing have been completed.  

            * `FAILURE` - There is a problem or failure with the payment. View
            payment details for more information.  

          readOnly: true
          enum:
            - ACCEPTED
        payment_source:
          $ref: '#/components/schemas/PaymentSource'
        payment_destination:
          $ref: '#/components/schemas/PaymentDestination'
        payment_info:
          $ref: '#/components/schemas/PaymentInfo'
    PaymentDestination:
      type: object
      description: Ultimate destination of funds for the payment request
      oneOf:
        - $ref: '#/components/schemas/PaymentDestinationAccount'
    PaymentDestinationAccount:
      required:
        - account_id
      type: object
      properties:
        account_id:
          type: string
          description: Destination account ID
    PaymentInfo:
      required:
        - amount
        - description
      type: object
      properties:
        description:
          type: string
          description: Description of the payment
        amount:
          type: string
          description: Amount of the payment
      description: Payment information
    PaymentSource:
      type: object
      description: Source of funds for the payment request
      oneOf:
        - $ref: '#/components/schemas/PaymentSourceCounterparty'
    PaymentSourceCounterparty:
      required:
        - asset_type
        - deposit_instructions
        - source_counterparty_id
      type: object
      properties:
        source_counterparty_id:
          type: string
          description: Counterparty ID from which funds will be collected (received) from.
        asset_type:
          type: array
          description: >-
            The asset types you wish to make available for receiving the payment
            on. 
          items:
            type: string
            description: >-
              The asset types you wish to make available for receiving the
              payment on. 
        deposit_instructions:
          type: object
          additionalProperties:
            type: array
            description: Deposit instructions for different asset types
            readOnly: true
            items:
              $ref: '#/components/schemas/Instruction'
          description: Deposit instructions for different asset types
          readOnly: true
    account_holder_address:
      type: object
      properties:
        unit_number:
          type: string
          description: Unit Number
        address_line1:
          type: string
          description: Address Line 1
        address_line2:
          type: string
          description: Address Line 2
        address_line3:
          type: string
          description: Address Line 3
        city:
          type: string
          description: City
        state:
          type: string
          description: >-
            State / Province (2 Digit subdivision component of the ISO 3166-2
            code, which consists of the last two characters.
            https://en.wikipedia.org/wiki/ISO_3166-2
        postal_code:
          type: string
          description: Postal / Zip Code
        country_code:
          type: string
          description: >-
            Country Code (2 Digit ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
      description: Account Holder Address
    institution_address:
      type: object
      properties:
        unit_number:
          type: string
          description: Unit Number
        address_line1:
          type: string
          description: Address Line 1
        address_line2:
          type: string
          description: Address Line 2
        address_line3:
          type: string
          description: Address Line 3
        city:
          type: string
          description: City
        state:
          type: string
          description: >-
            State / Province (2 Digit subdivision component of the ISO 3166-2
            code, which consists of the last two characters.
            https://en.wikipedia.org/wiki/ISO_3166-2
        postal_code:
          type: string
          description: Postal / Zip Code
        country_code:
          type: string
          description: >-
            Country Code (2 Digit ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
      description: Address of institution
    Exchange:
      required:
        - action
        - created_timestamp
        - destination_details
        - exchange_type
        - id
        - source_details
        - status
      type: object
      properties:
        id:
          type: string
          description: Unique ID of the exchange request
          readOnly: true
        status:
          type: string
          description: >+
            Status of the Exchange. Cannot be modified directly by the client. 

            * `REQUESTED` - Exchange request is created and has passed
            validation. It must be accepted at which point it will be executed. 

            * `ACCEPTED` - Exchange request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `EXPIRED` - Occurs when an exchange request was not accepted
            within a reasonable time frame. The exchange cannot be replayed from
            this state.  

            * `CANCELLED` - Exchange request was cancelled. Only available prior
            to acceptance. The exchange request cannot be replayed from this
            state.  

            * `EXECUTED` -  Exchange request has been executed, it is completed
            with all ledger entries performed.  

            * `REJECTED` - Exchange request was rejected and cannot be
            executed.  

          readOnly: true
          enum:
            - REQUESTED
            - ACCEPTED
            - EXPIRED
            - CANCELLED
            - EXECUTED
            - REJECTED
        created_timestamp:
          type: string
          description: Time when the exchange request was generated
          format: date-time
        exchange_type:
          type: string
          description: The type of exchange being performed.
          readOnly: true
          enum:
            - MARKET
            - QUOTE
        action:
          type: string
          description: >+
            The action defines which side of the exchange to fix.  

            * `FIX_DESTINATION` - This fixes the amount to credit to the
            `DESTINATION` account, therefore the quote provided is for how much
            to deduct from the `SOURCE` account. Think of this as 'buying' the
            destination amount.

            * `FIX_SOURCE` - This fixes the amount you want to debit from the
            `SOURCE` account, therefore the quote provided is for how much would
            be credited to the `DESTINATION` account. Think of this as 'selling'
            the source amount. 

          enum:
            - FIX_DESTINATION
            - FIX_SOURCE
        source_details:
          $ref: '#/components/schemas/TransferSourceAccount'
        destination_details:
          $ref: '#/components/schemas/TransferDestinationAccount'
    ResponseExchange:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Exchange'
    RequestExchangeAccept:
      type: object
      properties:
        maximum_slippage:
          type: number
          description: >
            Default value: 0.01


            The maximum slippage rail will consider when accepting this order.
            Defined in bps and represented as a percentage. So 10bps would be
            presented as 0.001. Must be greater than or equal to 0.


            We calculate slippage based on the quote you are accepting. While
            the slippage may not always be used, it is there to ensure a better
            completion/fill rate with our market makers. 


            Where the quote cannot be fulfilled within the slippage tolerance,
            the exchange response status will be ```CANCELLED```. 
    RequestExchange:
      required:
        - action
        - amount
        - destination_account_id
        - source_account_id
      type: object
      properties:
        source_account_id:
          type: string
          description: Source account from which funds will be withdrawn
        destination_account_id:
          type: string
          description: Destination account where funds will be deposited
        amount:
          type: number
          description: 'The amount to be exchanged depending on the the `action`. '
        action:
          type: string
          description: >+
            Type of exchange being performed. 

            * `FIX_DESTINATION` - This fixes the amount to credit to the
            `DESTINATION` account, therefore the quote provided is for how much
            to deduct from the `SOURCE` account. Think of this as 'buying' the
            destination amount.

            * `FIX_SOURCE` - This fixes the amount you want to debit from the
            `SOURCE` account, therefore the quote provided is for how much would
            be credited to the `DESTINATION` account. Think of this as 'selling'
            the source amount. 

          enum:
            - FIX_DESTINATION
            - FIX_SOURCE
        description:
          type: string
          description: (Optional) Description of the transaction
    DocumentBase:
      required:
        - id
      type: object
      properties:
        id:
          type: string
          description: Unique ID of the document
          readOnly: true
          example: 905666e7-2d5b-4ac4-bd96-e02675fc678f
    ResponseDocumentBase:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/DocumentBase'
    DEPOSIT_PUSH:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/DepositPush'
    DepositDestinationAccount:
      required:
        - asset_type_id
        - destination_account_id
      type: object
      properties:
        destination_account_id:
          type: string
          description: Destination account ID
        asset_type_id:
          type: string
          description: >
            Asset type IDs follow a simple structure as follows:
            `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset type to
            test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
          readOnly: true
      description: Destination account on platform into which funds will be deposited
    DepositPush:
      required:
        - created_timestamp
        - customer_name
        - deposit_destination
        - deposit_source
        - deposit_type
        - id
        - status
      type: object
      properties:
        id:
          type: string
          description: >-
            Unique ID of the deposit instance, to be used to lookup deposit
            status and historical deposits
          readOnly: true
        status:
          type: string
          description: >+
            Status of the deposit. 

            * `REQUESTED` - Deposit request is created and deposits can be
            made. 

            * `EXECUTED` -  At least 1 deposit was received and successfully
            processed.  

            * `FAILURE` - There is a problem or failure with an incoming
            deposit. View deposit details for more information.  

          readOnly: true
          enum:
            - REQUESTED
            - EXECUTED
            - FAILURE
        created_timestamp:
          type: string
          description: Time when the deposit request was generated
          format: date-time
          readOnly: true
        deposit_type:
          type: string
          description: >-
            How should the deposit be made. PUSH (manually sent by customer) or
            PULL (automatically pulled via a linked counterparty using a
            supported rail). 

            If performing a PULL, several conditions apply. 


            Conditions:


            - The destination account must be for an asset type that supports
            pull deposits (e.g. USD, CAD)

            - The source counterparty must be linked and have an available rail
            that supports ones of the deposit mechanisms on the destination
            account (e.g. ACH, EFT). 


            - The deposit request MUST be accepted using the /deposit/accept
            endpoint to initiate the pull deposit
          enum:
            - PUSH
            - PULL
        deposit_destination:
          $ref: '#/components/schemas/DepositDestinationAccount'
        customer_name:
          type: string
          description: Customer name for whom the deposit was created
        deposit_source:
          $ref: '#/components/schemas/DepositSource'
    DepositSource:
      required:
        - deposit_instructions
      type: object
      properties:
        deposit_instructions:
          type: array
          description: >-
            List of all available deposit instructions for this account. For
            crypto accounts typically expect a single entry. For FIAT accounts,
            there may be several entries for each of the supported rails on that
            account type. 
          readOnly: true
          example:
            - instruction_type: CRYPTO
              address: '0x000121'
              blockchain: ETHEREUM
              network: MAINNET
              asset_type_id: ETHEREUM_MAINNET_ETH
            - instruction_type: SWIFT
              account_holder_name: string
              account_number: string
              account_routing_number: string
              swift_bic: string
              account_holder_address:
                unit_number: string
                address_line1: string
                address_line2: string
                address_line3: string
                city: string
                state: string
                postal_code: string
                country_code: string
              institution_name: string
              institution_address:
                unit_number: string
                address_line1: string
                address_line2: string
                address_line3: string
                city: string
                state: string
                postal_code: string
                country_code: string
              asset_type_id: string
            - instruction_type: FEDWIRE
              account_holder_name: string
              account_number: string
              account_routing_number: string
              account_holder_address:
                unit_number: string
                address_line1: string
                address_line2: string
                address_line3: string
                city: string
                state: string
                postal_code: string
                country_code: string
              institution_name: string
              institution_address:
                unit_number: string
                address_line1: string
                address_line2: string
                address_line3: string
                city: string
                state: string
                postal_code: string
                country_code: string
              memo: string
              asset_type_id: string
            - instruction_type: ACH
              account_holder_name: string
              account_number: string
              account_routing_number: string
              description: string
              asset_type_id: string
          items:
            $ref: '#/components/schemas/Instruction'
      description: 'Instructions of where to send (push) deposits. '
      readOnly: true
    DEPOSIT_PULL:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/DepositPull'
    DepositDetails:
      required:
        - amount
      type: object
      properties:
        amount:
          type: number
          description: >-
            Amount of funds to pull from the linked counterparty into the
            deposit account. In the currency of the linked counterparty. 
        reference:
          type: string
          description: >-
            Reference for the transaction to appear on the counterparty account
            where permissible.
      description: 'Details of the the deposit '
    DepositPull:
      required:
        - created_timestamp
        - deposit_destination
        - deposit_details
        - deposit_source
        - deposit_type
        - id
        - status
      type: object
      properties:
        id:
          type: string
          description: >-
            Unique ID of the deposit instance, to be used to lookup deposit
            status and historical deposits
          readOnly: true
        status:
          type: string
          description: >+
            Status of the deposit. 

            * `REQUESTED` - Deposit request is created and deposits can be
            made. 

            * `EXECUTED` -  At least 1 deposit was received and successfully
            processed.  

            * `FAILURE` - There is a problem or failure with an incoming
            deposit. View deposit details for more information.  

          readOnly: true
          enum:
            - REQUESTED
            - EXECUTED
            - FAILURE
        created_timestamp:
          type: string
          description: Time when the deposit request was generated
          format: date-time
          readOnly: true
        deposit_type:
          type: string
          description: >-
            How should the deposit be made. PUSH (manually sent by customer) or
            PULL (automatically pulled via a linked counterparty using a
            supported rail). 

            If performing a PULL, several conditions apply. 


            Conditions:


            - The destination account must be for an asset type that supports
            pull deposits (e.g. USD, CAD)

            - The source counterparty must be linked and have an available rail
            that supports ones of the deposit mechanisms on the destination
            account (e.g. ACH, EFT). 


            - The deposit request MUST be accepted using the /deposit/accept
            endpoint to initiate the pull deposit
          enum:
            - PUSH
            - PULL
        deposit_destination:
          $ref: '#/components/schemas/DepositDestinationAccount'
        deposit_source:
          $ref: '#/components/schemas/DepositSourceCounterparty'
        deposit_details:
          $ref: '#/components/schemas/DepositDetails'
    DepositSourceCounterparty:
      required:
        - asset_type_id
        - source_counterparty_id
      type: object
      properties:
        source_counterparty_id:
          type: string
          description: 'Linked counterparty to pull funds from. '
        asset_type_id:
          type: string
          description: >
            Asset type IDs follow a simple structure as follows:
            `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset type to
            test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
          readOnly: true
      description: Counterparty from which deposit will be pulled.
    Deposit:
      required:
        - created_timestamp
        - deposit_type
        - id
        - status
      type: object
      properties:
        id:
          type: string
          description: >-
            Unique ID of the deposit instance, to be used to lookup deposit
            status and historical deposits
          readOnly: true
        status:
          type: string
          description: >+
            Status of the deposit. 

            * `REQUESTED` - Deposit request is created and deposits can be
            made. 

            * `EXECUTED` -  At least 1 deposit was received and successfully
            processed.  

            * `FAILURE` - There is a problem or failure with an incoming
            deposit. View deposit details for more information.  

          readOnly: true
          enum:
            - REQUESTED
            - EXECUTED
            - FAILURE
        created_timestamp:
          type: string
          description: Time when the deposit request was generated
          format: date-time
          readOnly: true
        deposit_type:
          type: string
          description: >-
            How should the deposit be made. PUSH (manually sent by customer) or
            PULL (automatically pulled via a linked counterparty using a
            supported rail). 

            If performing a PULL, several conditions apply. 


            Conditions:


            - The destination account must be for an asset type that supports
            pull deposits (e.g. USD, CAD)

            - The source counterparty must be linked and have an available rail
            that supports ones of the deposit mechanisms on the destination
            account (e.g. ACH, EFT). 


            - The deposit request MUST be accepted using the /deposit/accept
            endpoint to initiate the pull deposit
          enum:
            - PUSH
            - PULL
      discriminator:
        propertyName: deposit_type
        mapping:
          PUSH: '#/components/schemas/DepositPush'
          PULL: '#/components/schemas/DepositPull'
    DepositBase:
      required:
        - id
        - status
      type: object
      properties:
        id:
          type: string
          description: >-
            Unique ID of the deposit instance, to be used to lookup deposit
            status and historical deposits
          readOnly: true
        status:
          type: string
          description: >+
            Status of the deposit. 

            * `REQUESTED` - Deposit request is created and deposits can be
            made. 

            * `EXECUTED` -  At least 1 deposit was received and successfully
            processed.  

            * `FAILURE` - There is a problem or failure with an incoming
            deposit. View deposit details for more information.  

          readOnly: true
          enum:
            - REQUESTED
            - EXECUTED
            - FAILURE
    ResponseDepositBase:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/DepositBase'
    CounterPartyBase:
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
    ResponseCounterpartyBase:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/CounterPartyBase'
    AddressProfileStateRequired:
      required:
        - country_code
        - state
      type: object
      properties:
        unit_number:
          type: string
          description: Unit Number
        address_line1:
          type: string
          description: Address Line 1
        address_line2:
          type: string
          description: Address Line 2
        address_line3:
          type: string
          description: Address Line 3
        city:
          type: string
          description: City
        state:
          type: string
          description: >-
            State / Province (2 Digit subdivision component of the ISO 3166-2
            code, which consists of the last two characters.
            https://en.wikipedia.org/wiki/ISO_3166-2
        postal_code:
          type: string
          description: Postal / Zip Code
        country_code:
          type: string
          description: >-
            Country Code (2 Digit ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
      description: Address of the counterparty (individual or business name)
    CounterParty:
      required:
        - counterparty_type
        - customer_id
        - status
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
      discriminator:
        propertyName: counterparty_type
        mapping:
          FIAT_US: '#/components/schemas/CounterPartyFIATUS'
          FIAT_CN: '#/components/schemas/CounterPartyFIATCN'
          FIAT_HK: '#/components/schemas/CounterPartyFIATHK'
          FIAT_SG: '#/components/schemas/CounterPartyFIATSG'
          FIAT_JP: '#/components/schemas/CounterPartyFIATJP'
          FIAT_MY: '#/components/schemas/CounterPartyFIATMY'
          FIAT_PA: '#/components/schemas/CounterPartyFIATPA'
          FIAT_CA: '#/components/schemas/CounterPartyFIATCA'
          FIAT_BS: '#/components/schemas/CounterPartyFIATBS'
          FIAT_EU: '#/components/schemas/CounterPartyFIATEU'
          FIAT_GB: '#/components/schemas/CounterPartyFIATGB'
          FIAT_IN: '#/components/schemas/CounterPartyFIATIN'
          FIAT_US_LINKED: '#/components/schemas/CounterPartyFIATUSLINKED'
          CRYPTO: '#/components/schemas/CounterPartyCRYPTO'
          BASIC: '#/components/schemas/CounterPartyBASIC'
          FIAT_IBAN: '#/components/schemas/CounterPartyFIATIBAN'
          FIAT_ACCNO: '#/components/schemas/CounterPartyFIATACCNO'
    CounterPartyAccountCRYPTO:
      required:
        - blockchain_address
        - wallet_type
      type: object
      properties:
        asset_type_id:
          type: string
          description: >
            Destination asset type. Asset type IDs follow a simple structure as
            follows: `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset
            type to test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        blockchain_address:
          type: string
          description: >-
            Blockchain address of the recipient where funds will be sent.
            IMPORTANT: Ensure that this address is valid for the asset type of
            the source account (blockchain, network, currency). Incorrect
            addresses will result in unrecoverable loss of funds
        wallet_type:
          type: string
          description: >-
            Type of wallet that will hold/custody these funds for the recipient
            owner (e.g. Custodian, Private Wallet etc)
          enum:
            - INSTITUTION
            - OTHER
            - UNKNOWN
        institution_name:
          type: string
          description: >-
            Destination Institution Name (e.g. Bank of America) if `wallet_type`
            is `Institution`
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: >-
        Details of the recipient wallet. See the API Guides for a full
        documented breakdown of required fields.
    CounterPartyAccountFIATACCNO:
      required:
        - account_number
        - routing_number
      type: object
      properties:
        asset_type_id:
          type: string
          description: >
            Destination asset type. Asset type IDs follow a simple structure as
            follows: `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset
            type to test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        account_number:
          type: string
          description: Counterparty account number
        type:
          type: string
          description: Counterparty account type.
          enum:
            - CHECKING
            - SAVING
        routing_number:
          type: string
          description: Counterparty routing number
        swift_bic:
          type: string
          description: Counterparty SWIFT/BIC Number
        institution_name:
          type: string
          description: Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: >-
        Details of the counter party account and institution. Required fields
        are determined by the combination of required needed rails. See the API
        Guides for a full documented breakdown of required fields.
    CounterPartyAccountFIATBS:
      required:
        - account_number
        - institution_address
        - institution_name
      type: object
      properties:
        asset_type_id:
          type: string
          description: >
            Destination asset type. Asset type IDs follow a simple structure as
            follows: `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset
            type to test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        account_number:
          type: string
          description: Counterparty account number
        type:
          type: string
          description: Counterparty account type.
          enum:
            - CHECKING
            - SAVING
        swift_bic:
          type: string
          description: Counterparty SWIFT/BIC Number
        institution_name:
          type: string
          description: Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: >-
        Details of the counter party account and institution. Required fields
        are determined by the combination of required needed rails. See the API
        Guides for a full documented breakdown of required fields.
    CounterPartyAccountFIATCA:
      required:
        - institution_address
        - institution_name
        - institution_number
      type: object
      properties:
        asset_type_id:
          type: string
          description: >
            Destination asset type. Asset type IDs follow a simple structure as
            follows: `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset
            type to test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        account_number:
          type: string
          description: Counterparty account number
        institution_number:
          type: string
          description: Counterparty institution number
        transit_number:
          type: string
          description: Counterparty transit number
        swift_bic:
          type: string
          description: Counterparty SWIFT/BIC Number
        institution_name:
          type: string
          description: Institution Name (e.g. Royal Bank of Canada)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: >-
        Details of the counter party account and institution. Required fields
        are determined by the combination of required needed rails. See the API
        Guides for a full documented breakdown of required fields.
    CounterPartyAccountFIATCN:
      required:
        - account_number
        - institution_address
        - institution_name
      type: object
      properties:
        asset_type_id:
          type: string
          description: >
            Destination asset type. Asset type IDs follow a simple structure as
            follows: `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset
            type to test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        account_number:
          type: string
          description: Counterparty account number
        swift_bic:
          type: string
          description: Counterparty SWIFT/BIC Number
        institution_name:
          type: string
          description: Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: >-
        Details of the counter party account and institution. Required fields
        are determined by the combination of required needed rails. See the API
        Guides for a full documented breakdown of required fields.
    CounterPartyAccountFIATEU:
      required:
        - iban
        - institution_address
        - institution_name
        - swift_bic
      type: object
      properties:
        asset_type_id:
          type: string
          description: >
            Destination asset type. Asset type IDs follow a simple structure as
            follows: `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset
            type to test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        iban:
          type: string
          description: Counterparty International Bank Account Number (IBAN)
        swift_bic:
          type: string
          description: Counterparty SWIFT/BIC Number
        institution_name:
          type: string
          description: Institution Name (e.g. Banco Santander)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: >-
        Details of the counter party account and institution. Required fields
        are determined by the combination of required needed rails. See the API
        Guides for a full documented breakdown of required fields.
    CounterPartyAccountFIATGB:
      required:
        - account_number
        - institution_address
        - institution_name
      type: object
      properties:
        asset_type_id:
          type: string
          description: >
            Destination asset type. Asset type IDs follow a simple structure as
            follows: `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset
            type to test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        account_number:
          type: string
          description: Counterparty account number
        sort_code:
          type: string
          description: Counterparty institution sort code (######)
        iban:
          type: string
          description: Counterparty International Bank Account Number (IBAN)
        swift_bic:
          type: string
          description: Counterparty SWIFT/BIC Number
        institution_name:
          type: string
          description: Institution Name (e.g. Banco Santander)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: >-
        Details of the counter party account and institution. Required fields
        are determined by the combination of required needed rails. See the API
        Guides for a full documented breakdown of required fields.
    CounterPartyAccountFIATHK:
      required:
        - account_number
        - institution_address
        - institution_name
      type: object
      properties:
        asset_type_id:
          type: string
          description: >
            Destination asset type. Asset type IDs follow a simple structure as
            follows: `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset
            type to test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        account_number:
          type: string
          description: Counterparty account number
        swift_bic:
          type: string
          description: Counterparty SWIFT/BIC Number
        institution_name:
          type: string
          description: Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: >-
        Details of the counter party account and institution. Required fields
        are determined by the combination of required needed rails. See the API
        Guides for a full documented breakdown of required fields.
    CounterPartyAccountFIATIBAN:
      required:
        - iban
        - institution_address
        - institution_name
        - swift_bic
      type: object
      properties:
        asset_type_id:
          type: string
          description: >
            Destination asset type. Asset type IDs follow a simple structure as
            follows: `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset
            type to test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        iban:
          type: string
          description: Counterparty International Bank Account Number (IBAN)
        swift_bic:
          type: string
          description: Counterparty SWIFT/BIC Number
        institution_name:
          type: string
          description: Institution Name (e.g. Banco Santander)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: >-
        Details of the counter party account and institution. Required fields
        are determined by the combination of required needed rails. See the API
        Guides for a full documented breakdown of required fields.
    CounterPartyAccountFIATIN:
      required:
        - account_number
        - institution_address
        - institution_name
      type: object
      properties:
        asset_type_id:
          type: string
          description: >
            Destination asset type. Asset type IDs follow a simple structure as
            follows: `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset
            type to test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        account_number:
          type: string
          description: Counterparty account number
        ifsc:
          type: string
          description: Counterparty Indian Financial System Code (IFSC)
        swift_bic:
          type: string
          description: Counterparty SWIFT/BIC Number
        institution_name:
          type: string
          description: Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: >-
        Details of the counter party account and institution. Required fields
        are determined by the combination of required needed rails. See the API
        Guides for a full documented breakdown of required fields.
    CounterPartyAccountFIATJP:
      required:
        - account_number
        - institution_address
        - institution_name
      type: object
      properties:
        asset_type_id:
          type: string
          description: >
            Destination asset type. Asset type IDs follow a simple structure as
            follows: `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset
            type to test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        account_number:
          type: string
          description: Counterparty account number
        swift_bic:
          type: string
          description: Counterparty SWIFT/BIC Number
        institution_name:
          type: string
          description: Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: >-
        Details of the counter party account and institution. Required fields
        are determined by the combination of required needed rails. See the API
        Guides for a full documented breakdown of required fields.
    CounterPartyAccountFIATMY:
      required:
        - account_number
        - institution_address
        - institution_name
      type: object
      properties:
        asset_type_id:
          type: string
          description: >
            Destination asset type. Asset type IDs follow a simple structure as
            follows: `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset
            type to test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        account_number:
          type: string
          description: Counterparty account number
        swift_bic:
          type: string
          description: Counterparty SWIFT/BIC Number
        institution_name:
          type: string
          description: Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: >-
        Details of the counter party account and institution. Required fields
        are determined by the combination of required needed rails. See the API
        Guides for a full documented breakdown of required fields.
    CounterPartyAccountFIATPA:
      required:
        - account_number
        - institution_address
        - institution_name
      type: object
      properties:
        asset_type_id:
          type: string
          description: >
            Destination asset type. Asset type IDs follow a simple structure as
            follows: `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset
            type to test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        account_number:
          type: string
          description: Counterparty account number
        swift_bic:
          type: string
          description: Counterparty SWIFT/BIC Number
        institution_name:
          type: string
          description: Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: >-
        Details of the counter party account and institution. Required fields
        are determined by the combination of required needed rails. See the API
        Guides for a full documented breakdown of required fields.
    CounterPartyAccountFIATSG:
      required:
        - account_number
        - institution_address
        - institution_name
      type: object
      properties:
        asset_type_id:
          type: string
          description: >
            Destination asset type. Asset type IDs follow a simple structure as
            follows: `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset
            type to test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        account_number:
          type: string
          description: Counterparty account number
        swift_bic:
          type: string
          description: Counterparty SWIFT/BIC Number
        institution_name:
          type: string
          description: Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: >-
        Details of the counter party account and institution. Required fields
        are determined by the combination of required needed rails. See the API
        Guides for a full documented breakdown of required fields.
    CounterPartyAccountFIATUS:
      required:
        - account_number
        - routing_number
      type: object
      properties:
        asset_type_id:
          type: string
          description: >
            Destination asset type. Asset type IDs follow a simple structure as
            follows: `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset
            type to test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        account_number:
          type: string
          description: Counterparty account number
        type:
          type: string
          description: Counterparty account type.
          enum:
            - CHECKING
            - SAVING
        routing_number:
          type: string
          description: Counterparty routing number
        swift_bic:
          type: string
          description: Counterparty SWIFT/BIC Number
        institution_name:
          type: string
          description: Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: >-
        Details of the counter party account and institution. Required fields
        are determined by the combination of required needed rails. See the API
        Guides for a full documented breakdown of required fields.
    CounterPartyAccountFIATUSLINKED:
      type: object
      properties:
        asset_type_id:
          type: string
          description: >
            Destination asset type. Asset type IDs follow a simple structure as
            follows: `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset
            type to test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        account_name:
          type: string
          description: Account name generated using linking
          readOnly: true
        abbreviated_account_number:
          type: string
          description: Abbreviated account number (typically the last 4 digits e.g. x1234)
          readOnly: true
      description: >-
        Details of the counter party account and institution. Required fields
        are determined by the combination of required needed rails. See the API
        Guides for a full documented breakdown of required fields.
    CounterPartyBASIC:
      required:
        - counterparty_type
        - customer_id
        - profile
        - status
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        profile:
          $ref: '#/components/schemas/CounterPartyProfileCRYPTO'
    CounterPartyCRYPTO:
      required:
        - counterparty_type
        - customer_id
        - profile
        - status
        - supported_rails
        - wallet_information
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        supported_rails:
          type: array
          description: >-
            The rails required for this counterparty. Rail selection will
            determine data requirements. See guides for full breakdowns.
          items:
            type: string
            description: >-
              The rails required for this counterparty. Rail selection will
              determine data requirements. See guides for full breakdowns.
            default: '["CRYPTO"]'
            enum:
              - CRYPTO
          default:
            - CRYPTO
        profile:
          $ref: '#/components/schemas/CounterPartyProfileCRYPTO'
        wallet_information:
          $ref: '#/components/schemas/CounterPartyAccountCRYPTO'
    CounterPartyFIATACCNO:
      required:
        - account_information
        - counterparty_type
        - customer_id
        - profile
        - status
        - supported_rails
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        supported_rails:
          type: array
          description: >-
            The rails required for this counterparty. Rail selection will
            determine data requirements. See guides for full breakdowns.
          items:
            type: string
            description: >-
              The rails required for this counterparty. Rail selection will
              determine data requirements. See guides for full breakdowns.
            enum:
              - SWIFT
        profile:
          $ref: '#/components/schemas/CounterPartyProfileFIATACCNO'
        account_information:
          $ref: '#/components/schemas/CounterPartyAccountFIATACCNO'
        intermediary_information:
          $ref: '#/components/schemas/CounterPartyIntermediary'
    CounterPartyFIATBS:
      required:
        - account_information
        - counterparty_type
        - customer_id
        - profile
        - status
        - supported_rails
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        supported_rails:
          type: array
          description: >-
            The rails required for this counterparty. Rail selection will
            determine data requirements. See guides for full breakdowns.
          items:
            type: string
            description: >-
              The rails required for this counterparty. Rail selection will
              determine data requirements. See guides for full breakdowns.
            enum:
              - ACH
              - SWIFT
        profile:
          $ref: '#/components/schemas/CounterPartyProfileFIATBS'
        account_information:
          $ref: '#/components/schemas/CounterPartyAccountFIATBS'
        intermediary_information:
          $ref: '#/components/schemas/CounterPartyIntermediary'
    CounterPartyFIATCA:
      required:
        - account_information
        - counterparty_type
        - customer_id
        - profile
        - status
        - supported_rails
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        supported_rails:
          type: array
          description: >-
            The rails required for this counterparty. Rail selection will
            determine data requirements. See guides for full breakdowns.
          items:
            type: string
            description: >-
              The rails required for this counterparty. Rail selection will
              determine data requirements. See guides for full breakdowns.
            enum:
              - EFT
              - SWIFT
        profile:
          $ref: '#/components/schemas/CounterPartyProfileFIATCA'
        account_information:
          $ref: '#/components/schemas/CounterPartyAccountFIATCA'
        intermediary_information:
          $ref: '#/components/schemas/CounterPartyIntermediary'
    CounterPartyFIATCN:
      required:
        - account_information
        - counterparty_type
        - customer_id
        - profile
        - status
        - supported_rails
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        supported_rails:
          type: array
          description: >-
            The rails required for this counterparty. Rail selection will
            determine data requirements. See guides for full breakdowns.
          items:
            type: string
            description: >-
              The rails required for this counterparty. Rail selection will
              determine data requirements. See guides for full breakdowns.
            enum:
              - SWIFT
        profile:
          $ref: '#/components/schemas/CounterPartyProfileFIATCN'
        account_information:
          $ref: '#/components/schemas/CounterPartyAccountFIATCN'
        intermediary_information:
          $ref: '#/components/schemas/CounterPartyIntermediary'
    CounterPartyFIATEU:
      required:
        - account_information
        - counterparty_type
        - customer_id
        - profile
        - status
        - supported_rails
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        supported_rails:
          type: array
          description: >-
            The rails required for this counterparty. Rail selection will
            determine data requirements. See guides for full breakdowns.
          items:
            type: string
            description: >-
              The rails required for this counterparty. Rail selection will
              determine data requirements. See guides for full breakdowns.
            enum:
              - SEPA_CT
              - SWIFT
        profile:
          $ref: '#/components/schemas/CounterPartyProfileFIATEU'
        account_information:
          $ref: '#/components/schemas/CounterPartyAccountFIATEU'
        intermediary_information:
          $ref: '#/components/schemas/CounterPartyIntermediary'
    CounterPartyFIATGB:
      required:
        - account_information
        - counterparty_type
        - customer_id
        - profile
        - status
        - supported_rails
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        supported_rails:
          type: array
          description: >-
            The rails required for this counterparty. Rail selection will
            determine data requirements. See guides for full breakdowns.
          items:
            type: string
            description: >-
              The rails required for this counterparty. Rail selection will
              determine data requirements. See guides for full breakdowns.
            enum:
              - FPS
              - CHAPS
              - SWIFT
        profile:
          $ref: '#/components/schemas/CounterPartyProfileFIATGB'
        account_information:
          $ref: '#/components/schemas/CounterPartyAccountFIATGB'
        intermediary_information:
          $ref: '#/components/schemas/CounterPartyIntermediary'
    CounterPartyFIATHK:
      required:
        - account_information
        - counterparty_type
        - customer_id
        - profile
        - status
        - supported_rails
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        supported_rails:
          type: array
          description: >-
            The rails required for this counterparty. Rail selection will
            determine data requirements. See guides for full breakdowns.
          items:
            type: string
            description: >-
              The rails required for this counterparty. Rail selection will
              determine data requirements. See guides for full breakdowns.
            enum:
              - SWIFT
        profile:
          $ref: '#/components/schemas/CounterPartyProfileFIATHK'
        account_information:
          $ref: '#/components/schemas/CounterPartyAccountFIATHK'
        intermediary_information:
          $ref: '#/components/schemas/CounterPartyIntermediary'
    CounterPartyFIATIBAN:
      required:
        - account_information
        - counterparty_type
        - customer_id
        - profile
        - status
        - supported_rails
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        supported_rails:
          type: array
          description: >-
            The rails required for this counterparty. Rail selection will
            determine data requirements. See guides for full breakdowns.
          items:
            type: string
            description: >-
              The rails required for this counterparty. Rail selection will
              determine data requirements. See guides for full breakdowns.
            enum:
              - SWIFT
        profile:
          $ref: '#/components/schemas/CounterPartyProfileFIATIBAN'
        account_information:
          $ref: '#/components/schemas/CounterPartyAccountFIATIBAN'
        intermediary_information:
          $ref: '#/components/schemas/CounterPartyIntermediary'
    CounterPartyFIATIN:
      required:
        - account_information
        - counterparty_type
        - customer_id
        - profile
        - status
        - supported_rails
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        supported_rails:
          type: array
          description: >-
            The rails required for this counterparty. Rail selection will
            determine data requirements. See guides for full breakdowns.
          items:
            type: string
            description: >-
              The rails required for this counterparty. Rail selection will
              determine data requirements. See guides for full breakdowns.
            enum:
              - IMPS
              - NFT
              - UP
              - SWIFT
        profile:
          $ref: '#/components/schemas/CounterPartyProfileFIATIN'
        account_information:
          $ref: '#/components/schemas/CounterPartyAccountFIATIN'
        intermediary_information:
          $ref: '#/components/schemas/CounterPartyIntermediary'
    CounterPartyFIATJP:
      required:
        - account_information
        - counterparty_type
        - customer_id
        - profile
        - status
        - supported_rails
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        supported_rails:
          type: array
          description: >-
            The rails required for this counterparty. Rail selection will
            determine data requirements. See guides for full breakdowns.
          items:
            type: string
            description: >-
              The rails required for this counterparty. Rail selection will
              determine data requirements. See guides for full breakdowns.
            enum:
              - SWIFT
        profile:
          $ref: '#/components/schemas/CounterPartyProfileFIATJP'
        account_information:
          $ref: '#/components/schemas/CounterPartyAccountFIATJP'
        intermediary_information:
          $ref: '#/components/schemas/CounterPartyIntermediary'
    CounterPartyFIATMY:
      required:
        - account_information
        - counterparty_type
        - customer_id
        - profile
        - status
        - supported_rails
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        supported_rails:
          type: array
          description: >-
            The rails required for this counterparty. Rail selection will
            determine data requirements. See guides for full breakdowns.
          items:
            type: string
            description: >-
              The rails required for this counterparty. Rail selection will
              determine data requirements. See guides for full breakdowns.
            enum:
              - SWIFT
        profile:
          $ref: '#/components/schemas/CounterPartyProfileFIATMY'
        account_information:
          $ref: '#/components/schemas/CounterPartyAccountFIATMY'
        intermediary_information:
          $ref: '#/components/schemas/CounterPartyIntermediary'
    CounterPartyFIATPA:
      required:
        - account_information
        - counterparty_type
        - customer_id
        - profile
        - status
        - supported_rails
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        supported_rails:
          type: array
          description: >-
            The rails required for this counterparty. Rail selection will
            determine data requirements. See guides for full breakdowns.
          items:
            type: string
            description: >-
              The rails required for this counterparty. Rail selection will
              determine data requirements. See guides for full breakdowns.
            enum:
              - SWIFT
        profile:
          $ref: '#/components/schemas/CounterPartyProfileFIATPA'
        account_information:
          $ref: '#/components/schemas/CounterPartyAccountFIATPA'
        intermediary_information:
          $ref: '#/components/schemas/CounterPartyIntermediary'
    CounterPartyFIATSG:
      required:
        - account_information
        - counterparty_type
        - customer_id
        - profile
        - status
        - supported_rails
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        supported_rails:
          type: array
          description: >-
            The rails required for this counterparty. Rail selection will
            determine data requirements. See guides for full breakdowns.
          items:
            type: string
            description: >-
              The rails required for this counterparty. Rail selection will
              determine data requirements. See guides for full breakdowns.
            enum:
              - SWIFT
        profile:
          $ref: '#/components/schemas/CounterPartyProfileFIATSG'
        account_information:
          $ref: '#/components/schemas/CounterPartyAccountFIATSG'
        intermediary_information:
          $ref: '#/components/schemas/CounterPartyIntermediary'
    CounterPartyFIATUS:
      required:
        - account_information
        - counterparty_type
        - customer_id
        - profile
        - status
        - supported_rails
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        supported_rails:
          type: array
          description: >-
            The rails required for this counterparty. Rail selection will
            determine data requirements. See guides for full breakdowns.
          items:
            type: string
            description: >-
              The rails required for this counterparty. Rail selection will
              determine data requirements. See guides for full breakdowns.
            enum:
              - ACH
              - FEDWIRE
              - SWIFT
        profile:
          $ref: '#/components/schemas/CounterPartyProfileFIATUS'
        account_information:
          $ref: '#/components/schemas/CounterPartyAccountFIATUS'
        intermediary_information:
          $ref: '#/components/schemas/CounterPartyIntermediary'
    CounterPartyFIATUSLINKED:
      required:
        - account_information
        - counterparty_type
        - customer_id
        - profile
        - status
        - supported_rails
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the counter party
          readOnly: true
        customer_id:
          type: string
          description: The customer to which this counter party will be registered for use.
        description:
          type: string
          description: 'Description of the counterparty. '
        counterparty_type:
          type: string
          description: >-
            The type of counterparty will determine the available rails for
            sending or receiving funds. See the guides for more detailed
            explanation of counterparty types.
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        status:
          type: string
          description: >+
            Counterparty status determines options available for use on the
            counterparty. 

            * `ACTIVE` - Counterparty is open and available for use for
            withdrawal or deposits

            * `CLOSED` - Counterparty is permanently closed, no further actions
            can be performed on the Counterparty. 

            * `PENDING` - Counterparty is under additional review prior to
            moving to the `OPEN` or `CLOSED` state. No actions can be performed
            on the Counterparty in this state  

            * `FROZEN` - Counterparty has been temporarily locked for all
            actions. 

            * `EDD` -  Counterparty requires enhanced due diligence to be
            performed. The counterparty will operate as if active but may
            transition to `FROZEN` or `CLOSED` post due-diligence. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            counterparty is available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        supported_rails:
          type: array
          description: >-
            The rails required for this counterparty. Rail selection will
            determine data requirements. See guides for full breakdowns.
          items:
            type: string
            description: >-
              The rails required for this counterparty. Rail selection will
              determine data requirements. See guides for full breakdowns.
            default: '["ACH"]'
            enum:
              - ACH
          default:
            - ACH
        profile:
          $ref: '#/components/schemas/CounterPartyProfileFIATUS'
        account_information:
          $ref: '#/components/schemas/CounterPartyAccountFIATUSLINKED'
    CounterPartyIntermediary:
      required:
        - asset_type_id
        - institution_name
        - intermediary_type
      type: object
      properties:
        intermediary_type:
          type: string
          description: Intermediary type. This determines the asset type being sent.
          enum:
            - FIAT_US
            - FIAT_CA
        asset_type_id:
          type: string
          description: Asset type to send to the intermediary.
          readOnly: true
        institution_name:
          type: string
          description: Intermediary Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: >-
        Optional details of the intermediary (correspondent bank) institution
        when sending SWIFT payments. `SWIFT` must be added to the `support_rail`
        list in order to provide an intermediary
      discriminator:
        propertyName: intermediary_type
        mapping:
          FIAT_US: '#/components/schemas/CounterPartyIntermediaryFIATUS'
          FIAT_CA: '#/components/schemas/CounterPartyIntermediaryFIATCA'
          FIAT_EU: '#/components/schemas/CounterPartyIntermediaryFIATEU'
          FIAT_IN: '#/components/schemas/CounterPartyIntermediaryFIATIN'
          FIAT_GB: '#/components/schemas/CounterPartyIntermediaryFIATGB'
          FIAT_BS: '#/components/schemas/CounterPartyIntermediaryFIATBS'
          FIAT_CN: '#/components/schemas/CounterPartyIntermediaryFIATCN'
          FIAT_HK: '#/components/schemas/CounterPartyIntermediaryFIATHK'
          FIAT_SG: '#/components/schemas/CounterPartyIntermediaryFIATSG'
          FIAT_JP: '#/components/schemas/CounterPartyIntermediaryFIATJP'
          FIAT_MY: '#/components/schemas/CounterPartyIntermediaryFIATMY'
          FIAT_PA: '#/components/schemas/CounterPartyIntermediaryFIATPA'
    CounterPartyIntermediaryFIATBS:
      required:
        - asset_type_id
        - institution_name
        - intermediary_type
        - swift_bic
      type: object
      properties:
        intermediary_type:
          type: string
          description: Intermediary type. This determines the asset type being sent.
          enum:
            - FIAT_US
            - FIAT_CA
        asset_type_id:
          type: string
          description: Asset type to send to the intermediary.
          readOnly: true
        institution_name:
          type: string
          description: Intermediary Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
        swift_bic:
          type: string
          description: Intermediary SWIFT/BIC Number
    CounterPartyIntermediaryFIATCA:
      required:
        - asset_type_id
        - institution_name
        - intermediary_type
        - swift_bic
      type: object
      properties:
        intermediary_type:
          type: string
          description: Intermediary type. This determines the asset type being sent.
          enum:
            - FIAT_US
            - FIAT_CA
        asset_type_id:
          type: string
          description: Asset type to send to the intermediary.
          readOnly: true
        institution_name:
          type: string
          description: Intermediary Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
        swift_bic:
          type: string
          description: Intermediary SWIFT/BIC Number
    CounterPartyIntermediaryFIATCN:
      required:
        - asset_type_id
        - institution_name
        - intermediary_type
        - swift_bic
      type: object
      properties:
        intermediary_type:
          type: string
          description: Intermediary type. This determines the asset type being sent.
          enum:
            - FIAT_US
            - FIAT_CA
        asset_type_id:
          type: string
          description: Asset type to send to the intermediary.
          readOnly: true
        institution_name:
          type: string
          description: Intermediary Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
        swift_bic:
          type: string
          description: Intermediary SWIFT/BIC Number
    CounterPartyIntermediaryFIATEU:
      required:
        - asset_type_id
        - institution_name
        - intermediary_type
        - swift_bic
      type: object
      properties:
        intermediary_type:
          type: string
          description: Intermediary type. This determines the asset type being sent.
          enum:
            - FIAT_US
            - FIAT_CA
        asset_type_id:
          type: string
          description: Asset type to send to the intermediary.
          readOnly: true
        institution_name:
          type: string
          description: Intermediary Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
        swift_bic:
          type: string
          description: Intermediary SWIFT/BIC Number
    CounterPartyIntermediaryFIATGB:
      required:
        - asset_type_id
        - institution_name
        - intermediary_type
        - swift_bic
      type: object
      properties:
        intermediary_type:
          type: string
          description: Intermediary type. This determines the asset type being sent.
          enum:
            - FIAT_US
            - FIAT_CA
        asset_type_id:
          type: string
          description: Asset type to send to the intermediary.
          readOnly: true
        institution_name:
          type: string
          description: Intermediary Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
        swift_bic:
          type: string
          description: Intermediary SWIFT/BIC Number
    CounterPartyIntermediaryFIATHK:
      required:
        - asset_type_id
        - institution_name
        - intermediary_type
        - swift_bic
      type: object
      properties:
        intermediary_type:
          type: string
          description: Intermediary type. This determines the asset type being sent.
          enum:
            - FIAT_US
            - FIAT_CA
        asset_type_id:
          type: string
          description: Asset type to send to the intermediary.
          readOnly: true
        institution_name:
          type: string
          description: Intermediary Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
        swift_bic:
          type: string
          description: Intermediary SWIFT/BIC Number
    CounterPartyIntermediaryFIATIN:
      required:
        - asset_type_id
        - institution_name
        - intermediary_type
        - swift_bic
      type: object
      properties:
        intermediary_type:
          type: string
          description: Intermediary type. This determines the asset type being sent.
          enum:
            - FIAT_US
            - FIAT_CA
        asset_type_id:
          type: string
          description: Asset type to send to the intermediary.
          readOnly: true
        institution_name:
          type: string
          description: Intermediary Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
        swift_bic:
          type: string
          description: Intermediary SWIFT/BIC Number
    CounterPartyIntermediaryFIATJP:
      required:
        - asset_type_id
        - institution_name
        - intermediary_type
        - swift_bic
      type: object
      properties:
        intermediary_type:
          type: string
          description: Intermediary type. This determines the asset type being sent.
          enum:
            - FIAT_US
            - FIAT_CA
        asset_type_id:
          type: string
          description: Asset type to send to the intermediary.
          readOnly: true
        institution_name:
          type: string
          description: Intermediary Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
        swift_bic:
          type: string
          description: Intermediary SWIFT/BIC Number
    CounterPartyIntermediaryFIATMY:
      required:
        - asset_type_id
        - institution_name
        - intermediary_type
        - swift_bic
      type: object
      properties:
        intermediary_type:
          type: string
          description: Intermediary type. This determines the asset type being sent.
          enum:
            - FIAT_US
            - FIAT_CA
        asset_type_id:
          type: string
          description: Asset type to send to the intermediary.
          readOnly: true
        institution_name:
          type: string
          description: Intermediary Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
        swift_bic:
          type: string
          description: Intermediary SWIFT/BIC Number
    CounterPartyIntermediaryFIATPA:
      required:
        - asset_type_id
        - institution_name
        - intermediary_type
        - swift_bic
      type: object
      properties:
        intermediary_type:
          type: string
          description: Intermediary type. This determines the asset type being sent.
          enum:
            - FIAT_US
            - FIAT_CA
        asset_type_id:
          type: string
          description: Asset type to send to the intermediary.
          readOnly: true
        institution_name:
          type: string
          description: Intermediary Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
        swift_bic:
          type: string
          description: Intermediary SWIFT/BIC Number
    CounterPartyIntermediaryFIATSG:
      required:
        - asset_type_id
        - institution_name
        - intermediary_type
        - swift_bic
      type: object
      properties:
        intermediary_type:
          type: string
          description: Intermediary type. This determines the asset type being sent.
          enum:
            - FIAT_US
            - FIAT_CA
        asset_type_id:
          type: string
          description: Asset type to send to the intermediary.
          readOnly: true
        institution_name:
          type: string
          description: Intermediary Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
        swift_bic:
          type: string
          description: Intermediary SWIFT/BIC Number
    CounterPartyIntermediaryFIATUS:
      required:
        - asset_type_id
        - institution_name
        - intermediary_type
      type: object
      properties:
        intermediary_type:
          type: string
          description: Intermediary type. This determines the asset type being sent.
          enum:
            - FIAT_US
            - FIAT_CA
        asset_type_id:
          type: string
          description: Asset type to send to the intermediary.
          readOnly: true
        institution_name:
          type: string
          description: Intermediary Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
        swift_bic:
          type: string
          description: >-
            Intermediary SWIFT/BIC Number. Either this or the routing number
            much be provided.
        routing_number:
          type: string
          description: >-
            Intermediary routing number. Either this or the SWIFT BIC must be
            provided.
    CounterPartyProfileCRYPTO:
      required:
        - address
        - name
        - profile_type
      type: object
      properties:
        profile_type:
          type: string
          description: 'The profile type of the counterparty sending/receiving these funds. '
          enum:
            - INDIVIDUAL
            - CORPORATION
        name:
          type: string
          description: >-
            The name of the counterparty who is sending/receiving these funds
            (e.g. Anchorage Digital, Coinbase, John Doe etc)
        email:
          type: string
          description: >-
            The email address of the counterparty who is sending/receiving these
            funds.
        telephone_number:
          type: string
          description: >-
            The Telephone Number in E.164 format of the counterparty who is
            sending/receiving these funds.
        tax_reference_number:
          type: string
          description: >-
            The tax reference number of the counterparty who is
            sending/receiving these funds. (Corporations - EIN, FEIN, TIN, etc.
            / Individuals = SSN, ITIN, SIN, National Insurance Number etc). For
            large value payments, providing this info can significantly
            streamline processing times.
        date_of_birth:
          type: string
          description: >-
            RFC3339 (YYYY-MM-DD) Date of Birth of the counterparty if they are
            an individual.
          format: date
        address:
          $ref: '#/components/schemas/address'
        line_of_business:
          type: string
          description: >-
            Line of Business of the counterparty who is sending/receiving these
            funds (if they are a business)
          enum:
            - ARTS_AND_ANTIQUES
            - AGRICULTURE
            - AUDIT_VIDEO
            - AUTOMOTIVE
            - BANK_CREDIT_UNION
            - BIOTECH_PHARMACEUTICAL
            - BOOKSELLER
            - CONSTRUCTION
            - CASINOS_GAMBLING
            - CLOTHING
            - CONSULTING_PROFESSIONAL_SERVICES
            - CRYPTOCURRENCY
            - ECIGARETTES_TOBACCO
            - ENERGY_CHEMICAL_FUEL
            - ENGINEERING
            - ADULT_ENTERTAINMENT
            - FINANCIAL_AND_CORPORATE_SERVICES
            - FOOD_AND_BEVERAGE
            - FREIGHT_MARINE_SHIPPING_SERVICES
            - GIFTWARE_SEASONAL
            - GOVERNMENT_PUBLIC_SERVICES
            - HIGH_TECH_SOFTWARE_TELECOMS
            - HOSPITALITY
            - HOUSEHOLD_GOOD_FURNITURE
            - HUMAN_RESOURCE_SERVICES
            - INDUSTRIAL_EQUIPMENT
            - INFORMATION_TECHNOLOGY
            - INSURANCE
            - JEWELLERY_OPTICAL
            - LAW
            - MANUFACTURING
            - MARKETING
            - MEDIA_PUBLISHING
            - MEDICAL_HEALTHCARE
            - MEDICAL_TOURISM
            - MINING
            - MONEY_SERVICE_BUSINESS
            - NON_PROFIT_CHARITY
            - ONLINE_RETAIL
            - PAYROLL
            - PENSION
            - PERSONAL_CARE_PRODUCTS
            - PHOTOGRAPHY
            - REAL_ESTATE
            - RECREATIONAL_ACTIVITIES
            - RELIGIOUS_ORGANISATION
            - RETAIL
            - SECURITY
            - SPORTING_RECREATIONAL_PRODUCTS
            - TRANSPORT
            - UNIVERSITY_EDUCATION
            - UTILITIES
            - WASTE_MANAGEMENT
            - WINE_LIQUOR
            - TECHNICAL_SUPPORT
            - OTHER
        relationship_to_customer:
          type: string
          description: Relationship of customer to the counterparty
          enum:
            - SPOUSE
            - EX_SPOUSE
            - CHILDREN
            - PARENT
            - SIBLING
            - RELATIVE
            - SELF
            - FRIEND
            - BUSINESS_PARTNER
            - CUSTOMER
            - EMPLOYEE
            - BRANCH_OFFICE
            - SUBSIDIARY_COMPANY
            - HOLDING_COMPANY
            - SUPPLIER
            - CREDITOR
            - DEBTOR
            - FRANCHISEE
      description: >-
        Details of the counterparty whom is sending in funds. See the API Guides
        for a full documented breakdown of required fields.
    CounterPartyProfileFIATACCNO:
      required:
        - address
        - name
        - profile_type
      type: object
      properties:
        profile_type:
          type: string
          description: 'The profile type of the counterparty sending/receiving these funds. '
          enum:
            - INDIVIDUAL
            - CORPORATION
        name:
          type: string
          description: >-
            Name of the counterparty (individual or business name). Should match
            the name on the destination account if sending funds.
        email:
          type: string
          description: >-
            The email address of the counterparty who is sending/receiving these
            funds.
        telephone_number:
          type: string
          description: >-
            The Telephone Number in E.164 format of the counterparty who is
            sending/receiving these funds.
        tax_reference_number:
          type: string
          description: >-
            The tax reference number of the counterparty who is
            sending/receiving these funds. (Corporations - EIN, FEIN, TIN, etc.
            / Individuals = SSN, ITIN, SIN, National Insurance Number etc). For
            large value payments, providing this info can significantly
            streamline processing times.
        date_of_birth:
          type: string
          description: >-
            RFC3339 (YYYY-MM-DD) Date of Birth of the counterparty if they are
            an individual.
          format: date
        address:
          $ref: '#/components/schemas/address'
        line_of_business:
          type: string
          description: Line of Business of the counterparty (if they are a business)
          enum:
            - ARTS_AND_ANTIQUES
            - AGRICULTURE
            - AUDIT_VIDEO
            - AUTOMOTIVE
            - BANK_CREDIT_UNION
            - BIOTECH_PHARMACEUTICAL
            - BOOKSELLER
            - CONSTRUCTION
            - CASINOS_GAMBLING
            - CLOTHING
            - CONSULTING_PROFESSIONAL_SERVICES
            - CRYPTOCURRENCY
            - ECIGARETTES_TOBACCO
            - ENERGY_CHEMICAL_FUEL
            - ENGINEERING
            - ADULT_ENTERTAINMENT
            - FINANCIAL_AND_CORPORATE_SERVICES
            - FOOD_AND_BEVERAGE
            - FREIGHT_MARINE_SHIPPING_SERVICES
            - GIFTWARE_SEASONAL
            - GOVERNMENT_PUBLIC_SERVICES
            - HIGH_TECH_SOFTWARE_TELECOMS
            - HOSPITALITY
            - HOUSEHOLD_GOOD_FURNITURE
            - HUMAN_RESOURCE_SERVICES
            - INDUSTRIAL_EQUIPMENT
            - INFORMATION_TECHNOLOGY
            - INSURANCE
            - JEWELLERY_OPTICAL
            - LAW
            - MANUFACTURING
            - MARKETING
            - MEDIA_PUBLISHING
            - MEDICAL_HEALTHCARE
            - MEDICAL_TOURISM
            - MINING
            - MONEY_SERVICE_BUSINESS
            - NON_PROFIT_CHARITY
            - ONLINE_RETAIL
            - PAYROLL
            - PENSION
            - PERSONAL_CARE_PRODUCTS
            - PHOTOGRAPHY
            - REAL_ESTATE
            - RECREATIONAL_ACTIVITIES
            - RELIGIOUS_ORGANISATION
            - RETAIL
            - SECURITY
            - SPORTING_RECREATIONAL_PRODUCTS
            - TRANSPORT
            - UNIVERSITY_EDUCATION
            - UTILITIES
            - WASTE_MANAGEMENT
            - WINE_LIQUOR
            - TECHNICAL_SUPPORT
            - OTHER
        relationship_to_customer:
          type: string
          description: Relationship of the customer to the counterparty
          enum:
            - SPOUSE
            - EX_SPOUSE
            - CHILDREN
            - PARENT
            - SIBLING
            - RELATIVE
            - SELF
            - FRIEND
            - BUSINESS_PARTNER
            - CUSTOMER
            - EMPLOYEE
            - BRANCH_OFFICE
            - SUBSIDIARY_COMPANY
            - HOLDING_COMPANY
            - SUPPLIER
            - CREDITOR
            - DEBTOR
            - FRANCHISEE
      description: >-
        Details of the counter party account holder. Required fields are
        determined by the combination of required rails. See the API Guides for
        a full documented breakdown of required fields.
    CounterPartyProfileFIATBS:
      required:
        - address
        - name
        - profile_type
      type: object
      properties:
        profile_type:
          type: string
          description: 'The profile type of the counterparty sending/receiving these funds. '
          enum:
            - INDIVIDUAL
            - CORPORATION
        name:
          type: string
          description: >-
            Name of the counterparty (individual or business name). Should match
            the name on the destination account if sending funds.
        email:
          type: string
          description: >-
            The email address of the counterparty who is sending/receiving these
            funds.
        telephone_number:
          type: string
          description: >-
            The Telephone Number in E.164 format of the counterparty who is
            sending/receiving these funds.
        tax_reference_number:
          type: string
          description: >-
            The tax reference number of the counterparty who is
            sending/receiving these funds. (Corporations - EIN, FEIN, TIN, etc.
            / Individuals = SSN, ITIN, SIN, National Insurance Number etc). For
            large value payments, providing this info can significantly
            streamline processing times.
        date_of_birth:
          type: string
          description: >-
            RFC3339 (YYYY-MM-DD) Date of Birth of the counterparty if they are
            an individual.
          format: date
        address:
          $ref: '#/components/schemas/address'
        line_of_business:
          type: string
          description: Line of Business of the counterparty (if they are a business)
          enum:
            - ARTS_AND_ANTIQUES
            - AGRICULTURE
            - AUDIT_VIDEO
            - AUTOMOTIVE
            - BANK_CREDIT_UNION
            - BIOTECH_PHARMACEUTICAL
            - BOOKSELLER
            - CONSTRUCTION
            - CASINOS_GAMBLING
            - CLOTHING
            - CONSULTING_PROFESSIONAL_SERVICES
            - CRYPTOCURRENCY
            - ECIGARETTES_TOBACCO
            - ENERGY_CHEMICAL_FUEL
            - ENGINEERING
            - ADULT_ENTERTAINMENT
            - FINANCIAL_AND_CORPORATE_SERVICES
            - FOOD_AND_BEVERAGE
            - FREIGHT_MARINE_SHIPPING_SERVICES
            - GIFTWARE_SEASONAL
            - GOVERNMENT_PUBLIC_SERVICES
            - HIGH_TECH_SOFTWARE_TELECOMS
            - HOSPITALITY
            - HOUSEHOLD_GOOD_FURNITURE
            - HUMAN_RESOURCE_SERVICES
            - INDUSTRIAL_EQUIPMENT
            - INFORMATION_TECHNOLOGY
            - INSURANCE
            - JEWELLERY_OPTICAL
            - LAW
            - MANUFACTURING
            - MARKETING
            - MEDIA_PUBLISHING
            - MEDICAL_HEALTHCARE
            - MEDICAL_TOURISM
            - MINING
            - MONEY_SERVICE_BUSINESS
            - NON_PROFIT_CHARITY
            - ONLINE_RETAIL
            - PAYROLL
            - PENSION
            - PERSONAL_CARE_PRODUCTS
            - PHOTOGRAPHY
            - REAL_ESTATE
            - RECREATIONAL_ACTIVITIES
            - RELIGIOUS_ORGANISATION
            - RETAIL
            - SECURITY
            - SPORTING_RECREATIONAL_PRODUCTS
            - TRANSPORT
            - UNIVERSITY_EDUCATION
            - UTILITIES
            - WASTE_MANAGEMENT
            - WINE_LIQUOR
            - TECHNICAL_SUPPORT
            - OTHER
        relationship_to_customer:
          type: string
          description: Relationship of the customer to the counterparty
          enum:
            - SPOUSE
            - EX_SPOUSE
            - CHILDREN
            - PARENT
            - SIBLING
            - RELATIVE
            - SELF
            - FRIEND
            - BUSINESS_PARTNER
            - CUSTOMER
            - EMPLOYEE
            - BRANCH_OFFICE
            - SUBSIDIARY_COMPANY
            - HOLDING_COMPANY
            - SUPPLIER
            - CREDITOR
            - DEBTOR
            - FRANCHISEE
      description: >-
        Details of the counter party account holder. Required fields are
        determined by the combination of required rails. See the API Guides for
        a full documented breakdown of required fields.
    CounterPartyProfileFIATCA:
      required:
        - address
        - name
        - profile_type
      type: object
      properties:
        profile_type:
          type: string
          description: 'The profile type of the counterparty sending/receiving these funds. '
          enum:
            - INDIVIDUAL
            - CORPORATION
        name:
          type: string
          description: >-
            Name of the counterparty (individual or business name). Should match
            the name on the destination account if sending funds.
        email:
          type: string
          description: >-
            The email address of the counterparty who is sending/receiving these
            funds.
        telephone_number:
          type: string
          description: >-
            The Telephone Number in E.164 format of the counterparty who is
            sending/receiving these funds.
        tax_reference_number:
          type: string
          description: >-
            The tax reference number of the counterparty who is
            sending/receiving these funds. (Corporations - EIN, FEIN, TIN, etc.
            / Individuals = SSN, ITIN, SIN, National Insurance Number etc). For
            large value payments, providing this info can significantly
            streamline processing times.
        date_of_birth:
          type: string
          description: >-
            RFC3339 (YYYY-MM-DD) Date of Birth of the counterparty if they are
            an individual.
          format: date
        address:
          $ref: '#/components/schemas/AddressProfileStateRequired'
        line_of_business:
          type: string
          description: Line of Business of the counterparty (if they are a business)
          enum:
            - ARTS_AND_ANTIQUES
            - AGRICULTURE
            - AUDIT_VIDEO
            - AUTOMOTIVE
            - BANK_CREDIT_UNION
            - BIOTECH_PHARMACEUTICAL
            - BOOKSELLER
            - CONSTRUCTION
            - CASINOS_GAMBLING
            - CLOTHING
            - CONSULTING_PROFESSIONAL_SERVICES
            - CRYPTOCURRENCY
            - ECIGARETTES_TOBACCO
            - ENERGY_CHEMICAL_FUEL
            - ENGINEERING
            - ADULT_ENTERTAINMENT
            - FINANCIAL_AND_CORPORATE_SERVICES
            - FOOD_AND_BEVERAGE
            - FREIGHT_MARINE_SHIPPING_SERVICES
            - GIFTWARE_SEASONAL
            - GOVERNMENT_PUBLIC_SERVICES
            - HIGH_TECH_SOFTWARE_TELECOMS
            - HOSPITALITY
            - HOUSEHOLD_GOOD_FURNITURE
            - HUMAN_RESOURCE_SERVICES
            - INDUSTRIAL_EQUIPMENT
            - INFORMATION_TECHNOLOGY
            - INSURANCE
            - JEWELLERY_OPTICAL
            - LAW
            - MANUFACTURING
            - MARKETING
            - MEDIA_PUBLISHING
            - MEDICAL_HEALTHCARE
            - MEDICAL_TOURISM
            - MINING
            - MONEY_SERVICE_BUSINESS
            - NON_PROFIT_CHARITY
            - ONLINE_RETAIL
            - PAYROLL
            - PENSION
            - PERSONAL_CARE_PRODUCTS
            - PHOTOGRAPHY
            - REAL_ESTATE
            - RECREATIONAL_ACTIVITIES
            - RELIGIOUS_ORGANISATION
            - RETAIL
            - SECURITY
            - SPORTING_RECREATIONAL_PRODUCTS
            - TRANSPORT
            - UNIVERSITY_EDUCATION
            - UTILITIES
            - WASTE_MANAGEMENT
            - WINE_LIQUOR
            - TECHNICAL_SUPPORT
            - OTHER
        relationship_to_customer:
          type: string
          description: Relationship of the customer to the counterparty
          enum:
            - SPOUSE
            - EX_SPOUSE
            - CHILDREN
            - PARENT
            - SIBLING
            - RELATIVE
            - SELF
            - FRIEND
            - BUSINESS_PARTNER
            - CUSTOMER
            - EMPLOYEE
            - BRANCH_OFFICE
            - SUBSIDIARY_COMPANY
            - HOLDING_COMPANY
            - SUPPLIER
            - CREDITOR
            - DEBTOR
            - FRANCHISEE
      description: >-
        Details of the counter party account holder. Required fields are
        determined by the combination of required rails. See the API Guides for
        a full documented breakdown of required fields.
    CounterPartyProfileFIATCN:
      required:
        - address
        - name
        - profile_type
      type: object
      properties:
        profile_type:
          type: string
          description: 'The profile type of the counterparty sending/receiving these funds. '
          enum:
            - INDIVIDUAL
            - CORPORATION
        name:
          type: string
          description: >-
            Name of the counterparty (individual or business name). Should match
            the name on the destination account if sending funds.
        email:
          type: string
          description: >-
            The email address of the counterparty who is sending/receiving these
            funds.
        telephone_number:
          type: string
          description: >-
            The Telephone Number in E.164 format of the counterparty who is
            sending/receiving these funds.
        tax_reference_number:
          type: string
          description: >-
            The tax reference number of the counterparty who is
            sending/receiving these funds. (Corporations - EIN, FEIN, TIN, etc.
            / Individuals = SSN, ITIN, SIN, National Insurance Number etc). For
            large value payments, providing this info can significantly
            streamline processing times.
        date_of_birth:
          type: string
          description: >-
            RFC3339 (YYYY-MM-DD) Date of Birth of the counterparty if they are
            an individual.
          format: date
        address:
          $ref: '#/components/schemas/address'
        line_of_business:
          type: string
          description: Line of Business of the counterparty (if they are a business)
          enum:
            - ARTS_AND_ANTIQUES
            - AGRICULTURE
            - AUDIT_VIDEO
            - AUTOMOTIVE
            - BANK_CREDIT_UNION
            - BIOTECH_PHARMACEUTICAL
            - BOOKSELLER
            - CONSTRUCTION
            - CASINOS_GAMBLING
            - CLOTHING
            - CONSULTING_PROFESSIONAL_SERVICES
            - CRYPTOCURRENCY
            - ECIGARETTES_TOBACCO
            - ENERGY_CHEMICAL_FUEL
            - ENGINEERING
            - ADULT_ENTERTAINMENT
            - FINANCIAL_AND_CORPORATE_SERVICES
            - FOOD_AND_BEVERAGE
            - FREIGHT_MARINE_SHIPPING_SERVICES
            - GIFTWARE_SEASONAL
            - GOVERNMENT_PUBLIC_SERVICES
            - HIGH_TECH_SOFTWARE_TELECOMS
            - HOSPITALITY
            - HOUSEHOLD_GOOD_FURNITURE
            - HUMAN_RESOURCE_SERVICES
            - INDUSTRIAL_EQUIPMENT
            - INFORMATION_TECHNOLOGY
            - INSURANCE
            - JEWELLERY_OPTICAL
            - LAW
            - MANUFACTURING
            - MARKETING
            - MEDIA_PUBLISHING
            - MEDICAL_HEALTHCARE
            - MEDICAL_TOURISM
            - MINING
            - MONEY_SERVICE_BUSINESS
            - NON_PROFIT_CHARITY
            - ONLINE_RETAIL
            - PAYROLL
            - PENSION
            - PERSONAL_CARE_PRODUCTS
            - PHOTOGRAPHY
            - REAL_ESTATE
            - RECREATIONAL_ACTIVITIES
            - RELIGIOUS_ORGANISATION
            - RETAIL
            - SECURITY
            - SPORTING_RECREATIONAL_PRODUCTS
            - TRANSPORT
            - UNIVERSITY_EDUCATION
            - UTILITIES
            - WASTE_MANAGEMENT
            - WINE_LIQUOR
            - TECHNICAL_SUPPORT
            - OTHER
        relationship_to_customer:
          type: string
          description: Relationship of the customer to the counterparty
          enum:
            - SPOUSE
            - EX_SPOUSE
            - CHILDREN
            - PARENT
            - SIBLING
            - RELATIVE
            - SELF
            - FRIEND
            - BUSINESS_PARTNER
            - CUSTOMER
            - EMPLOYEE
            - BRANCH_OFFICE
            - SUBSIDIARY_COMPANY
            - HOLDING_COMPANY
            - SUPPLIER
            - CREDITOR
            - DEBTOR
            - FRANCHISEE
      description: >-
        Details of the counter party account holder. Required fields are
        determined by the combination of required rails. See the API Guides for
        a full documented breakdown of required fields.
    CounterPartyProfileFIATEU:
      required:
        - address
        - line_of_business
        - name
        - profile_type
        - relationship_to_customer
      type: object
      properties:
        profile_type:
          type: string
          description: 'The profile type of the counterparty sending/receiving these funds. '
          enum:
            - INDIVIDUAL
            - CORPORATION
        name:
          type: string
          description: >-
            Name of the counterparty (individual or business name). Should match
            the name on the destination account if sending funds.
        email:
          type: string
          description: >-
            The email address of the counterparty who is sending/receiving these
            funds.
        telephone_number:
          type: string
          description: >-
            The Telephone Number in E.164 format of the counterparty who is
            sending/receiving these funds.
        tax_reference_number:
          type: string
          description: >-
            The tax reference number of the counterparty who is
            sending/receiving these funds. (Corporations - EIN, FEIN, TIN, etc.
            / Individuals = SSN, ITIN, SIN, National Insurance Number etc). For
            large value payments, providing this info can significantly
            streamline processing times.
        date_of_birth:
          type: string
          description: >-
            RFC3339 (YYYY-MM-DD) Date of Birth of the counterparty if they are
            an individual.
          format: date
        address:
          $ref: '#/components/schemas/address'
        line_of_business:
          type: string
          description: Line of Business of the counterparty (if they are a business)
          enum:
            - ARTS_AND_ANTIQUES
            - AGRICULTURE
            - AUDIT_VIDEO
            - AUTOMOTIVE
            - BANK_CREDIT_UNION
            - BIOTECH_PHARMACEUTICAL
            - BOOKSELLER
            - CONSTRUCTION
            - CASINOS_GAMBLING
            - CLOTHING
            - CONSULTING_PROFESSIONAL_SERVICES
            - CRYPTOCURRENCY
            - ECIGARETTES_TOBACCO
            - ENERGY_CHEMICAL_FUEL
            - ENGINEERING
            - ADULT_ENTERTAINMENT
            - FINANCIAL_AND_CORPORATE_SERVICES
            - FOOD_AND_BEVERAGE
            - FREIGHT_MARINE_SHIPPING_SERVICES
            - GIFTWARE_SEASONAL
            - GOVERNMENT_PUBLIC_SERVICES
            - HIGH_TECH_SOFTWARE_TELECOMS
            - HOSPITALITY
            - HOUSEHOLD_GOOD_FURNITURE
            - HUMAN_RESOURCE_SERVICES
            - INDUSTRIAL_EQUIPMENT
            - INFORMATION_TECHNOLOGY
            - INSURANCE
            - JEWELLERY_OPTICAL
            - LAW
            - MANUFACTURING
            - MARKETING
            - MEDIA_PUBLISHING
            - MEDICAL_HEALTHCARE
            - MEDICAL_TOURISM
            - MINING
            - MONEY_SERVICE_BUSINESS
            - NON_PROFIT_CHARITY
            - ONLINE_RETAIL
            - PAYROLL
            - PENSION
            - PERSONAL_CARE_PRODUCTS
            - PHOTOGRAPHY
            - REAL_ESTATE
            - RECREATIONAL_ACTIVITIES
            - RELIGIOUS_ORGANISATION
            - RETAIL
            - SECURITY
            - SPORTING_RECREATIONAL_PRODUCTS
            - TRANSPORT
            - UNIVERSITY_EDUCATION
            - UTILITIES
            - WASTE_MANAGEMENT
            - WINE_LIQUOR
            - TECHNICAL_SUPPORT
            - OTHER
        relationship_to_customer:
          type: string
          description: Relationship of the customer to the counterparty
          enum:
            - SPOUSE
            - EX_SPOUSE
            - CHILDREN
            - PARENT
            - SIBLING
            - RELATIVE
            - SELF
            - FRIEND
            - BUSINESS_PARTNER
            - CUSTOMER
            - EMPLOYEE
            - BRANCH_OFFICE
            - SUBSIDIARY_COMPANY
            - HOLDING_COMPANY
            - SUPPLIER
            - CREDITOR
            - DEBTOR
            - FRANCHISEE
      description: >-
        Details of the counter party account holder. Required fields are
        determined by the combination of required rails. See the API Guides for
        a full documented breakdown of required fields.
    CounterPartyProfileFIATGB:
      required:
        - address
        - name
        - profile_type
      type: object
      properties:
        profile_type:
          type: string
          description: 'The profile type of the counterparty sending/receiving these funds. '
          enum:
            - INDIVIDUAL
            - CORPORATION
        name:
          type: string
          description: >-
            Name of the counterparty (individual or business name). Should match
            the name on the destination account if sending funds.
        email:
          type: string
          description: >-
            The email address of the counterparty who is sending/receiving these
            funds.
        telephone_number:
          type: string
          description: >-
            The Telephone Number in E.164 format of the counterparty who is
            sending/receiving these funds.
        tax_reference_number:
          type: string
          description: >-
            The tax reference number of the counterparty who is
            sending/receiving these funds. (Corporations - EIN, FEIN, TIN, etc.
            / Individuals = SSN, ITIN, SIN, National Insurance Number etc). For
            large value payments, providing this info can significantly
            streamline processing times.
        date_of_birth:
          type: string
          description: >-
            RFC3339 (YYYY-MM-DD) Date of Birth of the counterparty if they are
            an individual.
          format: date
        address:
          $ref: '#/components/schemas/AddressProfileStateRequired'
        line_of_business:
          type: string
          description: Line of Business of the counterparty (if they are a business)
          enum:
            - ARTS_AND_ANTIQUES
            - AGRICULTURE
            - AUDIT_VIDEO
            - AUTOMOTIVE
            - BANK_CREDIT_UNION
            - BIOTECH_PHARMACEUTICAL
            - BOOKSELLER
            - CONSTRUCTION
            - CASINOS_GAMBLING
            - CLOTHING
            - CONSULTING_PROFESSIONAL_SERVICES
            - CRYPTOCURRENCY
            - ECIGARETTES_TOBACCO
            - ENERGY_CHEMICAL_FUEL
            - ENGINEERING
            - ADULT_ENTERTAINMENT
            - FINANCIAL_AND_CORPORATE_SERVICES
            - FOOD_AND_BEVERAGE
            - FREIGHT_MARINE_SHIPPING_SERVICES
            - GIFTWARE_SEASONAL
            - GOVERNMENT_PUBLIC_SERVICES
            - HIGH_TECH_SOFTWARE_TELECOMS
            - HOSPITALITY
            - HOUSEHOLD_GOOD_FURNITURE
            - HUMAN_RESOURCE_SERVICES
            - INDUSTRIAL_EQUIPMENT
            - INFORMATION_TECHNOLOGY
            - INSURANCE
            - JEWELLERY_OPTICAL
            - LAW
            - MANUFACTURING
            - MARKETING
            - MEDIA_PUBLISHING
            - MEDICAL_HEALTHCARE
            - MEDICAL_TOURISM
            - MINING
            - MONEY_SERVICE_BUSINESS
            - NON_PROFIT_CHARITY
            - ONLINE_RETAIL
            - PAYROLL
            - PENSION
            - PERSONAL_CARE_PRODUCTS
            - PHOTOGRAPHY
            - REAL_ESTATE
            - RECREATIONAL_ACTIVITIES
            - RELIGIOUS_ORGANISATION
            - RETAIL
            - SECURITY
            - SPORTING_RECREATIONAL_PRODUCTS
            - TRANSPORT
            - UNIVERSITY_EDUCATION
            - UTILITIES
            - WASTE_MANAGEMENT
            - WINE_LIQUOR
            - TECHNICAL_SUPPORT
            - OTHER
        relationship_to_customer:
          type: string
          description: Relationship of the customer to the counterparty
          enum:
            - SPOUSE
            - EX_SPOUSE
            - CHILDREN
            - PARENT
            - SIBLING
            - RELATIVE
            - SELF
            - FRIEND
            - BUSINESS_PARTNER
            - CUSTOMER
            - EMPLOYEE
            - BRANCH_OFFICE
            - SUBSIDIARY_COMPANY
            - HOLDING_COMPANY
            - SUPPLIER
            - CREDITOR
            - DEBTOR
            - FRANCHISEE
      description: >-
        Details of the counter party account holder. Required fields are
        determined by the combination of required rails. See the API Guides for
        a full documented breakdown of required fields.
    CounterPartyProfileFIATHK:
      required:
        - address
        - name
        - profile_type
      type: object
      properties:
        profile_type:
          type: string
          description: 'The profile type of the counterparty sending/receiving these funds. '
          enum:
            - INDIVIDUAL
            - CORPORATION
        name:
          type: string
          description: >-
            Name of the counterparty (individual or business name). Should match
            the name on the destination account if sending funds.
        email:
          type: string
          description: >-
            The email address of the counterparty who is sending/receiving these
            funds.
        telephone_number:
          type: string
          description: >-
            The Telephone Number in E.164 format of the counterparty who is
            sending/receiving these funds.
        tax_reference_number:
          type: string
          description: >-
            The tax reference number of the counterparty who is
            sending/receiving these funds. (Corporations - EIN, FEIN, TIN, etc.
            / Individuals = SSN, ITIN, SIN, National Insurance Number etc). For
            large value payments, providing this info can significantly
            streamline processing times.
        date_of_birth:
          type: string
          description: >-
            RFC3339 (YYYY-MM-DD) Date of Birth of the counterparty if they are
            an individual.
          format: date
        address:
          $ref: '#/components/schemas/address'
        line_of_business:
          type: string
          description: Line of Business of the counterparty (if they are a business)
          enum:
            - ARTS_AND_ANTIQUES
            - AGRICULTURE
            - AUDIT_VIDEO
            - AUTOMOTIVE
            - BANK_CREDIT_UNION
            - BIOTECH_PHARMACEUTICAL
            - BOOKSELLER
            - CONSTRUCTION
            - CASINOS_GAMBLING
            - CLOTHING
            - CONSULTING_PROFESSIONAL_SERVICES
            - CRYPTOCURRENCY
            - ECIGARETTES_TOBACCO
            - ENERGY_CHEMICAL_FUEL
            - ENGINEERING
            - ADULT_ENTERTAINMENT
            - FINANCIAL_AND_CORPORATE_SERVICES
            - FOOD_AND_BEVERAGE
            - FREIGHT_MARINE_SHIPPING_SERVICES
            - GIFTWARE_SEASONAL
            - GOVERNMENT_PUBLIC_SERVICES
            - HIGH_TECH_SOFTWARE_TELECOMS
            - HOSPITALITY
            - HOUSEHOLD_GOOD_FURNITURE
            - HUMAN_RESOURCE_SERVICES
            - INDUSTRIAL_EQUIPMENT
            - INFORMATION_TECHNOLOGY
            - INSURANCE
            - JEWELLERY_OPTICAL
            - LAW
            - MANUFACTURING
            - MARKETING
            - MEDIA_PUBLISHING
            - MEDICAL_HEALTHCARE
            - MEDICAL_TOURISM
            - MINING
            - MONEY_SERVICE_BUSINESS
            - NON_PROFIT_CHARITY
            - ONLINE_RETAIL
            - PAYROLL
            - PENSION
            - PERSONAL_CARE_PRODUCTS
            - PHOTOGRAPHY
            - REAL_ESTATE
            - RECREATIONAL_ACTIVITIES
            - RELIGIOUS_ORGANISATION
            - RETAIL
            - SECURITY
            - SPORTING_RECREATIONAL_PRODUCTS
            - TRANSPORT
            - UNIVERSITY_EDUCATION
            - UTILITIES
            - WASTE_MANAGEMENT
            - WINE_LIQUOR
            - TECHNICAL_SUPPORT
            - OTHER
        relationship_to_customer:
          type: string
          description: Relationship of the customer to the counterparty
          enum:
            - SPOUSE
            - EX_SPOUSE
            - CHILDREN
            - PARENT
            - SIBLING
            - RELATIVE
            - SELF
            - FRIEND
            - BUSINESS_PARTNER
            - CUSTOMER
            - EMPLOYEE
            - BRANCH_OFFICE
            - SUBSIDIARY_COMPANY
            - HOLDING_COMPANY
            - SUPPLIER
            - CREDITOR
            - DEBTOR
            - FRANCHISEE
      description: >-
        Details of the counter party account holder. Required fields are
        determined by the combination of required rails. See the API Guides for
        a full documented breakdown of required fields.
    CounterPartyProfileFIATIBAN:
      required:
        - address
        - line_of_business
        - name
        - profile_type
        - relationship_to_customer
      type: object
      properties:
        profile_type:
          type: string
          description: 'The profile type of the counterparty sending/receiving these funds. '
          enum:
            - INDIVIDUAL
            - CORPORATION
        name:
          type: string
          description: >-
            Name of the counterparty (individual or business name). Should match
            the name on the destination account if sending funds.
        email:
          type: string
          description: >-
            The email address of the counterparty who is sending/receiving these
            funds.
        telephone_number:
          type: string
          description: >-
            The Telephone Number in E.164 format of the counterparty who is
            sending/receiving these funds.
        tax_reference_number:
          type: string
          description: >-
            The tax reference number of the counterparty who is
            sending/receiving these funds. (Corporations - EIN, FEIN, TIN, etc.
            / Individuals = SSN, ITIN, SIN, National Insurance Number etc). For
            large value payments, providing this info can significantly
            streamline processing times.
        date_of_birth:
          type: string
          description: >-
            RFC3339 (YYYY-MM-DD) Date of Birth of the counterparty if they are
            an individual.
          format: date
        address:
          $ref: '#/components/schemas/address'
        line_of_business:
          type: string
          description: Line of Business of the counterparty (if they are a business)
          enum:
            - ARTS_AND_ANTIQUES
            - AGRICULTURE
            - AUDIT_VIDEO
            - AUTOMOTIVE
            - BANK_CREDIT_UNION
            - BIOTECH_PHARMACEUTICAL
            - BOOKSELLER
            - CONSTRUCTION
            - CASINOS_GAMBLING
            - CLOTHING
            - CONSULTING_PROFESSIONAL_SERVICES
            - CRYPTOCURRENCY
            - ECIGARETTES_TOBACCO
            - ENERGY_CHEMICAL_FUEL
            - ENGINEERING
            - ADULT_ENTERTAINMENT
            - FINANCIAL_AND_CORPORATE_SERVICES
            - FOOD_AND_BEVERAGE
            - FREIGHT_MARINE_SHIPPING_SERVICES
            - GIFTWARE_SEASONAL
            - GOVERNMENT_PUBLIC_SERVICES
            - HIGH_TECH_SOFTWARE_TELECOMS
            - HOSPITALITY
            - HOUSEHOLD_GOOD_FURNITURE
            - HUMAN_RESOURCE_SERVICES
            - INDUSTRIAL_EQUIPMENT
            - INFORMATION_TECHNOLOGY
            - INSURANCE
            - JEWELLERY_OPTICAL
            - LAW
            - MANUFACTURING
            - MARKETING
            - MEDIA_PUBLISHING
            - MEDICAL_HEALTHCARE
            - MEDICAL_TOURISM
            - MINING
            - MONEY_SERVICE_BUSINESS
            - NON_PROFIT_CHARITY
            - ONLINE_RETAIL
            - PAYROLL
            - PENSION
            - PERSONAL_CARE_PRODUCTS
            - PHOTOGRAPHY
            - REAL_ESTATE
            - RECREATIONAL_ACTIVITIES
            - RELIGIOUS_ORGANISATION
            - RETAIL
            - SECURITY
            - SPORTING_RECREATIONAL_PRODUCTS
            - TRANSPORT
            - UNIVERSITY_EDUCATION
            - UTILITIES
            - WASTE_MANAGEMENT
            - WINE_LIQUOR
            - TECHNICAL_SUPPORT
            - OTHER
        relationship_to_customer:
          type: string
          description: Relationship of the customer to the counterparty
          enum:
            - SPOUSE
            - EX_SPOUSE
            - CHILDREN
            - PARENT
            - SIBLING
            - RELATIVE
            - SELF
            - FRIEND
            - BUSINESS_PARTNER
            - CUSTOMER
            - EMPLOYEE
            - BRANCH_OFFICE
            - SUBSIDIARY_COMPANY
            - HOLDING_COMPANY
            - SUPPLIER
            - CREDITOR
            - DEBTOR
            - FRANCHISEE
      description: >-
        Details of the counter party account holder. Required fields are
        determined by the combination of required rails. See the API Guides for
        a full documented breakdown of required fields.
    CounterPartyProfileFIATIN:
      required:
        - address
        - line_of_business
        - name
        - profile_type
        - relationship_to_customer
      type: object
      properties:
        profile_type:
          type: string
          description: 'The profile type of the counterparty sending/receiving these funds. '
          enum:
            - INDIVIDUAL
            - CORPORATION
        name:
          type: string
          description: >-
            Name of the counterparty (individual or business name). Should match
            the name on the destination account if sending funds.
        email:
          type: string
          description: >-
            The email address of the counterparty who is sending/receiving these
            funds.
        telephone_number:
          type: string
          description: >-
            The Telephone Number in E.164 format of the counterparty who is
            sending/receiving these funds.
        tax_reference_number:
          type: string
          description: >-
            The tax reference number of the counterparty who is
            sending/receiving these funds. (Corporations - EIN, FEIN, TIN, etc.
            / Individuals = SSN, ITIN, SIN, National Insurance Number etc). For
            large value payments, providing this info can significantly
            streamline processing times.
        date_of_birth:
          type: string
          description: >-
            RFC3339 (YYYY-MM-DD) Date of Birth of the counterparty if they are
            an individual.
          format: date
        address:
          $ref: '#/components/schemas/address'
        line_of_business:
          type: string
          description: Line of Business of the counterparty (if they are a business)
          enum:
            - ARTS_AND_ANTIQUES
            - AGRICULTURE
            - AUDIT_VIDEO
            - AUTOMOTIVE
            - BANK_CREDIT_UNION
            - BIOTECH_PHARMACEUTICAL
            - BOOKSELLER
            - CONSTRUCTION
            - CASINOS_GAMBLING
            - CLOTHING
            - CONSULTING_PROFESSIONAL_SERVICES
            - CRYPTOCURRENCY
            - ECIGARETTES_TOBACCO
            - ENERGY_CHEMICAL_FUEL
            - ENGINEERING
            - ADULT_ENTERTAINMENT
            - FINANCIAL_AND_CORPORATE_SERVICES
            - FOOD_AND_BEVERAGE
            - FREIGHT_MARINE_SHIPPING_SERVICES
            - GIFTWARE_SEASONAL
            - GOVERNMENT_PUBLIC_SERVICES
            - HIGH_TECH_SOFTWARE_TELECOMS
            - HOSPITALITY
            - HOUSEHOLD_GOOD_FURNITURE
            - HUMAN_RESOURCE_SERVICES
            - INDUSTRIAL_EQUIPMENT
            - INFORMATION_TECHNOLOGY
            - INSURANCE
            - JEWELLERY_OPTICAL
            - LAW
            - MANUFACTURING
            - MARKETING
            - MEDIA_PUBLISHING
            - MEDICAL_HEALTHCARE
            - MEDICAL_TOURISM
            - MINING
            - MONEY_SERVICE_BUSINESS
            - NON_PROFIT_CHARITY
            - ONLINE_RETAIL
            - PAYROLL
            - PENSION
            - PERSONAL_CARE_PRODUCTS
            - PHOTOGRAPHY
            - REAL_ESTATE
            - RECREATIONAL_ACTIVITIES
            - RELIGIOUS_ORGANISATION
            - RETAIL
            - SECURITY
            - SPORTING_RECREATIONAL_PRODUCTS
            - TRANSPORT
            - UNIVERSITY_EDUCATION
            - UTILITIES
            - WASTE_MANAGEMENT
            - WINE_LIQUOR
            - TECHNICAL_SUPPORT
            - OTHER
        relationship_to_customer:
          type: string
          description: Relationship of the customer to the counterparty
          enum:
            - SPOUSE
            - EX_SPOUSE
            - CHILDREN
            - PARENT
            - SIBLING
            - RELATIVE
            - SELF
            - FRIEND
            - BUSINESS_PARTNER
            - CUSTOMER
            - EMPLOYEE
            - BRANCH_OFFICE
            - SUBSIDIARY_COMPANY
            - HOLDING_COMPANY
            - SUPPLIER
            - CREDITOR
            - DEBTOR
            - FRANCHISEE
      description: >-
        Details of the counter party account holder. Required fields are
        determined by the combination of required rails. See the API Guides for
        a full documented breakdown of required fields.
    CounterPartyProfileFIATJP:
      required:
        - address
        - name
        - profile_type
      type: object
      properties:
        profile_type:
          type: string
          description: 'The profile type of the counterparty sending/receiving these funds. '
          enum:
            - INDIVIDUAL
            - CORPORATION
        name:
          type: string
          description: >-
            Name of the counterparty (individual or business name). Should match
            the name on the destination account if sending funds.
        email:
          type: string
          description: >-
            The email address of the counterparty who is sending/receiving these
            funds.
        telephone_number:
          type: string
          description: >-
            The Telephone Number in E.164 format of the counterparty who is
            sending/receiving these funds.
        tax_reference_number:
          type: string
          description: >-
            The tax reference number of the counterparty who is
            sending/receiving these funds. (Corporations - EIN, FEIN, TIN, etc.
            / Individuals = SSN, ITIN, SIN, National Insurance Number etc). For
            large value payments, providing this info can significantly
            streamline processing times.
        date_of_birth:
          type: string
          description: >-
            RFC3339 (YYYY-MM-DD) Date of Birth of the counterparty if they are
            an individual.
          format: date
        address:
          $ref: '#/components/schemas/address'
        line_of_business:
          type: string
          description: Line of Business of the counterparty (if they are a business)
          enum:
            - ARTS_AND_ANTIQUES
            - AGRICULTURE
            - AUDIT_VIDEO
            - AUTOMOTIVE
            - BANK_CREDIT_UNION
            - BIOTECH_PHARMACEUTICAL
            - BOOKSELLER
            - CONSTRUCTION
            - CASINOS_GAMBLING
            - CLOTHING
            - CONSULTING_PROFESSIONAL_SERVICES
            - CRYPTOCURRENCY
            - ECIGARETTES_TOBACCO
            - ENERGY_CHEMICAL_FUEL
            - ENGINEERING
            - ADULT_ENTERTAINMENT
            - FINANCIAL_AND_CORPORATE_SERVICES
            - FOOD_AND_BEVERAGE
            - FREIGHT_MARINE_SHIPPING_SERVICES
            - GIFTWARE_SEASONAL
            - GOVERNMENT_PUBLIC_SERVICES
            - HIGH_TECH_SOFTWARE_TELECOMS
            - HOSPITALITY
            - HOUSEHOLD_GOOD_FURNITURE
            - HUMAN_RESOURCE_SERVICES
            - INDUSTRIAL_EQUIPMENT
            - INFORMATION_TECHNOLOGY
            - INSURANCE
            - JEWELLERY_OPTICAL
            - LAW
            - MANUFACTURING
            - MARKETING
            - MEDIA_PUBLISHING
            - MEDICAL_HEALTHCARE
            - MEDICAL_TOURISM
            - MINING
            - MONEY_SERVICE_BUSINESS
            - NON_PROFIT_CHARITY
            - ONLINE_RETAIL
            - PAYROLL
            - PENSION
            - PERSONAL_CARE_PRODUCTS
            - PHOTOGRAPHY
            - REAL_ESTATE
            - RECREATIONAL_ACTIVITIES
            - RELIGIOUS_ORGANISATION
            - RETAIL
            - SECURITY
            - SPORTING_RECREATIONAL_PRODUCTS
            - TRANSPORT
            - UNIVERSITY_EDUCATION
            - UTILITIES
            - WASTE_MANAGEMENT
            - WINE_LIQUOR
            - TECHNICAL_SUPPORT
            - OTHER
        relationship_to_customer:
          type: string
          description: Relationship of the customer to the counterparty
          enum:
            - SPOUSE
            - EX_SPOUSE
            - CHILDREN
            - PARENT
            - SIBLING
            - RELATIVE
            - SELF
            - FRIEND
            - BUSINESS_PARTNER
            - CUSTOMER
            - EMPLOYEE
            - BRANCH_OFFICE
            - SUBSIDIARY_COMPANY
            - HOLDING_COMPANY
            - SUPPLIER
            - CREDITOR
            - DEBTOR
            - FRANCHISEE
      description: >-
        Details of the counter party account holder. Required fields are
        determined by the combination of required rails. See the API Guides for
        a full documented breakdown of required fields.
    CounterPartyProfileFIATMY:
      required:
        - address
        - name
        - profile_type
      type: object
      properties:
        profile_type:
          type: string
          description: 'The profile type of the counterparty sending/receiving these funds. '
          enum:
            - INDIVIDUAL
            - CORPORATION
        name:
          type: string
          description: >-
            Name of the counterparty (individual or business name). Should match
            the name on the destination account if sending funds.
        email:
          type: string
          description: >-
            The email address of the counterparty who is sending/receiving these
            funds.
        telephone_number:
          type: string
          description: >-
            The Telephone Number in E.164 format of the counterparty who is
            sending/receiving these funds.
        tax_reference_number:
          type: string
          description: >-
            The tax reference number of the counterparty who is
            sending/receiving these funds. (Corporations - EIN, FEIN, TIN, etc.
            / Individuals = SSN, ITIN, SIN, National Insurance Number etc). For
            large value payments, providing this info can significantly
            streamline processing times.
        date_of_birth:
          type: string
          description: >-
            RFC3339 (YYYY-MM-DD) Date of Birth of the counterparty if they are
            an individual.
          format: date
        address:
          $ref: '#/components/schemas/address'
        line_of_business:
          type: string
          description: Line of Business of the counterparty (if they are a business)
          enum:
            - ARTS_AND_ANTIQUES
            - AGRICULTURE
            - AUDIT_VIDEO
            - AUTOMOTIVE
            - BANK_CREDIT_UNION
            - BIOTECH_PHARMACEUTICAL
            - BOOKSELLER
            - CONSTRUCTION
            - CASINOS_GAMBLING
            - CLOTHING
            - CONSULTING_PROFESSIONAL_SERVICES
            - CRYPTOCURRENCY
            - ECIGARETTES_TOBACCO
            - ENERGY_CHEMICAL_FUEL
            - ENGINEERING
            - ADULT_ENTERTAINMENT
            - FINANCIAL_AND_CORPORATE_SERVICES
            - FOOD_AND_BEVERAGE
            - FREIGHT_MARINE_SHIPPING_SERVICES
            - GIFTWARE_SEASONAL
            - GOVERNMENT_PUBLIC_SERVICES
            - HIGH_TECH_SOFTWARE_TELECOMS
            - HOSPITALITY
            - HOUSEHOLD_GOOD_FURNITURE
            - HUMAN_RESOURCE_SERVICES
            - INDUSTRIAL_EQUIPMENT
            - INFORMATION_TECHNOLOGY
            - INSURANCE
            - JEWELLERY_OPTICAL
            - LAW
            - MANUFACTURING
            - MARKETING
            - MEDIA_PUBLISHING
            - MEDICAL_HEALTHCARE
            - MEDICAL_TOURISM
            - MINING
            - MONEY_SERVICE_BUSINESS
            - NON_PROFIT_CHARITY
            - ONLINE_RETAIL
            - PAYROLL
            - PENSION
            - PERSONAL_CARE_PRODUCTS
            - PHOTOGRAPHY
            - REAL_ESTATE
            - RECREATIONAL_ACTIVITIES
            - RELIGIOUS_ORGANISATION
            - RETAIL
            - SECURITY
            - SPORTING_RECREATIONAL_PRODUCTS
            - TRANSPORT
            - UNIVERSITY_EDUCATION
            - UTILITIES
            - WASTE_MANAGEMENT
            - WINE_LIQUOR
            - TECHNICAL_SUPPORT
            - OTHER
        relationship_to_customer:
          type: string
          description: Relationship of the customer to the counterparty
          enum:
            - SPOUSE
            - EX_SPOUSE
            - CHILDREN
            - PARENT
            - SIBLING
            - RELATIVE
            - SELF
            - FRIEND
            - BUSINESS_PARTNER
            - CUSTOMER
            - EMPLOYEE
            - BRANCH_OFFICE
            - SUBSIDIARY_COMPANY
            - HOLDING_COMPANY
            - SUPPLIER
            - CREDITOR
            - DEBTOR
            - FRANCHISEE
      description: >-
        Details of the counter party account holder. Required fields are
        determined by the combination of required rails. See the API Guides for
        a full documented breakdown of required fields.
    CounterPartyProfileFIATPA:
      required:
        - address
        - name
        - profile_type
      type: object
      properties:
        profile_type:
          type: string
          description: 'The profile type of the counterparty sending/receiving these funds. '
          enum:
            - INDIVIDUAL
            - CORPORATION
        name:
          type: string
          description: >-
            Name of the counterparty (individual or business name). Should match
            the name on the destination account if sending funds.
        email:
          type: string
          description: >-
            The email address of the counterparty who is sending/receiving these
            funds.
        telephone_number:
          type: string
          description: >-
            The Telephone Number in E.164 format of the counterparty who is
            sending/receiving these funds.
        tax_reference_number:
          type: string
          description: >-
            The tax reference number of the counterparty who is
            sending/receiving these funds. (Corporations - EIN, FEIN, TIN, etc.
            / Individuals = SSN, ITIN, SIN, National Insurance Number etc). For
            large value payments, providing this info can significantly
            streamline processing times.
        date_of_birth:
          type: string
          description: >-
            RFC3339 (YYYY-MM-DD) Date of Birth of the counterparty if they are
            an individual.
          format: date
        address:
          $ref: '#/components/schemas/address'
        line_of_business:
          type: string
          description: Line of Business of the counterparty (if they are a business)
          enum:
            - ARTS_AND_ANTIQUES
            - AGRICULTURE
            - AUDIT_VIDEO
            - AUTOMOTIVE
            - BANK_CREDIT_UNION
            - BIOTECH_PHARMACEUTICAL
            - BOOKSELLER
            - CONSTRUCTION
            - CASINOS_GAMBLING
            - CLOTHING
            - CONSULTING_PROFESSIONAL_SERVICES
            - CRYPTOCURRENCY
            - ECIGARETTES_TOBACCO
            - ENERGY_CHEMICAL_FUEL
            - ENGINEERING
            - ADULT_ENTERTAINMENT
            - FINANCIAL_AND_CORPORATE_SERVICES
            - FOOD_AND_BEVERAGE
            - FREIGHT_MARINE_SHIPPING_SERVICES
            - GIFTWARE_SEASONAL
            - GOVERNMENT_PUBLIC_SERVICES
            - HIGH_TECH_SOFTWARE_TELECOMS
            - HOSPITALITY
            - HOUSEHOLD_GOOD_FURNITURE
            - HUMAN_RESOURCE_SERVICES
            - INDUSTRIAL_EQUIPMENT
            - INFORMATION_TECHNOLOGY
            - INSURANCE
            - JEWELLERY_OPTICAL
            - LAW
            - MANUFACTURING
            - MARKETING
            - MEDIA_PUBLISHING
            - MEDICAL_HEALTHCARE
            - MEDICAL_TOURISM
            - MINING
            - MONEY_SERVICE_BUSINESS
            - NON_PROFIT_CHARITY
            - ONLINE_RETAIL
            - PAYROLL
            - PENSION
            - PERSONAL_CARE_PRODUCTS
            - PHOTOGRAPHY
            - REAL_ESTATE
            - RECREATIONAL_ACTIVITIES
            - RELIGIOUS_ORGANISATION
            - RETAIL
            - SECURITY
            - SPORTING_RECREATIONAL_PRODUCTS
            - TRANSPORT
            - UNIVERSITY_EDUCATION
            - UTILITIES
            - WASTE_MANAGEMENT
            - WINE_LIQUOR
            - TECHNICAL_SUPPORT
            - OTHER
        relationship_to_customer:
          type: string
          description: Relationship of the customer to the counterparty
          enum:
            - SPOUSE
            - EX_SPOUSE
            - CHILDREN
            - PARENT
            - SIBLING
            - RELATIVE
            - SELF
            - FRIEND
            - BUSINESS_PARTNER
            - CUSTOMER
            - EMPLOYEE
            - BRANCH_OFFICE
            - SUBSIDIARY_COMPANY
            - HOLDING_COMPANY
            - SUPPLIER
            - CREDITOR
            - DEBTOR
            - FRANCHISEE
      description: >-
        Details of the counter party account holder. Required fields are
        determined by the combination of required rails. See the API Guides for
        a full documented breakdown of required fields.
    CounterPartyProfileFIATSG:
      required:
        - address
        - name
        - profile_type
      type: object
      properties:
        profile_type:
          type: string
          description: 'The profile type of the counterparty sending/receiving these funds. '
          enum:
            - INDIVIDUAL
            - CORPORATION
        name:
          type: string
          description: >-
            Name of the counterparty (individual or business name). Should match
            the name on the destination account if sending funds.
        email:
          type: string
          description: >-
            The email address of the counterparty who is sending/receiving these
            funds.
        telephone_number:
          type: string
          description: >-
            The Telephone Number in E.164 format of the counterparty who is
            sending/receiving these funds.
        tax_reference_number:
          type: string
          description: >-
            The tax reference number of the counterparty who is
            sending/receiving these funds. (Corporations - EIN, FEIN, TIN, etc.
            / Individuals = SSN, ITIN, SIN, National Insurance Number etc). For
            large value payments, providing this info can significantly
            streamline processing times.
        date_of_birth:
          type: string
          description: >-
            RFC3339 (YYYY-MM-DD) Date of Birth of the counterparty if they are
            an individual.
          format: date
        address:
          $ref: '#/components/schemas/address'
        line_of_business:
          type: string
          description: Line of Business of the counterparty (if they are a business)
          enum:
            - ARTS_AND_ANTIQUES
            - AGRICULTURE
            - AUDIT_VIDEO
            - AUTOMOTIVE
            - BANK_CREDIT_UNION
            - BIOTECH_PHARMACEUTICAL
            - BOOKSELLER
            - CONSTRUCTION
            - CASINOS_GAMBLING
            - CLOTHING
            - CONSULTING_PROFESSIONAL_SERVICES
            - CRYPTOCURRENCY
            - ECIGARETTES_TOBACCO
            - ENERGY_CHEMICAL_FUEL
            - ENGINEERING
            - ADULT_ENTERTAINMENT
            - FINANCIAL_AND_CORPORATE_SERVICES
            - FOOD_AND_BEVERAGE
            - FREIGHT_MARINE_SHIPPING_SERVICES
            - GIFTWARE_SEASONAL
            - GOVERNMENT_PUBLIC_SERVICES
            - HIGH_TECH_SOFTWARE_TELECOMS
            - HOSPITALITY
            - HOUSEHOLD_GOOD_FURNITURE
            - HUMAN_RESOURCE_SERVICES
            - INDUSTRIAL_EQUIPMENT
            - INFORMATION_TECHNOLOGY
            - INSURANCE
            - JEWELLERY_OPTICAL
            - LAW
            - MANUFACTURING
            - MARKETING
            - MEDIA_PUBLISHING
            - MEDICAL_HEALTHCARE
            - MEDICAL_TOURISM
            - MINING
            - MONEY_SERVICE_BUSINESS
            - NON_PROFIT_CHARITY
            - ONLINE_RETAIL
            - PAYROLL
            - PENSION
            - PERSONAL_CARE_PRODUCTS
            - PHOTOGRAPHY
            - REAL_ESTATE
            - RECREATIONAL_ACTIVITIES
            - RELIGIOUS_ORGANISATION
            - RETAIL
            - SECURITY
            - SPORTING_RECREATIONAL_PRODUCTS
            - TRANSPORT
            - UNIVERSITY_EDUCATION
            - UTILITIES
            - WASTE_MANAGEMENT
            - WINE_LIQUOR
            - TECHNICAL_SUPPORT
            - OTHER
        relationship_to_customer:
          type: string
          description: Relationship of the customer to the counterparty
          enum:
            - SPOUSE
            - EX_SPOUSE
            - CHILDREN
            - PARENT
            - SIBLING
            - RELATIVE
            - SELF
            - FRIEND
            - BUSINESS_PARTNER
            - CUSTOMER
            - EMPLOYEE
            - BRANCH_OFFICE
            - SUBSIDIARY_COMPANY
            - HOLDING_COMPANY
            - SUPPLIER
            - CREDITOR
            - DEBTOR
            - FRANCHISEE
      description: >-
        Details of the counter party account holder. Required fields are
        determined by the combination of required rails. See the API Guides for
        a full documented breakdown of required fields.
    CounterPartyProfileFIATUS:
      required:
        - address
        - name
        - profile_type
      type: object
      properties:
        profile_type:
          type: string
          description: 'The profile type of the counterparty sending/receiving these funds. '
          enum:
            - INDIVIDUAL
            - CORPORATION
        name:
          type: string
          description: >-
            Name of the counterparty (individual or business name). Should match
            the name on the destination account if sending funds.
        email:
          type: string
          description: >-
            The email address of the counterparty who is sending/receiving these
            funds.
        telephone_number:
          type: string
          description: >-
            The Telephone Number in E.164 format of the counterparty who is
            sending/receiving these funds.
        tax_reference_number:
          type: string
          description: >-
            The tax reference number of the counterparty who is
            sending/receiving these funds. (Corporations - EIN, FEIN, TIN, etc.
            / Individuals = SSN, ITIN, SIN, National Insurance Number etc). For
            large value payments, providing this info can significantly
            streamline processing times.
        date_of_birth:
          type: string
          description: >-
            RFC3339 (YYYY-MM-DD) Date of Birth of the counterparty if they are
            an individual.
          format: date
        address:
          $ref: '#/components/schemas/AddressProfileStateRequired'
        line_of_business:
          type: string
          description: Line of Business of the counterparty (if they are a business)
          enum:
            - ARTS_AND_ANTIQUES
            - AGRICULTURE
            - AUDIT_VIDEO
            - AUTOMOTIVE
            - BANK_CREDIT_UNION
            - BIOTECH_PHARMACEUTICAL
            - BOOKSELLER
            - CONSTRUCTION
            - CASINOS_GAMBLING
            - CLOTHING
            - CONSULTING_PROFESSIONAL_SERVICES
            - CRYPTOCURRENCY
            - ECIGARETTES_TOBACCO
            - ENERGY_CHEMICAL_FUEL
            - ENGINEERING
            - ADULT_ENTERTAINMENT
            - FINANCIAL_AND_CORPORATE_SERVICES
            - FOOD_AND_BEVERAGE
            - FREIGHT_MARINE_SHIPPING_SERVICES
            - GIFTWARE_SEASONAL
            - GOVERNMENT_PUBLIC_SERVICES
            - HIGH_TECH_SOFTWARE_TELECOMS
            - HOSPITALITY
            - HOUSEHOLD_GOOD_FURNITURE
            - HUMAN_RESOURCE_SERVICES
            - INDUSTRIAL_EQUIPMENT
            - INFORMATION_TECHNOLOGY
            - INSURANCE
            - JEWELLERY_OPTICAL
            - LAW
            - MANUFACTURING
            - MARKETING
            - MEDIA_PUBLISHING
            - MEDICAL_HEALTHCARE
            - MEDICAL_TOURISM
            - MINING
            - MONEY_SERVICE_BUSINESS
            - NON_PROFIT_CHARITY
            - ONLINE_RETAIL
            - PAYROLL
            - PENSION
            - PERSONAL_CARE_PRODUCTS
            - PHOTOGRAPHY
            - REAL_ESTATE
            - RECREATIONAL_ACTIVITIES
            - RELIGIOUS_ORGANISATION
            - RETAIL
            - SECURITY
            - SPORTING_RECREATIONAL_PRODUCTS
            - TRANSPORT
            - UNIVERSITY_EDUCATION
            - UTILITIES
            - WASTE_MANAGEMENT
            - WINE_LIQUOR
            - TECHNICAL_SUPPORT
            - OTHER
        relationship_to_customer:
          type: string
          description: Relationship of the customer to the counterparty
          enum:
            - SPOUSE
            - EX_SPOUSE
            - CHILDREN
            - PARENT
            - SIBLING
            - RELATIVE
            - SELF
            - FRIEND
            - BUSINESS_PARTNER
            - CUSTOMER
            - EMPLOYEE
            - BRANCH_OFFICE
            - SUBSIDIARY_COMPANY
            - HOLDING_COMPANY
            - SUPPLIER
            - CREDITOR
            - DEBTOR
            - FRANCHISEE
      description: >-
        Details of the counter party account holder. Required fields are
        determined by the combination of required rails. See the API Guides for
        a full documented breakdown of required fields.
    address:
      required:
        - country_code
      type: object
      properties:
        unit_number:
          type: string
          description: Unit Number
        address_line1:
          type: string
          description: Address Line 1
        address_line2:
          type: string
          description: Address Line 2
        address_line3:
          type: string
          description: Address Line 3
        city:
          type: string
          description: City
        state:
          type: string
          description: >-
            State / Province (2 Digit subdivision component of the ISO 3166-2
            code, which consists of the last two characters.
            https://en.wikipedia.org/wiki/ISO_3166-2
        postal_code:
          type: string
          description: Postal / Zip Code
        country_code:
          type: string
          description: >-
            Country Code (2 Digit ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
      description: The address of the counter party who is sending/receiving these funds.
    CounterPartyLinkingDetails:
      required:
        - linking_provider
      type: object
      properties:
        linking_provider:
          type: string
          description: The provider for which linking instructions are required.
          enum:
            - MX
            - PLAID
      discriminator:
        propertyName: linking_provider
        mapping:
          MX: '#/components/schemas/CounterPartyLinkingDetailsMX'
    CounterPartyLinkingDetailsMX:
      required:
        - is_mobile_webview
        - linking_provider
        - mx_widget_url
        - ui_message_webview_url_scheme
      type: object
      properties:
        linking_provider:
          type: string
          description: The provider for which linking instructions are required.
          enum:
            - MX
            - PLAID
        is_mobile_webview:
          type: boolean
          description: >-
            Renders the widget in a mobile WebView. Executes URL updates in
            place of the JavaScript event postMessages.
        ui_message_webview_url_scheme:
          type: string
          description: Used as a redirect destination at the end of OAuth,
        mx_widget_url:
          type: string
          description: >-
            Single use MX widget URLs for use in the front end. You must fetch a
            new widget URL each time you load the widget.
          readOnly: true
    CounterPartyLinkingConnect:
      required:
        - linking_provider
      type: object
      properties:
        linking_provider:
          type: string
          description: The provider for which linking instructions are required.
          enum:
            - MX
            - PLAID
      discriminator:
        propertyName: linking_provider
        mapping:
          MX: '#/components/schemas/CounterPartyLinkingConnectMX'
          PLAID: '#/components/schemas/CounterPartyLinkingConnectPlaid'
    CounterPartyLinkingConnectMX:
      required:
        - account_link_id
        - linking_provider
      type: object
      properties:
        linking_provider:
          type: string
          description: The provider for which linking instructions are required.
          enum:
            - MX
            - PLAID
        account_link_id:
          type: string
          description: >-
            Establish a connections to an account taken from the
            `/link/accounts` call
    CounterPartyLinkingConnectPlaid:
      required:
        - linking_provider
        - processor_token
      type: object
      properties:
        linking_provider:
          type: string
          description: The provider for which linking instructions are required.
          enum:
            - MX
            - PLAID
        processor_token:
          type: string
          description: Your Plaid processor token for this account
    CounterPartyLinkingAccounts:
      required:
        - linking_provider
      type: object
      properties:
        linking_provider:
          type: string
          description: Which provider was used when generating linking instructions
          enum:
            - MX
            - PLAID
      discriminator:
        propertyName: linking_provider
        mapping:
          MX: '#/components/schemas/CounterPartyLinkingAccountsMX'
    CounterPartyLinkingAccountsMX:
      required:
        - available_accounts
        - linking_provider
        - member_guid
      type: object
      properties:
        linking_provider:
          type: string
          description: Which provider was used when generating linking instructions
          enum:
            - MX
            - PLAID
        member_guid:
          type: string
          description: >-
            The `member_guid` from the `mx/connect/memberConnected` event
            generated in the UI by the mx widget
        available_accounts:
          type: array
          description: >-
            The list of accounts that are available for linking. Use the connect
            operation to connect the desired account from this list with the
            counterparty
          readOnly: true
          items:
            $ref: '#/components/schemas/CounterPartyLinkingAccountsMXAbbrev'
    CounterPartyLinkingAccountsMXAbbrev:
      required:
        - account_link_id
        - account_name
        - account_number
      type: object
      properties:
        account_link_id:
          type: string
          description: Unique ID for this account required when finalising the connection
        account_name:
          type: string
          description: Account name
        account_number:
          type: string
          description: Abbreviated account number (e.g. last 4 characters)
      description: >-
        The list of accounts that are available for linking. Use the connect
        operation to connect the desired account from this list with the
        counterparty
      readOnly: true
    ApplicationBase:
      required:
        - id
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the application
          readOnly: true
    ResponseApplicationBase:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ApplicationBase'
    AccountOpen:
      required:
        - account_id
        - asset_type_id
        - product_id
      type: object
      properties:
        account_id:
          type: string
          description: >-
            The identifier you wish to use to uniquely identify this account.
            The account id follows the [External
            Identifier](https://docs.layer2financial.com/guides/externalidentifiers/)
            pattern. 
        product_id:
          type: string
          description: >
            Select the type of account being opened. You can customise and/or
            create new product offerings by visiting the [Management
            Interface](https://management.layer2financial.com)


            Pre configured products that are available for use are 

            - `DEPOSIT_BASIC`
        asset_type_id:
          type: string
          description: >
            Select the asset type of the account being opened. Asset type
            selection is not open ended, it must be configured per product via
            the [Management Interface](https://management.layer2financial.com). 


            Asset type IDs follow a simple structure as follows:
            `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset type to
            test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
      description: Details of the account to open for the customer
    ApplicationCorporation:
      required:
        - account_to_open
        - application_type
        - customer_details
        - customer_id
        - id
        - information_attested
        - status
        - terms_and_conditions_accepted
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the application
          readOnly: true
        status:
          type: string
          description: Status of the application
          readOnly: true
          enum:
            - INCOMPLETE
            - READY_FOR_SUBMISSION
            - SUBMITTED
            - PROCESSING
            - CHANGES_REQUESTED
            - REJECTED
            - APPROVED
        application_type:
          type: string
          description: Type of Application (Individual or CorporationApplication)
          enum:
            - INDIVIDUAL
            - CORPORATION
        account_to_open:
          $ref: '#/components/schemas/AccountOpen'
        terms_and_conditions_accepted:
          type: boolean
          description: >-
            Set to true when the end customer accepts all terms and conditions
            for use of the platform. An application cannot be submitted until
            accepted.
        information_attested:
          type: boolean
          description: >-
            Setting to true means that the Customer (or the Ultimate Beneficial
            Owner, CEO, or Control Person for Corporate Customers) attests that
            all of the information provided on the application is true,
            accurate, and up to date at the time of submission. Rail Subscribers
            as defined in the Rail Platform Agreement, may not attest on behalf
            of the Customer.
          default: false
        customer_id:
          type: string
          description: >-
            The identifier you wish to use to uniquely identify this customer
            (applies to both individual and corporate customers). The customer
            ID follows the [External
            Identifier](https://docs.rail.io/guides/externalidentifiers/)
            pattern. 
        customer_details:
          $ref: '#/components/schemas/CorporationApplication'
    ApplicationIndividual:
      required:
        - account_to_open
        - application_type
        - customer_details
        - customer_id
        - id
        - information_attested
        - status
        - terms_and_conditions_accepted
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the application
          readOnly: true
        status:
          type: string
          description: Status of the application
          readOnly: true
          enum:
            - INCOMPLETE
            - READY_FOR_SUBMISSION
            - SUBMITTED
            - PROCESSING
            - CHANGES_REQUESTED
            - REJECTED
            - APPROVED
        application_type:
          type: string
          description: Type of Application (Individual or CorporationApplication)
          enum:
            - INDIVIDUAL
            - CORPORATION
        account_to_open:
          $ref: '#/components/schemas/AccountOpen'
        terms_and_conditions_accepted:
          type: boolean
          description: >-
            Set to true when the end customer accepts all terms and conditions
            for use of the platform. An application cannot be submitted until
            accepted.
        information_attested:
          type: boolean
          description: >-
            Setting to true means that the Customer (or the Ultimate Beneficial
            Owner, CEO, or Control Person for Corporate Customers) attests that
            all of the information provided on the application is true,
            accurate, and up to date at the time of submission. Rail Subscribers
            as defined in the Rail Platform Agreement, may not attest on behalf
            of the Customer.
          default: false
        customer_id:
          type: string
          description: >-
            The identifier you wish to use to uniquely identify this customer
            (applies to both individual and corporate customers). The customer
            ID follows the [External
            Identifier](https://docs.rail.io/guides/externalidentifiers/)
            pattern. 
        customer_details:
          $ref: '#/components/schemas/IndividualApplication'
    CorporationApplication:
      required:
        - registered_name
      type: object
      properties:
        registered_name:
          type: string
          description: Corporate entity registered (legal) name
        trading_name:
          type: string
          description: Trading/'Doing Business As' name (if different to registered name)
        registered_number:
          type: string
          description: >-
            Government registered number of the corporate entity (e.g. what is
            defined on the Articles of Incorporation)
        registered_number_country:
          type: string
          description: >-
            Two-letter country code indicating where the corporation is legally
            registered or incorporated. Related to registered_number field (2
            Digit ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
        corporate_tax_reference_number:
          type: string
          description: >-
            Government registered tax reference number. In many jurisdictions
            this is different to the `register_number`
        corporate_tax_reference_number_country:
          type: string
          description: >-
            Two-letter country code of the country where the corporation is
            registered for tax purposes. Related to the
            corporate_tax_reference_number field (2 Digit ISO31661-Alpha2 Format
            - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
        registered_address:
          $ref: '#/components/schemas/registered_address'
        physical_address:
          $ref: '#/components/schemas/physical_address'
        telephone_number:
          type: string
          description: Telephone Number in E.164 format
        website_address:
          type: string
          description: Website URL
        ip_address:
          type: string
          description: IP address from which the customer initiated the application request
        state_of_incorporation:
          type: string
          description: State / Province / Riding of Incorporation (2 digit code)
        country_of_incorporation:
          type: string
          description: >-
            Country of incorporation (2 Digit ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
        corporate_entity_type:
          type: string
          description: Type of corporate entity
          enum:
            - C_CORP_PRIVATE
            - C_CORP_PUBLIC
            - HNWI
            - LLC
            - LLP
            - LP
            - S_CORP
            - SOLE_PROP
            - TRUST
            - NON_PROFIT
            - OTHER
        corporate_entity_type_description:
          type: string
          description: Description of legal structure where entity type is `OTHER`
        email_address:
          type: string
          description: Business Email Address (for example support@acme.inc)
        established_on:
          type: string
          description: Date the business was established following RFC3339 (YYYY-MM-DD)
        naics:
          type: string
          description: NAICS Code
        naics_description:
          type: string
          description: NAICS Description
        individuals:
          type: array
          description: Beneficial Owners and Control Persons Associated to the corporation
          readOnly: true
          items:
            $ref: '#/components/schemas/Individual'
        investment_profile:
          $ref: '#/components/schemas/ProfileCorporateInvesting'
        kyc_profile:
          $ref: '#/components/schemas/ProfileCorporateKYC'
      description: Details of the corporation
    Individual:
      required:
        - first_name
        - id
        - individual_type
        - last_name
      type: object
      properties:
        id:
          type: string
          description: Unique ID of the Individual
          readOnly: true
        individual_type:
          type: array
          description: Type of individual in the corporation
          items:
            type: string
            description: Type of individual in the corporation
            enum:
              - OFFICER
              - BENEFICIAL_OWNER
              - CONTROL_PERSON
              - AUTHORIZED_PERSON
        first_name:
          type: string
          description: First name
        middle_name:
          type: string
          description: Middle Name(s) (if present)
        last_name:
          type: string
          description: Last name
        email_address:
          type: string
          description: Email Address
        mailing_address:
          $ref: '#/components/schemas/mailing_address'
        telephone_number:
          type: string
          description: Telephone Number in E.164 format
        tax_reference_number:
          type: string
          description: >-
            Tax reference number of the country (SSN, ITIN, SIN, National
            Insurance Number etc)
        tax_reference_number_country:
          type: string
          description: >-
            Registered tax reference number country (2 Digit ISO31661-Alpha2
            Format - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
        passport_number:
          type: string
          description: Passport Number
        nationality:
          type: string
          description: >-
            Nationality (2 Digit ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
        citizenship:
          type: array
          description: >-
            Citizenship (2 Digit ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
          items:
            type: string
            description: >-
              Citizenship (2 Digit ISO31661-Alpha2 Format -
              https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
        date_of_birth:
          type: string
          description: 'RFC3339 (YYYY-MM-DD) Date of Birth '
          format: date
        percentage_ownership:
          type: integer
          description: >-
            (Only where type is BENEFICIAL_OWNER) Percentage ownership of the
            corporation (0 to 100)
          format: int32
        title:
          type: string
          description: >-
            Example values CEO, COO, CFO, President,
            BenefitsAdministrationOfficer, CIO, VP, AVP, Treasurer, Secretary,
            Controller, Manager, Partner or Member.
        us_residency_status:
          type: string
          description: US Residency Status
          enum:
            - US_CITIZEN
            - RESIDENT_ALIEN
            - NON_RESIDENT_ALIEN
      description: Beneficial Owners and Control Persons Associated to the corporation
      readOnly: true
    IndividualApplication:
      required:
        - first_name
        - last_name
      type: object
      properties:
        first_name:
          type: string
          description: First name
        middle_name:
          type: string
          description: Middle Name(s) (if present)
        last_name:
          type: string
          description: Last name
        email_address:
          type: string
          description: Email Address
        mailing_address:
          $ref: '#/components/schemas/mailing_address'
        telephone_number:
          type: string
          description: Telephone Number in E.164 format
        tax_reference_number:
          type: string
          description: >-
            Tax reference number of the country (SSN, ITIN, SIN, National
            Insurance Number etc)
        passport_number:
          type: string
          description: Passport Number
        nationality:
          type: string
          description: >-
            Nationality (2 Digit ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
        citizenship:
          type: array
          description: >-
            Citizenship (2 Digit ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
          items:
            type: string
            description: >-
              Citizenship (2 Digit ISO31661-Alpha2 Format -
              https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
        date_of_birth:
          type: string
          description: 'RFC3339 (YYYY-MM-DD) Date of Birth '
          format: date
        ip_address:
          type: string
          description: IP address from which customer initiated the application request
        tax_reference_number_country:
          type: string
          description: >-
            Registered tax reference number (2 Digit ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
        us_residency_status:
          type: string
          description: US Residency Status
          enum:
            - US_CITIZEN
            - RESIDENT_ALIEN
            - NON_RESIDENT_ALIEN
        employment_status:
          type: string
          description: Employment Status
          enum:
            - EMPLOYEE
            - SELF_EMPLOYED
            - RETIRED
            - UNEMPLOYED
            - OTHER
        employment_description:
          type: string
          description: Employment (job) description.
        employer_name:
          type: string
          description: Employer name
        occupation:
          type: string
          description: Occupation
        investment_profile:
          $ref: '#/components/schemas/ProfileIndividualInvesting'
        kyc_profile:
          $ref: '#/components/schemas/ProfileIndividualKYC'
      description: Details of the applying individual
    ProfileCorporateInvesting:
      type: object
      properties:
        primary_source_of_funds:
          type: string
          enum:
            - EMPLOYMENT
            - SAVINGS
            - WINNINGS
            - MARITAL
            - REAL_ESTATE
            - TRUST
            - INVESTMENT
            - OTHER
            - COMPANY
            - COMPANY_CAPITAL
            - LOAN
            - PRIVATE_CAPITAL
            - GRANT
        total_investable_assets:
          type: string
          enum:
            - UPTO_10K
            - TEN_TO_100K
            - ONEHUNDREDK_TO_1M
            - ONE_TO_10M
            - TEN_TO_50M
            - FIFTY_TO_250M
            - MORE_THAN_250M
        total_assets:
          type: string
          enum:
            - UPTO_10K
            - TEN_TO_100K
            - ONEHUNDREDK_TO_1M
            - ONE_TO_10M
            - TEN_TO_50M
            - FIFTY_TO_250M
            - MORE_THAN_250M
        asset_allocation_to_crypto:
          type: string
          enum:
            - UPTO_10K
            - TEN_TO_100K
            - ONEHUNDREDK_TO_1M
            - ONE_TO_10M
            - TEN_TO_50M
            - FIFTY_TO_250M
            - MORE_THAN_250M
        investment_experience_crypto:
          type: string
          enum:
            - LITTLE
            - MODERATE
            - SIGNIFICANT
        investment_strategy_crypto:
          type: string
          enum:
            - LOW_RISK
            - MEDIUM_RISK
            - HIGH_RISK
            - OTHER
        initial_deposit_source:
          type: string
          enum:
            - DEPOSIT
            - WIRE
        initial_deposit_source_crypto_details:
          type: string
        initial_deposit_source_fiat_details:
          type: string
        ongoing_deposit_source:
          type: string
          enum:
            - DEPOSIT
            - WIRE
        frequency_of_crypto_transactions:
          type: string
          enum:
            - DAILY
            - WEEKLY
            - BIWEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
        crypto_investment_plans:
          type: string
          enum:
            - CUSTODY
            - STAKING
            - TRADING
            - LENDING
            - BORROWING
        investment_proceeds_use:
          type: string
        expected_crypto_assets:
          type: string
        perform_transfers_with_unhosted_wallets:
          type: boolean
        known_unhosted_wallet_addresses:
          type: string
        trades_per_month:
          type: string
          enum:
            - UPTO_20
            - TWENTYONE_TO_30
            - THIRTYONE_TO_100
            - ONEHUNDREDANDONE_TO_200
            - TWOHUNDREDANDONE_TO_400
            - MORE_THAN_400
        usd_value_of_crypto:
          type: string
          enum:
            - UPTO_10K
            - TEN_TO_100K
            - ONEHUNDREDK_TO_1M
            - ONE_TO_10M
            - TEN_TO_50M
            - FIFTY_TO_250M
            - MORE_THAN_250M
        usd_value_of_fiat:
          type: string
          enum:
            - UPTO_10K
            - TEN_TO_100K
            - ONEHUNDREDK_TO_1M
            - ONE_TO_10M
            - TEN_TO_50M
            - FIFTY_TO_250M
            - MORE_THAN_250M
        frequency_of_transactions:
          type: string
          enum:
            - DAILY
            - WEEKLY
            - BIWEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
        monthly_crypto_investment_deposit:
          type: string
          enum:
            - UPTO_1K
            - ONE_TO_100K
            - ONEHUNDREDK_TO_1M
            - MILLION_TO_5M
            - MORE_THAN_5M
        monthly_investment_deposit:
          type: string
          enum:
            - UPTO_1K
            - ONE_TO_100K
            - ONEHUNDREDK_TO_1M
            - MILLION_TO_5M
            - MORE_THAN_5M
        monthly_crypto_deposits:
          type: string
          enum:
            - UPTO_5
            - FIVE_TO_10
            - TEN_TO_25
            - MORE_THAN_25
        monthly_deposits:
          type: string
          enum:
            - UPTO_5
            - FIVE_TO_10
            - TEN_TO_25
            - MORE_THAN_25
        monthly_crypto_investment_withdrawal:
          type: string
          enum:
            - UPTO_1K
            - ONE_TO_100K
            - ONEHUNDREDK_TO_1M
            - MILLION_TO_5M
            - MORE_THAN_5M
        monthly_investment_withdrawal:
          type: string
          enum:
            - UPTO_1K
            - ONE_TO_100K
            - ONEHUNDREDK_TO_1M
            - MILLION_TO_5M
            - MORE_THAN_5M
        monthly_crypto_withdrawals:
          type: string
          enum:
            - UPTO_5
            - FIVE_TO_10
            - TEN_TO_25
            - MORE_THAN_25
        monthly_withdrawals:
          type: string
          enum:
            - UPTO_5
            - FIVE_TO_10
            - TEN_TO_25
            - MORE_THAN_25
        trade_internationally:
          type: boolean
        trade_jurisdictions:
          type: array
          description: >-
            To which jurisdictions will the company trade with (2 Digit
            ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
          items:
            type: string
            description: >-
              To which jurisdictions will the company trade with (2 Digit
              ISO31661-Alpha2 Format -
              https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
      description: Investment Profile of the corporation
    ProfileCorporateKYC:
      type: object
      properties:
        primary_business:
          type: string
          enum:
            - ACCOUNTANCY
            - ADULT_ENTERTAINMENT
            - ADULT_PRODUCTS
            - ADVERTISING_MARKETING_PR
            - ADVISOR
            - AEROSPACE
            - AGRICULTURE
            - ALCOHOL
            - ARCHITECTURE
            - ARTS_ANTIQUES
            - ASSET_WEALTH_MANAGEMENT
            - ATM
            - AUTOMOBILE_CAR_PARTS
            - AUTOMOBILE_LUXURY
            - BANK_FOREIGN
            - BANK_US
            - BARS_RESTAURANTS
            - BIO_SCIENCE
            - BOOKS_MAGAZINES_NEWSPAPERS
            - BROADCASTERS_RADIO_TV
            - BROKER
            - BUILDING_MATERIALS
            - CALL_CENTER
            - CASINO_GAMBLING
            - CHARITY
            - CHEMICAL_MANUFACTURING
            - CLOTHING_TEXTILES
            - COMMODITIES
            - COMPANY_FORMATION
            - CONSTRUCTION_TRADES
            - CRYPTO_MSB_FOREIGN
            - CRYPTO_MSB_US
            - CYBER_SECURITY
            - DATA_STORAGE_PROCESSING
            - DEFI_EXCHANGE
            - ECOMMERCE
            - ELECTRONICS_MOBILE_PHONES
            - ENGINEERING
            - EVENT_PLANNING
            - FITNESS_EQUIPMENT
            - FOOD_BEVERAGE
            - FOUNDATION
            - FREIGHT_LOGISTICS_SHIPPING
            - GOVERNMENT_FOREIGN
            - GOVERNMENT_US
            - HEALTH_SUPPLEMENTS
            - HEAVY_EQUIPMENT
            - HISTORICAL_CULTURAL_ARTIFACTS
            - HNWI
            - HOSPITALITY
            - HOSPITALS_CARE_FACILITIES
            - IMPORT_EXPORT
            - INDUSTRIAL_EQUIPMENT
            - INFLUENCER_SOCIAL_MEDIA
            - INSURANCE
            - INSURANCE_INSURANCE_COMPANIES
            - INVESTMENT_FIRMS
            - IT_MANAGED_SERVICES
            - LEGAL_SERVICES
            - LOAN
            - LOGGING_TIMBER_PAPER_MILLS
            - LUXURY_GOODS
            - LUXURY_GOODS_BROKER
            - MANAGEMENT_CONSULTING
            - MINER
            - MINING_EXTRACTION
            - MULTILEVEL_MARKETING
            - MUSIC_PRODUCTION
            - NFT
            - NON_BANK_CUSTODIAN
            - NON_CRYPTO_MSB_FOREIGN
            - NON_CRYPTO_MSB_US
            - OIL_GAS
            - PAWN_BROKERS
            - PAYMENT_PROCESSOR
            - PAYROLL
            - PENSION
            - POLITICAL_PARTY_GROUP
            - POOLED_INVESTMENT
            - PRECIOUS_METALS
            - PRIVATE_EQUITY
            - PRIVATE_JET_CHARTER
            - PROP_TRADING
            - PUBLIC
            - REAL_ESTATE_INVESTMENT
            - RETAILER_DURABLE
            - RETAILER_NON_DURABLE
            - SCHOOL_UNIVERSITY
            - SECURITY
            - SOFTWARE
            - SOFTWARE_BLOCKCHAIN_CRYPTO
            - SPORTING_PROFESSIONAL_CLUB
            - SPV
            - STATE_FOREIGN
            - STATE_US
            - SUPRANATIONAL_BODY
            - TAX_ADVISORS
            - TAXI_PRIVATE_TRANSPORT
            - TELECOMMUNICATIONS
            - TOBACCO
            - TOKEN_PROJECT
            - TRAVEL
            - TRUST_CORP
            - TRUST_PERSONAL
            - UTILITIES_WATER_GAS_ELECTRIC
            - VENTURE_CAPITAL
            - VIDEO_GAMES
            - WASTE_MANAGEMENT_RECYCLING
            - WEAPONS_MANUFACTURER
            - WEAPONS_MILITARY_SERVICES
            - WHV
            - WHOLESALER_DURABLE
            - WHOLESALER_NON_DURABLE
        description_of_business_nature:
          type: string
        is_charitable:
          type: boolean
        business_jurisdictions:
          type: array
          description: >-
            In what countries the corporation does business in (2 Digit
            ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
          items:
            type: string
            description: >-
              In what countries the corporation does business in (2 Digit
              ISO31661-Alpha2 Format -
              https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
        funds_send_receive_jurisdictions:
          type: array
          description: >-
            In what countries the corporation sends or receives funds (2 Digit
            ISO3166-1 Alpha-2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
          items:
            type: string
            description: >-
              In what countries the corporation sends or receives funds (2 Digit
              ISO3166-1 Alpha-2 Format -
              https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
        has_complex_ownership:
          type: boolean
          description: >-
            Identifies whether the business has a complex ownership structure.
            In instances where the ownership structure of a business customer
            has 3 or more layers of ownership, this field should be set to true.
            Meaning one or more ultimate beneficial owner of the business is
            another corporation.
        new_york_office:
          type: boolean
        engage_in_activities:
          type: array
          items:
            type: string
            enum:
              - NONE
              - ADULT_ENTERTAINMENT
              - DRUGS
              - FIREARMS
              - GAMBLING
              - MARIJUANA
              - TUMBLING
        regulated_status:
          type: string
          enum:
            - REGULATED
            - REGISTERED
            - LICENSED
            - NONE
            - NOT_REQUIRED
        regulation_agency:
          type: string
        regulation_agency_regulation_number:
          type: string
        control_exemption_reason:
          type: string
          enum:
            - REGULATED
            - PUBLICLY_TRADED
            - PUBLIC_SUBSIDIARY
            - PUBLIC_ACCOUNTING
            - INSURANCE
            - GOVERNMENT_AGENCY
            - BANK_HOLDING
            - SAVINGS_LOAN
            - FMU
            - FOREIGN_PRIVATE_BANK
            - FOREIGN_INSTITUTION
            - ISSUER
            - INVESTMENT
            - COMMODITIES
            - POOLED_INVESTMENT
            - NON_GOVERNMENT_SUBDIVISION
            - NON_ENTITY
            - NONE
        vendors_and_counterparties:
          type: array
          items:
            type: string
            enum:
              - SELF
              - MERCHANTS_SUPPLIERS
              - CUSTOMERS
              - EMPLOYEES
              - CONTRACTORS
              - FRIENDS
              - FAMILY
      description: KYC Profile of the corporation
    ProfileIndividualInvesting:
      type: object
      properties:
        primary_source_of_funds:
          type: string
          enum:
            - EMPLOYMENT
            - SAVINGS
            - WINNINGS
            - MARITAL
            - REAL_ESTATE
            - TRUST
            - INVESTMENT
            - OTHER
            - COMPANY
            - COMPANY_CAPITAL
            - LOAN
            - PRIVATE_CAPITAL
            - GRANT
        primary_source_of_funds_description:
          type: string
        total_assets:
          type: string
          enum:
            - UPTO_10K
            - TEN_TO_100K
            - ONEHUNDREDK_TO_1M
            - ONE_TO_10M
            - TEN_TO_50M
            - FIFTY_TO_250M
            - MORE_THAN_250M
        usd_value_of_fiat:
          type: string
          enum:
            - UPTO_10K
            - TEN_TO_100K
            - ONEHUNDREDK_TO_1M
            - ONE_TO_10M
            - TEN_TO_50M
            - FIFTY_TO_250M
            - MORE_THAN_250M
        monthly_deposits:
          type: string
          enum:
            - UPTO_5
            - FIVE_TO_10
            - TEN_TO_25
            - MORE_THAN_25
        monthly_withdrawals:
          type: string
          enum:
            - UPTO_5
            - FIVE_TO_10
            - TEN_TO_25
            - MORE_THAN_25
        monthly_investment_deposit:
          type: string
          enum:
            - UPTO_1K
            - ONE_TO_100K
            - ONEHUNDREDK_TO_1M
            - MILLION_TO_5M
            - MORE_THAN_5M
        monthly_investment_withdrawal:
          type: string
          enum:
            - UPTO_1K
            - ONE_TO_100K
            - ONEHUNDREDK_TO_1M
            - MILLION_TO_5M
            - MORE_THAN_5M
        usd_value_of_crypto:
          type: string
          enum:
            - UPTO_10K
            - TEN_TO_100K
            - ONEHUNDREDK_TO_1M
            - ONE_TO_10M
            - TEN_TO_50M
            - FIFTY_TO_250M
            - MORE_THAN_250M
        monthly_crypto_deposits:
          type: string
          enum:
            - UPTO_5
            - FIVE_TO_10
            - TEN_TO_25
            - MORE_THAN_25
        monthly_crypto_withdrawals:
          type: string
          enum:
            - UPTO_5
            - FIVE_TO_10
            - TEN_TO_25
            - MORE_THAN_25
        monthly_crypto_investment_deposit:
          type: string
          enum:
            - UPTO_1K
            - ONE_TO_100K
            - ONEHUNDREDK_TO_1M
            - MILLION_TO_5M
            - MORE_THAN_5M
        monthly_crypto_investment_withdrawal:
          type: string
          enum:
            - UPTO_1K
            - ONE_TO_100K
            - ONEHUNDREDK_TO_1M
            - MILLION_TO_5M
            - MORE_THAN_5M
      description: Investment Profile of the Individual
    ProfileIndividualKYC:
      type: object
      properties:
        funds_send_receive_jurisdictions:
          type: array
          description: >-
            In what countries the individual sends or receives funds (2 Digit
            ISO3166-1 Alpha-2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
          items:
            type: string
            description: >-
              In what countries the individual sends or receives funds (2 Digit
              ISO3166-1 Alpha-2 Format -
              https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
        business_jurisdictions:
          type: array
          description: >-
            In what countries the individual does business (2-Digit ISO 3166-1
            Alpha-2 Format – https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
          items:
            type: string
            description: >-
              In what countries the individual does business (2-Digit ISO 3166-1
              Alpha-2 Format – https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
        engage_in_activities:
          type: array
          items:
            type: string
            enum:
              - NONE
              - ADULT_ENTERTAINMENT
              - DRUGS
              - FIREARMS
              - GAMBLING
              - MARIJUANA
              - TUMBLING
        vendors_and_counterparties:
          type: array
          items:
            type: string
            enum:
              - SELF
              - MERCHANTS_SUPPLIERS
              - CUSTOMERS
              - EMPLOYEES
              - CONTRACTORS
              - FRIENDS
              - FAMILY
      description: KYC Profile of the Individual
    RequestApplication:
      required:
        - application_type
      type: object
      properties:
        application_type:
          type: string
      discriminator:
        propertyName: application_type
        mapping:
          INDIVIDUAL: '#/components/schemas/ApplicationIndividual'
          CORPORATION: '#/components/schemas/ApplicationCorporation'
    mailing_address:
      type: object
      properties:
        unit_number:
          type: string
          description: Unit Number
        address_line1:
          type: string
          description: Address Line 1
        address_line2:
          type: string
          description: Address Line 2
        address_line3:
          type: string
          description: Address Line 3
        city:
          type: string
          description: City
        state:
          type: string
          description: >-
            State / Province (2 Digit subdivision component of the ISO 3166-2
            code, which consists of the last two characters.
            https://en.wikipedia.org/wiki/ISO_3166-2
        postal_code:
          type: string
          description: Postal / Zip Code
        country_code:
          type: string
          description: >-
            Country Code (2 Digit ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
      description: Mailing Address
    physical_address:
      type: object
      properties:
        unit_number:
          type: string
          description: Unit Number
        address_line1:
          type: string
          description: Address Line 1
        address_line2:
          type: string
          description: Address Line 2
        address_line3:
          type: string
          description: Address Line 3
        city:
          type: string
          description: City
        state:
          type: string
          description: >-
            State / Province (2 Digit subdivision component of the ISO 3166-2
            code, which consists of the last two characters.
            https://en.wikipedia.org/wiki/ISO_3166-2
        postal_code:
          type: string
          description: Postal / Zip Code
        country_code:
          type: string
          description: >-
            Country Code (2 Digit ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
      description: Physical Address if different to registered address
    registered_address:
      type: object
      properties:
        unit_number:
          type: string
          description: Unit Number
        address_line1:
          type: string
          description: Address Line 1
        address_line2:
          type: string
          description: Address Line 2
        address_line3:
          type: string
          description: Address Line 3
        city:
          type: string
          description: City
        state:
          type: string
          description: >-
            State / Province (2 Digit subdivision component of the ISO 3166-2
            code, which consists of the last two characters.
            https://en.wikipedia.org/wiki/ISO_3166-2
        postal_code:
          type: string
          description: Postal / Zip Code
        country_code:
          type: string
          description: >-
            Country Code (2 Digit ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
      description: Registered / head office address
    IndividualBase:
      required:
        - id
      type: object
      properties:
        id:
          type: string
          description: Unique ID of the Individual
          readOnly: true
    ResponseIndividualBase:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/IndividualBase'
    RequestIndividual:
      required:
        - first_name
        - id
        - individual_type
        - last_name
      type: object
      properties:
        id:
          type: string
          description: Unique ID of the Individual
          readOnly: true
        individual_type:
          type: array
          description: Type of individual in the corporation
          items:
            type: string
            description: Type of individual in the corporation
            enum:
              - OFFICER
              - BENEFICIAL_OWNER
              - CONTROL_PERSON
              - AUTHORIZED_PERSON
        first_name:
          type: string
          description: First name
        middle_name:
          type: string
          description: Middle Name(s) (if present)
        last_name:
          type: string
          description: Last name
        email_address:
          type: string
          description: Email Address
        mailing_address:
          $ref: '#/components/schemas/mailing_address'
        telephone_number:
          type: string
          description: Telephone Number in E.164 format
        tax_reference_number:
          type: string
          description: >-
            Tax reference number of the country (SSN, ITIN, SIN, National
            Insurance Number etc)
        tax_reference_number_country:
          type: string
          description: >-
            Registered tax reference number country (2 Digit ISO31661-Alpha2
            Format - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
        passport_number:
          type: string
          description: Passport Number
        nationality:
          type: string
          description: >-
            Nationality (2 Digit ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
        citizenship:
          type: array
          description: >-
            Citizenship (2 Digit ISO31661-Alpha2 Format -
            https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
          items:
            type: string
            description: >-
              Citizenship (2 Digit ISO31661-Alpha2 Format -
              https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
        date_of_birth:
          type: string
          description: 'RFC3339 (YYYY-MM-DD) Date of Birth '
          format: date
        percentage_ownership:
          type: integer
          description: >-
            (Only where type is BENEFICIAL_OWNER) Percentage ownership of the
            corporation (0 to 100)
          format: int32
        title:
          type: string
          description: >-
            Example values CEO, COO, CFO, President,
            BenefitsAdministrationOfficer, CIO, VP, AVP, Treasurer, Secretary,
            Controller, Manager, Partner or Member.
        us_residency_status:
          type: string
          description: US Residency Status
          enum:
            - US_CITIZEN
            - RESIDENT_ALIEN
            - NON_RESIDENT_ALIEN
    ApplicationAccessCode:
      required:
        - access_code
        - expiry
        - id
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the application
          readOnly: true
        access_code:
          type: string
          description: Access code for use with the rail Customer Onboarding SDK
          readOnly: true
        expiry:
          type: string
          description: >-
            Date time the access code will expire. At this point a new access
            code must be generated. Visit the [Management
            Interface](https://management.rail.io) to configure expiry settings.
          format: date-time
          readOnly: true
    ResponseApplicationAccessCode:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ApplicationAccessCode'
    AccountBase:
      required:
        - id
      type: object
      properties:
        id:
          type: string
          description: >-
            Unique Identifier for the account - defined by the Client during
            account open
    ResponseAccountBase:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/AccountBase'
    RequestAccountOpen:
      required:
        - account_to_open
        - customer_id
      type: object
      properties:
        customer_id:
          type: string
          description: >-
            Customer ID of the customer for whom the account is being opened
            (see /customers)
        account_to_open:
          $ref: '#/components/schemas/AccountOpen'
    CustomerBase:
      required:
        - id
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the customer
    ResponseCustomerBase:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/CustomerBase'
    PatchCustomer:
      type: object
      properties:
        field:
          type: string
          description: Customer Field To Be Patched
        value:
          type: string
          description: New value
      description: Follow standard patch guidance
    RequestCustomerPatch:
      type: object
      properties:
        updates:
          type: array
          description: Follow standard patch guidance
          items:
            $ref: '#/components/schemas/PatchCustomer'
        updated_by:
          type: string
          description: >-
            Description or reference of the system/person who requested the
            change
        reason:
          type: string
          description: 'String representing the reason for the change. '
    PatchGeneric:
      type: object
      properties:
        field:
          type: string
          description: Field To Be Patched
        value:
          type: string
          description: New value
      description: Follow standard patch guidance
    RequestPatchGeneric:
      type: object
      properties:
        updates:
          type: array
          description: Follow standard patch guidance
          items:
            $ref: '#/components/schemas/PatchGeneric'
    PatchCounterparty:
      type: object
      properties:
        field:
          type: string
          description: Counterparty Field To Be Patched
        value:
          type: string
          description: New value
      description: Follow standard patch guidance
    RequestCounterpartyPatch:
      type: object
      properties:
        updates:
          type: array
          description: Follow standard patch guidance
          items:
            $ref: '#/components/schemas/PatchCounterparty'
        updated_by:
          type: string
          description: >-
            Description or reference of the system/person who requested the
            change
        reason:
          type: string
          description: 'String representing the reason for the change. '
    PatchApplication:
      type: object
      properties:
        field:
          type: string
          description: Application Field To Be Patched
        value:
          type: string
          description: New value
      description: Follow standard patch guidance
    RequestApplicationPatch:
      type: object
      properties:
        updates:
          type: array
          description: Follow standard patch guidance
          items:
            $ref: '#/components/schemas/PatchApplication'
    PatchIndividual:
      type: object
      properties:
        field:
          type: string
          description: Field To Be Patched
        value:
          type: string
          description: New value
      description: Follow standard patch guidance
    RequestIndividualPatch:
      type: object
      properties:
        updates:
          type: array
          description: Follow standard patch guidance
          items:
            $ref: '#/components/schemas/PatchIndividual'
    PatchAccount:
      type: object
      properties:
        field:
          type: string
          description: Account Field To Be Patched
        value:
          type: string
          description: New value
      description: Follow standard patch guidance
    RequestAccountPatch:
      type: object
      properties:
        updates:
          type: array
          description: Follow standard patch guidance
          items:
            $ref: '#/components/schemas/PatchAccount'
        updated_by:
          type: string
          description: >-
            Description or reference of the system/person who requested the
            change
        reason:
          type: string
          description: 'String representing the reason for the change. '
    WITHDRAWAL_CRYPTO:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/WithdrawalCrypto'
    WITHDRAWAL_ACH:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/WithdrawalACH'
    WITHDRAWAL_FEDWIRE:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/WithdrawalFedwire'
    WITHDRAWAL_SWIFT:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/WithdrawalSwift'
    WITHDRAWAL_SEPACT:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/WithdrawalSepaCT'
    ResponseWithdrawalStatus:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/WithdrawalState'
    WithdrawalDocumentError:
      required:
        - document
        - id
        - status
      type: object
      properties:
        id:
          type: string
          description: Unique ID of the document
          readOnly: true
          example: 905666e7-2d5b-4ac4-bd96-e02675fc678f
        status:
          type: string
          description: Status of the document upload
          enum:
            - MISSING
            - SUBMITTED
            - CHANGES_REQUESTED
            - REJECTED
            - APPROVED
        description:
          type: string
          description: Additional supporting error details
          readOnly: true
          example: Please upload an invoice
        document:
          type: string
          description: Document Type the error occurred on
          readOnly: true
          enum:
            - INVOICE
      description: List of document errors associated with the withdrawal
      readOnly: true
    WithdrawalState:
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the withdrawal request
          readOnly: true
        status:
          type: string
          description: >+
            Status of the withdrawal. 

            * `REQUESTED` - Withdrawal request is created and has passed
            validation. It must be accepted at which point it will be executed. 

            * `ACCEPTED` - Withdrawal request has been accepted and is waiting
            execution. At this point it cannot be cancelled.  

            * `EXPIRED` - Occurs when a withdrawal request was not accepted
            within a reasonable time frame. The request cannot be replayed from
            this state.  

            * `CANCELLED` - Withdrawal request was cancelled. Only available
            prior to acceptance. The  request cannot be replayed from this
            state.  

            * `CANCELLING` - Withdrawal request is being cancelled. 

            * `EXECUTED` -  Withdrawal request has been executed, it is
            completed with all ledger entries performed.  

            * `REJECTED` - Withdrawal request was rejected and cannot be
            executed.  

          readOnly: true
          enum:
            - REQUESTED
            - REJECTED
            - EXPIRED
            - ACCEPTED
            - EXECUTED
            - CANCELLED
            - CANCELLING
        document_errors:
          type: array
          description: List of document errors associated with the withdrawal
          readOnly: true
          items:
            $ref: '#/components/schemas/WithdrawalDocumentError'
    Page:
      required:
        - first
        - last
        - next
        - prev
        - self
      type: object
      properties:
        self:
          type: string
          description: endpoint to the current page of results
        first:
          type: string
          description: endpoint to the first page of results
        prev:
          type: string
          description: endpoint to the previous page of results
        next:
          type: string
          description: endpoint to the next page of results
        last:
          type: string
          description: endpoint to the last page of results
      description: >-
        See the
        [pagination](https://docs.layer2financial.com/guides/pagination/)
        section for additional details on the generic pagination approach.
    RailInformation:
      required:
        - rail
      type: object
      properties:
        rail:
          type: string
          description: The rail on which this transaction arrived.
        reference:
          type: string
          description: >-
            Rail-specific reference if one exists (e.g., blockchain hash,
            Fedwire ID, etc.)
        memo:
          type: string
          description: >-
            Any reference provided by the originator, typically used on FIAT
            rails (e.g., transaction memo).
      description: >-
        Where the type of transaction is `TRANSFER_IN`, the available details of
        the originator of the transaction
    ResponseTransactions:
      required:
        - data
        - links
      type: object
      properties:
        data:
          $ref: '#/components/schemas/TransactionList'
        links:
          $ref: '#/components/schemas/Page'
    Transaction:
      required:
        - id
        - transaction_date
        - transaction_status
        - transaction_type
        - value
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the transaction
        value:
          type: number
          description: Value of the transaction in the underlying account currency
        transaction_date:
          type: string
          description: Date time the transaction was performed
          format: date-time
        transaction_posted_date:
          type: string
          description: Date time the transaction was posted
          format: date-time
        transaction_status:
          type: string
          description: >+
            Status of transaction 

            * `AUTHORIZED` - Treat as a temporary hold. This transaction impacts
            the account available balance but does not impact the current
            balance. Can and should be cancelled and replaced by a
            pending/posted pair.  

            * `PENDING` - Transaction waiting final confirmation. This
            transaction impacts the account available balance but does not
            impact the current balance. Cannot be cancelled as the underlying
            transaction is in flight.  

            * `POSTED` - Transaction is final. Both the available balance and
            current balance are impacted. Cannot be reversed. 

            * `CANCELLED` - Transaction is no longer valid. Reverse any impacts
            to available balance and current balance. 

          enum:
            - AUTHORIZED
            - PENDING
            - POSTED
            - CANCELLED
        transaction_type:
          type: string
          description: >+
            Transaction type 

            * `TRANSFER_IN` - External deposit of crypto funds into an account. 

            * `TRANSFER_OUT` - Withdrawal of crypto funds from an account to an
            external location .  

            * `FIAT_TRANSFER_IN` - External deposit of FIAT funds into an
            account. 

            * `FIAT_TRANSFER_OUT` - Withdrawal of FIAT funds from an account to
            an external location .  

            * `FIAT_TRANSFER_IN_RETURN` - Clawback of a FIAT deposit (e.g. due
            to bankiing error). 

            * `FIAT_TRANSFER_OUT_RETURN` - Return of a FIAT withdrawal (e.g. due
            to the destination account being closed)  

            * `DEBIT_CORRECTION` - Debit account adjustment.  

            * `CREDIT_CORRECTION` - Credit account adjustment.  

            * `TRADE` -  Currency exchange transaction (applies to both the
            debit on the source account or credit on the destination account).  

            * `FEE` -  Fee deduction.  

            * `INTERNAL_TRANSFER` - Book (internal) movement of funds between
            account.  

          enum:
            - TRANSFER_IN
            - TRANSFER_OUT
            - FEE
            - DEBIT_CORRECTION
            - CREDIT_CORRECTION
            - TRADE
            - INTERNAL_TRANSFER
        category_type:
          type: string
          description: >+
            If this transaction related to a core platform feature 

            * `DEPOSIT` - When this transaction was a result of a deposit.  

            * `EXCHANGE` - When this transaction was a result of an
            [exchange](#tag/Exchanges). 

            * `TRANSFER` - When this transaction was a result of a
            [transfer](#tag/Transfers).  

            * `WITHDRAWAL` - When this transaction was a result of a
            [withdrawal](#tag/Withdrawals). 

          enum:
            - ADJUSTMENT
            - DEPOSIT
            - EXCHANGE
            - TRANSFER
            - WITHDRAWAL
        category_id:
          type: string
          description: >
            Where the `category_type` is present, this identifier allows you to
            lookup the category details using the standard APIs. For example,
            where a category_type is `TRANSFER` and the category_id is
            `abc-123`, you can lookup the original transfer that this
            transaction relates to using ```GET /transfers/abc-123```   
        description:
          type: string
          description: Description
        originator:
          $ref: '#/components/schemas/TransactionOriginator'
        rail_information:
          $ref: '#/components/schemas/RailInformation'
      description: Transaction List
    TransactionList:
      required:
        - transactions
      type: object
      properties:
        transactions:
          type: array
          description: Transaction List
          items:
            $ref: '#/components/schemas/Transaction'
    TransactionOriginator:
      required:
        - originator_type
      type: object
      properties:
        originator_type:
          type: string
          description: Type of transaction originator
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        rail_reference:
          type: string
          description: >-
            Rail specific reference if one exists (e.g. blockchain hash, fedwire
            ID etc)
        rail_originator_memo:
          type: string
          description: >-
            Any reference provided by the originator, typically only used on
            FIAT rails (e.g. transaction Memo etc).
      description: >-
        Where the type of transaction is `TRANSFER_IN`, the available details of
        the originator of the transaction
      discriminator:
        propertyName: originator_type
        mapping:
          FIAT_CA: '#/components/schemas/TransactionOriginatorFIATCA'
          FIAT_US: '#/components/schemas/TransactionOriginatorFIATUS'
          CRYPTO: '#/components/schemas/TransactionOriginatorCRYPTO'
    TransactionOriginatorAccountCRYPTO:
      type: object
      properties:
        blockchain_address:
          type: string
          description: Originator Blockchain address
        wallet_type:
          type: string
          description: Originator wallet type (e.g. Custodian, Private Wallet etc)
          enum:
            - INSTITUTION
            - OTHER
            - UNKNOWN
        institution_name:
          type: string
          description: Originator Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: Available details of the originator wallet/address
    TransactionOriginatorAccountFIATCA:
      required:
        - institution_number
        - transit_number
      type: object
      properties:
        account_number:
          type: string
          description: Originator account number
        institution_number:
          type: string
          description: Originator institution number
        transit_number:
          type: string
          description: Originator transit number
        swift_bic:
          type: string
          description: Originator SWIFT/BIC Number
        institution_name:
          type: string
          description: Originator Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: Available details of the originator account
    TransactionOriginatorAccountFIATUS:
      type: object
      properties:
        account_number:
          type: string
          description: Originator account number
        type:
          type: string
          description: Originator account type.
          enum:
            - CHECKING
            - SAVING
        routing_number:
          type: string
          description: Originator routing number
        swift_bic:
          type: string
          description: Originator SWIFT/BIC Number
        institution_name:
          type: string
          description: Originator Institution Name (e.g. Bank of America)
        institution_address:
          $ref: '#/components/schemas/institution_address'
      description: Available details of the originator account
    TransactionOriginatorCRYPTO:
      required:
        - originator_type
        - profile
        - rail
        - wallet_information
      type: object
      properties:
        originator_type:
          type: string
          description: Type of transaction originator
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        rail_reference:
          type: string
          description: >-
            Rail specific reference if one exists (e.g. blockchain hash, fedwire
            ID etc)
        rail_originator_memo:
          type: string
          description: >-
            Any reference provided by the originator, typically only used on
            FIAT rails (e.g. transaction Memo etc).
        rail:
          type: string
          description: 'The rail on which this transaction arrived. '
          enum:
            - CRYPTO
        profile:
          $ref: '#/components/schemas/TransactionOriginatorProfileCRYPTO'
        wallet_information:
          $ref: '#/components/schemas/TransactionOriginatorAccountCRYPTO'
    TransactionOriginatorFIATCA:
      required:
        - account_information
        - originator_type
        - profile
        - rail
      type: object
      properties:
        originator_type:
          type: string
          description: Type of transaction originator
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        rail_reference:
          type: string
          description: >-
            Rail specific reference if one exists (e.g. blockchain hash, fedwire
            ID etc)
        rail_originator_memo:
          type: string
          description: >-
            Any reference provided by the originator, typically only used on
            FIAT rails (e.g. transaction Memo etc).
        rail:
          type: string
          description: 'The rail on which this transaction arrived. '
          enum:
            - EFT
            - SWIFT
        profile:
          $ref: '#/components/schemas/TransactionOriginatorProfileFIATCA'
        account_information:
          $ref: '#/components/schemas/TransactionOriginatorAccountFIATCA'
    TransactionOriginatorFIATUS:
      required:
        - account_information
        - originator_type
        - profile
        - rail
      type: object
      properties:
        originator_type:
          type: string
          description: Type of transaction originator
          enum:
            - FIAT_US
            - FIAT_US_LINKED
            - FIAT_CA
            - FIAT_CA_LINKED
            - CRYPTO
        rail_reference:
          type: string
          description: >-
            Rail specific reference if one exists (e.g. blockchain hash, fedwire
            ID etc)
        rail_originator_memo:
          type: string
          description: >-
            Any reference provided by the originator, typically only used on
            FIAT rails (e.g. transaction Memo etc).
        rail:
          type: string
          description: 'The rail on which this transaction arrived. '
          enum:
            - ACH
            - FEDWIRE
            - SWIFT
        profile:
          $ref: '#/components/schemas/TransactionOriginatorProfileFIATUS'
        account_information:
          $ref: '#/components/schemas/TransactionOriginatorAccountFIATUS'
    TransactionOriginatorProfileCRYPTO:
      type: object
      properties:
        name:
          type: string
          description: >-
            The name of the counter party who is sending/receiving these funds
            (e.g. Anchorage Digital, Coinbase, or entity name etc)
      description: Available details of the originator wallet/address owner
    TransactionOriginatorProfileFIATCA:
      type: object
      properties:
        name:
          type: string
          description: Name of the originator (individual or business name).
      description: Available details of the originator account owner
    TransactionOriginatorProfileFIATUS:
      type: object
      properties:
        name:
          type: string
          description: Name of the originator (individual or business name).
      description: Available details of the originator account owner
    ResponseTransactionDetails:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/TransactionDetails'
    TransactionDetails:
      required:
        - id
        - transaction_date
        - transaction_status
        - transaction_type
        - value
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the transaction
        value:
          type: number
          description: Value of the transaction in the underlying account currency
        transaction_date:
          type: string
          description: Date time the transaction was performed
          format: date-time
        transaction_posted_date:
          type: string
          description: Date time the transaction was posted
          format: date-time
        transaction_status:
          type: string
          description: >+
            Status of transaction 

            * `AUTHORIZED` - Treat as a temporary hold. This transaction impacts
            the account available balance but does not impact the current
            balance. Can and should be cancelled and replaced by a
            pending/posted pair.  

            * `PENDING` - Transaction waiting final confirmation. This
            transaction impacts the account available balance but does not
            impact the current balance. Cannot be cancelled as the underlying
            transaction is in flight.  

            * `POSTED` - Transaction is final. Both the available balance and
            current balance are impacted. Cannot be reversed. 

            * `CANCELLED` - Transaction is no longer valid. Reverse any impacts
            to available balance and current balance. 

          enum:
            - AUTHORIZED
            - PENDING
            - POSTED
            - CANCELLED
        transaction_type:
          type: string
          description: >+
            Transaction type 

            * `TRANSFER_IN` - External deposit of crypto funds into an account. 

            * `TRANSFER_OUT` - Withdrawal of crypto funds from an account to an
            external location .  

            * `FIAT_TRANSFER_IN` - External deposit of FIAT funds into an
            account. 

            * `FIAT_TRANSFER_OUT` - Withdrawal of FIAT funds from an account to
            an external location .  

            * `FIAT_TRANSFER_IN_RETURN` - Clawback of a FIAT deposit (e.g. due
            to bankiing error). 

            * `FIAT_TRANSFER_OUT_RETURN` - Return of a FIAT withdrawal (e.g. due
            to the destination account being closed)  

            * `DEBIT_CORRECTION` - Debit account adjustment.  

            * `CREDIT_CORRECTION` - Credit account adjustment.  

            * `TRADE` -  Currency exchange transaction (applies to both the
            debit on the source account or credit on the destination account).  

            * `FEE` -  Fee deduction.  

            * `INTERNAL_TRANSFER` - Book (internal) movement of funds between
            account.  

          enum:
            - TRANSFER_IN
            - TRANSFER_OUT
            - FEE
            - DEBIT_CORRECTION
            - CREDIT_CORRECTION
            - TRADE
            - INTERNAL_TRANSFER
        category_type:
          type: string
          description: >+
            If this transaction related to a core platform feature 

            * `DEPOSIT` - When this transaction was a result of a deposit.  

            * `EXCHANGE` - When this transaction was a result of an
            [exchange](#tag/Exchanges). 

            * `TRANSFER` - When this transaction was a result of a
            [transfer](#tag/Transfers).  

            * `WITHDRAWAL` - When this transaction was a result of a
            [withdrawal](#tag/Withdrawals). 

          enum:
            - ADJUSTMENT
            - DEPOSIT
            - EXCHANGE
            - TRANSFER
            - WITHDRAWAL
        category_id:
          type: string
          description: >
            Where the `category_type` is present, this identifier allows you to
            lookup the category details using the standard APIs. For example,
            where a category_type is `TRANSFER` and the category_id is
            `abc-123`, you can lookup the original transfer that this
            transaction relates to using ```GET /transfers/abc-123```   
        description:
          type: string
          description: Description
        originator:
          $ref: '#/components/schemas/TransactionOriginator'
        rail_information:
          $ref: '#/components/schemas/RailInformation'
    ResponseSubscriptions:
      required:
        - data
        - links
      type: object
      properties:
        data:
          $ref: '#/components/schemas/SubscriptionList'
        links:
          $ref: '#/components/schemas/Page'
    SubscriptionList:
      required:
        - subscriptions
      type: object
      properties:
        subscriptions:
          type: array
          description: Subscription List
          items:
            $ref: '#/components/schemas/Subscription'
    ResponseSettlement:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Settlement'
    Settlement:
      type: object
      properties:
        id:
          type: string
          description: Settlement ID
        settlement_status:
          type: string
          description: >-
            Status of this settlement. Processed settlements are complete and
            funds dispersed
          enum:
            - INITIALIZED
            - DELIVERING
            - CONVERTING
            - SETTLED
        settlement_executed_timestamp:
          type: string
          description: Time when this settlement was executed (when funds were dispersed)
          format: date-time
        settlement_asset_type:
          type: string
          description: Asset type of the settlement
          enum:
            - FIAT
            - BITCOIN
            - ETHEREUM
            - POLYGON
        settlement_currency:
          type: string
          description: Currency of the settlement
        settlement_amount:
          type: number
          description: >-
            Full amount of the settlement that was performed (prior to any fee
            deductions by the receiving institution)
        settlement_details:
          type: array
          description: Breakdown of the transactions that were included in this settlement
          items:
            $ref: '#/components/schemas/SettlementDetails'
    SettlementDetails:
      type: object
      properties:
        source_account_customer_id:
          type: string
          description: Customer ID of the source account holder
        source_account_id:
          type: string
          description: Source account from which exchange funds were withdrawn
        source_asset_type:
          type: string
          description: Source account asset type
          enum:
            - FIAT
            - BITCOIN
            - ETHEREUM
            - POLYGON
        source_currency:
          type: string
          description: Source account currency
        source_amount:
          type: number
          description: Source account amount withdrawn
        destination_account_customer_id:
          type: string
          description: Customer ID of the destination account holder
        destination_account_id:
          type: string
          description: Destination account into which exchange funds are deposited
        destination_asset_type:
          type: string
          description: Destination account asset type
          enum:
            - FIAT
            - BITCOIN
            - ETHEREUM
            - POLYGON
        destination_currency:
          type: string
          description: Destination account currency
        destination_amount:
          type: number
          description: Destination account amount deposited
        payment_payor_id:
          type: string
          description: >-
            Optional Payor ID who performed the initial deposit (only on payment
            accounts)
        payment_reference_id:
          type: string
          description: >-
            Optional Payment Reference ID associated to the initial deposit
            (only on payment accounts)
        payment_expected_amount:
          type: string
          description: Optional expected amount for this payment (only on payment accounts)
      description: Breakdown of the transactions that were included in this settlement
    ResponsePayment:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Payment'
    DocumentError:
      required:
        - document
        - document_id
        - mandatory
        - status
      type: object
      properties:
        document_id:
          type: string
          description: Unique identifier of the document
          enum:
            - MISSING
            - SUBMITTED
            - CHANGES_REQUESTED
            - REJECTED
            - APPROVED
        document:
          type: string
          description: Document Type the error occurred on
          readOnly: true
          enum:
            - ANNUAL_REPORT
            - BENEFICIAL_OWNERSHIP_CERTIFICATE
            - BILL_OF_LADING
            - CONTRACT
            - DRIVERS_LICENCE_BACK
            - DRIVERS_LICENCE_FRONT
            - FINANCIAL_STATEMENT
            - GOVERNMENT_ID_BACK
            - GOVERNMENT_ID_FRONT
            - INCORPORATION_DOCUMENTS
            - INVOICE
            - LEASE_AGREEMENT
            - LLC_AGREEMENT
            - OWNERSHIP_STRUCTURE_CHART
            - PARTNERSHIP_AGREEMENT
            - PASSPORT
            - POWER_OF_ATTORNEY
            - REGULATORY_LICENSE
            - SELFIE
            - SOCIAL_SECURITY_CARD
            - UTILITY_BILL
        status:
          type: string
          description: Status of the document upload
          enum:
            - MISSING
            - SUBMITTED
            - CHANGES_REQUESTED
            - REJECTED
            - APPROVED
        mandatory:
          type: boolean
          description: Indicates if the document is mandatory
    PaymentStatusData:
      required:
        - id
        - status
      type: object
      properties:
        id:
          type: string
          description: Unique ID of the payment
          example: 550e8400-e29b-41d4-a716-446655440000
        status:
          type: string
          description: Current status of the payment
          example: REQUESTED
        document_errors:
          type: array
          description: List of document errors that require attention
          items:
            $ref: '#/components/schemas/DocumentError'
    ResponsePaymentStatus:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/PaymentStatusData'
    CorporationCustomer:
      required:
        - customer_type
        - id
        - registered_name
        - status
      type: object
      allOf:
        - $ref: '#/components/schemas/Customer'
        - type: object
          properties:
            registered_name:
              type: string
              description: Corporate entity registered name
            trading_name:
              type: string
              description: >-
                Trading/'Doing Business As' name (if different to registered
                name)
            registered_number:
              type: string
              description: >-
                Government registered number of the corporate entity (e.g. what
                is defined on the Articles of Incorporation)
            registered_number_country:
              type: string
              description: >-
                Two-letter country code indicating where the corporation is
                legally registered or incorporated. Related to registered_number
                field (2 Digit ISO31661-Alpha2 Format -
                https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
            corporate_tax_reference_number:
              type: string
              description: >-
                Government registered tax reference number. In many
                jurisdictions this is different to the `register_number`
            corporate_tax_reference_number_country:
              type: string
              description: >-
                Two-letter country code of the country where the corporation is
                registered for tax purposes. Related to the
                corporate_tax_reference_number field (2 Digit ISO31661-Alpha2
                Format - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
            registered_address:
              $ref: '#/components/schemas/registered_address'
            physical_address:
              $ref: '#/components/schemas/physical_address'
            telephone_number:
              type: string
              description: Telephone Number in E.164 format
            website_address:
              type: string
              description: Website URL
            ip_address:
              type: string
              description: >-
                IP address from which the customer initiated the application
                request
            state_of_incorporation:
              type: string
              description: State / Province / Riding of Incorporation (2 digit code)
            country_of_incorporation:
              type: string
              description: >-
                Country of incorporation (2 Digit ISO31661-Alpha2 Format -
                https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
            corporate_entity_type:
              type: string
              description: Type of corporate entity
              enum:
                - C_CORP_PRIVATE
                - C_CORP_PUBLIC
                - HNWI
                - LLC
                - LLP
                - LP
                - S_CORP
                - SOLE_PROP
                - TRUST
                - NON_PROFIT
                - OTHER
            corporate_entity_type_description:
              type: string
              description: Description of legal structure where entity type is `OTHER`
            email_address:
              type: string
              description: Business Email Address (for example support@acme.inc)
            established_on:
              type: string
              description: Date the business was established following RFC3339 (YYYY-MM-DD)
            naics:
              type: string
              description: NAICS Code
            naics_description:
              type: string
              description: NAICS Description
            individuals:
              type: array
              description: Individuals Associated to CorporationApplication
              readOnly: true
              items:
                $ref: '#/components/schemas/Individual'
            investment_profile:
              $ref: '#/components/schemas/ProfileCorporateInvesting'
            kyc_profile:
              $ref: '#/components/schemas/ProfileCorporateKYC'
    Customer:
      required:
        - customer_type
        - id
        - status
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the customer
        customer_type:
          type: string
          description: Type of customer
          enum:
            - INDIVIDUAL
            - CORPORATION
        status:
          type: string
          description: >+
            Customer Status - will determine servicing options on the customer
            and the customers accounts. 

            * `ACTIVE` - Customer is open and available for use in line with its
            product configuration

            * `CLOSED` - Customer is permanently closed, no further actions can
            be performed on the customer. All accounts associated to the
            customer will also be `CLOSED`  

            * `PENDING` - Customer is under additional review prior to moving to
            the OPEN or CLOSED state. No actions can be performed on the
            customer or their respective accounts.  

            * `FROZEN` - Customer has been temporarily locked for all actions.
            All accounts associated to the customer will also be `FROZEN` 

            * `EDD` -  Customer requires enhanced due diligence to be performed.
            The customer will operate as if frozen until transitioning to
            `ACTIVE` or `CLOSED`. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            customer and their accounts are available for use.  

          readOnly: true
          enum:
            - ACTIVE
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
      discriminator:
        propertyName: customer_type
        mapping:
          INDIVIDUAL: '#/components/schemas/IndividualCustomer'
          CORPORATION: '#/components/schemas/CorporationCustomer'
    CustomerList:
      required:
        - customers
      type: object
      properties:
        customers:
          type: array
          description: Customer List
          items:
            $ref: '#/components/schemas/Customer'
    IndividualCustomer:
      required:
        - customer_type
        - first_name
        - id
        - last_name
        - status
      type: object
      allOf:
        - $ref: '#/components/schemas/Customer'
        - type: object
          properties:
            first_name:
              type: string
              description: First name
            middle_name:
              type: string
              description: Middle Name(s) (if present)
            last_name:
              type: string
              description: Last name
            email_address:
              type: string
              description: Email Address
            mailing_address:
              $ref: '#/components/schemas/mailing_address'
            telephone_number:
              type: string
              description: Telephone Number in E.164 format
            tax_reference_number:
              type: string
              description: >-
                Tax reference number of the individual (SSN, ITIN, SIN, National
                Insurance Number etc)
            passport_number:
              type: string
              description: Passport Number
            nationality:
              type: string
              description: >-
                Nationality (2 Digit ISO31661-Alpha2 Format -
                https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
            citizenship:
              type: array
              description: >-
                Citizenship (2 Digit ISO31661-Alpha2 Format -
                https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
              items:
                type: string
                description: >-
                  Citizenship (2 Digit ISO31661-Alpha2 Format -
                  https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
            date_of_birth:
              type: string
              description: 'RFC3339 (YYYY-MM-DD) Date of Birth '
              format: date
            us_residency_status:
              type: string
              description: US Residency Status
              enum:
                - US_CITIZEN
                - RESIDENT_ALIEN
                - NON_RESIDENT_ALIEN
            employment_status:
              type: string
              description: Employment Status
              enum:
                - EMPLOYEE
                - SELF_EMPLOYED
                - RETIRED
                - UNEMPLOYED
                - OTHER
            employment_description:
              type: string
              description: Employment (job) description.
            employer_name:
              type: string
              description: Employer name
            occupation:
              type: string
              description: Occupation
            investment_profile:
              $ref: '#/components/schemas/ProfileIndividualInvesting'
            kyc_profile:
              $ref: '#/components/schemas/ProfileIndividualKYC'
    ResponseCustomers:
      required:
        - data
        - links
      type: object
      properties:
        data:
          $ref: '#/components/schemas/CustomerList'
        links:
          $ref: '#/components/schemas/Page'
    CUSTOMER_INDIVIDUAL:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/IndividualCustomer'
    CUSTOMER_CORPORATION:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/CorporationCustomer'
    ResponseIndividual:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Individual'
    CounterpartyList:
      required:
        - counterparties
      type: object
      properties:
        counterparties:
          type: array
          description: Counterparty List
          items:
            $ref: '#/components/schemas/CounterParty'
    ResponseCounterparties:
      required:
        - data
        - links
      type: object
      properties:
        data:
          $ref: '#/components/schemas/CounterpartyList'
        links:
          $ref: '#/components/schemas/Page'
    ResponseCounterparty:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/CounterParty'
    Application:
      required:
        - account_to_open
        - application_type
        - customer_id
        - id
        - information_attested
        - status
        - terms_and_conditions_accepted
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the application
          readOnly: true
        status:
          type: string
          description: Status of the application
          readOnly: true
          enum:
            - INCOMPLETE
            - READY_FOR_SUBMISSION
            - SUBMITTED
            - PROCESSING
            - CHANGES_REQUESTED
            - REJECTED
            - APPROVED
        application_type:
          type: string
          description: Type of Application (Individual or CorporationApplication)
          enum:
            - INDIVIDUAL
            - CORPORATION
        account_to_open:
          $ref: '#/components/schemas/AccountOpen'
        terms_and_conditions_accepted:
          type: boolean
          description: >-
            Set to true when the end customer accepts all terms and conditions
            for use of the platform. An application cannot be submitted until
            accepted.
        information_attested:
          type: boolean
          description: >-
            Setting to true means that the Customer (or the Ultimate Beneficial
            Owner, CEO, or Control Person for Corporate Customers) attests that
            all of the information provided on the application is true,
            accurate, and up to date at the time of submission. Rail Subscribers
            as defined in the Rail Platform Agreement, may not attest on behalf
            of the Customer.
          default: false
        customer_id:
          type: string
          description: >-
            The identifier you wish to use to uniquely identify this customer
            (applies to both individual and corporate customers). The customer
            ID follows the [External
            Identifier](https://docs.rail.io/guides/externalidentifiers/)
            pattern. 
      description: Application List
      discriminator:
        propertyName: application_type
        mapping:
          INDIVIDUAL: '#/components/schemas/ApplicationIndividual'
          CORPORATION: '#/components/schemas/ApplicationCorporation'
    ApplicationList:
      required:
        - applications
      type: object
      properties:
        applications:
          type: array
          description: Application List
          items:
            $ref: '#/components/schemas/Application'
    ResponseApplications:
      required:
        - data
        - links
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ApplicationList'
        links:
          $ref: '#/components/schemas/Page'
    INDIVIDUAL:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ApplicationIndividual'
    CORPORATION:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ApplicationCorporation'
    ApplicationFieldError:
      required:
        - field_name
        - status
      type: object
      properties:
        field_name:
          type: string
          description: Application field to be corrected
          readOnly: true
          enum:
            - customer_id
            - account_to_open
            - product_type
            - asset_type
            - id
            - information_attested
            - registered_name
            - trading_name
            - registered_number
            - registered_address.unit_number
            - registered_address.address_line1
            - registered_address.address_line2
            - registered_address.address_line3
            - registered_address.city
            - registered_address.state
            - registered_address.postal_code
            - registered_address.country_code
            - telephone_number
            - website_address
            - state_of_incorporation
            - country_of_incorporation
            - corporate_entity_type
            - contact_title
            - contact_first_name
            - contact_last_name
            - contact_telephone_number
            - contact_email_address
            - physical_address.unit_number
            - physical_address.address_line1
            - physical_address.address_line2
            - physical_address.address_line3
            - physical_address.city
            - physical_address.state
            - physical_address.postal_code
            - physical_address.country_code
            - primary_business
            - description_of_business_nature
            - is_charitable
            - business_jurisdictions
            - funds_send_receive_jurisdictions
            - new_york_office
            - engage_in_activities
            - regulated_status
            - regulation_agency_regulation_number
            - control_exemption_reason
            - vendors_and_counterparties
            - primary_source_of_funds
            - total_investable_assets
            - total_assets
            - asset_allocation_to_crypto
            - investment_experience_crypto
            - investment_strategy_crypto
            - initial_deposit_source
            - ongoing_deposit_source
            - frequency_of_crypto_transactions
            - crypto_investment_plans
            - investment_proceeds_use
            - expected_crypto_assets
            - perform_transfers_with_unhosted_wallets
            - known_unhosted_wallet_addresses
            - trades_per_month
            - usd_value_of_crypto
            - frequency_of_transactions
            - monthly_crypto_investment_deposit
            - monthly_investment_deposit
            - monthly_crypto_deposits
            - monthly_deposits
            - monthly_crypto_investment_withdrawal
            - monthly_investment_withdrawal
            - monthly_crypto_withdrawals
            - monthly_withdrawals
            - trade_internationally
            - trade_jurisdictions
        status:
          type: string
          description: Error status of the field
          readOnly: true
          enum:
            - INCOMPLETE
            - READY_FOR_SUBMISSION
            - CHANGES_REQUESTED
            - APPROVED
        description:
          type: string
          description: Additional supporting error details
      description: List of validation errors with the application.
      readOnly: true
    ApplicationState:
      required:
        - created_date
        - id
        - status
        - status_update_date
      type: object
      properties:
        id:
          type: string
          description: Unique Identifier for the application
          readOnly: true
        status:
          type: string
          description: Status of the application
          readOnly: true
          enum:
            - INCOMPLETE
            - READY_FOR_SUBMISSION
            - SUBMITTED
            - PROCESSING
            - CHANGES_REQUESTED
            - REJECTED
            - APPROVED
        application_errors:
          type: array
          description: List of errors with the application.
          readOnly: true
          items:
            type: string
            description: List of errors with the application.
            readOnly: true
            enum:
              - MISSING_BENEFICIAL_OWNER
              - MISSING_OFFICER
              - MISSING_INDIVIDUAL
              - TERMS_AND_CONDITIONS_NOT_ACCEPTED
              - MISSING_AUTHORIZED_PERSON
              - MISSING_CONTROL_PERSON
        validation_errors:
          type: array
          description: List of validation errors with the application.
          readOnly: true
          items:
            $ref: '#/components/schemas/ApplicationFieldError'
        application_document_errors:
          type: array
          description: List of document errors with the application.
          readOnly: true
          items:
            $ref: '#/components/schemas/DocumentError'
        application_individual_errors:
          type: array
          description: >-
            ONLY for corporate applications. List of errors for the submitted
            individuals
          readOnly: true
          items:
            $ref: '#/components/schemas/IndividualState'
        created_date:
          type: string
          description: Date when the application was created
          readOnly: true
        status_update_date:
          type: string
          description: Date when the application was updated
          readOnly: true
    IndividualFieldError:
      required:
        - field_name
        - status
      type: object
      properties:
        field_name:
          type: string
          description: Individual field to be corrected
          readOnly: true
          enum:
            - id
            - person_role
            - person_status
            - first_name
            - middle_name
            - last_name
            - email_address
            - mailing_address.unit_number
            - mailing_address.address_line1
            - mailing_address.address_line2
            - mailing_address.address_line3
            - mailing_address.city
            - mailing_address.state
            - mailing_address.postal_code
            - mailing_address.country_code
            - telephone_number
            - tax_reference_number
            - passport_number
            - nationality
            - citizenship
            - date_of_birth
            - percentage_ownership
            - title
            - us_residency_status
        status:
          type: string
          description: Error status of the field
          readOnly: true
          enum:
            - INCOMPLETE
            - READY_FOR_SUBMISSION
            - CHANGES_REQUESTED
            - APPROVED
        description:
          type: string
          description: Additional supporting error details
    IndividualState:
      type: object
      properties:
        individual_id:
          type: string
        validation_errors:
          type: array
          items:
            $ref: '#/components/schemas/IndividualFieldError'
        document_errors:
          type: array
          items:
            $ref: '#/components/schemas/DocumentError'
      description: >-
        ONLY for corporate applications. List of errors for the submitted
        individuals
      readOnly: true
    ResponseApplicationState:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ApplicationState'
    Account:
      required:
        - asset_type_id
        - available_balance
        - current_balance
        - customer_id
        - id
        - product_id
        - product_type
        - status
      type: object
      properties:
        id:
          type: string
          description: >-
            Unique Identifier for the account - defined by the Client during
            account open
        status:
          type: string
          description: >+
            Account Status - will determine servicing options on the account. 

            * `OPEN` - Account is open and available for use in line with its
            product configuration

            * `CLOSED` - Account is permanently closed, no further actions can
            be performed on the account.  

            * `PENDING` - Account is under additional review prior to moving to
            the OPEN or CLOSED state. No actions can be performed on the
            account.  

            * `FROZEN` - Account has been temporarily locked for all actions
            (deposits, transfers, exchanges and withdrawals).  

            * `EDD` -  Account (and/or customer) requires enhanced due diligence
            to be performed. The accounts will operate as if frozen. 

            * `DORMANT` - No activity has been seen in the last 12 months. The
            account is available for use.  

          readOnly: true
          enum:
            - OPEN
            - CLOSED
            - FROZEN
            - PENDING
            - EDD
            - DORMANT
        asset_type_id:
          type: string
          description: >
            Asset type IDs follow a simple structure as follows:
            `{$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE}`  Simple asset type to
            test with include 

            - `ETHEREUM_SEPOLIA_ETH`

            - `ETHEREUM_SEPOLIA_USDC`

            - `SOLANA_DEVNET_SOL`

            - `BITCOIN_TESTNET_BTC`

            - `FIAT_TESTNET_USD`

            - `FIAT_TESTNET_USD`

            - `FIAT_MAINNET_USD`

            - `FIAT_TESTNET_EUR`
        product_type:
          type: string
          description: >-
            * `CLIENT` - Accounts at the Client level for managing client
            treasury operations

            * `DEPOSIT` - Accounts at the Customer level account for managing
            customer funds on platform

            * `VIRTUAL` - Accounts at the Customer level account for tracking
            externally managed customer funds 


            See [account concepts](#section/Concepts/Accounts) for additional
            details on these product types
          readOnly: true
          enum:
            - CLIENT
            - DEPOSIT
            - VIRTUAL
        product_id:
          type: string
          description: >-
            Client Product configuration this account respects. These are
            configured in the management portal. Default products include
            `BASIC_DEPOSIT`
        customer_id:
          type: string
          description: Customer ID for whom the account belongs to
        current_balance:
          type: number
          description: Full balance on the account including funds on hold
        available_balance:
          type: number
          description: Balance available for immediate spending (excludes held funds)
    AccountList:
      required:
        - accounts
      type: object
      properties:
        accounts:
          type: array
          description: Account List
          items:
            $ref: '#/components/schemas/Account'
    ResponseAccounts:
      required:
        - data
        - links
      type: object
      properties:
        data:
          $ref: '#/components/schemas/AccountList'
        links:
          $ref: '#/components/schemas/Page'
    ResponseAccount:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Account'
    ResponseStatements:
      required:
        - data
        - links
      type: object
      properties:
        data:
          $ref: '#/components/schemas/StatementList'
        links:
          $ref: '#/components/schemas/Page'
    StatementList:
      required:
        - statements
      type: object
      properties:
        statements:
          type: array
          description: Statement List
          items:
            $ref: '#/components/schemas/StatementSummary'
    StatementSummary:
      required:
        - id
        - month
        - year
      type: object
      properties:
        id:
          type: string
          description: Statement identifier
        year:
          type: integer
          description: Statement year
          format: int32
        month:
          type: integer
          description: Statement month
          format: int32
      description: Statement List
    ResponseStatement:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Statement'
    Statement:
      required:
        - account_id
        - asset_type_id
        - closing_balance
        - customer
        - opening_balance
        - statement_period
        - transactions
      type: object
      properties:
        account_id:
          type: string
          description: Account identifier
        asset_type_id:
          type: string
          description: Asset type identifier
        statement_period:
          type: string
          description: Statement period
        opening_balance:
          type: number
          description: Opening balance for the statement period
        closing_balance:
          type: number
          description: Closing balance for the statement period
        customer:
          $ref: '#/components/schemas/StatementCustomer'
        transactions:
          type: array
          description: List of transactions for the statement period
          items:
            $ref: '#/components/schemas/StatementTransaction'
    StatementCustomer:
      required:
        - name
      type: object
      properties:
        name:
          type: string
          description: Customer name
        address1:
          type: string
          description: Address Line 1
        address2:
          type: string
          description: Address Line 2
        address3:
          type: string
          description: Address Line 3
        city:
          type: string
          description: City
        state:
          type: string
          description: State / Province
        postal_code:
          type: string
          description: Postal / Zip Code
        country:
          type: string
          description: Country
      description: Customer information
    StatementTransaction:
      required:
        - amount
        - balance
        - description
        - transaction_date
        - transaction_id
        - transaction_posted_date
        - transaction_type
      type: object
      properties:
        transaction_id:
          type: string
          description: Transaction identifier
        transaction_type:
          type: string
          description: Type of transaction
        description:
          type: string
          description: Transaction description
        transaction_date:
          type: string
          description: Date time the transaction was performed
          format: date-time
        transaction_posted_date:
          type: string
          description: Date time the transaction was posted
          format: date-time
        amount:
          type: number
          description: Transaction amount
        balance:
          type: number
          description: Account balance after transaction
      description: List of transactions for the statement period
    ResponseSubscriptionBase:
      required:
        - data
      type: object
      properties:
        data:
          $ref: '#/components/schemas/SubscriptionBase'
    SubscriptionBase:
      required:
        - id
      type: object
      properties:
        id:
          type: string
          description: Subscription ID
          readOnly: true
  securitySchemes:
    OAuth2Flow:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: >-
            https://auth.layer2financial.com/oauth2/ausbdqlx69rH6OjWd696/v1/token
          scopes:
            customers:read: View Customer Data
            customers:write: Create and Modify Customer Related Data
            accounts:read: View Account Data
            accounts:write: Create and Modify Account Related Data
            settlements:read: View Settlements Data
            applications:read: View Application Data
            applications:write: Create and Modify Application Related Data
            transfers:read: View Transfers Data
            transfers:write: Create and Modify Transfers Related Data
            withdrawals:read: View Withdrawals Data
            withdrawals:write: Create and Modify Withdrawals Related Data
            exchanges:read: View Exchanges Data
            exchanges:write: Create and Modify Exchange Related Data
            deposits:read: View Deposit Related data
            deposits:write: Create and Modify Deposit Related Data
            subscriptions:read: View Subscription Related data
            subscriptions:write: Create and Modify Subscription Related Data
            payments:read: View Payments Related data
            payments:write: Create and Modify Payments Related Data
