openapi: 3.1.0
info:
  title: Axiym Trade API Events
  version: 0.2.0
  description: |-
    This reference describes the webhook events Axiym sends to your registered HTTPS endpoint. These are outbound notifications received by your application, not API operations for you to call.

    Event payloads contain the identifiers and status information needed to recognize and route a change. Treat the corresponding Trade API resource as the authoritative source of its current state and retrieve it when your workflow needs additional or up-to-date details. Verify every event signature, use the event `id` to process duplicate deliveries safely, and acknowledge successfully received events with an HTTP `200` response.

    To start receiving events, see [Webhook Registration & Management](/trade-api/webhooks/registration-management) and [Verifying Webhook Signatures](/trade-api/webhooks/verifying-signatures).
tags:
  - name: Withdrawal
    description: Notifications about the lifecycle of an outbound withdrawal.
  - name: Account
    description: Notifications about posted Axiym account movements and changes to Axiym account availability.
  - name: Client
    description: Notifications about an represented client's onboarding decision and Trade API availability.
  - name: Registered external account
    description: Notifications about the review and availability of an owned external bank account or wallet used for deposits and withdrawals. The event contract retains the `destination.*` names.
  - name: Deposit
    description: Notifications about the lifecycle of an incoming deposit.
  - name: Conversion
    description: Notifications about the lifecycle of a currency conversion.
paths:
  /webhooks/withdrawal.created:
    post:
      tags:
        - Withdrawal
      summary: Withdrawal created
      description: Sent when a withdrawal has been created and is awaiting execution.
      operationId: onWithdrawalCreated
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: withdrawal.created
                data:
                  $ref: "#/components/schemas/WithdrawalEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/withdrawal.held:
    post:
      tags:
        - Withdrawal
      summary: Withdrawal held
      description: Sent when processing of a withdrawal has been placed temporarily on hold.
      operationId: onWithdrawalHeld
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: withdrawal.held
                data:
                  $ref: "#/components/schemas/WithdrawalEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/withdrawal.completed:
    post:
      tags:
        - Withdrawal
      summary: Withdrawal completed
      description: Sent when a withdrawal has completed successfully.
      operationId: onWithdrawalCompleted
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: withdrawal.completed
                data:
                  $ref: "#/components/schemas/WithdrawalEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/withdrawal.canceled:
    post:
      tags:
        - Withdrawal
      summary: Withdrawal canceled
      description: Sent when a withdrawal has been canceled and will not complete.
      operationId: onWithdrawalCanceled
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: withdrawal.canceled
                data:
                  $ref: "#/components/schemas/WithdrawalEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/withdrawal.rejected:
    post:
      tags:
        - Withdrawal
      summary: Withdrawal rejected
      description: Sent when a withdrawal has been rejected and will not complete.
      operationId: onWithdrawalRejected
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: withdrawal.rejected
                data:
                  $ref: "#/components/schemas/WithdrawalEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/account.credited:
    post:
      tags:
        - Account
      summary: Account credited
      description: Sent when a credit has been posted to an account.
      operationId: onAccountCredited
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: account.credited
                data:
                  $ref: "#/components/schemas/AccountMovementEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/account.debited:
    post:
      tags:
        - Account
      summary: Account debited
      description: Sent when a debit has been posted to an account.
      operationId: onAccountDebited
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: account.debited
                data:
                  $ref: "#/components/schemas/AccountMovementEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/account.activated:
    post:
      tags:
        - Account
      summary: Account activated
      description: Sent when an account becomes active and available for supported operations.
      operationId: onAccountActivated
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: account.activated
                data:
                  $ref: "#/components/schemas/AccountStatusEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/account.suspended:
    post:
      tags:
        - Account
      summary: Account suspended
      description: Sent when an account is suspended and temporarily unavailable for supported operations.
      operationId: onAccountSuspended
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: account.suspended
                data:
                  $ref: "#/components/schemas/AccountStatusEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/account.closed:
    post:
      tags:
        - Account
      summary: Account closed
      description: Sent when an account is permanently closed.
      operationId: onAccountClosed
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: account.closed
                data:
                  $ref: "#/components/schemas/AccountStatusEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/destination.created:
    post:
      tags:
        - Registered external account
      summary: Registered external account created
      description: Sent when an owned external bank account or wallet has been registered and is awaiting review.
      operationId: onDestinationCreated
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: destination.created
                data:
                  $ref: "#/components/schemas/DestinationEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/destination.activated:
    post:
      tags:
        - Registered external account
      summary: Registered external account activated
      description: Sent when a registered external account is approved and becomes available as a permitted deposit source and withdrawal recipient.
      operationId: onDestinationActivated
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: destination.activated
                data:
                  $ref: "#/components/schemas/DestinationEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/destination.suspended:
    post:
      tags:
        - Registered external account
      summary: Registered external account suspended
      description: Sent when a registered external account is suspended and cannot be used for deposits or withdrawals.
      operationId: onDestinationSuspended
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: destination.suspended
                data:
                  $ref: "#/components/schemas/DestinationEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/destination.closed:
    post:
      tags:
        - Registered external account
      summary: Registered external account closed
      description: Sent when a registered external account is permanently closed and can no longer be used for deposits or withdrawals.
      operationId: onDestinationClosed
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: destination.closed
                data:
                  $ref: "#/components/schemas/DestinationEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/deposit.created:
    post:
      tags:
        - Deposit
      summary: Deposit created
      description: Sent when an incoming payment has been detected and recorded as a deposit.
      operationId: onDepositCreated
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: deposit.created
                data:
                  $ref: "#/components/schemas/DepositEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/deposit.held:
    post:
      tags:
        - Deposit
      summary: Deposit held
      description: Sent when processing of a deposit has been placed temporarily on hold.
      operationId: onDepositHeld
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: deposit.held
                data:
                  $ref: "#/components/schemas/DepositEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/deposit.completed:
    post:
      tags:
        - Deposit
      summary: Deposit completed
      description: Sent when a deposit has completed and the receiving account has been credited.
      operationId: onDepositCompleted
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: deposit.completed
                data:
                  $ref: "#/components/schemas/DepositEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/deposit.canceled:
    post:
      tags:
        - Deposit
      summary: Deposit canceled
      description: Sent when a deposit has been canceled and will not be credited to the receiving account.
      operationId: onDepositCanceled
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: deposit.canceled
                data:
                  $ref: "#/components/schemas/DepositEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/deposit.rejected:
    post:
      tags:
        - Deposit
      summary: Deposit rejected
      description: Sent when a deposit has been rejected and will not be credited to the receiving account.
      operationId: onDepositRejected
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: deposit.rejected
                data:
                  $ref: "#/components/schemas/DepositEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/conversion.created:
    post:
      tags:
        - Conversion
      summary: Conversion created
      description: Sent when a conversion quote has been created and is awaiting confirmation.
      operationId: onConversionCreated
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: conversion.created
                data:
                  $ref: "#/components/schemas/ConversionEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/conversion.completed:
    post:
      tags:
        - Conversion
      summary: Conversion completed
      description: Sent when a conversion has completed and the sell-side and buy-side Axiym account movements have been posted.
      operationId: onConversionCompleted
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: conversion.completed
                data:
                  $ref: "#/components/schemas/ConversionEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/conversion.canceled:
    post:
      tags:
        - Conversion
      summary: Conversion canceled
      description: Sent when a conversion has been canceled, expired, or failed and will not complete.
      operationId: onConversionCanceled
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                  examples:
                    - 3fa85f64-5717-4562-b3fc-2c963f66afa6
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                  examples:
                    - 2026-06-23T14:05:09Z
                type:
                  type: string
                  const: conversion.canceled
                data:
                  $ref: "#/components/schemas/ConversionEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/client.onboarding-finished:
    post:
      tags:
        - Client
      summary: Client onboarding finished
      description: "Deprecated legacy activation event. It is emitted alongside `client.activated` for the same activation moment until legacy integrators migrate."
      deprecated: true
      operationId: onClientOnboardingFinished
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                type:
                  type: string
                  const: client.onboarding-finished
                data:
                  $ref: "#/components/schemas/ClientOnboardingEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/client.created:
    post:
      tags:
        - Client
      summary: Client created
      description: Sent when Axiym creates a client record for your partnership.
      operationId: onClientCreated
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                timestamp:
                  type: string
                  format: date-time
                type:
                  type: string
                  const: client.created
                data:
                  $ref: "#/components/schemas/ClientEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/client.updated:
    post:
      tags:
        - Client
      summary: Client updated
      description: Sent when Axiym updates a client record. A disabled or archived update also emits `client.disabled`.
      operationId: onClientUpdated
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                timestamp:
                  type: string
                  format: date-time
                type:
                  type: string
                  const: client.updated
                data:
                  $ref: "#/components/schemas/ClientEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/client.activated:
    post:
      tags:
        - Client
      summary: Client activated
      description: Sent when an onboarded client becomes available for Trade API operations, including when a previously disabled client is reactivated.
      operationId: onClientActivated
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                type:
                  type: string
                  const: client.activated
                data:
                  $ref: "#/components/schemas/ClientStatusEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
  /webhooks/client.disabled:
    post:
      tags:
        - Client
      summary: Client disabled
      description: Sent when an onboarded client can no longer use Trade API operations. Do not create new Trade resources for the client until it is activated again.
      operationId: onClientDisabled
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - timestamp
                - type
                - data
              properties:
                id:
                  type: string
                  format: uuid
                  description: Event ID. Use this for de-duplication.
                timestamp:
                  type: string
                  format: date-time
                  description: Event timestamp. Formatted in ISO 8601.
                type:
                  type: string
                  const: client.disabled
                data:
                  $ref: "#/components/schemas/ClientStatusEventData"
      responses:
        "200":
          description: Acknowledged by your endpoint.
components:
  schemas:
    ClientEventData:
      type: object
      description: Client record snapshot at the time of the event. Fetch `GET /clients/{clientId}` when current profile details are required.
      required:
        - clientId
        - legalEntityName
        - paymentRails
        - currency
        - status
      properties:
        clientId:
          type: string
          format: uuid
        code:
          type: string
          description: Human-readable Axiym client code, where available.
        legalEntityName:
          type: string
        paymentRails:
          type: string
        currency:
          type: string
        status:
          type: string
    ClientOnboardingEventData:
      type: object
      description: Compact outcome of a client onboarding review. Fetch `GET /onboardings/{clientId}` for the authoritative case, including any available rejection reason.
      required:
        - clientId
        - partnerClientId
        - status
      properties:
        clientId:
          type: string
          format: uuid
          description: Axiym identifier assigned to the represented client.
          examples:
            - 1d2f7f5e-8a3b-4c6d-9e0f-2a4b6c8d0e2f
        partnerClientId:
          type: string
          description: Your stable identifier for the client.
          examples:
            - acme-sg-001
        status:
          type: string
          description: Terminal onboarding decision.
          enum:
            - ACTIVE
            - REJECTED
          examples:
            - ACTIVE
    ClientStatusEventData:
      type: object
      description: Compact client availability change. Fetch `GET /clients/{clientId}` when current profile details are required.
      required:
        - clientId
        - status
      properties:
        clientId:
          type: string
          format: uuid
          description: Axiym identifier of the represented client.
          examples:
            - 1d2f7f5e-8a3b-4c6d-9e0f-2a4b6c8d0e2f
        status:
          type: string
          description: Client availability at the time the event was emitted.
          enum:
            - ACTIVE
            - DISABLED
          examples:
            - ACTIVE
    ConversionStatus:
      type: string
      description: |
        `PENDING` after creation (awaiting confirmation at the locked rate), `ACTIVE` once confirmed (executing), `COMPLETED` when the funds are exchanged, `CANCELED` if canceled, expired, or failed (see `reasonCode`).
      enum:
        - PENDING
        - ACTIVE
        - COMPLETED
        - CANCELED
      examples:
        - COMPLETED
    ConversionEventData:
      type: object
      description: "Compact event payload: enough to route the event and correlate it with your records. Fetch the authoritative conversion via `GET /clients/{clientId}/conversions/{conversionId}` when you need amounts or the rate."
      required:
        - conversionId
        - status
        - clientId
      properties:
        conversionId:
          type: string
          format: uuid
          description: Conversion identifier (UUID).
          examples:
            - a3f5d7c9-1e2b-4c6a-8d9f-0b1a2c3d4e5f
        status:
          $ref: "#/components/schemas/ConversionStatus"
          description: Conversion status at the time the event was emitted.
          examples:
            - COMPLETED
        externalReference:
          $ref: "#/components/schemas/ExternalReference"
          description: Your reference submitted on creation, where present.
          examples:
            - conv-2026-0714-01
        reasonCode:
          type: string
          description: "Present on `conversion.canceled` — the reason as reported by operations or the liquidity venue. Example: `RATE_EXPIRED`."
        clientId:
          type: string
          format: uuid
          description: Axiym identifier of the client that owns the resource.
          examples:
            - 1d2f7f5e-8a3b-4c6d-9e0f-2a4b6c8d0e2f
    DepositStatus:
      type: string
      description: |
        `PENDING` detected and awaiting crediting, `HELD` temporarily on hold — no action needed from you, `COMPLETED` credited to the account, `CANCELED`/`REJECTED` not completed (see `reasonCode`).
      enum:
        - PENDING
        - HELD
        - COMPLETED
        - CANCELED
        - REJECTED
      examples:
        - COMPLETED
    DepositEventData:
      type: object
      description: "Compact event payload: enough to route the event and correlate it with your records. Fetch the authoritative deposit via `GET /clients/{clientId}/deposits/{depositId}` when you need amounts or the transaction hash."
      required:
        - depositId
        - status
        - clientId
      properties:
        depositId:
          type: string
          format: uuid
          description: Deposit identifier (UUID).
          examples:
            - 4c8e2b6a-1d9f-4e3b-a7c5-2f0a8d6b4e1c
        status:
          $ref: "#/components/schemas/DepositStatus"
          description: Deposit status at the time the event was emitted.
          examples:
            - COMPLETED
        reasonCode:
          type: string
          description: "Present on `deposit.canceled` / `deposit.rejected` — the reason as reported by the bank, the network, or Axiym operations. Example: `SENDER_SCREENING_FAILED`."
        clientId:
          type: string
          format: uuid
          description: Axiym identifier of the client that owns the resource.
          examples:
            - 1d2f7f5e-8a3b-4c6d-9e0f-2a4b6c8d0e2f
    DestinationStatus:
      type: string
      description: |
        `PENDING_REVIEW` awaiting review, `ACTIVE` usable as a permitted deposit source and withdrawal recipient, `SUSPENDED` temporarily unusable for deposits and withdrawals, `CLOSED` permanently retired.
      enum:
        - PENDING_REVIEW
        - ACTIVE
        - SUSPENDED
        - CLOSED
      examples:
        - ACTIVE
    DestinationEventData:
      type: object
      description: Registered external-account lifecycle notification. The contract retains the `destinationId` field name.
      required:
        - destinationId
        - status
        - clientId
      properties:
        destinationId:
          type: string
          format: uuid
          description: Registered external-account identifier (UUID).
          examples:
            - e2c8a4f6-7b1d-4e3a-9c5f-8a0b2d4e6f1c
        status:
          $ref: "#/components/schemas/DestinationStatus"
          description: Registered external-account status when the event was emitted.
          examples:
            - ACTIVE
        clientId:
          type: string
          format: uuid
          description: Axiym identifier of the client that owns the resource.
          examples:
            - 1d2f7f5e-8a3b-4c6d-9e0f-2a4b6c8d0e2f
    Currency:
      type: string
      description: Currency code — ISO 4217 (e.g. USD, EUR) or a supported digital currency (USDT, USDC).
      examples:
        - USD
    Decimal:
      type: string
      description: Decimal number serialized as a string to preserve precision.
      examples:
        - "1000.00"
    AccountStatus:
      type: string
      enum:
        - ACTIVE
        - SUSPENDED
        - CLOSED
      examples:
        - SUSPENDED
    AccountMovementEventData:
      type: object
      description: A posted ledger movement on an account. Movements are immutable facts, so the amount is carried in the event; the current balance is not — fetch it via `GET /clients/{clientId}/accounts/{accountId}`.
      required:
        - accountId
        - amount
        - currency
        - occurredAt
        - clientId
      properties:
        accountId:
          type: string
          format: uuid
          description: Account identifier (UUID).
          examples:
            - 8f1d4a2c-3b5e-4c7a-9d1f-2a6b8c0e4d3a
        amount:
          allOf:
            - $ref: "#/components/schemas/Decimal"
          description: Positive movement amount in the account currency; direction is in the event type.
          examples:
            - "1000.00"
        currency:
          $ref: "#/components/schemas/Currency"
          description: Account currency.
          examples:
            - USD
        relatedResourceType:
          type: string
          description: Type of the linked money movement; absent for movements with no linked API resource.
          enum:
            - DEPOSIT
            - WITHDRAWAL
            - CONVERSION
          examples:
            - WITHDRAWAL
        relatedResourceId:
          type: string
          format: uuid
          description: Identifier of the linked resource, where present.
          examples:
            - 9b4e2a1c-6d3f-4a8e-bc7d-1f2a3b4c5d6e
        occurredAt:
          type: string
          format: date-time
          description: When the movement occurred. Formatted in ISO 8601.
          examples:
            - 2026-06-14T20:07:31Z
        clientId:
          type: string
          format: uuid
          description: Axiym identifier of the client that owns the resource.
          examples:
            - 1d2f7f5e-8a3b-4c6d-9e0f-2a4b6c8d0e2f
    AccountStatusEventData:
      type: object
      description: Account lifecycle notification.
      required:
        - accountId
        - status
        - clientId
      properties:
        accountId:
          type: string
          format: uuid
          description: Account identifier (UUID).
          examples:
            - 8f1d4a2c-3b5e-4c7a-9d1f-2a6b8c0e4d3a
        status:
          $ref: "#/components/schemas/AccountStatus"
          description: Account status at the time the event was emitted.
          examples:
            - SUSPENDED
        clientId:
          type: string
          format: uuid
          description: Axiym identifier of the client that owns the resource.
          examples:
            - 1d2f7f5e-8a3b-4c6d-9e0f-2a4b6c8d0e2f
    ExternalReference:
      type: string
      maxLength: 255
      description: |
        Your own identifier for this object, for correlation with your system. Optional, echoed back on reads.
      examples:
        - wd-2026-0614-01
    WithdrawalStatus:
      type: string
      description: |
        `PENDING` awaiting execution, `HELD` temporarily on hold — no action needed from you, `COMPLETED` done, `CANCELED`/`REJECTED` not completed (see `reasonCode`).
      enum:
        - PENDING
        - HELD
        - COMPLETED
        - CANCELED
        - REJECTED
      examples:
        - PENDING
    WithdrawalEventData:
      type: object
      description: "Compact event payload: enough to route the event and correlate it with your records. Webhooks are notifications, not state transfer — fetch the authoritative withdrawal via `GET /clients/{clientId}/withdrawals/{withdrawalId}` when you need amounts, fees, or the transaction hash."
      required:
        - withdrawalId
        - status
        - clientId
      properties:
        withdrawalId:
          type: string
          format: uuid
          description: Withdrawal identifier (UUID).
          examples:
            - 9b4e2a1c-6d3f-4a8e-bc7d-1f2a3b4c5d6e
        status:
          $ref: "#/components/schemas/WithdrawalStatus"
          description: Withdrawal status at the time the event was emitted.
          examples:
            - COMPLETED
        externalReference:
          $ref: "#/components/schemas/ExternalReference"
          description: Your reference submitted on creation, where present.
          examples:
            - wd-2026-0714-01
        reasonCode:
          type: string
          description: "Present on `withdrawal.canceled` / `withdrawal.rejected` — the reason as reported by the bank, the network, or Axiym operations. Example: `INSUFFICIENT_BENEFICIARY_DETAILS`."
        clientId:
          type: string
          format: uuid
          description: Axiym identifier of the client that owns the resource.
          examples:
            - 1d2f7f5e-8a3b-4c6d-9e0f-2a4b6c8d0e2f
