asyncapi: 3.0.0
info:
  title: Ingo Banking Platform — Webhooks
  version: 1.0.0
  description: >
    Real-time event notifications delivered by the Ingo Banking Platform to your
    registered webhook URL.


    Events are POSTed as JSON to your configured `webhook_url`. Return any 2xx
    status to acknowledge

    receipt. Non-2xx responses are retried with exponential backoff. Use
    `data.event_id` as your

    deduplication key — events may be redelivered under transient failure.
  contact:
    name: Ingo Payments Integrations
    url: https://developers.ingopayments.com
defaultContentType: application/json
servers:
  webhook:
    host: your-webhook-endpoint.example.com
    protocol: https
    description: >-
      The Ingo Banking Platform delivers events via HTTP POST to your registered
      HTTPS endpoint.
channels:
  UserCreated:
    address: user.created
    title: User Created
    tags:
      - name: User Events
    description: Fired when a new individual user profile is created.
    messages:
      UserCreatedMessage:
        $ref: '#/components/messages/UserCreatedMessage'
  UserKycSuccess:
    address: user.kyc.success
    title: User KYC Success
    tags:
      - name: User Events
    description: Fired when a user passes KYC verification.
    messages:
      UserKycSuccessMessage:
        $ref: '#/components/messages/UserKycSuccessMessage'
  UserKycFailed:
    address: user.kyc.failed
    title: User KYC Failed
    tags:
      - name: User Events
    description: >-
      Fired when a user fails KYC. The data.reasons and data.reasons_code arrays
      carry provider-supplied failure information.
    messages:
      UserKycFailedMessage:
        $ref: '#/components/messages/UserKycFailedMessage'
  BusinessCreated:
    address: business.created
    title: Business Created
    tags:
      - name: Business Events
    description: Fired when a new business profile is created.
    messages:
      BusinessCreatedMessage:
        $ref: '#/components/messages/BusinessCreatedMessage'
  BusinessKybSuccess:
    address: business.kyb.success
    title: Business KYB Success
    tags:
      - name: Business Events
    description: Fired when a business passes KYB verification.
    messages:
      BusinessKybSuccessMessage:
        $ref: '#/components/messages/BusinessKybSuccessMessage'
  BusinessKybFailed:
    address: business.kyb.failed
    title: Business KYB Failed
    tags:
      - name: Business Events
    description: Fired when a business fails KYB. Carries provider-supplied reasons.
    messages:
      BusinessKybFailedMessage:
        $ref: '#/components/messages/BusinessKybFailedMessage'
  WalletCreated:
    address: wallet.created
    title: Wallet Created
    tags:
      - name: Wallet Events
    description: >-
      Fired when a new ledger wallet is created. Currently emitted for users
      only.
    messages:
      WalletCreatedMessage:
        $ref: '#/components/messages/WalletCreatedMessage'
  WalletTopupSuccess:
    address: wallet.topup.success
    title: Wallet Top-Up Success
    tags:
      - name: Wallet Events
    description: Fired when funds are successfully added to a wallet.
    messages:
      WalletTopupSuccessMessage:
        $ref: '#/components/messages/WalletTopupSuccessMessage'
  WalletTopupFailed:
    address: wallet.topup.failed
    title: Wallet Top-Up Failed
    tags:
      - name: Wallet Events
    description: >-
      Fired when a wallet top-up fails. transaction_id, currency, and amount may
      be empty if the failure occurred before those values were resolved.
    messages:
      WalletTopupFailedMessage:
        $ref: '#/components/messages/WalletTopupFailedMessage'
  AccountCreated:
    address: account.created
    title: Account Created
    tags:
      - name: Account Lifecycle
    description: Fired when a new entity account is created.
    messages:
      AccountCreatedMessage:
        $ref: '#/components/messages/AccountCreatedMessage'
  AccountSaved:
    address: account.saved
    title: Account Saved
    tags:
      - name: Account Lifecycle
    description: Fired when an entity account record is updated.
    messages:
      AccountSavedMessage:
        $ref: '#/components/messages/AccountSavedMessage'
  AccountLinkCreated:
    address: account.link.created
    title: Account Link Created
    tags:
      - name: Account Lifecycle
    description: Fired when an external bank account or card is linked to an entity.
    messages:
      AccountLinkCreatedMessage:
        $ref: '#/components/messages/AccountLinkCreatedMessage'
  AccountLinkDeleted:
    address: account.link.deleted
    title: Account Link Deleted
    tags:
      - name: Account Lifecycle
    description: Fired when a linked external account or card is removed.
    messages:
      AccountLinkDeletedMessage:
        $ref: '#/components/messages/AccountLinkDeletedMessage'
  AccountIssueCreated:
    address: account.issue.created
    title: Account Issue Created
    tags:
      - name: Account Lifecycle
    description: >-
      Fired when a VBAN or RBA is successfully issued to an entity. Use
      event_description to determine whether the issued account is a Virtual
      Bank Account or Routable Bank Account.
    messages:
      AccountIssueCreatedMessage:
        $ref: '#/components/messages/AccountIssueCreatedMessage'
  AccountIssueFailed:
    address: account.issue.failed
    title: Account Issue Failed
    tags:
      - name: Account Lifecycle
    description: Fired when VBAN or RBA issuance fails.
    messages:
      AccountIssueFailedMessage:
        $ref: '#/components/messages/AccountIssueFailedMessage'
  AccountAssignmentSuccess:
    address: account.assignment.success
    title: Account Assignment Success
    tags:
      - name: Account Assignment
    description: >-
      Fired when bank account assignment succeeds. The payload shape depends on
      whether this was a single-record or bulk assignment. Branch on the
      presence of process_id: single-record payloads include entity_id,
      entity_type, and an account block; bulk payloads include process_id,
      event_type=account.assignment.bulk, and a batch block.
    messages:
      AccountAssignmentSuccessMessage:
        $ref: '#/components/messages/AccountAssignmentSuccessMessage'
  AccountAssignmentFailed:
    address: account.assignment.failed
    title: Account Assignment Failed
    tags:
      - name: Account Assignment
    description: >-
      Fired when bank account assignment fails. Same single/bulk disambiguation
      as account.assignment.success.
    messages:
      AccountAssignmentFailedMessage:
        $ref: '#/components/messages/AccountAssignmentFailedMessage'
  AccountTransferCreated:
    address: account.transfer.created
    title: Account Transfer Created
    tags:
      - name: Transfer Events
    description: Fired when a new transfer is initiated.
    messages:
      AccountTransferCreatedMessage:
        $ref: '#/components/messages/AccountTransferCreatedMessage'
  AccountTransferCompleted:
    address: account.transfer.completed
    title: Account Transfer Completed
    tags:
      - name: Transfer Events
    description: Fired when a transfer settles successfully.
    messages:
      AccountTransferCompletedMessage:
        $ref: '#/components/messages/AccountTransferCompletedMessage'
  AccountTransferReversed:
    address: account.transfer.reversed
    title: Account Transfer Reversed
    tags:
      - name: Transfer Events
    description: >-
      Fired when a previously completed transfer is reversed. Slim payload —
      omits account_id, account_type, currency, amount, and memo.
    messages:
      AccountTransferReversedMessage:
        $ref: '#/components/messages/AccountTransferReversedMessage'
  AccountTransferBlocked:
    address: account.transfer.blocked
    title: Account Transfer Blocked
    tags:
      - name: Transfer Events
    description: >-
      Fired when a transfer is blocked for compliance, risk, or policy reasons.
      Slim payload.
    messages:
      AccountTransferBlockedMessage:
        $ref: '#/components/messages/AccountTransferBlockedMessage'
  AccountTransferFailed:
    address: account.transfer.failed
    title: Account Transfer Failed
    tags:
      - name: Transfer Events
    description: Fired when a transfer cannot be processed.
    messages:
      AccountTransferFailedMessage:
        $ref: '#/components/messages/AccountTransferFailedMessage'
  AccountTransferReturned:
    address: account.transfer.returned
    title: Account Transfer Returned
    tags:
      - name: Transfer Events
    description: >-
      Fired when a transfer is returned by the receiving institution. Includes
      both the original transfer_id and the return entry's adjustment_id.
    messages:
      AccountTransferReturnedMessage:
        $ref: '#/components/messages/AccountTransferReturnedMessage'
  AccountOverdraftCreated:
    address: account.overdraft.created
    title: Account Overdraft Created
    tags:
      - name: Transfer Events
    description: >-
      Fired when a transaction causes an overdraft on the entity's VBAN, covered
      by the program reserve. The reference block carries overdraft_id and
      amount_intent.
    messages:
      AccountOverdraftCreatedMessage:
        $ref: '#/components/messages/AccountOverdraftCreatedMessage'
  AccountTransferException:
    address: account.transfer.exception
    title: Account Transfer Exception
    tags:
      - name: Transfer Events
    description: >-
      Fired when an entity transaction ledgering operation fails (e.g. an
      inbound credit cannot be matched to a VBAN). The transaction is posted to
      the program balance. The reference block carries bank-file context.
    messages:
      AccountTransferExceptionMessage:
        $ref: '#/components/messages/AccountTransferExceptionMessage'
  CardIssueCreated:
    address: card.issue.created
    title: Card Issue Created
    tags:
      - name: Card Lifecycle
    description: >-
      In Development — Card Issuance is not yet generally available. Fired when
      a card is successfully issued to an entity. The card block is present.
    messages:
      CardIssueCreatedMessage:
        $ref: '#/components/messages/CardIssueCreatedMessage'
  CardIssueFailed:
    address: card.issue.failed
    title: Card Issue Failed
    tags:
      - name: Card Lifecycle
    description: >-
      In Development — Card Issuance is not yet generally available. Fired when
      card issuance fails. The card block is NOT present on this event. Note:
      the status field carries 'completed' — this reflects the event-delivery
      status, not the card outcome.
    messages:
      CardIssueFailedMessage:
        $ref: '#/components/messages/CardIssueFailedMessage'
  CardStatusActive:
    address: card.status.active
    title: Card Status Active
    tags:
      - name: Card Lifecycle
    description: >-
      In Development — Card Issuance is not yet generally available. Fired when
      a card transitions to the active state.
    messages:
      CardStatusActiveMessage:
        $ref: '#/components/messages/CardStatusActiveMessage'
  CardStatusFrozen:
    address: card.status.frozen
    title: Card Status Frozen
    tags:
      - name: Card Lifecycle
    description: >-
      In Development — Card Issuance is not yet generally available. Fired when
      a card transitions to the frozen state.
    messages:
      CardStatusFrozenMessage:
        $ref: '#/components/messages/CardStatusFrozenMessage'
  CardStatusInactive:
    address: card.status.inactive
    title: Card Status Inactive
    tags:
      - name: Card Lifecycle
    description: >-
      In Development — Card Issuance is not yet generally available. Fired when
      a card transitions to the inactive state.
    messages:
      CardStatusInactiveMessage:
        $ref: '#/components/messages/CardStatusInactiveMessage'
  CardStatusPending:
    address: card.status.pending
    title: Card Status Pending
    tags:
      - name: Card Lifecycle
    description: >-
      In Development — Card Issuance is not yet generally available. Fired when
      a card transitions to the pending state.
    messages:
      CardStatusPendingMessage:
        $ref: '#/components/messages/CardStatusPendingMessage'
  CardStatusInreview:
    address: card.status.inreview
    title: Card Status In Review
    tags:
      - name: Card Lifecycle
    description: >-
      In Development — Card Issuance is not yet generally available. Fired when
      a card transitions to the inreview state.
    messages:
      CardStatusInreviewMessage:
        $ref: '#/components/messages/CardStatusInreviewMessage'
  CardStatusTerminated:
    address: card.status.terminated
    title: Card Status Terminated
    tags:
      - name: Card Lifecycle
    description: >-
      In Development — Card Issuance is not yet generally available. Fired when
      a card transitions to the terminated state.
    messages:
      CardStatusTerminatedMessage:
        $ref: '#/components/messages/CardStatusTerminatedMessage'
  CardStatusReissue:
    address: card.status.reissue
    title: Card Status Reissue
    tags:
      - name: Card Lifecycle
    description: >-
      In Development — Card Issuance is not yet generally available. Fired when
      a card reissue request is processed. Inside the card block, card.status
      will be the literal string 'reissue'.
    messages:
      CardStatusReissueMessage:
        $ref: '#/components/messages/CardStatusReissueMessage'
  CardAuthCreated:
    address: card.auth.created
    title: Card Auth Created
    tags:
      - name: Card Authorization
    description: >-
      In Development — Card Issuance is not yet generally available. Fired when
      a card authorization is created (transaction approved, funds held).
    messages:
      CardAuthCreatedMessage:
        $ref: '#/components/messages/CardAuthCreatedMessage'
  CardAuthCleared:
    address: card.auth.cleared
    title: Card Auth Cleared
    tags:
      - name: Card Authorization
    description: >-
      In Development — Card Issuance is not yet generally available. Fired when
      a previously created authorization clears (settles).
    messages:
      CardAuthClearedMessage:
        $ref: '#/components/messages/CardAuthClearedMessage'
  CardAuthUpdated:
    address: card.auth.updated
    title: Card Auth Updated
    tags:
      - name: Card Authorization
    description: >-
      In Development — Card Issuance is not yet generally available. Fired when
      an existing authorization amount is updated. Includes both the new amount
      and the previous old_amount.
    messages:
      CardAuthUpdatedMessage:
        $ref: '#/components/messages/CardAuthUpdatedMessage'
  CardAuthReversed:
    address: card.auth.reversed
    title: Card Auth Reversed
    tags:
      - name: Card Authorization
    description: >-
      In Development — Card Issuance is not yet generally available. Fired when
      a previously created authorization is reversed (e.g. merchant cancelled
      before clearing).
    messages:
      CardAuthReversedMessage:
        $ref: '#/components/messages/CardAuthReversedMessage'
  CardAuthRefund:
    address: card.auth.refund
    title: Card Auth Refund
    tags:
      - name: Card Authorization
    description: >-
      In Development — Card Issuance is not yet generally available. Fired when
      a refund (merchant credit) is posted against a card.
    messages:
      CardAuthRefundMessage:
        $ref: '#/components/messages/CardAuthRefundMessage'
operations:
  receiveUserCreated:
    action: receive
    channel:
      $ref: '#/channels/UserCreated'
    summary: User Created
    tags:
      - name: User Events
  receiveUserKycSuccess:
    action: receive
    channel:
      $ref: '#/channels/UserKycSuccess'
    summary: User KYC Success
    tags:
      - name: User Events
  receiveUserKycFailed:
    action: receive
    channel:
      $ref: '#/channels/UserKycFailed'
    summary: User KYC Failed
    tags:
      - name: User Events
  receiveBusinessCreated:
    action: receive
    channel:
      $ref: '#/channels/BusinessCreated'
    summary: Business Created
    tags:
      - name: Business Events
  receiveBusinessKybSuccess:
    action: receive
    channel:
      $ref: '#/channels/BusinessKybSuccess'
    summary: Business KYB Success
    tags:
      - name: Business Events
  receiveBusinessKybFailed:
    action: receive
    channel:
      $ref: '#/channels/BusinessKybFailed'
    summary: Business KYB Failed
    tags:
      - name: Business Events
  receiveWalletCreated:
    action: receive
    channel:
      $ref: '#/channels/WalletCreated'
    summary: Wallet Created
    tags:
      - name: Wallet Events
  receiveWalletTopupSuccess:
    action: receive
    channel:
      $ref: '#/channels/WalletTopupSuccess'
    summary: Wallet Top-Up Success
    tags:
      - name: Wallet Events
  receiveWalletTopupFailed:
    action: receive
    channel:
      $ref: '#/channels/WalletTopupFailed'
    summary: Wallet Top-Up Failed
    tags:
      - name: Wallet Events
  receiveAccountCreated:
    action: receive
    channel:
      $ref: '#/channels/AccountCreated'
    summary: Account Created
    tags:
      - name: Account Lifecycle
  receiveAccountSaved:
    action: receive
    channel:
      $ref: '#/channels/AccountSaved'
    summary: Account Saved
    tags:
      - name: Account Lifecycle
  receiveAccountLinkCreated:
    action: receive
    channel:
      $ref: '#/channels/AccountLinkCreated'
    summary: Account Link Created
    tags:
      - name: Account Lifecycle
  receiveAccountLinkDeleted:
    action: receive
    channel:
      $ref: '#/channels/AccountLinkDeleted'
    summary: Account Link Deleted
    tags:
      - name: Account Lifecycle
  receiveAccountIssueCreated:
    action: receive
    channel:
      $ref: '#/channels/AccountIssueCreated'
    summary: Account Issue Created
    tags:
      - name: Account Lifecycle
  receiveAccountIssueFailed:
    action: receive
    channel:
      $ref: '#/channels/AccountIssueFailed'
    summary: Account Issue Failed
    tags:
      - name: Account Lifecycle
  receiveAccountAssignmentSuccess:
    action: receive
    channel:
      $ref: '#/channels/AccountAssignmentSuccess'
    summary: Account Assignment Success
    tags:
      - name: Account Assignment
  receiveAccountAssignmentFailed:
    action: receive
    channel:
      $ref: '#/channels/AccountAssignmentFailed'
    summary: Account Assignment Failed
    tags:
      - name: Account Assignment
  receiveAccountTransferCreated:
    action: receive
    channel:
      $ref: '#/channels/AccountTransferCreated'
    summary: Account Transfer Created
    tags:
      - name: Transfer Events
  receiveAccountTransferCompleted:
    action: receive
    channel:
      $ref: '#/channels/AccountTransferCompleted'
    summary: Account Transfer Completed
    tags:
      - name: Transfer Events
  receiveAccountTransferReversed:
    action: receive
    channel:
      $ref: '#/channels/AccountTransferReversed'
    summary: Account Transfer Reversed
    tags:
      - name: Transfer Events
  receiveAccountTransferBlocked:
    action: receive
    channel:
      $ref: '#/channels/AccountTransferBlocked'
    summary: Account Transfer Blocked
    tags:
      - name: Transfer Events
  receiveAccountTransferFailed:
    action: receive
    channel:
      $ref: '#/channels/AccountTransferFailed'
    summary: Account Transfer Failed
    tags:
      - name: Transfer Events
  receiveAccountTransferReturned:
    action: receive
    channel:
      $ref: '#/channels/AccountTransferReturned'
    summary: Account Transfer Returned
    tags:
      - name: Transfer Events
  receiveAccountOverdraftCreated:
    action: receive
    channel:
      $ref: '#/channels/AccountOverdraftCreated'
    summary: Account Overdraft Created
    tags:
      - name: Transfer Events
  receiveAccountTransferException:
    action: receive
    channel:
      $ref: '#/channels/AccountTransferException'
    summary: Account Transfer Exception
    tags:
      - name: Transfer Events
  receiveCardIssueCreated:
    action: receive
    channel:
      $ref: '#/channels/CardIssueCreated'
    summary: Card Issue Created
    tags:
      - name: Card Lifecycle
  receiveCardIssueFailed:
    action: receive
    channel:
      $ref: '#/channels/CardIssueFailed'
    summary: Card Issue Failed
    tags:
      - name: Card Lifecycle
  receiveCardStatusActive:
    action: receive
    channel:
      $ref: '#/channels/CardStatusActive'
    summary: Card Status Active
    tags:
      - name: Card Lifecycle
  receiveCardStatusFrozen:
    action: receive
    channel:
      $ref: '#/channels/CardStatusFrozen'
    summary: Card Status Frozen
    tags:
      - name: Card Lifecycle
  receiveCardStatusInactive:
    action: receive
    channel:
      $ref: '#/channels/CardStatusInactive'
    summary: Card Status Inactive
    tags:
      - name: Card Lifecycle
  receiveCardStatusPending:
    action: receive
    channel:
      $ref: '#/channels/CardStatusPending'
    summary: Card Status Pending
    tags:
      - name: Card Lifecycle
  receiveCardStatusInreview:
    action: receive
    channel:
      $ref: '#/channels/CardStatusInreview'
    summary: Card Status In Review
    tags:
      - name: Card Lifecycle
  receiveCardStatusTerminated:
    action: receive
    channel:
      $ref: '#/channels/CardStatusTerminated'
    summary: Card Status Terminated
    tags:
      - name: Card Lifecycle
  receiveCardStatusReissue:
    action: receive
    channel:
      $ref: '#/channels/CardStatusReissue'
    summary: Card Status Reissue
    tags:
      - name: Card Lifecycle
  receiveCardAuthCreated:
    action: receive
    channel:
      $ref: '#/channels/CardAuthCreated'
    summary: Card Auth Created
    tags:
      - name: Card Authorization
  receiveCardAuthCleared:
    action: receive
    channel:
      $ref: '#/channels/CardAuthCleared'
    summary: Card Auth Cleared
    tags:
      - name: Card Authorization
  receiveCardAuthUpdated:
    action: receive
    channel:
      $ref: '#/channels/CardAuthUpdated'
    summary: Card Auth Updated
    tags:
      - name: Card Authorization
  receiveCardAuthReversed:
    action: receive
    channel:
      $ref: '#/channels/CardAuthReversed'
    summary: Card Auth Reversed
    tags:
      - name: Card Authorization
  receiveCardAuthRefund:
    action: receive
    channel:
      $ref: '#/channels/CardAuthRefund'
    summary: Card Auth Refund
    tags:
      - name: Card Authorization
components:
  messages:
    UserCreatedMessage:
      name: UserCreatedMessage
      title: User Created
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: user.created
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - user_id
                properties:
                  user_id:
                    type: string
                    description: Platform-assigned user identifier.
                    example: '9414'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: User Created
          payload:
            event: user.created
            data:
              event_id: inn_whe_2tHPeibq8Gkm6kXU819g
              event_type: user.created
              event_description: ''
              user_id: '9414'
            created_at: 23-06-2025 03:11 PM
            updated_at: 23-06-2025 03:11 PM
    UserKycSuccessMessage:
      name: UserKycSuccessMessage
      title: User KYC Success
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: user.kyc.success
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - user_id
                  - status
                properties:
                  user_id:
                    type: string
                    description: Platform-assigned user identifier.
                  status:
                    type: string
                    description: KYC verification status.
                    example: approved
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: User KYC Success
          payload:
            event: user.kyc.success
            data:
              event_id: inn_whe_3aQRsjtk9Hlp7mYV920h
              event_type: user.kyc.success
              event_description: ''
              user_id: '9414'
              status: approved
            created_at: 23-06-2025 03:15 PM
            updated_at: 23-06-2025 03:15 PM
    UserKycFailedMessage:
      name: UserKycFailedMessage
      title: User KYC Failed
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: user.kyc.failed
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - user_id
                  - status
                  - reasons
                  - reasons_code
                properties:
                  user_id:
                    type: string
                    description: Platform-assigned user identifier.
                  status:
                    type: string
                    description: KYC verification status.
                    example: rejected
                  reasons:
                    type: array
                    description: Provider-supplied failure reason descriptions.
                    items:
                      type: string
                  reasons_code:
                    type: array
                    description: Provider-supplied failure reason codes.
                    items:
                      type: string
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: User KYC Failed
          payload:
            event: user.kyc.failed
            data:
              event_id: inn_whe_4bSUtkul0Imq8nZW031i
              event_type: user.kyc.failed
              event_description: ''
              user_id: '9414'
              status: rejected
              reasons:
                - Identity could not be verified
              reasons_code:
                - ID_MISMATCH
            created_at: 23-06-2025 03:20 PM
            updated_at: 23-06-2025 03:20 PM
    BusinessCreatedMessage:
      name: BusinessCreatedMessage
      title: Business Created
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: business.created
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - business_id
                properties:
                  business_id:
                    type: string
                    description: Platform-assigned business identifier.
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Business Created
          payload:
            event: business.created
            data:
              event_id: inn_whe_5cTVulvm1Jnr9oAX142j
              event_type: business.created
              event_description: ''
              business_id: '4821'
            created_at: 23-06-2025 04:00 PM
            updated_at: 23-06-2025 04:00 PM
    BusinessKybSuccessMessage:
      name: BusinessKybSuccessMessage
      title: Business KYB Success
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: business.kyb.success
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - business_id
                  - status
                properties:
                  business_id:
                    type: string
                    description: Platform-assigned business identifier.
                  status:
                    type: string
                    description: KYB verification status.
                    example: approved
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Business KYB Success
          payload:
            event: business.kyb.success
            data:
              event_id: inn_whe_6dUWvmwn2Kos0pBY253k
              event_type: business.kyb.success
              event_description: ''
              business_id: '4821'
              status: approved
            created_at: 23-06-2025 04:05 PM
            updated_at: 23-06-2025 04:05 PM
    BusinessKybFailedMessage:
      name: BusinessKybFailedMessage
      title: Business KYB Failed
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: business.kyb.failed
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - business_id
                  - status
                  - reasons
                  - reasons_code
                properties:
                  business_id:
                    type: string
                    description: Platform-assigned business identifier.
                  status:
                    type: string
                    description: KYB verification status.
                    example: rejected
                  reasons:
                    type: array
                    description: Provider-supplied failure reason descriptions.
                    items:
                      type: string
                  reasons_code:
                    type: array
                    description: Provider-supplied failure reason codes.
                    items:
                      type: string
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Business KYB Failed
          payload:
            event: business.kyb.failed
            data:
              event_id: inn_whe_7eVXwnxo3Lpt1qCZ364l
              event_type: business.kyb.failed
              event_description: ''
              business_id: '4821'
              status: rejected
              reasons:
                - Business registration could not be verified
              reasons_code:
                - EIN_MISMATCH
            created_at: 23-06-2025 04:10 PM
            updated_at: 23-06-2025 04:10 PM
    WalletCreatedMessage:
      name: WalletCreatedMessage
      title: Wallet Created
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: wallet.created
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - user_id
                  - wallet_id
                properties:
                  user_id:
                    type: string
                    description: Platform-assigned user identifier.
                  wallet_id:
                    type: string
                    description: Platform-assigned wallet identifier.
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Wallet Created
          payload:
            event: wallet.created
            data:
              event_id: inn_whe_8fWYxoyp4Mqu2rDA475m
              event_type: wallet.created
              event_description: ''
              user_id: '9414'
              wallet_id: '2201'
            created_at: 23-06-2025 03:12 PM
            updated_at: 23-06-2025 03:12 PM
    WalletTopupSuccessMessage:
      name: WalletTopupSuccessMessage
      title: Wallet Top-Up Success
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: wallet.topup.success
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - entity_id
                  - entity_type
                  - wallet_id
                  - transaction_id
                  - currency
                  - amount
                properties:
                  entity_id:
                    $ref: '#/components/schemas/EntityId'
                  entity_type:
                    $ref: '#/components/schemas/EntityType'
                  wallet_id:
                    type: string
                    description: Platform-assigned wallet identifier.
                  transaction_id:
                    type: string
                    description: Platform-assigned transaction identifier.
                  currency:
                    $ref: '#/components/schemas/Currency'
                  amount:
                    $ref: '#/components/schemas/Amount'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Wallet Top-Up Success
          payload:
            event: wallet.topup.success
            data:
              event_id: inn_whe_9gXZypzq5Nrv3sEB586n
              event_type: wallet.topup.success
              event_description: ''
              entity_id: '9414'
              entity_type: user
              wallet_id: '2201'
              transaction_id: DPST_TOPUP123456789
              currency: USD
              amount: '100.00'
            created_at: 24-06-2025 10:00 AM
            updated_at: 24-06-2025 10:00 AM
    WalletTopupFailedMessage:
      name: WalletTopupFailedMessage
      title: Wallet Top-Up Failed
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: wallet.topup.failed
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - entity_id
                  - entity_type
                  - wallet_id
                properties:
                  entity_id:
                    $ref: '#/components/schemas/EntityId'
                  entity_type:
                    $ref: '#/components/schemas/EntityType'
                  wallet_id:
                    type: string
                    description: Platform-assigned wallet identifier.
                  transaction_id:
                    type: string
                    nullable: true
                    description: >-
                      Platform-assigned transaction identifier. May be empty if
                      the failure occurred before a transaction was created.
                  currency:
                    type: string
                    description: >-
                      ISO 4217 currency code. May be empty if the failure
                      occurred before currency was resolved.
                  amount:
                    type: string
                    description: >-
                      Transaction amount. May be empty if the failure occurred
                      before amount was resolved.
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Wallet Top-Up Failed
          payload:
            event: wallet.topup.failed
            data:
              event_id: inn_whe_0hYAzqAr6Osw4tFC697o
              event_type: wallet.topup.failed
              event_description: ''
              entity_id: '9414'
              entity_type: user
              wallet_id: '2201'
              transaction_id: ''
              currency: ''
              amount: ''
            created_at: 24-06-2025 10:05 AM
            updated_at: 24-06-2025 10:05 AM
    AccountCreatedMessage:
      name: AccountCreatedMessage
      title: Account Created
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: account.created
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - entity_id
                  - entity_type
                  - account_id
                properties:
                  entity_id:
                    $ref: '#/components/schemas/EntityId'
                  entity_type:
                    $ref: '#/components/schemas/EntityType'
                  account_id:
                    type: string
                    description: Platform-assigned account identifier.
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Account Created
          payload:
            event: account.created
            data:
              event_id: inn_whe_1iZBArBs7Ptx5uGD708p
              event_type: account.created
              event_description: ''
              entity_id: '6830'
              entity_type: user
              account_id: '6246'
            created_at: 02-02-2025 06:30 PM
            updated_at: 02-02-2025 06:30 PM
    AccountSavedMessage:
      name: AccountSavedMessage
      title: Account Saved
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: account.saved
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - entity_id
                  - entity_type
                  - account_id
                properties:
                  entity_id:
                    $ref: '#/components/schemas/EntityId'
                  entity_type:
                    $ref: '#/components/schemas/EntityType'
                  account_id:
                    type: string
                    description: Platform-assigned account identifier.
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Account Saved
          payload:
            event: account.saved
            data:
              event_id: inn_whe_2jACBsCtAqu6vHE819q
              event_type: account.saved
              event_description: ''
              entity_id: '6830'
              entity_type: user
              account_id: '6246'
            created_at: 02-02-2025 07:00 PM
            updated_at: 02-02-2025 07:00 PM
    AccountLinkCreatedMessage:
      name: AccountLinkCreatedMessage
      title: Account Link Created
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: account.link.created
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - entity_id
                  - entity_type
                  - account_id
                  - status
                properties:
                  entity_id:
                    $ref: '#/components/schemas/EntityId'
                  entity_type:
                    $ref: '#/components/schemas/EntityType'
                  account_id:
                    type: string
                    description: Platform-assigned account identifier.
                  status:
                    type: string
                    description: Link status.
                    example: active
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Account Link Created
          payload:
            event: account.link.created
            data:
              event_id: inn_whe_3kBDCtDuBrv7wIF920r
              event_type: account.link.created
              event_description: ''
              entity_id: '6830'
              entity_type: user
              account_id: '6246'
              status: active
            created_at: 02-02-2025 07:30 PM
            updated_at: 02-02-2025 07:30 PM
    AccountLinkDeletedMessage:
      name: AccountLinkDeletedMessage
      title: Account Link Deleted
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: account.link.deleted
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - entity_id
                  - entity_type
                  - account_id
                  - status
                properties:
                  entity_id:
                    $ref: '#/components/schemas/EntityId'
                  entity_type:
                    $ref: '#/components/schemas/EntityType'
                  account_id:
                    type: string
                    description: Platform-assigned account identifier.
                  status:
                    type: string
                    description: Link status after deletion.
                    example: deleted
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Account Link Deleted
          payload:
            event: account.link.deleted
            data:
              event_id: inn_whe_4lCEDuEvCsw8xJG031s
              event_type: account.link.deleted
              event_description: ''
              entity_id: '6830'
              entity_type: user
              account_id: '6246'
              status: deleted
            created_at: 03-02-2025 09:00 AM
            updated_at: 03-02-2025 09:00 AM
    AccountIssueCreatedMessage:
      name: AccountIssueCreatedMessage
      title: Account Issue Created
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: account.issue.created
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - entity_id
                  - entity_type
                  - account_id
                  - status
                properties:
                  entity_id:
                    $ref: '#/components/schemas/EntityId'
                  entity_type:
                    $ref: '#/components/schemas/EntityType'
                  account_id:
                    type: string
                    description: >-
                      Platform-assigned account identifier for the issued VBAN
                      or RBA.
                  status:
                    type: string
                    description: Issuance status.
                    example: completed
                  event_description:
                    type: string
                    description: >-
                      Human-readable description indicating whether the issued
                      account is a Virtual Bank Account (VBAN) or Routable Bank
                      Account (RBA).
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Account Issue Created
          payload:
            event: account.issue.created
            data:
              event_id: inn_whe_5mDFEvFwDtx9yKH142t
              event_type: account.issue.created
              event_description: Virtual Bank Account issued
              entity_id: '6830'
              entity_type: user
              account_id: '6246'
              status: completed
            created_at: 02-02-2025 06:35 PM
            updated_at: 02-02-2025 06:35 PM
    AccountIssueFailedMessage:
      name: AccountIssueFailedMessage
      title: Account Issue Failed
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: account.issue.failed
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - entity_id
                  - entity_type
                  - account_id
                  - status
                properties:
                  entity_id:
                    $ref: '#/components/schemas/EntityId'
                  entity_type:
                    $ref: '#/components/schemas/EntityType'
                  account_id:
                    type: string
                    description: Platform-assigned account identifier.
                  status:
                    type: string
                    description: Issuance status.
                    example: failed
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Account Issue Failed
          payload:
            event: account.issue.failed
            data:
              event_id: inn_whe_6nEGFwGxEuy0zLI253u
              event_type: account.issue.failed
              event_description: ''
              entity_id: '6830'
              entity_type: user
              account_id: '6246'
              status: failed
            created_at: 02-02-2025 06:36 PM
            updated_at: 02-02-2025 06:36 PM
    AccountAssignmentSuccessMessage:
      name: AccountAssignmentSuccessMessage
      title: Account Assignment Success
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: account.assignment.success
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - oneOf:
                  - title: Single Assignment
                    description: >-
                      Single-record assignment. Identified by the presence of
                      entity_id.
                    type: object
                    required:
                      - entity_id
                      - entity_type
                      - status
                      - account
                    properties:
                      entity_id:
                        $ref: '#/components/schemas/EntityId'
                      entity_type:
                        $ref: '#/components/schemas/EntityType'
                      status:
                        type: string
                        description: Assignment status.
                        example: completed
                      account:
                        $ref: '#/components/schemas/AssignmentAccountBlock'
                  - title: Bulk Assignment
                    description: Bulk assignment. Identified by the presence of process_id.
                    type: object
                    required:
                      - process_id
                      - status
                      - batch
                    properties:
                      process_id:
                        type: string
                        description: Unique identifier for the bulk assignment process.
                        example: 9e30d021-3f39-4fcc-935b-e286d7f52807
                      event_type:
                        type: string
                        description: Will be account.assignment.bulk for bulk payloads.
                        example: account.assignment.bulk
                      status:
                        type: string
                        description: Assignment status.
                        example: completed
                      batch:
                        $ref: '#/components/schemas/AssignmentBatchBlock'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Single Assignment Success
          payload:
            event: account.assignment.success
            data:
              event_id: inn_whe_7oFHGxHyFvz1AMJ364v
              event_type: account.assignment.success
              event_description: ''
              entity_id: '791'
              entity_type: business
              status: completed
              account:
                account_id: 9e30d021-3f39-4fcc-935b-e286d7f52807
                status: active
                number: '3351'
                routing: '080283020'
                bank_name: RBOC
                type: vban
            created_at: 02-02-2025 06:30 PM
            updated_at: 02-02-2025 06:30 PM
        - name: Bulk Assignment Success
          payload:
            event: account.assignment.success
            data:
              event_id: inn_whe_8pGIHyIzGw02BNK475w
              event_type: account.assignment.bulk
              event_description: ''
              process_id: 9e30d021-3f39-4fcc-935b-e286d7f52807
              status: completed
              batch:
                type: csv
                records: '331'
                processed: '331'
                failed: '0'
                source: https://secure.files.example.com/files/820204949320_022.csv
            created_at: 02-02-2025 06:30 PM
            updated_at: 02-02-2025 06:30 PM
    AccountAssignmentFailedMessage:
      name: AccountAssignmentFailedMessage
      title: Account Assignment Failed
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: account.assignment.failed
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - oneOf:
                  - title: Single Assignment Failed
                    description: >-
                      Single-record assignment failure. Identified by the
                      presence of entity_id.
                    type: object
                    required:
                      - entity_id
                      - entity_type
                      - status
                    properties:
                      entity_id:
                        $ref: '#/components/schemas/EntityId'
                      entity_type:
                        $ref: '#/components/schemas/EntityType'
                      status:
                        type: string
                        description: Assignment status.
                        example: failed
                  - title: Bulk Assignment Failed
                    description: >-
                      Bulk assignment failure. Identified by the presence of
                      process_id.
                    type: object
                    required:
                      - process_id
                      - status
                      - batch
                    properties:
                      process_id:
                        type: string
                        description: Unique identifier for the bulk assignment process.
                      event_type:
                        type: string
                        description: Will be account.assignment.bulk for bulk payloads.
                        example: account.assignment.bulk
                      status:
                        type: string
                        description: Assignment status.
                        example: failed
                      batch:
                        $ref: '#/components/schemas/AssignmentBatchBlock'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Single Assignment Failed
          payload:
            event: account.assignment.failed
            data:
              event_id: inn_whe_9qHJIzJAHx13COL586x
              event_type: account.assignment.failed
              event_description: ''
              entity_id: '791'
              entity_type: business
              status: failed
            created_at: 02-02-2025 06:31 PM
            updated_at: 02-02-2025 06:31 PM
    AccountTransferCreatedMessage:
      name: AccountTransferCreatedMessage
      title: Account Transfer Created
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: account.transfer.created
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/FullTransferData'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Account Transfer Created
          payload:
            event: account.transfer.created
            data:
              event_id: inn_whe_0rIKJAKBIy24DPM697y
              event_type: account.transfer.created
              event_description: ''
              entity_id: '6830'
              entity_type: user
              account_id: '6246'
              account_type: routable
              transfer_id: DPST_PVCVXAR4KRU2CTOT6026NIGGS
              currency: USD
              amount: '500.00'
              memo: ''
              direction: credit
              status: pending
            created_at: 02-02-2025 06:30 PM
            updated_at: 02-02-2025 06:30 PM
    AccountTransferCompletedMessage:
      name: AccountTransferCompletedMessage
      title: Account Transfer Completed
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: account.transfer.completed
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/FullTransferData'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Account Transfer Completed
          payload:
            event: account.transfer.completed
            data:
              event_id: inn_whe_1sJLKBLCJz35EQN708z
              event_type: account.transfer.completed
              event_description: ''
              entity_id: '6830'
              entity_type: user
              account_id: '6246'
              account_type: routable
              transfer_id: DPST_PVCVXAR4KRU2CTOT6026NIGGS
              currency: USD
              amount: '500.00'
              memo: ''
              direction: credit
              status: completed
            created_at: 02-02-2025 06:45 PM
            updated_at: 02-02-2025 06:45 PM
    AccountTransferReversedMessage:
      name: AccountTransferReversedMessage
      title: Account Transfer Reversed
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: account.transfer.reversed
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/SlimTransferData'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Account Transfer Reversed
          payload:
            event: account.transfer.reversed
            data:
              event_id: inn_whe_2tKMLCMDKA46FRO819A
              event_type: account.transfer.reversed
              event_description: ''
              entity_id: '6830'
              entity_type: user
              transfer_id: DPST_PVCVXAR4KRU2CTOT6026NIGGS
              direction: credit
              status: reversed
            created_at: 02-02-2025 07:00 PM
            updated_at: 02-02-2025 07:00 PM
    AccountTransferBlockedMessage:
      name: AccountTransferBlockedMessage
      title: Account Transfer Blocked
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: account.transfer.blocked
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/SlimTransferData'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Account Transfer Blocked
          payload:
            event: account.transfer.blocked
            data:
              event_id: inn_whe_3uLNMDNELB57GSP920B
              event_type: account.transfer.blocked
              event_description: ''
              entity_id: '6830'
              entity_type: user
              transfer_id: DPST_PVCVXAR4KRU2CTOT6026NIGGS
              direction: credit
              status: blocked
            created_at: 02-02-2025 06:32 PM
            updated_at: 02-02-2025 06:32 PM
    AccountTransferFailedMessage:
      name: AccountTransferFailedMessage
      title: Account Transfer Failed
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: account.transfer.failed
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/FullTransferData'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Account Transfer Failed
          payload:
            event: account.transfer.failed
            data:
              event_id: inn_whe_4vMONEOFMC68HTQ031C
              event_type: account.transfer.failed
              event_description: ''
              entity_id: '6830'
              entity_type: user
              account_id: '6246'
              account_type: routable
              transfer_id: DPST_PVCVXAR4KRU2CTOT6026NIGGS
              currency: USD
              amount: '500.00'
              memo: ''
              direction: credit
              status: failed
            created_at: 02-02-2025 06:33 PM
            updated_at: 02-02-2025 06:33 PM
    AccountTransferReturnedMessage:
      name: AccountTransferReturnedMessage
      title: Account Transfer Returned
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: account.transfer.returned
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - entity_id
                  - entity_type
                  - transfer_id
                  - adjustment_id
                  - currency
                  - amount
                  - direction
                  - status
                properties:
                  entity_id:
                    $ref: '#/components/schemas/EntityId'
                  entity_type:
                    $ref: '#/components/schemas/EntityType'
                  transfer_id:
                    type: string
                    description: Identifier of the original transfer that was returned.
                  adjustment_id:
                    type: string
                    description: Identifier of the return entry adjustment record.
                  currency:
                    $ref: '#/components/schemas/Currency'
                  amount:
                    $ref: '#/components/schemas/Amount'
                  memo:
                    type: string
                    description: Optional memo or description.
                  direction:
                    $ref: '#/components/schemas/Direction'
                  status:
                    type: string
                    description: Transfer status.
                    example: returned
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Account Transfer Returned
          payload:
            event: account.transfer.returned
            data:
              event_id: inn_whe_5wNPOFPGND79IUR142D
              event_type: account.transfer.returned
              event_description: ''
              entity_id: '6830'
              entity_type: user
              transfer_id: DPST_PVCVXAR4KRU2CTOT6026NIGGS
              adjustment_id: ADJ_RTNABC123XYZ456789
              currency: USD
              amount: '500.00'
              memo: ''
              direction: credit
              status: returned
            created_at: 03-02-2025 08:00 AM
            updated_at: 03-02-2025 08:00 AM
    AccountOverdraftCreatedMessage:
      name: AccountOverdraftCreatedMessage
      title: Account Overdraft Created
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: account.overdraft.created
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/FullTransferData'
              - type: object
                required:
                  - reference
                properties:
                  reference:
                    $ref: '#/components/schemas/OverdraftReference'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Account Overdraft Created
          payload:
            event: account.overdraft.created
            data:
              event_id: inn_whe_6xOQPGQHOE80JVS253E
              event_type: account.overdraft.created
              event_description: ''
              entity_id: '6830'
              entity_type: user
              account_id: '6246'
              account_type: virtual
              transfer_id: DPST_PVCVXAR4KRU2CTOT6026NIGGS
              currency: USD
              amount: '500.00'
              memo: ''
              direction: debit
              status: completed
              reference:
                overdraft_id: OD_ABC123DEF456GHI789
                amount_intent: '500.00'
            created_at: 02-02-2025 06:50 PM
            updated_at: 02-02-2025 06:50 PM
    AccountTransferExceptionMessage:
      name: AccountTransferExceptionMessage
      title: Account Transfer Exception
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: account.transfer.exception
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/FullTransferData'
              - type: object
                required:
                  - reference
                properties:
                  reference:
                    $ref: '#/components/schemas/ExceptionReference'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Account Transfer Exception
          payload:
            event: account.transfer.exception
            data:
              event_id: inn_whe_7yPRQHRIPF91KWT364F
              event_type: account.transfer.exception
              event_description: ''
              entity_id: '6830'
              entity_type: user
              account_id: '6246'
              account_type: virtual
              transfer_id: DPST_PVCVXAR4KRU2CTOT6026NIGGS
              currency: USD
              amount: '500.00'
              memo: ''
              direction: credit
              status: exception
              reference:
                trailer: '0000001'
                control: CTRL001
                bank_process_date: '20250202'
                type: ACH
                bank_timestamp: '20250202143000'
            created_at: 02-02-2025 06:55 PM
            updated_at: 02-02-2025 06:55 PM
    CardIssueCreatedMessage:
      name: CardIssueCreatedMessage
      title: Card Issue Created
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: card.issue.created
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - entity_id
                  - entity_type
                  - account_id
                  - status
                  - card
                properties:
                  entity_id:
                    $ref: '#/components/schemas/EntityId'
                  entity_type:
                    $ref: '#/components/schemas/EntityType'
                  account_id:
                    type: string
                    description: Platform-assigned account identifier.
                  status:
                    type: string
                    description: Event-delivery status.
                    example: completed
                  card:
                    $ref: '#/components/schemas/CardBlock'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Card Issue Created
          payload:
            event: card.issue.created
            data:
              event_id: inn_whe_oFGEPJWxyY8buAjxAuCs
              event_type: card.issue.created
              event_description: ''
              entity_id: '3234'
              entity_type: user
              account_id: '1342'
              status: completed
              card:
                card_id: rcrd-acc960c0-3a14-413e-a248-74684e52a0f2
                status: active
                last_four: '8532'
                brand: mastercard
                type: physical
            created_at: 02-02-2025 06:30 PM
            updated_at: 02-02-2025 06:30 PM
    CardIssueFailedMessage:
      name: CardIssueFailedMessage
      title: Card Issue Failed
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: card.issue.failed
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - type: object
                required:
                  - entity_id
                  - entity_type
                  - account_id
                  - status
                properties:
                  entity_id:
                    $ref: '#/components/schemas/EntityId'
                  entity_type:
                    $ref: '#/components/schemas/EntityType'
                  account_id:
                    type: string
                    description: Platform-assigned account identifier.
                  status:
                    type: string
                    description: >-
                      Event-delivery status. Carries 'completed' even on failure
                      — this reflects delivery status, not the card outcome.
                    example: completed
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Card Issue Failed
          payload:
            event: card.issue.failed
            data:
              event_id: inn_whe_8zQSRISJQG02LXU475G
              event_type: card.issue.failed
              event_description: ''
              entity_id: '3234'
              entity_type: user
              account_id: '1342'
              status: completed
            created_at: 02-02-2025 06:31 PM
            updated_at: 02-02-2025 06:31 PM
    CardStatusActiveMessage:
      name: CardStatusActiveMessage
      title: Card Status Active
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: card.status.active
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/CardStatusEventData'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Card Status Active
          payload:
            event: card.status.active
            data:
              event_id: inn_whe_9ATSJTKRH13MYV586H
              event_type: card.status.active
              event_description: ''
              entity_id: '3234'
              entity_type: user
              account_id: '1342'
              status: completed
              reason_code: null
              card:
                card_id: rcrd-acc960c0-3a14-413e-a248-74684e52a0f2
                status: active
                last_four: '8532'
                brand: mastercard
                type: physical
            created_at: 02-02-2025 07:00 PM
            updated_at: 02-02-2025 07:00 PM
    CardStatusFrozenMessage:
      name: CardStatusFrozenMessage
      title: Card Status Frozen
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: card.status.frozen
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/CardStatusEventData'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Card Status Frozen
          payload:
            event: card.status.frozen
            data:
              event_id: inn_whe_0BUTKULSIH24NZW697I
              event_type: card.status.frozen
              event_description: ''
              entity_id: '3234'
              entity_type: user
              account_id: '1342'
              status: completed
              reason_code: null
              card:
                card_id: rcrd-acc960c0-3a14-413e-a248-74684e52a0f2
                status: frozen
                last_four: '8532'
                brand: mastercard
                type: physical
            created_at: 03-02-2025 10:00 AM
            updated_at: 03-02-2025 10:00 AM
    CardStatusInactiveMessage:
      name: CardStatusInactiveMessage
      title: Card Status Inactive
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: card.status.inactive
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/CardStatusEventData'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Card Status Inactive
          payload:
            event: card.status.inactive
            data:
              event_id: inn_whe_1CVULMVTJI35OAX708J
              event_type: card.status.inactive
              event_description: ''
              entity_id: '3234'
              entity_type: user
              account_id: '1342'
              status: completed
              reason_code: null
              card:
                card_id: rcrd-acc960c0-3a14-413e-a248-74684e52a0f2
                status: inactive
                last_four: '8532'
                brand: mastercard
                type: physical
            created_at: 03-02-2025 11:00 AM
            updated_at: 03-02-2025 11:00 AM
    CardStatusPendingMessage:
      name: CardStatusPendingMessage
      title: Card Status Pending
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: card.status.pending
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/CardStatusEventData'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Card Status Pending
          payload:
            event: card.status.pending
            data:
              event_id: inn_whe_2DWVMNWUKJ46PBY819K
              event_type: card.status.pending
              event_description: ''
              entity_id: '3234'
              entity_type: user
              account_id: '1342'
              status: completed
              reason_code: null
              card:
                card_id: rcrd-acc960c0-3a14-413e-a248-74684e52a0f2
                status: pending
                last_four: '8532'
                brand: mastercard
                type: physical
            created_at: 02-02-2025 06:29 PM
            updated_at: 02-02-2025 06:29 PM
    CardStatusInreviewMessage:
      name: CardStatusInreviewMessage
      title: Card Status In Review
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: card.status.inreview
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/CardStatusEventData'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Card Status In Review
          payload:
            event: card.status.inreview
            data:
              event_id: inn_whe_3EXWNOXVLK57QCZ920L
              event_type: card.status.inreview
              event_description: ''
              entity_id: '3234'
              entity_type: user
              account_id: '1342'
              status: completed
              reason_code: FRAUD_SUSPECTED
              card:
                card_id: rcrd-acc960c0-3a14-413e-a248-74684e52a0f2
                status: inreview
                last_four: '8532'
                brand: mastercard
                type: physical
            created_at: 03-02-2025 12:00 PM
            updated_at: 03-02-2025 12:00 PM
    CardStatusTerminatedMessage:
      name: CardStatusTerminatedMessage
      title: Card Status Terminated
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: card.status.terminated
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/CardStatusEventData'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Card Status Terminated
          payload:
            event: card.status.terminated
            data:
              event_id: inn_whe_4FYXOPYWML68RDA031M
              event_type: card.status.terminated
              event_description: ''
              entity_id: '3234'
              entity_type: user
              account_id: '1342'
              status: completed
              reason_code: CARDHOLDER_REQUEST
              card:
                card_id: rcrd-acc960c0-3a14-413e-a248-74684e52a0f2
                status: terminated
                last_four: '8532'
                brand: mastercard
                type: physical
            created_at: 04-02-2025 09:00 AM
            updated_at: 04-02-2025 09:00 AM
    CardStatusReissueMessage:
      name: CardStatusReissueMessage
      title: Card Status Reissue
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: card.status.reissue
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/CardStatusEventData'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Card Status Reissue
          payload:
            event: card.status.reissue
            data:
              event_id: inn_whe_5GZYPQZXNM79SEB142N
              event_type: card.status.reissue
              event_description: ''
              entity_id: '3234'
              entity_type: user
              account_id: '1342'
              status: completed
              reason_code: null
              card:
                card_id: rcrd-acc960c0-3a14-413e-a248-74684e52a0f2
                status: reissue
                last_four: '8532'
                brand: mastercard
                type: physical
            created_at: 04-02-2025 10:00 AM
            updated_at: 04-02-2025 10:00 AM
    CardAuthCreatedMessage:
      name: CardAuthCreatedMessage
      title: Card Auth Created
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: card.auth.created
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/CardAuthEventData'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Card Auth Created
          payload:
            event: card.auth.created
            data:
              event_id: inn_whe_6HAZQRAYONP0TFC253O
              event_type: card.auth.created
              event_description: ''
              entity_id: '3234'
              entity_type: user
              account_id: '1342'
              transaction_id: AUTH_XYZ789ABC123DEF456
              amount: '25.00'
              direction: debit
              status: completed
              card:
                card_id: rcrd-acc960c0-3a14-413e-a248-74684e52a0f2
                status: active
                last_four: '8532'
                brand: mastercard
                type: physical
            created_at: 05-02-2025 02:00 PM
            updated_at: 05-02-2025 02:00 PM
    CardAuthClearedMessage:
      name: CardAuthClearedMessage
      title: Card Auth Cleared
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: card.auth.cleared
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/CardAuthEventData'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Card Auth Cleared
          payload:
            event: card.auth.cleared
            data:
              event_id: inn_whe_7IBZRSBZPOQ1UGD364P
              event_type: card.auth.cleared
              event_description: ''
              entity_id: '3234'
              entity_type: user
              account_id: '1342'
              transaction_id: AUTH_XYZ789ABC123DEF456
              amount: '25.00'
              direction: debit
              status: completed
              card:
                card_id: rcrd-acc960c0-3a14-413e-a248-74684e52a0f2
                status: active
                last_four: '8532'
                brand: mastercard
                type: physical
            created_at: 05-02-2025 02:01 PM
            updated_at: 05-02-2025 02:01 PM
    CardAuthUpdatedMessage:
      name: CardAuthUpdatedMessage
      title: Card Auth Updated
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: card.auth.updated
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/CardAuthEventData'
              - type: object
                required:
                  - old_amount
                properties:
                  old_amount:
                    $ref: '#/components/schemas/Amount'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Card Auth Updated
          payload:
            event: card.auth.updated
            data:
              event_id: inn_whe_8JCASTCAQR02VHE475Q
              event_type: card.auth.updated
              event_description: ''
              entity_id: '3234'
              entity_type: user
              account_id: '1342'
              transaction_id: AUTH_XYZ789ABC123DEF456
              amount: '30.00'
              old_amount: '25.00'
              direction: debit
              status: completed
              card:
                card_id: rcrd-acc960c0-3a14-413e-a248-74684e52a0f2
                status: active
                last_four: '8532'
                brand: mastercard
                type: physical
            created_at: 05-02-2025 02:05 PM
            updated_at: 05-02-2025 02:05 PM
    CardAuthReversedMessage:
      name: CardAuthReversedMessage
      title: Card Auth Reversed
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: card.auth.reversed
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/CardAuthEventData'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Card Auth Reversed
          payload:
            event: card.auth.reversed
            data:
              event_id: inn_whe_9KDBTUDBRS13WIF586R
              event_type: card.auth.reversed
              event_description: ''
              entity_id: '3234'
              entity_type: user
              account_id: '1342'
              transaction_id: AUTH_XYZ789ABC123DEF456
              amount: '25.00'
              direction: debit
              status: completed
              card:
                card_id: rcrd-acc960c0-3a14-413e-a248-74684e52a0f2
                status: active
                last_four: '8532'
                brand: mastercard
                type: physical
            created_at: 05-02-2025 02:10 PM
            updated_at: 05-02-2025 02:10 PM
    CardAuthRefundMessage:
      name: CardAuthRefundMessage
      title: Card Auth Refund
      contentType: application/json
      payload:
        type: object
        required:
          - event
          - data
          - created_at
          - updated_at
        properties:
          event:
            type: string
            example: card.auth.refund
          data:
            allOf:
              - $ref: '#/components/schemas/BankingEventDataBase'
              - $ref: '#/components/schemas/CardAuthEventData'
          created_at:
            $ref: '#/components/schemas/BankingTimestamp'
          updated_at:
            $ref: '#/components/schemas/BankingTimestamp'
      examples:
        - name: Card Auth Refund
          payload:
            event: card.auth.refund
            data:
              event_id: inn_whe_0LECUVECSTEST4XJG697S
              event_type: card.auth.refund
              event_description: ''
              entity_id: '3234'
              entity_type: user
              account_id: '1342'
              transaction_id: REF_XYZ789ABC123DEF456
              amount: '25.00'
              direction: credit
              status: completed
              card:
                card_id: rcrd-acc960c0-3a14-413e-a248-74684e52a0f2
                status: active
                last_four: '8532'
                brand: mastercard
                type: physical
            created_at: 05-02-2025 03:00 PM
            updated_at: 05-02-2025 03:00 PM
  schemas:
    BankingTimestamp:
      type: string
      description: Date and time in DD-MM-YYYY hh:mm AM/PM format.
      example: 02-02-2025 06:30 PM
    BankingEventDataBase:
      type: object
      required:
        - event_id
        - event_type
        - event_description
      description: >-
        Base fields present in the data block of every Banking Platform webhook
        event.
      properties:
        event_id:
          type: string
          pattern: ^inn_whe_[A-Za-z0-9]+$
          description: >-
            Unique identifier for this webhook event delivery. Use as your
            deduplication key.
          example: inn_whe_2tHPeibq8Gkm6kXU819g
        event_type:
          type: string
          description: The event type name, matching the top-level event field.
        event_description:
          type: string
          description: Human-readable description of the event. Often empty.
    EntityId:
      type: string
      description: Platform-assigned numeric entity identifier.
      example: '6830'
    EntityType:
      type: string
      description: The type of entity associated with this event.
      enum:
        - user
        - business
    Direction:
      type: string
      description: Direction of fund movement from the entity's perspective.
      enum:
        - credit
        - debit
    Currency:
      type: string
      description: ISO 4217 currency code.
      enum:
        - USD
        - usd
      example: USD
    Amount:
      type: string
      description: Monetary amount expressed as a decimal string with two decimal places.
      example: '500.00'
    CardStatusEnum:
      type: string
      description: Card lifecycle status.
      enum:
        - active
        - inactive
        - frozen
        - pending
        - inreview
        - terminated
        - reissue
    CardBlock:
      type: object
      description: Card detail block present on card issuance and card status events.
      required:
        - card_id
        - status
        - last_four
        - brand
        - type
      properties:
        card_id:
          type: string
          description: Platform-assigned card identifier.
          example: rcrd-acc960c0-3a14-413e-a248-74684e52a0f2
        status:
          $ref: '#/components/schemas/CardStatusEnum'
        last_four:
          type: string
          description: Last four digits of the card number.
          example: '8532'
        brand:
          type: string
          description: Card network brand (e.g. mastercard, visa).
          example: mastercard
        type:
          type: string
          description: Card form factor (e.g. physical, virtual).
          example: physical
    AssignmentAccountBlock:
      type: object
      description: Bank account detail returned on a successful single-record assignment.
      required:
        - account_id
        - status
        - number
        - routing
        - bank_name
        - type
      properties:
        account_id:
          type: string
          description: Platform-assigned account identifier.
          example: 9e30d021-3f39-4fcc-935b-e286d7f52807
        status:
          type: string
          description: Account status.
          example: active
        number:
          type: string
          description: Account number.
          example: '3351'
        routing:
          type: string
          description: Routing number.
          example: '080283020'
        bank_name:
          type: string
          description: Name of the bank.
          example: RBOC
        type:
          type: string
          description: Account type (e.g. vban, rba).
          example: vban
    AssignmentBatchBlock:
      type: object
      description: Batch processing summary returned on bulk assignment events.
      required:
        - type
        - records
        - processed
        - failed
      properties:
        type:
          type: string
          description: Batch file type.
          example: csv
        records:
          type: string
          description: Total number of records in the batch.
          example: '331'
        processed:
          type: string
          description: Number of records successfully processed.
          example: '331'
        failed:
          type: string
          description: Number of records that failed processing.
          example: '0'
        source:
          type: string
          description: URL of the source batch file.
          example: https://secure.files.example.com/files/820204949320_022.csv
    OverdraftReference:
      type: object
      description: Overdraft context block present on account.overdraft.created events.
      required:
        - overdraft_id
        - amount_intent
      properties:
        overdraft_id:
          type: string
          description: Platform-assigned overdraft identifier.
          example: OD_ABC123DEF456GHI789
        amount_intent:
          type: string
          description: >-
            The amount that was intended to be debited, which caused the
            overdraft.
          example: '500.00'
    ExceptionReference:
      type: object
      description: Bank-file context block present on account.transfer.exception events.
      required:
        - trailer
        - control
        - bank_process_date
        - type
        - bank_timestamp
      properties:
        trailer:
          type: string
          description: File trailer identifier from the bank file.
          example: '0000001'
        control:
          type: string
          description: Control record identifier.
          example: CTRL001
        bank_process_date:
          type: string
          description: Date the bank processed the file, in YYYYMMDD format.
          example: '20250202'
        type:
          type: string
          description: Payment rail or file type (e.g. ACH, wire).
          example: ACH
        bank_timestamp:
          type: string
          description: Bank-assigned timestamp for the file, in YYYYMMDDHHmmss format.
          example: '20250202143000'
    FullTransferData:
      type: object
      description: Full transfer payload fields present on most account.transfer.* events.
      required:
        - entity_id
        - entity_type
        - account_id
        - account_type
        - transfer_id
        - currency
        - amount
        - direction
        - status
      properties:
        entity_id:
          $ref: '#/components/schemas/EntityId'
        entity_type:
          $ref: '#/components/schemas/EntityType'
        account_id:
          type: string
          description: Platform-assigned account identifier.
        account_type:
          type: string
          description: Type of account (e.g. routable, virtual).
          example: routable
        transfer_id:
          type: string
          description: Platform-assigned transfer identifier.
          example: DPST_PVCVXAR4KRU2CTOT6026NIGGS
        currency:
          $ref: '#/components/schemas/Currency'
        amount:
          $ref: '#/components/schemas/Amount'
        memo:
          type: string
          description: Optional memo or description for the transfer.
        direction:
          $ref: '#/components/schemas/Direction'
        status:
          type: string
          description: Transfer status.
    SlimTransferData:
      type: object
      description: >-
        Slim transfer payload present on account.transfer.reversed and
        account.transfer.blocked events. Omits account_id, account_type,
        currency, amount, and memo.
      required:
        - entity_id
        - entity_type
        - transfer_id
        - direction
        - status
      properties:
        entity_id:
          $ref: '#/components/schemas/EntityId'
        entity_type:
          $ref: '#/components/schemas/EntityType'
        transfer_id:
          type: string
          description: Platform-assigned transfer identifier.
          example: DPST_PVCVXAR4KRU2CTOT6026NIGGS
        direction:
          $ref: '#/components/schemas/Direction'
        status:
          type: string
          description: Transfer status.
    CardStatusEventData:
      type: object
      description: Data fields present on card.status.* events.
      required:
        - entity_id
        - entity_type
        - account_id
        - status
        - card
      properties:
        entity_id:
          $ref: '#/components/schemas/EntityId'
        entity_type:
          $ref: '#/components/schemas/EntityType'
        account_id:
          type: string
          description: Platform-assigned account identifier.
        status:
          type: string
          description: Event-delivery status.
          example: completed
        reason_code:
          type: string
          nullable: true
          description: >-
            Optional reason code for the status transition. Null when no
            specific reason applies.
        card:
          $ref: '#/components/schemas/CardBlock'
    CardAuthEventData:
      type: object
      description: Data fields present on card.auth.* events.
      required:
        - entity_id
        - entity_type
        - account_id
        - transaction_id
        - amount
        - direction
        - status
        - card
      properties:
        entity_id:
          $ref: '#/components/schemas/EntityId'
        entity_type:
          $ref: '#/components/schemas/EntityType'
        account_id:
          type: string
          description: Platform-assigned account identifier.
        transaction_id:
          type: string
          description: Platform-assigned transaction identifier for the authorization.
        amount:
          $ref: '#/components/schemas/Amount'
        direction:
          $ref: '#/components/schemas/Direction'
        status:
          type: string
          description: Event-delivery status.
          example: completed
        card:
          $ref: '#/components/schemas/CardBlock'
