> ## Documentation Index
> Fetch the complete documentation index at: https://agents-docs.lightspark.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List stablecoin issuer operations

> List issuer mint and burn operations for a stablecoin, most recent first, with cursor pagination.



## OpenAPI

````yaml /openapi.yaml get /stablecoins/{stablecoinId}/operations
openapi: 3.1.0
info:
  title: Grid API
  description: >
    API for managing global payments on the open Money Grid. Built by
    Lightspark. See the full documentation at https://docs.lightspark.com/.
  version: '2025-10-13'
  contact:
    name: Lightspark Support
    email: support@lightspark.com
  license:
    name: Proprietary
    url: https://lightspark.com/terms
servers:
  - url: https://api.lightspark.com/grid/2025-10-13
    description: Production server
security:
  - BasicAuth: []
  - AgentAuth: []
tags:
  - name: Platform Configuration
    description: >-
      Platform configuration endpoints for managing global settings. You can
      also configure these settings in the Grid dashboard.
  - name: Customers
    description: >-
      Customer management endpoints for creating and updating customer
      information
  - name: Contact Verification
    description: >-
      Endpoints for verifying a customer's email and phone via one-time codes.
      Required only for customers whose payment provider mandates contact
      verification (e.g. EU customers); other providers return 409.
  - name: Strong Customer Authentication
    description: >-
      Endpoints for authorizing money-movement operations that require Strong
      Customer Authentication. Relevant only for customers in a region where SCA
      is required (e.g. EU); customers outside SCA-regulated regions never see
      an SCA challenge and these endpoints return 409.
  - name: KYC/KYB Verifications
    description: >-
      Endpoints for Know Your Customer (KYC) and Know Your Business (KYB)
      verification, including managing beneficial owners and triggering
      verification for customers.
  - name: Documents
    description: >-
      Endpoints for uploading and managing verification documents for customers
      and beneficial owners. Supports KYC and KYB document requirements.
  - name: Internal Accounts
    description: >-
      Internal account management endpoints for creating and managing internal
      accounts
  - name: Periodic Statements
    description: >
      Build, deliver, and evidence a Regulation E periodic statement for a
      customer's internal account. A statement period is a calendar month in US
      Central time (`America/Chicago`).


      A statement is issued for each customer's own USD internal account and
      covers their whole balance. Money received through a rule-based account
      appears on its owner's statement; rule-based, bulk settlement and
      platform-owned accounts have no statement of their own.


      **1. The statement — `GET
      /internal-accounts/{id}/balance-changes?startDate=&endDate=`**


      One row per change to the balance, in the order the money moved, with the
      opening and closing balances for the window in the same response. Page
      until `hasMore` is false, then assert this identity across every page
      before you render anything:


      ```

      openingBalance + Σ(data[].amount) == closingBalance

      ```


      If it does not hold, do not send the statement; contact support instead.
      `startDate` and `endDate` bound a half-open window `[startDate, endDate)`:
      for a monthly statement, pass the first instant of the month and the first
      instant of the following month, both in US Central time (for August 2026,
      `2026-08-01T00:00:00-05:00` and `2026-09-01T00:00:00-05:00`). Grid records
      a statement as fetched only for a window that is exactly one such month.


      **2. The receipt — `POST /internal-accounts/{id}/confirm-statement`**


      Once a month, after you have pulled and issued a period's statement, send
      a receipt with the `statementMonth` it covers. Grid stores it as the
      delivery record for that account and period. Sending it again is harmless:
      the first receipt's time is kept.


      **Timing**


      A window whose card settlement has not closed is refused with `409
      NOT_YET_AVAILABLE` rather than answered with figures that could still
      change; retry once it has settled.
  - name: External Accounts
    description: >-
      External account management endpoints for creating and managing external
      bank accounts
  - name: Same-Currency Transfers
    description: >-
      Deprecated endpoints for transferring funds between internal and external
      accounts with the same currency. Use the quote endpoints under
      Cross-Currency Transfers instead, which now serve same-currency transfers
      as well.
  - name: Cross-Currency Transfers
    description: >-
      Endpoints for creating and confirming quotes for transfers, both
      same-currency and cross-currency
  - name: Payout Runs
    description: >-
      Endpoints for paying many recipients from one internal account in one
      request, and for reconciling the result
  - name: Settlement Rules
    description: >-
      Endpoints for standing instructions that split a customer's matching
      incoming payments among recipients as soon as the payments complete
  - name: Transactions
    description: Endpoints for retrieving transaction information
  - name: Webhooks
    description: Webhook endpoints and configuration for receiving notifications
  - name: Invitations
    description: Endpoints for creating, claiming and managing UMA invitations
  - name: Sandbox
    description: Endpoints to trigger test cases in sandbox
  - name: API Tokens
    description: Endpoints to programmatically manage API tokens
  - name: Exchange Rates
    description: >-
      Endpoints for retrieving cached foreign exchange rates. Rates are cached
      for approximately 5 minutes and include platform-specific fees.
  - name: Discoveries
    description: >-
      Endpoints for discovering available payment rails, banks, and providers
      for a given country and currency corridor.
  - name: Embedded Wallet Auth
    description: >-
      Endpoints for registering and verifying end-user authentication
      credentials (email OTP, OAuth, passkey) used to sign Embedded Wallet
      actions.
  - name: Agent Management
    description: >-
      Endpoints for creating and managing agents, called by the partner's
      backend using platform credentials. Covers the full agent lifecycle:
      creation, policy configuration, pausing, deletion, the device code
      installation flow, and approving or rejecting transactions initiated by
      agents.
  - name: Agent Operations
    description: >-
      Endpoints called by the agent itself using its own credentials (obtained
      via device code redemption). Scoped to the agent's associated customer —
      all requests automatically operate on behalf of that customer and are
      subject to the agent's policy. When a request requires approval, it is
      held as an agent action in `PENDING_APPROVAL` until the platform approves
      it via `POST /agents/{agentId}/actions/{actionId}/approve` or rejects it.
  - name: Claimable Payouts
    description: >-
      Endpoints the platform's claim page calls for a claimable payout an agent
      sent to a person by phone number or email: issue the claim token for the
      recipient's link, look the payout up by it, list how Grid can pay her,
      lock a quote to her account and confirm it.
  - name: Cards
    description: >-
      Card management endpoints. Issue debit cards against an internal account,
      freeze / unfreeze, close, manage a card's funding source, and list card
      transactions.
  - name: Stablecoins
    description: >-
      Stablecoin issuance endpoints. Link provider accounts, register
      provider-created stablecoins, create direct mint/burn issuer operations,
      and track operation status.
  - name: Embedded Care
    description: |
      A support chat between the cardholder and Lightspark's care agent, driven
      from the partner's own app. The platform calls with its ordinary Grid
      credential, but the person typing is the cardholder rather than the
      caller, so reaching that cardholder's account takes a second proof: an
      SMS code they send into the chat, after which the partner carries a
      session token in the `X-Ls-Care-Session` header.

      **The surface is two routes, and verification happens inside the
      conversation.**

      1. **Open the chat.** `POST /care/chats/{chatId}/messages` with an empty
         `message`, addressed to the cardholder as `Customer:<uuid>`. Returns
         the chat's id and the agent's opening line in `reply`, which is what
         a chat window renders before anybody has typed. Sends no SMS, needs
         no `Idempotency-Key` and consumes none, and is safe to call again: a
         widget that reloaded gets the same chat back, this time without a
         `reply`.
      2. **Send the cardholder's first message.** The same route with their
         text and an `Idempotency-Key` header. One turn runs synchronously and
         the agent's answer comes back in `reply`. On a chat that cannot yet
         reach the account this call also texts the cardholder a code, and the
         agent's `reply` asks for it.
      3. **The cardholder sends the code as an ordinary message.** When it is
         correct, the response to that turn carries `sessionToken` and
         `expiresAt`. Send that token as the `X-Ls-Care-Session` header on
         every message from then on. A code that does not match is answered in
         `reply`, and the cardholder can simply send it again.
      4. **Close the chat** with `DELETE /care/chats/{chatId}` when the
         cardholder is done. Every response also carries `chatEnded`, and the
         agent can end the chat itself: when `chatEnded` is true, the closing
         line is in `reply` and the chat takes no further messages, so stop
         sending to it. An opening addressed to that `CareChat:<id>` answers
         `409 CARE_CHAT_ENDED`; address the cardholder as `Customer:<uuid>`
         to open a new chat.

      **Render `redactedCustomerMessage` if present, then `reply` if
      present.** That one rule covers an opening, a resume and a turn.

      **A cardholder whose code never arrived asks the agent for another
      one.** The agent sends a new code to the number on file and says so in
      its `reply`. There is no separate route for it.

      **The verification fields are optional hints.** `verificationRequired`
      and `codeLength` let an app show a dedicated one-time-code input of the
      right length, marked as a one-time code so iOS and Android offer to fill
      it from the SMS. A partner can ignore them, since the agent asks for the
      code in its reply and says where it went, and the app still sends the
      code as an ordinary message.

      Step 1 is optional. A message addressed to a `Customer:` id opens that
      cardholder's chat if they have none, so a partner whose cardholder has
      just typed something spends one call rather than two.

      A cardholder who has not verified yet is never a `401`, because the
      first message from every new cardholder is unverified and a `401` there
      would be indistinguishable from a bad credential. On these endpoints a
      `401` means the platform's Grid credential is wrong, the session token
      presented is malformed, or a replay lacks the session token its original
      request required.

      **Verification expires, and a lost session is recoverable in the
      chat.** A chat reaches the cardholder's account only while its
      verification is newer than the session lifetime, fifteen minutes in the
      default deployment, which is also how long a session token lives. Past
      that window a message gets a fresh code, and the agent asks the
      cardholder to send it back inside the conversation, which hands the
      partner the next session token. A new message sent with no
      `X-Ls-Care-Session` header, or with a token past its expiry, on a chat
      whose verification is still current is treated the same way: the
      verification is cancelled before the turn runs, a new code is sent, and
      the agent asks for it. So a client that lost its token, or held one too
      long, simply keeps sending messages. Only a token that is malformed, or
      that was minted for another platform, chat or cardholder, is refused.

      Two things an integration has to get right:

      - **Render `redactedCustomerMessage`, never your own copy of what was
        typed.** Grid masks card numbers and other sensitive digit strings in
        it. A UI that renders its own copy of the input instead puts a card
        number the cardholder pasted back on their screen unmasked, and into
        your logs.
      - **The session token is returned once and is never re-readable.** No
        endpoint hands it back, it cannot be revoked, and it is short-lived by
        design. Hold it for the life of the cardholder's session. It arrives
        on the message response to the turn in which the cardholder sent their
        code, and on no other. Losing it costs the cardholder a new code, never
        access to the chat.

      Some things are absent by construction, so no integration can come to
      depend on them: nothing returns a transcript or an earlier turn's reply
      (retrying under the original `Idempotency-Key` is how an answer that was
      produced but not delivered is recovered; a replay requires the same
      session token its original request required and never carries a
      `sessionToken`, so a lost token is recovered by sending the cardholder's
      next message as a new message, which verifies them again), nothing sets
      a verification state, and nothing changes the number a code is sent to.

      Errors from these endpoints carry `code` and `reason` only (see the
      `CareError` schema), unlike the `Error4xx` schemas used elsewhere in this
      specification.
paths:
  /stablecoins/{stablecoinId}/operations:
    parameters:
      - name: stablecoinId
        in: path
        description: System-generated stablecoin identifier
        required: true
        schema:
          type: string
    get:
      tags:
        - Stablecoins
      summary: List stablecoin issuer operations
      description: >-
        List issuer mint and burn operations for a stablecoin, most recent
        first, with cursor pagination.
      operationId: listStablecoinOperations
      parameters:
        - name: operationType
          in: query
          description: >-
            Filter operations by type. When omitted, both mints and burns are
            returned.
          required: false
          schema:
            $ref: '#/components/schemas/StablecoinOperationType'
        - name: limit
          in: query
          description: Maximum number of results to return (default 20, max 100)
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
        - name: cursor
          in: query
          description: Opaque cursor returned as `nextCursor` from the previous response.
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StablecoinOperationListResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '404':
          description: Stablecoin not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '500':
          description: Internal service error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - BasicAuth: []
components:
  schemas:
    StablecoinOperationType:
      type: string
      enum:
        - MINT
        - BURN
      description: Stablecoin issuer operation type.
    StablecoinOperationListResponse:
      type: object
      required:
        - data
        - hasMore
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/StablecoinOperation'
        hasMore:
          type: boolean
          description: Indicates if more results are available beyond this page.
        nextCursor:
          type: string
          description: Cursor to retrieve the next page of results.
        totalCount:
          type: integer
          description: Total number of stablecoin operations matching the query.
    Error401:
      type: object
      required:
        - reason
        - code
      properties:
        code:
          type: string
          description: >
            | Error Code | Description |

            |------------|-------------|

            | UNAUTHORIZED | Issue with API credentials |

            | INVALID_SIGNATURE | Signature header is invalid |

            | WALLET_SIGNATURE_MISSING | The `Grid-Wallet-Signature` header is
            required for this Embedded Wallet action but was not supplied |

            | WALLET_SIGNATURE_MALFORMED | The `Grid-Wallet-Signature` header
            could not be parsed (bad encoding, structure, or fields) |

            | WALLET_SIGNATURE_BODY_MISMATCH | The `Grid-Wallet-Signature` was
            computed over a different request body than the one received |

            | WALLET_SIGNATURE_INVALID | The `Grid-Wallet-Signature` failed
            cryptographic verification against the registered credential |

            | REQUEST_ID_MISSING | The `Request-Id` header is required on the
            signed retry but was not supplied (paired with
            `Grid-Wallet-Signature`) |
          enum:
            - UNAUTHORIZED
            - INVALID_SIGNATURE
            - WALLET_SIGNATURE_MISSING
            - WALLET_SIGNATURE_MALFORMED
            - WALLET_SIGNATURE_BODY_MISMATCH
            - WALLET_SIGNATURE_INVALID
            - REQUEST_ID_MISSING
        reason:
          type: string
          description: Error message
        details:
          type: object
          description: Additional error details
          additionalProperties: true
    Error404:
      type: object
      required:
        - reason
        - code
      properties:
        code:
          type: string
          description: >
            | Error Code | Description |

            |------------|-------------|

            | TRANSACTION_NOT_FOUND | Transaction not found |

            | INVITATION_NOT_FOUND | Invitation not found |

            | USER_NOT_FOUND | Customer not found |

            | QUOTE_NOT_FOUND | Quote not found |

            | LOOKUP_REQUEST_NOT_FOUND | Lookup request not found |

            | TOKEN_NOT_FOUND | Token not found |

            | BULK_UPLOAD_JOB_NOT_FOUND | Bulk upload job not found |

            | REFERENCE_NOT_FOUND | Reference not found |

            | UMA_NOT_FOUND | The UMA address is well-formed but no receiver
            exists at the counterparty VASP |

            | STABLECOIN_PROVIDER_ACCOUNT_NOT_FOUND | Stablecoin provider
            account link not found |

            | ACCOUNT_NOT_FOUND | Account not found |

            | AUTH_METHOD_NOT_FOUND | Authentication credential not found |

            | CUSTOMER_NOT_FOUND | Customer not found |

            | DOCUMENT_HOLDER_NOT_FOUND | Document holder not found |

            | NOT_FOUND | The requested resource was not found |

            | PAYMENT_URL_NOT_FOUND | Payment URL not found |

            | PLATFORM_NOT_FOUND | Platform not found |

            | REQUEST_NOT_FOUND | Pending request not found |

            | SESSION_NOT_FOUND | Session not found |

            | STABLECOIN_EXTERNAL_ACCOUNT_NOT_FOUND | Stablecoin external
            account not found |

            | STABLECOIN_NOT_FOUND | Stablecoin not found |

            | STABLECOIN_OPERATION_NOT_FOUND | Stablecoin operation not found |

            | VERIFICATION_NOT_FOUND | Verification not found |

            | PAYMENT_DOCUMENT_NOT_FOUND | Payment document not found |
          enum:
            - TRANSACTION_NOT_FOUND
            - INVITATION_NOT_FOUND
            - USER_NOT_FOUND
            - QUOTE_NOT_FOUND
            - LOOKUP_REQUEST_NOT_FOUND
            - TOKEN_NOT_FOUND
            - BULK_UPLOAD_JOB_NOT_FOUND
            - REFERENCE_NOT_FOUND
            - UMA_NOT_FOUND
            - STABLECOIN_PROVIDER_ACCOUNT_NOT_FOUND
            - ACCOUNT_NOT_FOUND
            - AUTH_METHOD_NOT_FOUND
            - CUSTOMER_NOT_FOUND
            - DOCUMENT_HOLDER_NOT_FOUND
            - NOT_FOUND
            - PAYMENT_URL_NOT_FOUND
            - PLATFORM_NOT_FOUND
            - REQUEST_NOT_FOUND
            - SESSION_NOT_FOUND
            - STABLECOIN_EXTERNAL_ACCOUNT_NOT_FOUND
            - STABLECOIN_NOT_FOUND
            - STABLECOIN_OPERATION_NOT_FOUND
            - VERIFICATION_NOT_FOUND
            - PAYMENT_DOCUMENT_NOT_FOUND
        reason:
          type: string
          description: Error message
        details:
          type: object
          description: Additional error details
          additionalProperties: true
    Error500:
      type: object
      required:
        - reason
        - code
      properties:
        code:
          type: string
          description: |
            | Error Code | Description |
            |------------|-------------|
            | GRID_SWITCH_ERROR | Grid switch error |
            | INTERNAL_ERROR | Internal server or UMA error |
          enum:
            - GRID_SWITCH_ERROR
            - INTERNAL_ERROR
        reason:
          type: string
          description: Error message
        details:
          type: object
          description: Additional error details
          additionalProperties: true
    StablecoinOperation:
      type: object
      required:
        - id
        - stablecoinId
        - operationType
        - status
        - amount
        - provider
        - providerEnvironment
        - stablecoinProviderAccountId
        - createdAt
        - updatedAt
      properties:
        id:
          type: string
          description: System-generated stablecoin issuer operation identifier.
          example: StablecoinOperation:019542f5-b3e7-1d02-0000-000000000301
        stablecoinId:
          type: string
          description: Stablecoin this operation belongs to.
          example: Stablecoin:019542f5-b3e7-1d02-0000-000000000002
        operationType:
          $ref: '#/components/schemas/StablecoinOperationType'
        status:
          $ref: '#/components/schemas/StablecoinOperationStatus'
        amount:
          type: string
          description: Operation amount in the stablecoin's smallest unit.
          example: '1000000'
        provider:
          $ref: '#/components/schemas/StablecoinProvider'
        providerEnvironment:
          $ref: '#/components/schemas/StablecoinProviderEnvironment'
        stablecoinProviderAccountId:
          type: string
          description: Stablecoin provider account link used for the operation.
          example: StablecoinProviderAccount:019542f5-b3e7-1d02-0000-000000000001
        source:
          $ref: '#/components/schemas/StablecoinOperationSource'
        fundingInstructions:
          $ref: '#/components/schemas/StablecoinFundingInstructions'
        destination:
          $ref: '#/components/schemas/StablecoinOperationDestination'
        estimatedDelivery:
          $ref: '#/components/schemas/StablecoinEstimatedDelivery'
        expiresAt:
          type: string
          format: date-time
          description: Expiry for operations awaiting external funding.
          example: '2026-05-27T16:40:00Z'
        providerStatus:
          type: string
          description: Sanitized provider status when available.
          example: pending
        failureReason:
          type: string
          description: Stable internal failure code for terminal failed operations.
          example: PROVIDER_TRANSFER_FAILED
        description:
          type: string
          description: Platform-provided operation description.
          example: Initial program funding mint
        createdAt:
          type: string
          format: date-time
          description: Creation timestamp.
          example: '2026-05-20T16:40:00Z'
        updatedAt:
          type: string
          format: date-time
          description: Last update timestamp.
          example: '2026-05-20T17:10:00Z'
    StablecoinOperationStatus:
      type: string
      enum:
        - CREATED
        - PENDING_FUNDING
        - PENDING_PROVIDER
        - PROCESSING
        - COMPLETED
        - FAILED
        - EXPIRED
      description: Stablecoin issuer operation lifecycle status.
    StablecoinProvider:
      type: string
      enum:
        - BRALE
      description: >-
        Stablecoin provider backing the linked account, stablecoin, or
        operation.
    StablecoinProviderEnvironment:
      type: string
      enum:
        - SANDBOX
        - PRODUCTION
      description: Provider environment derived from the authenticated Grid platform mode.
    StablecoinOperationSource:
      type: object
      description: >-
        Source of a stablecoin operation, as reported on a
        `StablecoinOperation`. A single merged shape (superset of the mint
        funding source and burn source request variants) so the field is
        unambiguously deserializable regardless of operation type:
        `externalAccountId` is present for external-account funded mints,
        `accountId` for Grid internal account sources, and
        `sourceTokenIdentifier`/`cryptoNetwork` for provider internal balance
        sources.
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/StablecoinOperationSourceType'
        externalAccountId:
          type: string
          description: >-
            Grid `ExternalAccount` funding the operation, present for ACH debit
            mints.
          example: ExternalAccount:019542f5-b3e7-1d02-0000-000000000101
        accountId:
          type: string
          description: Grid internal account id, present for Grid internal account sources.
          example: InternalAccount:019542f5-b3e7-1d02-0000-000000000102
        sourceTokenIdentifier:
          type: string
          description: >-
            Provider token/value type, present for provider internal balance
            sources.
          example: USDC
        cryptoNetwork:
          type: string
          description: >-
            Source crypto network, present for provider internal balance
            sources.
          example: SOLANA
    StablecoinFundingInstructions:
      type: object
      description: >-
        Provider funding instructions safe to show publicly. Present for
        wire-funded mint operations and external-source burn operations when
        available. The common fields below are always declared; the exact set of
        remaining fields is rail- and provider-specific (for example, wire
        instructions carry bank beneficiary/account/routing details while Spark
        and on-chain instructions carry a deposit address), so
        `additionalProperties` stays open to pass those through without a spec
        change per rail.
      additionalProperties: true
      properties:
        rail:
          type: string
          description: Funding rail these instructions apply to (e.g. `SPARK`, `WIRE`).
          example: SPARK
        network:
          type: string
          description: Network the funds should be sent on, when applicable.
          example: SPARK
        address:
          type: string
          description: >-
            Deposit address the issuer sends funds to, for on-chain or Spark
            rails.
          example: spark1...
        valueType:
          type: string
          description: Provider token/value type the deposit address expects.
          example: ACME
      example:
        rail: SPARK
        network: SPARK
        address: spark1...
        valueType: ACME
    StablecoinOperationDestination:
      type: object
      description: >-
        Destination of a stablecoin operation, as reported on a
        `StablecoinOperation`. A single merged (flat) shape so the field is
        unambiguously deserializable regardless of operation type: `accountId`
        identifies the receiving account (its `ExternalAccount:` /
        `InternalAccount:` prefix disambiguates external vs Grid-managed), and
        `rail` is present for burn (fiat payout) destinations and absent for
        mint destinations.
      required:
        - accountId
      properties:
        accountId:
          type: string
          description: >-
            Grid account that received the funds. An `ExternalAccount:` id for
            external destinations or an `InternalAccount:` id for Grid-managed
            destinations.
          example: ExternalAccount:019542f5-b3e7-1d02-0000-000000000205
        rail:
          $ref: '#/components/schemas/StablecoinOperationDestinationRail'
    StablecoinEstimatedDelivery:
      type: object
      description: >-
        Static rail timing estimate for fiat redemption delivery. This is
        guidance, not a guaranteed arrival time.
      additionalProperties: true
      properties:
        rail:
          type: string
          description: Fiat payout rail the estimate applies to.
          example: ACH_CREDIT
        amount:
          type: string
          pattern: ^[0-9]+$
          description: >-
            Estimated delivery amount in the smallest unit of `currency` (e.g.
            cents for USD).
          example: '100'
        currency:
          type: string
          description: ISO 4217 currency code of the fiat payout.
          example: USD
        timing:
          type: string
          description: Human-readable rail timing estimate.
          example: 1-3 business days
      example:
        rail: ACH_CREDIT
        amount: '100'
        currency: USD
        timing: 1-3 business days
    StablecoinOperationSourceType:
      type: string
      enum:
        - WIRE
        - ACH_DEBIT
        - SAME_DAY_ACH_DEBIT
        - EXTERNAL_ACCOUNT
        - GRID_INTERNAL_ACCOUNT
        - PROVIDER_INTERNAL_BALANCE
      description: >-
        Source variant. Mint funding uses `WIRE`, `ACH_DEBIT`, or
        `SAME_DAY_ACH_DEBIT`; burns use `EXTERNAL_ACCOUNT`.
        `GRID_INTERNAL_ACCOUNT` and `PROVIDER_INTERNAL_BALANCE` are shared
        across mint and burn.
      example: ACH_DEBIT
    StablecoinOperationDestinationRail:
      type: string
      enum:
        - WIRE
        - ACH_CREDIT
        - SAME_DAY_ACH_CREDIT
        - RTP_CREDIT
      description: Fiat payout rail, present for burn (fiat redemption) destinations.
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
      description: >-
        API token authentication using format `<api token id>:<api client
        secret>`
    AgentAuth:
      type: http
      scheme: bearer
      description: >-
        Bearer token authentication for agent-scoped endpoints. The token is the
        `accessToken` returned when redeeming a device code via `POST
        /agents/device-codes/redeem`. Agent credentials are user-scoped: all
        requests are automatically bound to the agent's associated customer and
        subject to the agent's policy.

````

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