Uphold Transactions API

Transactions.

Documentation

Specifications

Other Resources

OpenAPI Specification

uphold-transactions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 0.1.0
  title: Core Transactions API
  description: The Core API provides essential building blocks that empower businesses to embed financial services into their applications.
  contact:
    name: Uphold API Team
    email: developers@uphold.com
    url: https://developer.uphold.com
servers:
- url: https://api.enterprise.sandbox.uphold.com
  description: Sandbox
- url: https://api.enterprise.uphold.com
  description: Production
security:
- OAuth2: []
tags:
- name: Transactions
  description: Transactions.
paths:
  /core/transactions/quote:
    post:
      operationId: core.create-quote
      summary: Create quote
      description: Create a quote for a transaction.
      tags:
      - Transactions
      x-uphold:
        security:
          OAuth2:
            subjects:
            - user:business
            - user:individual
      security:
      - OAuth2:
        - core.transactions:create
      parameters:
      - $ref: '#/components/parameters/x-on-behalf-of'
      - $ref: '#/components/parameters/x-uphold-user-ip'
      - $ref: '#/components/parameters/x-uphold-user-agent'
      - $ref: '#/components/parameters/x-uphold-user-origin'
      - $ref: '#/components/parameters/x-uphold-user-country'
      - $ref: '#/components/parameters/x-uphold-user-subdivision'
      - $ref: '#/components/parameters/x-uphold-user-city'
      requestBody:
        $ref: '#/components/requestBodies/create-quote-request-body'
      responses:
        '201':
          $ref: '#/components/responses/create-quote-response'
        '400':
          $ref: '#/components/responses/bad-request'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/create-quote-not-found-response'
        '409':
          $ref: '#/components/responses/create-quote-conflict-response'
        '429':
          $ref: '#/components/responses/too-many-requests'
  /core/accounts/{accountId}/transactions:
    get:
      operationId: core.list-account-transactions
      summary: List account transactions
      description: List transactions for an account.
      tags:
      - Transactions
      x-uphold:
        security:
          OAuth2:
            subjects:
            - user:business
            - user:individual
      security:
      - OAuth2:
        - core.accounts:read
        - core.transactions:read
      parameters:
      - $ref: '#/components/parameters/account-id'
      - $ref: '#/components/parameters/pagination-per-page'
      - $ref: '#/components/parameters/x-on-behalf-of'
      - $ref: '#/components/parameters/x-uphold-user-ip'
      - $ref: '#/components/parameters/x-uphold-user-agent'
      - $ref: '#/components/parameters/x-uphold-user-origin'
      - $ref: '#/components/parameters/x-uphold-user-country'
      - $ref: '#/components/parameters/x-uphold-user-subdivision'
      - $ref: '#/components/parameters/x-uphold-user-city'
      responses:
        '200':
          $ref: '#/components/responses/list-account-transactions-response'
        '400':
          $ref: '#/components/responses/bad-request'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/list-account-transactions-not-found-response'
        '429':
          $ref: '#/components/responses/too-many-requests'
  /core/transactions:
    get:
      operationId: core.list-transactions
      summary: List transactions
      description: List transactions associated with a user.
      tags:
      - Transactions
      x-uphold:
        security:
          OAuth2:
            subjects:
            - user:business
            - user:individual
      security:
      - OAuth2:
        - core.transactions:read
      parameters:
      - $ref: '#/components/parameters/pagination-per-page'
      - $ref: '#/components/parameters/x-on-behalf-of'
      - $ref: '#/components/parameters/x-uphold-user-ip'
      - $ref: '#/components/parameters/x-uphold-user-agent'
      - $ref: '#/components/parameters/x-uphold-user-origin'
      - $ref: '#/components/parameters/x-uphold-user-country'
      - $ref: '#/components/parameters/x-uphold-user-subdivision'
      - $ref: '#/components/parameters/x-uphold-user-city'
      responses:
        '200':
          $ref: '#/components/responses/list-transactions-response'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too-many-requests'
    post:
      operationId: core.create-transaction
      summary: Create transaction
      description: Create transaction from a quote.
      tags:
      - Transactions
      x-uphold:
        security:
          OAuth2:
            subjects:
            - user:business
            - user:individual
      security:
      - OAuth2:
        - core.transactions:create
      parameters:
      - $ref: '#/components/parameters/x-on-behalf-of'
      - $ref: '#/components/parameters/x-uphold-user-ip'
      - $ref: '#/components/parameters/x-uphold-user-agent'
      - $ref: '#/components/parameters/x-uphold-user-origin'
      - $ref: '#/components/parameters/x-uphold-user-country'
      - $ref: '#/components/parameters/x-uphold-user-subdivision'
      - $ref: '#/components/parameters/x-uphold-user-city'
      requestBody:
        $ref: '#/components/requestBodies/create-transaction-request-body'
      responses:
        '201':
          $ref: '#/components/responses/create-transaction-response'
        '400':
          $ref: '#/components/responses/bad-request'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/create-transaction-not-found-response'
        '409':
          $ref: '#/components/responses/create-transaction-conflict-response'
        '429':
          $ref: '#/components/responses/too-many-requests'
  /core/transactions/{transactionId}:
    get:
      operationId: core.get-transaction
      summary: Get transaction
      description: Retrieve an existing transaction by id.
      tags:
      - Transactions
      x-uphold:
        security:
          OAuth2:
            subjects:
            - user:business
            - user:individual
      security:
      - OAuth2:
        - core.transactions:read
      parameters:
      - $ref: '#/components/parameters/transaction-id'
      - $ref: '#/components/parameters/x-on-behalf-of'
      - $ref: '#/components/parameters/x-uphold-user-ip'
      - $ref: '#/components/parameters/x-uphold-user-agent'
      - $ref: '#/components/parameters/x-uphold-user-origin'
      - $ref: '#/components/parameters/x-uphold-user-country'
      - $ref: '#/components/parameters/x-uphold-user-subdivision'
      - $ref: '#/components/parameters/x-uphold-user-city'
      responses:
        '200':
          $ref: '#/components/responses/get-transaction-response'
        '400':
          $ref: '#/components/responses/bad-request'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/get-transaction-not-found-response'
        '429':
          $ref: '#/components/responses/too-many-requests'
  /core/transactions/{transactionId}/requests-for-information:
    get:
      operationId: core.list-transaction-requests-for-information
      summary: List requests for information
      description: List requests for information associated with a transaction.
      tags:
      - Transactions
      x-uphold:
        security:
          OAuth2:
            subjects:
            - user:business
            - user:individual
      security:
      - OAuth2:
        - core.transactions.requests-for-information:read
      parameters:
      - $ref: '#/components/parameters/transaction-id'
      - $ref: '#/components/parameters/x-on-behalf-of'
      - $ref: '#/components/parameters/x-uphold-user-ip'
      - $ref: '#/components/parameters/x-uphold-user-agent'
      - $ref: '#/components/parameters/x-uphold-user-origin'
      - $ref: '#/components/parameters/x-uphold-user-country'
      - $ref: '#/components/parameters/x-uphold-user-subdivision'
      - $ref: '#/components/parameters/x-uphold-user-city'
      responses:
        '200':
          $ref: '#/components/responses/list-transaction-requests-for-information-response'
        '400':
          $ref: '#/components/responses/bad-request'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/transaction-not-found-response'
        '429':
          $ref: '#/components/responses/too-many-requests'
  /core/transactions/{transactionId}/requests-for-information/{requestForInformationId}:
    get:
      operationId: core.get-transaction-request-for-information
      summary: Get request for information
      description: Retrieve a request for information associated with a transaction.
      tags:
      - Transactions
      x-uphold:
        security:
          OAuth2:
            subjects:
            - user:business
            - user:individual
      security:
      - OAuth2:
        - core.transactions.requests-for-information:read
      parameters:
      - $ref: '#/components/parameters/transaction-id'
      - $ref: '#/components/parameters/request-for-information-id'
      - $ref: '#/components/parameters/x-on-behalf-of'
      - $ref: '#/components/parameters/x-uphold-user-ip'
      - $ref: '#/components/parameters/x-uphold-user-agent'
      - $ref: '#/components/parameters/x-uphold-user-origin'
      - $ref: '#/components/parameters/x-uphold-user-country'
      - $ref: '#/components/parameters/x-uphold-user-subdivision'
      - $ref: '#/components/parameters/x-uphold-user-city'
      responses:
        '200':
          $ref: '#/components/responses/get-transaction-request-for-information-response'
        '400':
          $ref: '#/components/responses/bad-request'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/get-transaction-request-for-information-not-found-response'
        '429':
          $ref: '#/components/responses/too-many-requests'
    put:
      operationId: core.update-transaction-request-for-information
      summary: Update request for information
      description: Update a request for information associated with a transaction.
      tags:
      - Transactions
      x-uphold:
        security:
          OAuth2:
            subjects:
            - user:business
            - user:individual
      security:
      - OAuth2:
        - core.transactions.requests-for-information:update
      parameters:
      - $ref: '#/components/parameters/transaction-id'
      - $ref: '#/components/parameters/request-for-information-id'
      - $ref: '#/components/parameters/x-on-behalf-of'
      - $ref: '#/components/parameters/x-uphold-user-ip'
      - $ref: '#/components/parameters/x-uphold-user-agent'
      - $ref: '#/components/parameters/x-uphold-user-origin'
      - $ref: '#/components/parameters/x-uphold-user-country'
      - $ref: '#/components/parameters/x-uphold-user-subdivision'
      - $ref: '#/components/parameters/x-uphold-user-city'
      requestBody:
        $ref: '#/components/requestBodies/update-transaction-request-for-information-request-body'
      responses:
        '200':
          $ref: '#/components/responses/update-transaction-request-for-information-response'
        '400':
          $ref: '#/components/responses/bad-request'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/update-transaction-request-for-information-not-found-response'
        '409':
          $ref: '#/components/responses/update-transaction-request-for-information-conflict-response'
        '429':
          $ref: '#/components/responses/too-many-requests'
webhooks:
  core.transaction.created:
    post:
      operationId: core.transaction-created
      summary: Transaction created
      description: A new transaction has been created.
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/webhook-id'
      - $ref: '#/components/parameters/webhook-timestamp'
      - $ref: '#/components/parameters/webhook-signature'
      requestBody:
        description: Transaction created event.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/transaction-webhook-event'
            examples:
              Transaction Created:
                value:
                  id: 123e4567-e89b-12d3-a456-426614174000
                  type: core.transaction.created
                  createdAt: '2021-01-01T00:00:00.000Z'
                  data:
                    transaction:
                      id: 623000c8-9bdf-4a2b-aa3d-6a6b44a7f6a0
                      origin:
                        amount: '100.00'
                        asset: GBP
                        rate: '47619.04761904762'
                        node:
                          type: account
                          id: b98e4f0d-a67d-4126-a99d-666f7e0315d9
                          ownerId: e4ce04dc-67b7-4e9f-af91-482cb6f9fc4a
                      destination:
                        amount: '0.0021'
                        asset: BTC
                        rate: '0.000021'
                        node:
                          type: account
                          id: 555a99a1-620d-4431-a0ac-b43e1aad2bdc
                          ownerId: e4ce04dc-67b7-4e9f-af91-482cb6f9fc4a
                      denomination:
                        amount: '100.00'
                        asset: GBP
                        target: origin
                        rate: '1'
                      fees: []
                      status: processing
                      quotedAt: '2024-07-24T15:02:39.000Z'
                      createdAt: '2024-07-24T15:22:39.000Z'
                      updatedAt: '2024-07-24T15:32:39.000Z'
      responses:
        '200':
          description: Return a 200 status to indicate that the data was received successfully.
  core.transaction.status-changed:
    post:
      operationId: core.transaction-status-changed
      summary: Transaction status changed
      description: The transaction status has been changed.
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/webhook-id'
      - $ref: '#/components/parameters/webhook-timestamp'
      - $ref: '#/components/parameters/webhook-signature'
      requestBody:
        description: Transaction status changed event.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/transaction-webhook-event'
            examples:
              Transaction Status Changed:
                value:
                  id: 123e4567-e89b-12d3-a456-426614174000
                  type: core.transaction.status-changed
                  createdAt: '2021-01-01T00:00:00.000Z'
                  data:
                    transaction:
                      id: 623000c8-9bdf-4a2b-aa3d-6a6b44a7f6a0
                      origin:
                        amount: '100.00'
                        asset: GBP
                        rate: '47619.04761904762'
                        node:
                          type: account
                          id: b98e4f0d-a67d-4126-a99d-666f7e0315d9
                          ownerId: e4ce04dc-67b7-4e9f-af91-482cb6f9fc4a
                      destination:
                        amount: '0.0021'
                        asset: BTC
                        rate: '0.000021'
                        node:
                          type: account
                          id: 555a99a1-620d-4431-a0ac-b43e1aad2bdc
                          ownerId: e4ce04dc-67b7-4e9f-af91-482cb6f9fc4a
                      denomination:
                        amount: '100.00'
                        asset: GBP
                        target: origin
                        rate: '1'
                      fees: []
                      status: completed
                      quotedAt: '2024-07-24T15:02:39.000Z'
                      createdAt: '2024-07-24T15:22:39.000Z'
                      updatedAt: '2024-07-24T15:32:39.000Z'
      responses:
        '200':
          description: Return a 200 status to indicate that the data was received successfully.
components:
  schemas:
    quote-requirements:
      type: array
      items:
        type: string
        enum:
        - travel-rule
        - authorize:3ds
        - authorize:apple-pay
        - authorize:paypal
        - authorize:venmo
    transaction-node-crypto-address-execution-simulated:
      type: object
      properties:
        mode:
          description: The mode of execution.
          type: string
          enum:
          - simulated
        transactionHash:
          description: The simulated transaction hash.
          $ref: '#/components/schemas/string-no-edge-spaces'
      required:
      - mode
    transaction-destination-node:
      type: object
      discriminator:
        propertyName: type
        mapping:
          account: '#/components/schemas/transaction-node-account'
          external-account: '#/components/schemas/transaction-node-external-account'
          bank-address: '#/components/schemas/transaction-node-bank-address'
          apm: '#/components/schemas/transaction-node-apm'
          crypto-address: '#/components/schemas/transaction-node-crypto-address'
      oneOf:
      - title: Account
        $ref: '#/components/schemas/transaction-node-account'
      - title: External account
        $ref: '#/components/schemas/transaction-node-external-account'
      - title: Bank address
        $ref: '#/components/schemas/transaction-node-bank-address'
      - title: Alternative payment method
        $ref: '#/components/schemas/transaction-node-apm'
      - title: Crypto address
        $ref: '#/components/schemas/transaction-node-crypto-address'
    transaction-webhook-event:
      allOf:
      - $ref: '#/components/schemas/webhook-event'
      - type: object
        properties:
          data:
            type: object
            properties:
              transaction:
                $ref: '#/components/schemas/transaction'
            required:
            - transaction
    transaction-node-crypto-address-execution:
      type: object
      discriminator:
        propertyName: mode
        mapping:
          onchain: '#/components/schemas/transaction-node-crypto-address-execution-onchain'
          offchain: '#/components/schemas/transaction-node-crypto-address-execution-offchain'
          simulated: '#/components/schemas/transaction-node-crypto-address-execution-simulated'
      oneOf:
      - title: On-chain
        $ref: '#/components/schemas/transaction-node-crypto-address-execution-onchain'
      - title: Off-chain
        $ref: '#/components/schemas/transaction-node-crypto-address-execution-offchain'
      - title: Simulated
        $ref: '#/components/schemas/transaction-node-crypto-address-execution-simulated'
    create-quote-node-crypto-address:
      type: object
      properties:
        type:
          description: The type of the node.
          type: string
          enum:
          - crypto-address
        asset:
          allOf:
          - $ref: '#/components/schemas/string-no-edge-spaces'
          - description: The asset to be used in the operation.
            type: string
            maxLength: 20
        network:
          allOf:
          - $ref: '#/components/schemas/string-no-edge-spaces'
          - description: The network that the crypto address is on.
            type: string
            maxLength: 50
        address:
          allOf:
          - $ref: '#/components/schemas/string-no-edge-spaces'
          - description: The crypto address.
            type: string
            maxLength: 256
        reference:
          allOf:
          - $ref: '#/components/schemas/string-no-edge-spaces'
          - description: The additional identifier (e.g., destination tag, memo, or message) required for some networks such as XRP (Ripple), XLM (Stellar), EOS, and others. If the network does not require a tag, this field can be omitted.
            type: string
            maxLength: 255
      required:
      - type
      - asset
      - network
      - address
    transaction:
      type: object
      properties:
        id:
          description: The id of the transaction.
          type: string
          format: uuid
        origin:
          description: The origin of the transaction.
          $ref: '#/components/schemas/transaction-origin-endpoint'
        destination:
          description: The destination of the transaction.
          $ref: '#/components/schemas/transaction-destination-endpoint'
        denomination:
          description: The denomination of the transaction.
          $ref: '#/components/schemas/transaction-denomination'
        fees:
          description: The fees of the transaction.
          $ref: '#/components/schemas/transaction-fees'
        status:
          description: Status of the transaction.
          type: string
          enum:
          - processing
          - on-hold
          - completed
          - failed
        statusDetails:
          description: The details of the status of the transaction.
          type: object
          properties:
            reason:
              $ref: '#/components/schemas/transaction-status-reason'
        quotedAt:
          description: The time at which the quote was created.
          type: string
          format: date-time
        createdAt:
          description: The time at which the transaction was created.
          type: string
          format: date-time
        updatedAt:
          description: The last time at which the transaction was updated.
          type: string
          format: date-time
        completedAt:
          description: The date and time the transaction was completed.
          type: string
          format: date-time
      required:
      - id
      - origin
      - destination
      - fees
      - status
      - createdAt
      - updatedAt
      - quotedAt
    create-quote-destination-node:
      type: object
      discriminator:
        propertyName: type
        mapping:
          account: '#/components/schemas/create-quote-node-account'
          external-account: '#/components/schemas/create-quote-node-external-account'
          apm: '#/components/schemas/create-quote-node-apm'
          crypto-address: '#/components/schemas/create-quote-node-crypto-address'
      oneOf:
      - title: Account
        $ref: '#/components/schemas/create-quote-node-account'
      - title: External account
        $ref: '#/components/schemas/create-quote-node-external-account'
      - title: Alternative payment method
        $ref: '#/components/schemas/create-quote-node-apm'
      - title: Crypto address
        $ref: '#/components/schemas/create-quote-node-crypto-address'
      required:
      - type
    create-transaction-authorize-3ds-requirement:
      type: object
      properties:
        name:
          description: The name of the requirement.
          type: string
          enum:
          - authorize:3ds
        returnUrl:
          description: The URL to redirect after the 3DS authorization flow.
          type: string
          format: uri
          pattern: ^[a-zA-Z][a-zA-Z0-9+\-.]*:\/\/[^\s]+$
      required:
      - name
      - returnUrl
    transaction-node-bank-address:
      type: object
      properties:
        type:
          description: The type of the node.
          type: string
          enum:
          - bank-address
        network:
          description: The network of the bank transfer.
          type: string
      required:
      - type
      - network
    string-no-edge-spaces:
      type: string
      pattern: ^\S.*\S$|^\S$
    create-transaction-requirement:
      type: object
      discriminator:
        propertyName: name
        mapping:
          authorize:3ds: '#/components/schemas/create-transaction-authorize-3ds-requirement'
          authorize:apple-pay: '#/components/schemas/create-transaction-authorize-apple-pay-requirement'
          authorize:paypal: '#/components/schemas/create-transaction-authorize-paypal-venmo-requirement'
          authorize:venmo: '#/components/schemas/create-transaction-authorize-paypal-venmo-requirement'
      oneOf:
      - title: Authorize 3DS
        $ref: '#/components/schemas/create-transaction-authorize-3ds-requirement'
      - title: Authorize Apple Pay
        $ref: '#/components/schemas/create-transaction-authorize-apple-pay-requirement'
      - title: Authorize PayPal/Venmo
        $ref: '#/components/schemas/create-transaction-authorize-paypal-venmo-requirement'
    transaction-node-crypto-address-execution-offchain:
      type: object
      properties:
        mode:
          description: The mode of execution.
          type: string
          enum:
          - offchain
        accountId:
          description: The account id to which the off-chain transaction was made.
          type: string
          format: uuid
        accountOwnerId:
          description: The id of the user that owns the account to which the off-chain transaction was made.
          type: string
          format: uuid
      required:
      - mode
    transaction-node-external-account:
      type: object
      properties:
        type:
          description: The type of the node.
          type: string
          enum:
          - external-account
        id:
          description: The external account id.
          type: string
          format: uuid
        confirmationUrl:
          description: The URL to confirm the authorization using the external account (e.g., 3DS).
          type: string
          format: uri
        ownerId:
          description: The id of the user that owns the external account.
          type: string
          format: uuid
        network:
          description: The network used for the transaction with the external account.
          type: string
      required:
      - type
      - id
      - ownerId
    transaction-origin-endpoint:
      type: object
      properties:
        asset:
          description: The asset of the endpoint.
          type: string
        amount:
          description: The amount of the endpoint.
          type: string
        rate:
          description: The rate of the endpoint against its counter-part (origin to destination and vice-versa).
          type: string
        node:
          description: The node of the endpoint.
          $ref: '#/components/schemas/transaction-origin-node'
      required:
      - asset
      - amount
      - rate
      - node
    transaction-destination-endpoint:
      type: object
      properties:
        asset:
          description: The asset of the endpoint.
          type: string
        amount:
          description: The amount of the endpoint.
          type: string
        rate:
          description: The rate of the endpoint against its counter-part (origin to destination and vice-versa).
          type: string
        node:
          description: The node of the endpoint.
          $ref: '#/components/schemas/transaction-destination-node'
      required:
      - asset
      - amount
      - rate
      - node
    create-transaction-authorize-paypal-venmo-requirement:
      type: object
      properties:
        name:
          description: The name of the requirement.
          type: string
          enum:
          - authorize:paypal
          - authorize:venmo
        provider:
          description: The provider used for the authorization.
          type: string
          enum:
          - braintree
        deviceData:
          description: The device data for fraud prevention.
          type: string
        tokenizedPayment:
          description: The payload from the payment provider.
          type: object
          additionalProperties: true
      required:
      - name
      - provider
      - deviceData
    metadata:
      type: object
      additionalProperties: true
      minProperties: 1
    transaction-node-account:
      type: object
      properties:
        type:
          description: The type of the node.
          type: string
          enum:
          - account
        id:
          description: The account id.
          type: string
          format: uuid
        ownerId:
          description: The id of the user that owns the account.
          type: string
          format: uuid
      required:
      - type
      - id
      - ownerId
    transaction-status-reason:
      description: The reason why the transaction failed.
      type: string
      enum:
      - apm-account-holder-data-mismatch
      - apm-authorization-failed
      - apm-missing-account-holder-data
      - apm-payment-method-declined
      - bank-account-holder-name-mismatch
      - beneficiary-country-restricted
      - card-declined-by-bank
      - card-expired
      - card-permanently-declined-by-bank
      - card-unauthorized
      - card-unsupported
      - card-withdrawals-unsupported
      - insufficient-funds
      - pending-requests-for-information
      - provider-maximum-limit-exceeded
      - screening-verification-failed
      - travel-rule-verification-failed
      - unspecified-error
      - velocity
    transaction-node-crypto-address:
      type: object
      properties:
        type:
          description: The type of the node.
          type: string
          enum:
          - crypto-address
        network:
          description: The network that the crypto address is on.
          $ref: '#/components/schemas/string-no-edge-spaces'
        address:
          description: The crypto address (may not be available for deposits).
          $ref: '#/components/schemas/string-no-edge-spaces'
        reference:
          description: The additional identifier (e.g., destination tag, memo, or message) for the crypto address.
          type: string
        execution:
          description: The execution details for the transaction.
          $ref: '#/components/schemas/transaction-node-crypto-address-execution'
      required:
      - type
      - network
    create-quote-node-external-account:
      type: object
      properties:
        type:
          description: The type of the node.
          type: string
          enum:
          - external-account
        id:
          description: The external account id.
          type: string
          format: uuid
        network:
          allOf:
          - $ref: '#/components/schemas/string-no-edge-spaces'
          - description: The network used for the transaction with the external account.
      required:
      - type
      - id
    subdivision-code-for-request:
      type: string
      pattern: ^[A-Z]{2}-[A-Z0-9]{1,3}$
    country-code-for-request:
      type: string
      pattern: ^[A-Z]{2}$
    request-for-information:
      type: object
      properties:
        id:
          type: string
          description: The id of the RFI.
        type:
          description: The type of the RFI.
          type: string
          enum:
          - travel-rule
        status:
          description: The status of the RFI.
          type: string
          enum:
          - ok
          - pending
          - expired
          - failed
        data:
          type: object
          additionalProperties: true
        createdAt:
          description: The time at which the RFI was created.
          type: string
          format: date-time
        updatedAt:
          description: The date and time when the RFI was updated.
          type: string
          format: date-time
      required:
      - id
      - type
      - status
      - createdAt
      - updatedAt
    feedback:
      description: A feedback message with a code and human-readable description.
      type: object
      properties:
        code:
          description: A short string with a brief explanation about the code reported.
          type: string
        message:
        

# --- truncated at 32 KB (114 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/uphold/refs/heads/main/openapi/uphold-transactions-api-openapi.yml