> ## Documentation Index
> Fetch the complete documentation index at: https://developers.securitize.io/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> SecId API: use the sandbox base URL https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance unless the user explicitly provides production access. Authenticate with OAuth 2.0 client credentials: POST https://partners-api.sandbox.securitize.io/oauth2/token (form fields grant_type=client_credentials, client_id, client_secret, read from environment variables), cache the bearer token for its expires_in (7200 s) and send it as Authorization: Bearer on every call; never print or log the secret or the token.
> Nothing is verified until POST /investors/{investorId}/verification/submit. An individual: create, upload one identity document, submit. A company: create, add its people as key parties (at least one with isBeneficialOwner: true), upload their documents, submit.
> Branch on the HTTP status and the error `code`, never on `message`. A body without `code` comes from the gateway: on a 401 get a new token and send the request again; a 403 means the account is not enabled for this API.
> SecId API addresses: send address.state only when that address's countryCode is US, as the 2-letter state code (NY); omit it for any other country, also when the user has a province or region. Otherwise the call answers 400 validation_error on address.state.
> SecId API individuals in the US: taxId is the person's Social Security number, and it is checked against the name and residential address sent; send them as registered. A mismatch can move the investor to manual-review instead of verified. Sandbox does not run the check.
> Creates are safe to repeat with the same body: after a timeout or a 502, send the identical create again. Document uploads are not: each call stores a new document, so only re-send a document after a 502.
> Poll GET /investors/{investorId} about every 30 seconds, then back off; treat any status you do not recognise as not verified. In sandbox, the webhook investor.kyc.updated also announces every status change, and investor.suitability.updated / investor.dlt_test.updated every change of the suitability and DLT test verificationStatus: verify the signature, deduplicate on sourceEventId and confirm with the matching GET before acting. Token whitelisting is asynchronous too: poll GET /investors/{investorId}/wallets/whitelist until the status leaves processing.
> SecId API tax forms: POST /investors/{investorId}/tax-forms takes multipart/form-data (parts file, formType, signatureDate); never base64 or JSON. Let the HTTP client set content-type with the boundary. At any point of the verification, before or after the investor is verified, only for investors you created (201), one PDF up to 10 MB per call; each upload replaces the form on file, so after a 502 send the same request again. A W-9 can instead go as JSON fields to POST /investors/{investorId}/tax-forms/w9 (TIN as 9 digits, SSN or EIN): it does not replace a form on file (409 tax_form_already_active, details.activeTaxForm), and it requires a certification object (certifiedAt, signatureName, subjectToBackupWithholding false, isUSPerson true, certificationTextVersion w9-sm-2026-10): the investor certifies in your flow on the text published at /secid-api/tax-forms#the-certification, shown without changes; subjectToBackupWithholding true answers 422 business_rule_violation (details.reason backup_withholding_not_supported). Unlike creates, a repeat after success answers 409 tax_form_already_active, not 201: when details.activeTaxForm.formType is W-9, treat it as on file.
> Use synthetic test data in sandbox (@test.invalid emails, fresh ids each run). Never send more than one DLT test attempt per test investor unless the user asks: three failed attempts lock the test permanently.
> The complete contract, with every field, response and error, is the OpenAPI file of the API reference; the Errors page says what to do for each code.
> CET Underlying API: a WebSocket at wss://partners-rt-gw.sandbox.securitize.io/v1/market-maker/stream (TLS only; ws:// hangs with no answer). Sign hello, place_order, cancel_order and submit_crypto_funding with the user's Ed25519 key, read from an environment variable or secrets store; never print or log it. Sign timestamp + "." + type + "." + the exact payload string you send: serialise the payload once and embed that same string in the frame.
> CET Underlying API: send a unique requestId of at most 32 characters (a UUID without hyphens) on every message and match replies on it; frames without a requestId are pushes. Every amount is a decimal string, never a JSON number; compare amounts as decimals. Branch on the error code, never on message.
> CET Underlying API: an ack to place_order means taken, not filled. externalRef is the idempotency key; after an ack with status UNKNOWN or an UPSTREAM_UNAVAILABLE error, call get_order by externalRef before resending. Updates are delivered at most once: after any reconnect, read working orders back with get_order. Every order is placed by quantity. A buy must be a LIMIT order: quantity × limitPrice plus fees is held against your own available cash (get_cash_balance_v2), and a buy it does not cover, a MARKET buy or a notional order is refused (INVALID_ORDER). A sell must be placed by quantity, after its CETs reach the redemption wallet, or it is refused. mint_updated and burn_updated push mints and burns once they are on chain; after a gap, read them with get_mints and get_burns. The complete contract is the AsyncAPI file of the API reference.
> Stocks API (Beta): documented ahead of its release through the partner gateway; paths, fields and errors can change. Base URL https://partners-api.sandbox.securitize.io/stocks/v1. Send x-api-key on every call and investorId on every call about an investor. Read the key from an environment variable; never print or log it, and never call the API from frontend code.
> Stocks API: an investor can trade only once the SecId API shows them verified, with verified suitability (and a passed DLT test in the EEA), and once their wallet on the stock's chain is linked with their signature of the agreement message, signed verbatim. There is no whitelisting call: the first trade whitelists the wallet.
> Stocks API: orders are fill or kill. GET /stocks/realtime-price, prepare within about 20 seconds (signedPrice), have the investor's wallet sign the returned transaction unchanged and sign-only (never send it), then submit it once with POST /stocks/execute-signed-transaction within 120 seconds. Amounts are raw base units as strings; USDC has 6 decimals. The outcome is on chain: follow transactionHash.
> Stocks API: production access requires a UI audit by Securitize Compliance of the live screens: the disclosures and the market data shown, the NBBO included.
> Corporate Actions API (Beta, 0.x): in development and subject to change; paths, fields, enumerations and event names can change before 1.0.0. Base URL https://partners-api.sandbox.securitize.io/corporate-actions/v1. Get a bearer token with OAuth 2.0 client credentials at POST https://partners-api.sandbox.securitize.io/oauth2/token (no scope, 2 hours), cache it, and send Authorization: Bearer on every call. Read the client id, secret and the webhook signing secret from environment variables; never print or log them, and never call the API from frontend code.
> Corporate Actions API: webhooks arrive signed with the Standard Webhooks scheme under the svix-id, svix-timestamp and svix-signature headers (HMAC-SHA256 over id.timestamp.raw body, base64, v1 prefix; the secret is base64 after whsec_). Verify before parsing, reject a timestamp more than 5 minutes off, answer 2xx within 10 seconds. Delivery is at least once and can be out of order: deduplicate on sourceEventId, keep the highest version per object (objectId), order by sequence per stream.id, and replace the object with data (never merge).
> Corporate Actions API: treat an unknown caType, reasonCode, eventType or enum value as informational, never as an error. A restriction ends only with ca.restriction.removed; expectedEnd is informational. marketStatus UNAVAILABLE means do not trade; the reason field carries a restriction reasonCode or a market reason such as PRE_MARKET. GET /tokens?status= filters by marketStatus (OPEN, CLOSED, UNAVAILABLE), not by the token's ACTIVE status.
> Corporate Actions API: the event routes are at https://partners-api.sandbox.securitize.io/webhooks/v1 (not under /corporate-actions/v1) and cover every webhook family sent to the partner; filter with eventTypes=ca.* for corporate actions only. After an outage call POST /events/recover with since at the start of the outage (resends failed deliveries only), or page GET /events?since= (newest first, iterator paging, 90 days), then read state with GET /tokens/{tokenId}/status and GET /corporate-actions/{sourceCaId}. In sandbox, POST /sandbox/events with a scenario and one of your tokenIds publishes a scripted sequence at once; order the events by sequence, not by arrival.
> Investor Activity API: base URL https://partners-api.sandbox.securitize.io/v1. Authentication is OAuth 2.0 client credentials only (no API key): POST https://partners-api.sandbox.securitize.io/oauth2/token (no scope, 2 hours), cache the token, and send Authorization: Bearer on every call. The token identifies the investor account; there is no investor id to pass. Read the client id, secret and the webhook signing secret from environment variables; never print or log them, and never call the API from frontend code.
> Investor Activity API: every amount is an integer string in base units with a sibling decimals (human = amount / 10^decimals); parse with BigInt or a decimal type, never a float. Cash amounts (deposits, confirmations, payouts) are in the minor units of currencyId (1 = USD, decimals 2); token amounts (transactions, mintings, holdings) in the token's base units. Never add cash to tokens.
> Investor Activity API: reconcile a subscription by grouping GET /deposits?tokenId= on tokenIssuanceId and matching the transaction in GET /transactions?tokenId= with the same tokenIssuanceId (null on a deposit means not issued yet; null on a transaction means not an issuance). Each issuance has a deposit movement (cash in) and a liquidation movement (that cash applied to the tokens) for the same amount: count the cash once, by direction=deposit, never by adding every movement. Page with offset and limit (max 100) until offset + meta.length reaches meta.total; there is no tokenIssuanceId filter. Reconcile a redemption by txHash (transfer, investor.redemption.pending, payout sourceTransaction) and by the redemption's data.id across pending, confirmed, payout.initiated and payout.completed.
> Investor Activity API: webhooks arrive signed with the Standard Webhooks scheme under the svix-id, svix-timestamp and svix-signature headers (HMAC-SHA256 over id.timestamp.raw body, base64, v1 prefix; the secret is base64 after whsec_). Verify before parsing, reject a timestamp more than 5 minutes off, answer 2xx within 15 seconds. The body is {eventType, eventId, timestamp, data}: deduplicate on eventId (not svix-id), upsert by data.id, never move a record back to an earlier step, and treat an unknown eventType, processType or paymentMethod as informational. In webhooks a field with no value is absent; in endpoint answers it is null. After an outage page GET /webhook-events (newest first, iterator paging, optional eventType) back to the start of the outage.
> SecId hosted onboarding: instead of the API, a partner can send an investor to https://stocks.securitize.io/partners?tokenId=<stock token id>&partnerUrl=<return URL> (tokenAddress may replace tokenId; partnerUrl must be an absolute https URL, URL-encoded). Securitize runs identity verification, the investment profile and the wallet there. Nothing is appended to partnerUrl on return: check the wallet on chain before trading (Beta on Solana).

# Mints and burns

> Read the CETs minted against your buys and burned against your sells.

`mint_updated` and `burn_updated` push each one once its CETs are on chain, or gone; read them here to catch up after a gap. Reconcile on `amount`, and only once `executionsComplete` is `true`. See [Mints and burns](https://developers.securitize.io/cet-underlying-api/mints-and-burns.md).


## AsyncAPI

````yaml cet-underlying-api/asyncapi.yaml mints-and-burns
id: mints-and-burns
title: Mints and burns
description: >
  Read the CETs minted against your buys and burned against your sells, with the
  executions behind each one. `mint_updated` and `burn_updated` push each one
  once its CETs are on chain, or gone; the reads here are how you catch up after
  a gap. Every `get_order` answer also carries the order's own.
servers:
  - id: sandbox
    protocol: wss
    host: partners-rt-gw.sandbox.securitize.io
    bindings: []
    variables: []
address: /v1/market-maker/stream
parameters: []
bindings: []
operations:
  - &ref_8
    id: getMints
    title: Read mints
    description: CETs minted against your buys.
    type: receive
    messages:
      - &ref_13
        id: get_mints
        payload:
          - name: get_mints
            description: Reads the CETs minted against your buys, newest first.
            type: object
            properties:
              - name: type
                type: string
                description: get_mints
                required: true
              - name: requestId
                type: string
                description: >-
                  Your id for this message, echoed on its reply. Never
                  interpreted or checked for uniqueness. Up to 64 characters are
                  accepted, but keep it to 32, since an `error` echoes only the
                  first 32 followed by `…`. A UUID without its hyphens is 32
                  characters.
                required: false
              - name: payload
                type: object
                description: Every field is optional, and they combine.
                required: false
                properties:
                  - name: memo
                    type: string
                    description: >-
                      The memo exactly as recorded, matched whole and never
                      parsed. Printable ASCII, at most 128 characters.
                    required: false
                  - name: traceId
                    type: string
                    description: >-
                      The base58 handle after the memo's final colon, at most 16
                      characters.
                    required: false
                  - name: txHash
                    type: string
                    description: >-
                      The hash of a mint or burn transaction, matched whole.
                      `0x` and 64 hex digits on an EVM chain, matched in either
                      case; the base58 signature on Solana.
                    required: false
                  - name: regulatoryId
                    type: string
                    description: >-
                      An order's `regulatoryId`. Answers every mint or burn the
                      order produced.
                    required: false
                  - name: symbol
                    type: string
                    description: Narrows to one share.
                    required: false
                  - name: limit
                    type: integer
                    description: >-
                      How many to return, newest first, from 1 to 200. A value
                      out of bounds is refused, not clamped.
                    required: false
        headers: []
        jsonPayloadSchema:
          type: object
          required:
            - type
          properties:
            type:
              type: string
              const: get_mints
              x-parser-schema-id: <anonymous-schema-207>
            requestId: &ref_0
              type: string
              maxLength: 64
              description: >-
                Your id for this message, echoed on its reply. Never interpreted
                or checked for uniqueness. Up to 64 characters are accepted, but
                keep it to 32, since an `error` echoes only the first 32
                followed by `…`. A UUID without its hyphens is 32 characters.
              x-parser-schema-id: RequestId
            payload: &ref_1
              type: object
              description: Every field is optional, and they combine.
              properties:
                memo:
                  type: string
                  maxLength: 128
                  pattern: ^[\x20-\x7e]+$
                  description: >-
                    The memo exactly as recorded, matched whole and never
                    parsed. Printable ASCII, at most 128 characters.
                  x-parser-schema-id: <anonymous-schema-208>
                traceId:
                  type: string
                  pattern: ^[1-9A-HJ-NP-Za-km-z]{1,16}$
                  description: >-
                    The base58 handle after the memo's final colon, at most 16
                    characters.
                  x-parser-schema-id: <anonymous-schema-209>
                txHash:
                  type: string
                  pattern: ^(0x[0-9a-fA-F]{64}|[1-9A-HJ-NP-Za-km-z]{43,90})$
                  description: >-
                    The hash of a mint or burn transaction, matched whole. `0x`
                    and 64 hex digits on an EVM chain, matched in either case;
                    the base58 signature on Solana.
                  x-parser-schema-id: <anonymous-schema-210>
                regulatoryId:
                  type: string
                  pattern: ^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]{1,64}$
                  description: >-
                    An order's `regulatoryId`. Answers every mint or burn the
                    order produced.
                  x-parser-schema-id: <anonymous-schema-211>
                symbol:
                  type: string
                  maxLength: 32
                  pattern: ^(?=.*[A-Za-z0-9])[A-Za-z0-9. -]{1,32}$
                  description: Narrows to one share.
                  x-parser-schema-id: <anonymous-schema-212>
                limit:
                  type: integer
                  minimum: 1
                  maximum: 200
                  description: >-
                    How many to return, newest first, from 1 to 200. A value out
                    of bounds is refused, not clamped.
                  x-parser-schema-id: <anonymous-schema-213>
              x-parser-schema-id: MintBurnFilter
          x-parser-schema-id: GetMintsFrame
        title: Get_mints
        description: Reads the CETs minted against your buys, newest first.
        example: |-
          {
            "type": "get_mints",
            "requestId": "m1",
            "payload": {
              "traceId": "29PjryBEd"
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: get_mints
    bindings: []
    extensions: &ref_2
      - id: x-parser-unique-object-id
        value: mints-and-burns
  - &ref_9
    id: getBurns
    title: Read burns
    description: CETs burned against your sells.
    type: receive
    messages:
      - &ref_14
        id: get_burns
        payload:
          - name: get_burns
            description: Reads the CETs burned against your sells, newest first.
            type: object
            properties:
              - name: type
                type: string
                description: get_burns
                required: true
              - name: requestId
                type: string
                description: >-
                  Your id for this message, echoed on its reply. Never
                  interpreted or checked for uniqueness. Up to 64 characters are
                  accepted, but keep it to 32, since an `error` echoes only the
                  first 32 followed by `…`. A UUID without its hyphens is 32
                  characters.
                required: false
              - name: payload
                type: object
                description: Every field is optional, and they combine.
                required: false
                properties:
                  - name: memo
                    type: string
                    description: >-
                      The memo exactly as recorded, matched whole and never
                      parsed. Printable ASCII, at most 128 characters.
                    required: false
                  - name: traceId
                    type: string
                    description: >-
                      The base58 handle after the memo's final colon, at most 16
                      characters.
                    required: false
                  - name: txHash
                    type: string
                    description: >-
                      The hash of a mint or burn transaction, matched whole.
                      `0x` and 64 hex digits on an EVM chain, matched in either
                      case; the base58 signature on Solana.
                    required: false
                  - name: regulatoryId
                    type: string
                    description: >-
                      An order's `regulatoryId`. Answers every mint or burn the
                      order produced.
                    required: false
                  - name: symbol
                    type: string
                    description: Narrows to one share.
                    required: false
                  - name: limit
                    type: integer
                    description: >-
                      How many to return, newest first, from 1 to 200. A value
                      out of bounds is refused, not clamped.
                    required: false
        headers: []
        jsonPayloadSchema:
          type: object
          required:
            - type
          properties:
            type:
              type: string
              const: get_burns
              x-parser-schema-id: <anonymous-schema-218>
            requestId: *ref_0
            payload: *ref_1
          x-parser-schema-id: GetBurnsFrame
        title: Get_burns
        description: Reads the CETs burned against your sells, newest first.
        example: |-
          {
            "type": "get_burns",
            "requestId": "b1",
            "payload": {
              "regulatoryId": "c41a8b03-5e7d-4f26-9a1b-8d3c6e0f2b47"
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: get_burns
    bindings: []
    extensions: *ref_2
  - &ref_10
    id: mintsAndBurnsReplies
    title: Mint and burn replies
    description: What the server answers to mint and burn reads.
    type: send
    messages:
      - &ref_15
        id: get_mints_ack
        payload:
          - name: ack (get_mints)
            description: The mints that match, newest first.
            type: object
            properties:
              - name: type
                type: string
                description: ack
                required: true
              - name: for
                type: string
                description: get_mints
                required: true
              - name: requestId
                type: string
                description: >-
                  Your id for this message, echoed on its reply. Never
                  interpreted or checked for uniqueness. Up to 64 characters are
                  accepted, but keep it to 32, since an `error` echoes only the
                  first 32 followed by `…`. A UUID without its hyphens is 32
                  characters.
                required: false
              - name: traceId
                type: string
                description: >-
                  The server's id for this exchange. Opaque; quote it when you
                  contact Securitize. Not the `traceId` on a mint or a burn.
                required: true
              - name: sentAt
                type: string
                description: >-
                  When the server put the message on the wire. ISO 8601, UTC,
                  milliseconds. Not when anything happened at the broker.
                required: true
              - name: payload
                type: object
                required: true
                properties:
                  - name: mints
                    type: array
                    required: true
                    properties:
                      - name: regulatoryId
                        type: string
                        description: The order the mint is for.
                        required: true
                      - name: symbol
                        type: string
                        required: true
                      - name: tokenAddress
                        type: string
                        description: >-
                          The on-chain address of the CET the symbol is tracked
                          as on your account. Absent for a symbol not tracked
                          there, or when it could not be looked up.
                        required: false
                      - name: chainId
                        type: integer
                        description: >-
                          The chain of the CET, as `get_symbols` lists it;
                          present only with `tokenAddress`. Solana is `101`
                          (`901` on devnet); an EVM chain uses its own chain id.
                        required: false
                      - name: amount
                        type: string
                        description: >-
                          CETs this mint issued, `executedQty` minus
                          `previousMintedQty`. Sum this, never `executedQty`.
                        required: true
                      - name: executedQty
                        type: string
                        description: >-
                          The order's executed quantity when the mint was
                          decided; a snapshot, not an increment.
                        required: true
                      - name: previousMintedQty
                        type: string
                        description: >-
                          CETs already minted against the order before this
                          mint.
                        required: true
                      - name: memo
                        type: string
                        description: >-
                          The memo of the mint:
                          `<externalRef>:<executedQty>:<traceId>`. Written on
                          the mint transaction on Solana; on an EVM chain the
                          transaction carries no memo, and `txHash` links the
                          two.
                        required: false
                      - name: traceId
                        type: string
                        description: >-
                          The base58 handle after the memo's final colon, at
                          most 16 characters. Store it; `get_mints` takes it.
                          Absent on mints from before the handle existed.
                        required: false
                      - name: txHash
                        type: string
                        description: >-
                          The hash of the mint transaction on its chain;
                          `get_mints` takes it. Known after the mint lands,
                          usually within a minute, so the first `mint_updated`
                          for a mint usually has none and a later one carries
                          it. Absent on mints from before it was recorded.
                        required: false
                      - name: executions
                        type: array
                        description: >-
                          The whole executions this mint paid for, oldest first.
                          Absent when they could not be captured; the mint is
                          still valid.
                        required: false
                        properties:
                          - name: executionId
                            type: string
                            required: true
                          - name: sequence
                            type: integer
                            required: true
                          - name: quantity
                            type: string
                            required: true
                          - name: price
                            type: string
                            required: true
                          - name: executedAt
                            type: string
                            required: true
                      - name: executionsComplete
                        type: boolean
                        description: >-
                          `true`: `executions` is final. `false`: the broker had
                          not posted every execution yet; the list completes as
                          it does. Reconcile on `true` only.
                        required: true
                      - name: occurredAt
                        type: string
                        description: When the fill happened at the broker.
                        required: false
                      - name: mintedAt
                        type: string
                        description: When Securitize decided the mint.
                        required: true
        headers: []
        jsonPayloadSchema:
          type: object
          required:
            - type
            - for
            - traceId
            - sentAt
            - payload
          properties:
            type:
              type: string
              const: ack
              x-parser-schema-id: <anonymous-schema-214>
            for:
              type: string
              const: get_mints
              x-parser-schema-id: <anonymous-schema-215>
            requestId: *ref_0
            traceId: &ref_3
              type: string
              description: >-
                The server's id for this exchange. Opaque; quote it when you
                contact Securitize. Not the `traceId` on a mint or a burn.
              x-parser-schema-id: TraceId
            sentAt: &ref_4
              type: string
              format: date-time
              description: >-
                When the server put the message on the wire. ISO 8601, UTC,
                milliseconds. Not when anything happened at the broker.
              x-parser-schema-id: SentAt
            payload:
              type: object
              required:
                - mints
              properties:
                mints:
                  type: array
                  items: &ref_6
                    type: object
                    description: >-
                      CETs minted on chain to your registered wallet against
                      shares an order bought. One CET per share.
                    required:
                      - regulatoryId
                      - symbol
                      - amount
                      - executedQty
                      - previousMintedQty
                      - executionsComplete
                      - mintedAt
                    properties:
                      regulatoryId:
                        type: string
                        description: The order the mint is for.
                        x-parser-schema-id: <anonymous-schema-85>
                      symbol:
                        type: string
                        x-parser-schema-id: <anonymous-schema-86>
                      tokenAddress:
                        type: string
                        description: >-
                          The on-chain address of the CET the symbol is tracked
                          as on your account. Absent for a symbol not tracked
                          there, or when it could not be looked up.
                        x-parser-schema-id: <anonymous-schema-87>
                      chainId:
                        type: integer
                        description: >-
                          The chain of the CET, as `get_symbols` lists it;
                          present only with `tokenAddress`. Solana is `101`
                          (`901` on devnet); an EVM chain uses its own chain id.
                        x-parser-schema-id: <anonymous-schema-88>
                      amount:
                        type: string
                        format: decimal
                        description: >-
                          CETs this mint issued, `executedQty` minus
                          `previousMintedQty`. Sum this, never `executedQty`.
                        x-parser-schema-id: <anonymous-schema-89>
                      executedQty:
                        type: string
                        format: decimal
                        description: >-
                          The order's executed quantity when the mint was
                          decided; a snapshot, not an increment.
                        x-parser-schema-id: <anonymous-schema-90>
                      previousMintedQty:
                        type: string
                        format: decimal
                        description: >-
                          CETs already minted against the order before this
                          mint.
                        x-parser-schema-id: <anonymous-schema-91>
                      memo:
                        type: string
                        description: >-
                          The memo of the mint:
                          `<externalRef>:<executedQty>:<traceId>`. Written on
                          the mint transaction on Solana; on an EVM chain the
                          transaction carries no memo, and `txHash` links the
                          two.
                        x-parser-schema-id: <anonymous-schema-92>
                      traceId:
                        type: string
                        description: >-
                          The base58 handle after the memo's final colon, at
                          most 16 characters. Store it; `get_mints` takes it.
                          Absent on mints from before the handle existed.
                        x-parser-schema-id: <anonymous-schema-93>
                      txHash:
                        type: string
                        description: >-
                          The hash of the mint transaction on its chain;
                          `get_mints` takes it. Known after the mint lands,
                          usually within a minute, so the first `mint_updated`
                          for a mint usually has none and a later one carries
                          it. Absent on mints from before it was recorded.
                        x-parser-schema-id: <anonymous-schema-94>
                      executions:
                        type: array
                        description: >-
                          The whole executions this mint paid for, oldest first.
                          Absent when they could not be captured; the mint is
                          still valid.
                        items: &ref_5
                          type: object
                          required:
                            - executionId
                            - sequence
                            - quantity
                            - price
                            - executedAt
                          properties:
                            executionId:
                              type: string
                              x-parser-schema-id: <anonymous-schema-96>
                            sequence:
                              type: integer
                              x-parser-schema-id: <anonymous-schema-97>
                            quantity:
                              type: string
                              format: decimal
                              x-parser-schema-id: <anonymous-schema-98>
                            price:
                              type: string
                              format: decimal
                              x-parser-schema-id: <anonymous-schema-99>
                            executedAt:
                              type: string
                              format: date-time
                              x-parser-schema-id: <anonymous-schema-100>
                          x-parser-schema-id: MintExecution
                        x-parser-schema-id: <anonymous-schema-95>
                      executionsComplete:
                        type: boolean
                        description: >-
                          `true`: `executions` is final. `false`: the broker had
                          not posted every execution yet; the list completes as
                          it does. Reconcile on `true` only.
                        x-parser-schema-id: <anonymous-schema-101>
                      occurredAt:
                        type: string
                        format: date-time
                        description: When the fill happened at the broker.
                        x-parser-schema-id: <anonymous-schema-102>
                      mintedAt:
                        type: string
                        format: date-time
                        description: When Securitize decided the mint.
                        x-parser-schema-id: <anonymous-schema-103>
                    x-parser-schema-id: Mint
                  x-parser-schema-id: <anonymous-schema-217>
              x-parser-schema-id: <anonymous-schema-216>
          x-parser-schema-id: GetMintsAckFrame
        title: ack (get_mints)
        description: The mints that match, newest first.
        example: |-
          {
            "type": "ack",
            "for": "get_mints",
            "requestId": "m1",
            "traceId": "partners-rt-gw-8740d1bc-2e5a-4f93-a7c6-0b9d3e1f4a28",
            "sentAt": "2026-09-22T21:26:59.273Z",
            "payload": {
              "mints": [
                {
                  "regulatoryId": "80f7d966-1665-4709-b7db-bc3ac9a122c8",
                  "symbol": "AMZN",
                  "tokenAddress": "Fq8bZ4mQ2vHkT9rNcWj3XsY6pLdE1gAuK5oRbMzV7nPx",
                  "chainId": 101,
                  "amount": "200",
                  "executedQty": "200",
                  "previousMintedQty": "0",
                  "memo": "ref-amzn-111051:200:29PjryBEd",
                  "traceId": "29PjryBEd",
                  "txHash": "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW",
                  "executions": [
                    {
                      "executionId": "3417180RQDCU2",
                      "sequence": 2,
                      "quantity": "100",
                      "price": "249.27",
                      "executedAt": "2026-09-25T14:11:03.760Z"
                    },
                    {
                      "executionId": "3417180RQDCU3",
                      "sequence": 3,
                      "quantity": "100",
                      "price": "249.27",
                      "executedAt": "2026-09-25T14:11:03.912Z"
                    }
                  ],
                  "executionsComplete": true,
                  "occurredAt": "2026-09-25T14:11:04.550Z",
                  "mintedAt": "2026-09-25T14:11:05.202Z"
                }
              ]
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: get_mints_ack
      - &ref_16
        id: get_burns_ack
        payload:
          - name: ack (get_burns)
            description: The burns that match, newest first.
            type: object
            properties:
              - name: type
                type: string
                description: ack
                required: true
              - name: for
                type: string
                description: get_burns
                required: true
              - name: requestId
                type: string
                description: >-
                  Your id for this message, echoed on its reply. Never
                  interpreted or checked for uniqueness. Up to 64 characters are
                  accepted, but keep it to 32, since an `error` echoes only the
                  first 32 followed by `…`. A UUID without its hyphens is 32
                  characters.
                required: false
              - name: traceId
                type: string
                description: >-
                  The server's id for this exchange. Opaque; quote it when you
                  contact Securitize. Not the `traceId` on a mint or a burn.
                required: true
              - name: sentAt
                type: string
                description: >-
                  When the server put the message on the wire. ISO 8601, UTC,
                  milliseconds. Not when anything happened at the broker.
                required: true
              - name: payload
                type: object
                required: true
                properties:
                  - name: burns
                    type: array
                    required: true
                    properties:
                      - name: regulatoryId
                        type: string
                        description: The order the burn is for.
                        required: true
                      - name: symbol
                        type: string
                        required: true
                      - name: tokenAddress
                        type: string
                        description: >-
                          The on-chain address of the CET the symbol is tracked
                          as on your account. Absent for a symbol not tracked
                          there, or when it could not be looked up.
                        required: false
                      - name: chainId
                        type: integer
                        description: >-
                          The chain of the CET, as `get_symbols` lists it;
                          present only with `tokenAddress`. Solana is `101`
                          (`901` on devnet); an EVM chain uses its own chain id.
                        required: false
                      - name: amount
                        type: string
                        description: >-
                          CETs this burn destroyed, `executedQty` minus
                          `previousBurnedQty`. Sum this, never `executedQty`.
                        required: true
                      - name: executedQty
                        type: string
                        description: >-
                          The order's executed quantity when the burn was
                          decided.
                        required: true
                      - name: previousBurnedQty
                        type: string
                        description: >-
                          CETs already burned against the order before this
                          burn.
                        required: true
                      - name: memo
                        type: string
                        description: >-
                          The memo of the burn:
                          `<externalRef>:<executedQty>:<traceId>`. Written on
                          the burn transaction on Solana.
                        required: false
                      - name: traceId
                        type: string
                        description: >-
                          The base58 handle after the memo's final colon, at
                          most 16 characters. Store it; `get_burns` takes it.
                          Absent on burns from before the handle existed.
                        required: false
                      - name: txHash
                        type: string
                        description: >-
                          The hash of the burn transaction on its chain;
                          `get_burns` takes it. Known when the burn lands, so
                          the first `burn_updated` carries it. Absent when none
                          was reported for the burn, and on burns from before it
                          was recorded.
                        required: false
                      - name: executions
                        type: array
                        description: As on a mint.
                        required: false
                        properties:
                          - name: executionId
                            type: string
                            required: true
                          - name: sequence
                            type: integer
                            required: true
                          - name: quantity
                            type: string
                            required: true
                          - name: price
                            type: string
                            required: true
                          - name: executedAt
                            type: string
                            required: true
                      - name: executionsComplete
                        type: boolean
                        description: As on a mint. Reconcile on `true` only.
                        required: true
                      - name: occurredAt
                        type: string
                        required: false
                      - name: burnedAt
                        type: string
                        description: When Securitize decided the burn.
                        required: true
        headers: []
        jsonPayloadSchema:
          type: object
          required:
            - type
            - for
            - traceId
            - sentAt
            - payload
          properties:
            type:
              type: string
              const: ack
              x-parser-schema-id: <anonymous-schema-219>
            for:
              type: string
              const: get_burns
              x-parser-schema-id: <anonymous-schema-220>
            requestId: *ref_0
            traceId: *ref_3
            sentAt: *ref_4
            payload:
              type: object
              required:
                - burns
              properties:
                burns:
                  type: array
                  items: &ref_7
                    type: object
                    description: >-
                      CETs burned from the redemption wallet against shares an
                      order sold. One CET per share.
                    required:
                      - regulatoryId
                      - symbol
                      - amount
                      - executedQty
                      - previousBurnedQty
                      - executionsComplete
                      - burnedAt
                    properties:
                      regulatoryId:
                        type: string
                        description: The order the burn is for.
                        x-parser-schema-id: <anonymous-schema-105>
                      symbol:
                        type: string
                        x-parser-schema-id: <anonymous-schema-106>
                      tokenAddress:
                        type: string
                        description: >-
                          The on-chain address of the CET the symbol is tracked
                          as on your account. Absent for a symbol not tracked
                          there, or when it could not be looked up.
                        x-parser-schema-id: <anonymous-schema-107>
                      chainId:
                        type: integer
                        description: >-
                          The chain of the CET, as `get_symbols` lists it;
                          present only with `tokenAddress`. Solana is `101`
                          (`901` on devnet); an EVM chain uses its own chain id.
                        x-parser-schema-id: <anonymous-schema-108>
                      amount:
                        type: string
                        format: decimal
                        description: >-
                          CETs this burn destroyed, `executedQty` minus
                          `previousBurnedQty`. Sum this, never `executedQty`.
                        x-parser-schema-id: <anonymous-schema-109>
                      executedQty:
                        type: string
                        format: decimal
                        description: >-
                          The order's executed quantity when the burn was
                          decided.
                        x-parser-schema-id: <anonymous-schema-110>
                      previousBurnedQty:
                        type: string
                        format: decimal
                        description: >-
                          CETs already burned against the order before this
                          burn.
                        x-parser-schema-id: <anonymous-schema-111>
                      memo:
                        type: string
                        description: >-
                          The memo of the burn:
                          `<externalRef>:<executedQty>:<traceId>`. Written on
                          the burn transaction on Solana.
                        x-parser-schema-id: <anonymous-schema-112>
                      traceId:
                        type: string
                        description: >-
                          The base58 handle after the memo's final colon, at
                          most 16 characters. Store it; `get_burns` takes it.
                          Absent on burns from before the handle existed.
                        x-parser-schema-id: <anonymous-schema-113>
                      txHash:
                        type: string
                        description: >-
                          The hash of the burn transaction on its chain;
                          `get_burns` takes it. Known when the burn lands, so
                          the first `burn_updated` carries it. Absent when none
                          was reported for the burn, and on burns from before it
                          was recorded.
                        x-parser-schema-id: <anonymous-schema-114>
                      executions:
                        type: array
                        description: As on a mint.
                        items: *ref_5
                        x-parser-schema-id: <anonymous-schema-115>
                      executionsComplete:
                        type: boolean
                        description: As on a mint. Reconcile on `true` only.
                        x-parser-schema-id: <anonymous-schema-116>
                      occurredAt:
                        type: string
                        format: date-time
                        x-parser-schema-id: <anonymous-schema-117>
                      burnedAt:
                        type: string
                        format: date-time
                        description: When Securitize decided the burn.
                        x-parser-schema-id: <anonymous-schema-118>
                    x-parser-schema-id: Burn
                  x-parser-schema-id: <anonymous-schema-222>
              x-parser-schema-id: <anonymous-schema-221>
          x-parser-schema-id: GetBurnsAckFrame
        title: ack (get_burns)
        description: The burns that match, newest first.
        example: |-
          {
            "type": "ack",
            "for": "get_burns",
            "requestId": "b1",
            "traceId": "partners-rt-gw-5e2f8a1c-7b3d-4c90-a6e4-1d9b0f3c7a56",
            "sentAt": "2026-09-25T14:45:12.330Z",
            "payload": {
              "burns": [
                {
                  "regulatoryId": "c41a8b03-5e7d-4f26-9a1b-8d3c6e0f2b47",
                  "symbol": "AMZN",
                  "tokenAddress": "Fq8bZ4mQ2vHkT9rNcWj3XsY6pLdE1gAuK5oRbMzV7nPx",
                  "chainId": 101,
                  "amount": "200",
                  "executedQty": "200",
                  "previousBurnedQty": "0",
                  "memo": "ref-amzn-114302:200:7Kq2mTxAd",
                  "traceId": "7Kq2mTxAd",
                  "txHash": "3vQx7KpLmN2rT8wYzA4bC6dE9fGhJ5kMnP1qRsTuVwXyZaBcDeFgHiJkLmNoPqRsTuVwXyZ2aBcD3eFgH4iJkLm",
                  "executions": [
                    {
                      "executionId": "3417302RQDCU2",
                      "sequence": 2,
                      "quantity": "200",
                      "price": "249.81",
                      "executedAt": "2026-09-25T14:43:00.488Z"
                    }
                  ],
                  "executionsComplete": true,
                  "occurredAt": "2026-09-25T14:43:01.110Z",
                  "burnedAt": "2026-09-25T14:43:02.004Z"
                }
              ]
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: get_burns_ack
      - &ref_17
        id: error
        payload:
          - name: error
            description: A request was refused. Most errors leave the socket open.
            type: object
            properties:
              - name: type
                type: string
                description: error
                required: true
              - name: requestId
                type: string
                description: >-
                  Your id for this message, echoed on its reply. Never
                  interpreted or checked for uniqueness. Up to 64 characters are
                  accepted, but keep it to 32, since an `error` echoes only the
                  first 32 followed by `…`. A UUID without its hyphens is 32
                  characters.
                required: false
              - name: traceId
                type: string
                description: >-
                  The server's id for this exchange. Opaque; quote it when you
                  contact Securitize. Not the `traceId` on a mint or a burn.
                required: true
              - name: sentAt
                type: string
                description: >-
                  When the server put the message on the wire. ISO 8601, UTC,
                  milliseconds. Not when anything happened at the broker.
                required: true
              - name: payload
                type: object
                required: true
                properties:
                  - name: code
                    type: string
                    description: >-
                      One of `SIGNATURE_INVALID`, `TIMESTAMP_OUT_OF_WINDOW`,
                      `UNAUTHENTICATED`, `NOT_PERMITTED`, `RATE_LIMITED`,
                      `MALFORMED`, `INVALID_ORDER`, `INVALID_SYMBOL`,
                      `ORDER_NOT_FOUND`, `ORDER_NOT_CANCELLABLE`,
                      `DEPOSIT_PENDING`, `DEPOSIT_REFUSED`,
                      `UPSTREAM_UNAVAILABLE`, `INTERNAL`. Treat a code you do
                      not recognise as a refusal.
                    required: true
                  - name: message
                    type: string
                    description: For people. Can change; never branch on it.
                    required: true
        headers: []
        jsonPayloadSchema:
          type: object
          required:
            - type
            - traceId
            - sentAt
            - payload
          properties:
            type:
              type: string
              const: error
              x-parser-schema-id: <anonymous-schema-14>
            requestId: *ref_0
            traceId: *ref_3
            sentAt: *ref_4
            payload:
              type: object
              required:
                - code
                - message
              properties:
                code:
                  type: string
                  description: >-
                    One of `SIGNATURE_INVALID`, `TIMESTAMP_OUT_OF_WINDOW`,
                    `UNAUTHENTICATED`, `NOT_PERMITTED`, `RATE_LIMITED`,
                    `MALFORMED`, `INVALID_ORDER`, `INVALID_SYMBOL`,
                    `ORDER_NOT_FOUND`, `ORDER_NOT_CANCELLABLE`,
                    `DEPOSIT_PENDING`, `DEPOSIT_REFUSED`,
                    `UPSTREAM_UNAVAILABLE`, `INTERNAL`. Treat a code you do not
                    recognise as a refusal.
                  x-parser-schema-id: <anonymous-schema-16>
                message:
                  type: string
                  description: For people. Can change; never branch on it.
                  x-parser-schema-id: <anonymous-schema-17>
              x-parser-schema-id: <anonymous-schema-15>
          x-parser-schema-id: ErrorFrame
        title: Error
        description: A request was refused. Most errors leave the socket open.
        example: |-
          {
            "type": "error",
            "requestId": "7a02c4e158b34f9da0e23c6b1d7f8e45",
            "traceId": "partners-rt-gw-4d81e0a7-2c6f-4b19-9e3a-8f5d1c7b0a62",
            "sentAt": "2026-08-28T15:29:47.012Z",
            "payload": {
              "code": "INVALID_ORDER",
              "message": "The reference ref-2026-08-28-0001 already names an order (FILLED): look it up instead of placing it again"
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: error
    bindings: []
    extensions: *ref_2
  - &ref_11
    id: mintUpdated
    title: Mint updates
    description: Pushed once a mint's CETs are on chain.
    type: send
    messages:
      - &ref_18
        id: mint_updated
        payload:
          - name: mint_updated
            description: Pushed once a mint's CETs are on chain.
            type: object
            properties:
              - name: type
                type: string
                description: mint_updated
                required: true
              - name: traceId
                type: string
                description: >-
                  The server's id for this exchange. Opaque; quote it when you
                  contact Securitize. Not the `traceId` on a mint or a burn.
                required: true
              - name: sentAt
                type: string
                description: >-
                  When the server put the message on the wire. ISO 8601, UTC,
                  milliseconds. Not when anything happened at the broker.
                required: true
              - name: payload
                type: object
                description: >-
                  CETs minted on chain to your registered wallet against shares
                  an order bought. One CET per share.
                required: true
                properties:
                  - name: regulatoryId
                    type: string
                    description: The order the mint is for.
                    required: true
                  - name: symbol
                    type: string
                    required: true
                  - name: tokenAddress
                    type: string
                    description: >-
                      The on-chain address of the CET the symbol is tracked as
                      on your account. Absent for a symbol not tracked there, or
                      when it could not be looked up.
                    required: false
                  - name: chainId
                    type: integer
                    description: >-
                      The chain of the CET, as `get_symbols` lists it; present
                      only with `tokenAddress`. Solana is `101` (`901` on
                      devnet); an EVM chain uses its own chain id.
                    required: false
                  - name: amount
                    type: string
                    description: >-
                      CETs this mint issued, `executedQty` minus
                      `previousMintedQty`. Sum this, never `executedQty`.
                    required: true
                  - name: executedQty
                    type: string
                    description: >-
                      The order's executed quantity when the mint was decided; a
                      snapshot, not an increment.
                    required: true
                  - name: previousMintedQty
                    type: string
                    description: CETs already minted against the order before this mint.
                    required: true
                  - name: memo
                    type: string
                    description: >-
                      The memo of the mint:
                      `<externalRef>:<executedQty>:<traceId>`. Written on the
                      mint transaction on Solana; on an EVM chain the
                      transaction carries no memo, and `txHash` links the two.
                    required: false
                  - name: traceId
                    type: string
                    description: >-
                      The base58 handle after the memo's final colon, at most 16
                      characters. Store it; `get_mints` takes it. Absent on
                      mints from before the handle existed.
                    required: false
                  - name: txHash
                    type: string
                    description: >-
                      The hash of the mint transaction on its chain; `get_mints`
                      takes it. Known after the mint lands, usually within a
                      minute, so the first `mint_updated` for a mint usually has
                      none and a later one carries it. Absent on mints from
                      before it was recorded.
                    required: false
                  - name: executions
                    type: array
                    description: >-
                      The whole executions this mint paid for, oldest first.
                      Absent when they could not be captured; the mint is still
                      valid.
                    required: false
                    properties:
                      - name: executionId
                        type: string
                        required: true
                      - name: sequence
                        type: integer
                        required: true
                      - name: quantity
                        type: string
                        required: true
                      - name: price
                        type: string
                        required: true
                      - name: executedAt
                        type: string
                        required: true
                  - name: executionsComplete
                    type: boolean
                    description: >-
                      `true`: `executions` is final. `false`: the broker had not
                      posted every execution yet; the list completes as it does.
                      Reconcile on `true` only.
                    required: true
                  - name: occurredAt
                    type: string
                    description: When the fill happened at the broker.
                    required: false
                  - name: mintedAt
                    type: string
                    description: When Securitize decided the mint.
                    required: true
        headers: []
        jsonPayloadSchema:
          type: object
          required:
            - type
            - traceId
            - sentAt
            - payload
          properties:
            type:
              type: string
              const: mint_updated
              x-parser-schema-id: <anonymous-schema-223>
            traceId: *ref_3
            sentAt: *ref_4
            payload: *ref_6
          x-parser-schema-id: MintUpdatedFrame
        title: Mint_updated
        description: Pushed once a mint's CETs are on chain.
        example: |-
          {
            "type": "mint_updated",
            "traceId": "partners-rt-gw-6b1f2e9a-4c7d-4a3e-9f08-2d5c7e1b3a64",
            "sentAt": "2026-09-25T14:11:05.611Z",
            "payload": {
              "regulatoryId": "80f7d966-1665-4709-b7db-bc3ac9a122c8",
              "symbol": "AMZN",
              "tokenAddress": "Fq8bZ4mQ2vHkT9rNcWj3XsY6pLdE1gAuK5oRbMzV7nPx",
              "chainId": 101,
              "amount": "200",
              "executedQty": "200",
              "previousMintedQty": "0",
              "memo": "ref-amzn-111051:200:29PjryBEd",
              "traceId": "29PjryBEd",
              "executions": [
                {
                  "executionId": "3417180RQDCU2",
                  "sequence": 2,
                  "quantity": "100",
                  "price": "249.27",
                  "executedAt": "2026-09-25T14:11:03.760Z"
                },
                {
                  "executionId": "3417180RQDCU3",
                  "sequence": 3,
                  "quantity": "100",
                  "price": "249.27",
                  "executedAt": "2026-09-25T14:11:03.912Z"
                }
              ],
              "executionsComplete": true,
              "occurredAt": "2026-09-25T14:11:04.550Z",
              "mintedAt": "2026-09-25T14:11:05.202Z"
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: mint_updated
    bindings: []
    extensions: *ref_2
  - &ref_12
    id: burnUpdated
    title: Burn updates
    description: Pushed once a burn's CETs are gone.
    type: send
    messages:
      - &ref_19
        id: burn_updated
        payload:
          - name: burn_updated
            description: Pushed once a burn's CETs are gone.
            type: object
            properties:
              - name: type
                type: string
                description: burn_updated
                required: true
              - name: traceId
                type: string
                description: >-
                  The server's id for this exchange. Opaque; quote it when you
                  contact Securitize. Not the `traceId` on a mint or a burn.
                required: true
              - name: sentAt
                type: string
                description: >-
                  When the server put the message on the wire. ISO 8601, UTC,
                  milliseconds. Not when anything happened at the broker.
                required: true
              - name: payload
                type: object
                description: >-
                  CETs burned from the redemption wallet against shares an order
                  sold. One CET per share.
                required: true
                properties:
                  - name: regulatoryId
                    type: string
                    description: The order the burn is for.
                    required: true
                  - name: symbol
                    type: string
                    required: true
                  - name: tokenAddress
                    type: string
                    description: >-
                      The on-chain address of the CET the symbol is tracked as
                      on your account. Absent for a symbol not tracked there, or
                      when it could not be looked up.
                    required: false
                  - name: chainId
                    type: integer
                    description: >-
                      The chain of the CET, as `get_symbols` lists it; present
                      only with `tokenAddress`. Solana is `101` (`901` on
                      devnet); an EVM chain uses its own chain id.
                    required: false
                  - name: amount
                    type: string
                    description: >-
                      CETs this burn destroyed, `executedQty` minus
                      `previousBurnedQty`. Sum this, never `executedQty`.
                    required: true
                  - name: executedQty
                    type: string
                    description: The order's executed quantity when the burn was decided.
                    required: true
                  - name: previousBurnedQty
                    type: string
                    description: CETs already burned against the order before this burn.
                    required: true
                  - name: memo
                    type: string
                    description: >-
                      The memo of the burn:
                      `<externalRef>:<executedQty>:<traceId>`. Written on the
                      burn transaction on Solana.
                    required: false
                  - name: traceId
                    type: string
                    description: >-
                      The base58 handle after the memo's final colon, at most 16
                      characters. Store it; `get_burns` takes it. Absent on
                      burns from before the handle existed.
                    required: false
                  - name: txHash
                    type: string
                    description: >-
                      The hash of the burn transaction on its chain; `get_burns`
                      takes it. Known when the burn lands, so the first
                      `burn_updated` carries it. Absent when none was reported
                      for the burn, and on burns from before it was recorded.
                    required: false
                  - name: executions
                    type: array
                    description: As on a mint.
                    required: false
                    properties:
                      - name: executionId
                        type: string
                        required: true
                      - name: sequence
                        type: integer
                        required: true
                      - name: quantity
                        type: string
                        required: true
                      - name: price
                        type: string
                        required: true
                      - name: executedAt
                        type: string
                        required: true
                  - name: executionsComplete
                    type: boolean
                    description: As on a mint. Reconcile on `true` only.
                    required: true
                  - name: occurredAt
                    type: string
                    required: false
                  - name: burnedAt
                    type: string
                    description: When Securitize decided the burn.
                    required: true
        headers: []
        jsonPayloadSchema:
          type: object
          required:
            - type
            - traceId
            - sentAt
            - payload
          properties:
            type:
              type: string
              const: burn_updated
              x-parser-schema-id: <anonymous-schema-224>
            traceId: *ref_3
            sentAt: *ref_4
            payload: *ref_7
          x-parser-schema-id: BurnUpdatedFrame
        title: Burn_updated
        description: Pushed once a burn's CETs are gone.
        example: |-
          {
            "type": "burn_updated",
            "traceId": "partners-rt-gw-9c4e1a7b-2f6d-4e85-b3a0-7d1f5c8e2b49",
            "sentAt": "2026-09-25T14:43:02.417Z",
            "payload": {
              "regulatoryId": "c41a8b03-5e7d-4f26-9a1b-8d3c6e0f2b47",
              "symbol": "AMZN",
              "tokenAddress": "Fq8bZ4mQ2vHkT9rNcWj3XsY6pLdE1gAuK5oRbMzV7nPx",
              "chainId": 101,
              "amount": "200",
              "executedQty": "200",
              "previousBurnedQty": "0",
              "memo": "ref-amzn-114302:200:7Kq2mTxAd",
              "traceId": "7Kq2mTxAd",
              "txHash": "3vQx7KpLmN2rT8wYzA4bC6dE9fGhJ5kMnP1qRsTuVwXyZaBcDeFgHiJkLmNoPqRsTuVwXyZ2aBcD3eFgH4iJkLm",
              "executions": [
                {
                  "executionId": "3417302RQDCU2",
                  "sequence": 2,
                  "quantity": "200",
                  "price": "249.81",
                  "executedAt": "2026-09-25T14:43:00.488Z"
                }
              ],
              "executionsComplete": true,
              "occurredAt": "2026-09-25T14:43:01.110Z",
              "burnedAt": "2026-09-25T14:43:02.004Z"
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: burn_updated
    bindings: []
    extensions: *ref_2
sendOperations:
  - *ref_8
  - *ref_9
receiveOperations:
  - *ref_10
  - *ref_11
  - *ref_12
sendMessages:
  - *ref_13
  - *ref_14
receiveMessages:
  - *ref_15
  - *ref_16
  - *ref_17
  - *ref_18
  - *ref_19
extensions:
  - id: x-parser-unique-object-id
    value: mints-and-burns
securitySchemes:
  - id: ed25519Signature
    name: ed25519Signature
    type: asymmetricEncryption
    description: >
      Each client registers an Ed25519 public key with Securitize beforehand;
      the private key never leaves the client. `hello`, `place_order`,
      `cancel_order`, `submit_crypto_funding`, `sandbox_deposit` and
      `sandbox_withdraw` carry `timestamp` (Unix seconds) and `signature` =
      base58( Ed25519-Sign( privateKey, timestamp + "." + type + "." +
      payloadBytes ) ), where `payloadBytes` are the exact bytes of `payload` as
      sent on the wire. The timestamp must be within 30 seconds of the server
      clock. Other messages ride on the session `hello` opens.
    extensions: []

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.