openapi: 3.1.0
info:
  version: 1.830.0
  title: Dfns
servers:
  - url: https://api.dfns.io
    description: Default - Europe
  - url: https://api.uae.dfns.io
    description: UAE
  - url: https://api.dfns.ninja
    description: <Deprecated> Staging
components:
  securitySchemes:
    authenticationToken:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        **Bearer Token:** Used to authenticate API requests.

        More details how to generate the token: [Authentication
        flows](https://docs.dfns.co/api-reference/auth/login-flows)
    userActionSignature:
      type: apiKey
      in: header
      name: X-DFNS-USERACTION
      description: >-
        **User Action Signature:** Used to sign the change-inducing API
        requests.

        More details how to generate the token: [User Action Signing
        flows](https://docs.dfns.co/api-reference/auth/signing-flows)
  schemas:
    WebhookEnvelopeBase:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for this webhook event
        date:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the event occurred
        retryOf:
          type: string
          description: ID of the original event if this is a retry
        timestampSent:
          type: integer
          description: Unix timestamp when the event was sent
        deliveryAttempt:
          type: integer
          minimum: 1
          description: Delivery attempt number
      required:
        - id
        - date
        - timestampSent
        - deliveryAttempt
    Agreement:
      type:
        - object
        - "null"
      properties:
        id:
          type: string
        agreementUrl:
          type: string
        details:
          type: string
        agreementType:
          type: string
          enum:
            - PrivacyPolicy
            - TermsAndConditions
            - UniswapTermsOfService
            - UniswapPrivacyPolicy
      required:
        - id
        - details
        - agreementType
      additionalProperties: false
    Network:
      type: string
      title: Network
      enum: &a1
        - Algorand
        - AlgorandTestnet
        - Aptos
        - AptosTestnet
        - ArbitrumOne
        - ArbitrumSepolia
        - ArcTestnet
        - AvalancheC
        - AvalancheCFuji
        - BabylonGenesis
        - BabylonTestnet5
        - Base
        - BaseSepolia
        - Berachain
        - BerachainBepolia
        - Bitcoin
        - BitcoinSignet
        - BitcoinTestnet3
        - BitcoinTestnet4
        - BitcoinCash
        - Bob
        - BobSepolia
        - Bsc
        - BscTestnet
        - Canton
        - CantonTestnet
        - Cardano
        - CardanoPreprod
        - Concordium
        - ConcordiumTestnet
        - Celo
        - CeloAlfajores
        - Codex
        - CodexSepolia
        - CosmosHub4
        - CosmosIcsTestnet
        - Dogecoin
        - DogecoinTestnet
        - Ethereum
        - EthereumClassic
        - EthereumClassicMordor
        - EthereumSepolia
        - EthereumHolesky
        - EthereumHoodi
        - FantomOpera
        - FantomTestnet
        - FlareC
        - FlareCCoston2
        - FlowEvm
        - FlowEvmTestnet
        - Hedera
        - HederaTestnet
        - Ink
        - InkSepolia
        - InternetComputer
        - Ion
        - IonTestnet
        - Iota
        - IotaTestnet
        - Kaspa
        - Kusama
        - KusamaAssetHub
        - Litecoin
        - LitecoinTestnet
        - Near
        - NearTestnet
        - Optimism
        - OptimismSepolia
        - Origyn
        - Plasma
        - PlasmaTestnet
        - Plume
        - PlumeSepolia
        - Paseo
        - PaseoAssetHub
        - Polkadot
        - PolkadotAssetHub
        - Polygon
        - PolygonAmoy
        - Polymesh
        - PolymeshTestnet
        - Race
        - RaceSepolia
        - SeiAtlantic2
        - SeiPacific1
        - Solana
        - SolanaDevnet
        - Starknet
        - StarknetSepolia
        - Stellar
        - StellarTestnet
        - Sui
        - SuiTestnet
        - Tezos
        - TezosGhostnet
        - TezosShadownet
        - Tempo
        - TempoModerato
        - Tsc
        - TscTestnet1
        - Ton
        - TonTestnet
        - Tron
        - TronNile
        - Westend
        - WestendAssetHub
        - Xdc
        - XdcApothem
        - XLayer
        - XLayerSepolia
        - XrpLedger
        - XrpLedgerTestnet
    Allocation:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^allctn-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Unique identifier for the allocation investment.
          example: allctn-7mnn0-rltpq-9bvps60gjm09td0j
        walletId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Wallet id.
          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
        protocol:
          type: string
          enum:
            - 0fns
          description: The DeFi protocol used for allocation generation. Currently
            supports OFNS protocol
        amount:
          allOf:
            - oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Native
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - amount
                  title: Native Asset
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Erc20
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - contract
                    - amount
                  title: EVM Fungible Token (ERC-20)
            - type: object
              properties:
                metadata:
                  type: object
                  properties:
                    network:
                      $ref: "#/components/schemas/Network"
                    name:
                      type: string
                    symbol:
                      type: string
                    decimals:
                      type: number
                    tid:
                      type: string
                  required:
                    - network
                    - decimals
              required:
                - metadata
          description: The total amount currently invested in this allocation.
        rewards:
          allOf:
            - oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Native
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - amount
                  title: Native Asset
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Erc20
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - contract
                    - amount
                  title: EVM Fungible Token (ERC-20)
            - type: object
              properties:
                metadata:
                  type: object
                  properties:
                    network:
                      $ref: "#/components/schemas/Network"
                    name:
                      type: string
                    symbol:
                      type: string
                    decimals:
                      type: number
                    tid:
                      type: string
                  required:
                    - network
                    - decimals
              required:
                - metadata
          description: The total rewards earned so far in this allocation.
        dateCreated:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date. When
            the allocation was created."
          example: 2023-04-14T20:41:28.715Z
      required:
        - id
        - walletId
        - protocol
        - amount
        - rewards
        - dateCreated
      description: A allocation investment representing funds deposited to earn
        interest from a DeFi protocol.
      example:
        id: allctn-6a3ku-bn8d7-8u5rs1oukojms7k8
        walletId: wa-3l3cj-l8mq7-8q78f9nopq7f1qjv
        protocol: 0fns
        amount:
          kind: Erc20
          contract: "0x0A7660979A67E4bC51E750C628C8479ff9F458aE"
          amount: "1000000000"
          metadata:
            network: EthereumSepolia
            name: 0fns
            symbol: 0fnsSepolia
            decimals: 6
            tid: erc20:0x0A7660979A67E4bC51E750C628C8479ff9F458aE
        rewards:
          kind: Erc20
          contract: "0x0A7660979A67E4bC51E750C628C8479ff9F458aE"
          amount: "5000000"
          metadata:
            network: EthereumSepolia
            name: 0fns
            symbol: 0fnsSepolia
            decimals: 6
            tid: erc20:0x0A7660979A67E4bC51E750C628C9479ff9F458aE
        dateCreated: 2025-10-09T10:57:55.758Z
    Requester:
      type: object
      properties:
        userId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^us-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: User id.
          example: us-6b58p-r53sr-rlrd3l5cj3uc4ome
        tokenId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^to-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Token id.
          example: to-202a0-cdo33-o65mbt6q758lvvnt
      required:
        - userId
      description: The user who initiated the request.
    AllocationAction:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^allctn-a-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Unique identifier for the allocation action.
          example: allctn-a-04p5n-gkkgd-5qk71nuev5n2ug1t
        allocationId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^allctn-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Unique identifier for the allocation investment.
          example: allctn-7mnn0-rltpq-9bvps60gjm09td0j
        externalId:
          type: string
          description: An optional external identifier provided by the client to ensure
            idempotency and prevent duplicate operations.
        kind:
          type: string
          enum:
            - Deposit
            - Withdraw
          description: "The type of action being performed on the allocation investment:
            Deposit to add funds or Withdraw to remove funds."
        status:
          type: string
          enum:
            - PendingPolicyApproval
            - InProgress
            - Completed
            - Failed
            - Rejected
          description: Status of the allocation action. Once initiated, the status will be
            InProgress, after processing it will be Completed or Failed.
        requester:
          $ref: "#/components/schemas/Requester"
        requestBody:
          anyOf:
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Deposit
                    - Withdraw
                  description: "The type of action being performed on the allocation investment:
                    Deposit to add funds or Withdraw to remove funds."
                externalId:
                  type: string
                  description: An optional external identifier provided by the client to ensure
                    idempotency and prevent duplicate operations.
                sourceAsset:
                  type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Erc20
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - contract
                    - amount
                  title: EVM Fungible Token (ERC-20)
                targetAsset:
                  type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Erc20
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - contract
                    - amount
                  title: EVM Fungible Token (ERC-20)
                slippageBps:
                  type: number
                  description: The slippage tolerance for this trade in [basis
                    point](https://en.wikipedia.org/wiki/Basis_point) (BPS).
                    Slippage tolerance defines the maximum price difference
                    you're willing to accept during a trade from the estimated
                    quote, ensuring you still receive at least a minimum number
                    of tokens if the price shifts. One basis point equals
                    one-hundredth of a percentage point, or 0.01%.
              required:
                - kind
                - sourceAsset
                - targetAsset
                - slippageBps
              description: Request body for creating a allocation action. Different protocols
                may have different requirements.
              title: 0fns Allocation Action Request
            - type: object
              properties:
                walletId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Wallet id.
                  example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                protocol:
                  type: string
                  enum:
                    - 0fns
                  description: Ofns protocol
                externalId:
                  type: string
                  description: An optional external identifier provided by the client to ensure
                    idempotency and prevent duplicate operations.
                sourceAsset:
                  type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Erc20
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - contract
                    - amount
                  title: EVM Fungible Token (ERC-20)
                targetAsset:
                  type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Erc20
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - contract
                    - amount
                  title: EVM Fungible Token (ERC-20)
                slippageBps:
                  type: number
                  description: The slippage tolerance for this trade in [basis
                    point](https://en.wikipedia.org/wiki/Basis_point) (BPS).
                    Slippage tolerance defines the maximum price difference
                    you're willing to accept during a trade from the estimated
                    quote, ensuring you still receive at least a minimum number
                    of tokens if the price shifts. One basis point equals
                    one-hundredth of a percentage point, or 0.01%.
              required:
                - walletId
                - protocol
                - sourceAsset
                - targetAsset
                - slippageBps
              description: Request body for creating a allocation investment using the 0fns
                protocol.
              title: 0fns Allocation Request
          description: The full request used for initiating this allocation action.
        failureReason:
          type: string
          description: The failure reason, if any. Only present when status is Failed.
        dateCreated:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date. When
            the allocation action was created."
          example: 2023-04-14T20:41:28.715Z
      required:
        - id
        - allocationId
        - kind
        - status
        - requester
        - requestBody
        - dateCreated
      description: A specific action performed on a allocation investment, such as
        depositing or withdrawing funds.
      example:
        id: allctn-a-6a3ku-bn8d7-8u5rs1oukojms7k8
        allocationId: allctn-6a3ku-bn8d7-8u5rs1oukojms7k8
        externalId: external-action-123
        kind: Deposit
        status: InProgress
        requester:
          userId: us-3v1ag-v6b36-afhm4zy59kjrn1fds
          tokenId: ut-341e5-12nj6-9a82ld2hjxqzkpji
        requestBody:
          kind: Deposit
          sourceAsset:
            kind: Erc20
            contract: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
            amount: "500000000"
          targetAsset:
            kind: Erc20
            contract: "0x0A7660979A67E4bC51E750C628C8479ff9F458aE"
            amount: "500000000"
          slippageBps: 100
        dateCreated: 2025-10-09T11:15:33.421Z
    Fido2Assertion:
      type: object
      properties:
        kind:
          type: string
          enum:
            - Fido2
        credentialAssertion:
          type: object
          properties:
            credId:
              type: string
              minLength: 1
              description: Base64url-encoded id of the credential returned by the user's
                WebAuthn client.
            clientData:
              type: string
              minLength: 1
              description: Base64url-encoded, stringified JSON [client
                data](https://docs.dfns.co/api-reference/auth/credentials-data#client-data)
                object returned by the user's WebAuthn client.
            signature:
              type: string
              minLength: 1
              description: Base64url-encoded signature returned by the user's WebAuthn client.
            algorithm:
              type: string
              description: The algorithm/digest that the credential will use to sign data. If
                the algoritm is not specified then the algorithm will be
                determined by the key.
            authenticatorData:
              type: string
              minLength: 1
              description: Base64url encoded authenticator data object returned by the user's
                WebAuthn client.
            userHandle:
              type: string
              description: Base64url encoded userHandle returned by the user's WebAuthn
                client.
          required:
            - credId
            - clientData
            - signature
            - authenticatorData
          additionalProperties: false
      required:
        - kind
        - credentialAssertion
      additionalProperties: false
      description: Use a Fido2 Credential, also known as Passkeys or WebauthN credential.
      title: Fido2/Passkeys
    KeyAssertion:
      type: object
      properties:
        kind:
          type: string
          enum:
            - Key
        credentialAssertion:
          type: object
          properties:
            credId:
              type: string
              minLength: 1
              description: Base64url-encoded id of the credential returned by the user's
                WebAuthn client.
            clientData:
              type: string
              minLength: 1
              description: Base64url-encoded, stringified JSON [client
                data](https://docs.dfns.co/api-reference/auth/credentials-data#client-data)
                object returned by the user's WebAuthn client.
            signature:
              type: string
              minLength: 1
              description: Base64url-encoded signature returned by the user's WebAuthn client.
            algorithm:
              type: string
              description: The algorithm/digest that the credential will use to sign data. If
                the algoritm is not specified then the algorithm will be
                determined by the key.
          required:
            - credId
            - clientData
            - signature
          additionalProperties: false
      required:
        - kind
        - credentialAssertion
      additionalProperties: false
      description: Use a "raw" public/private keypair.
      title: Public/Private key pair
    PasswordProtectedKeyAssertion:
      type: object
      properties:
        kind:
          type: string
          enum:
            - PasswordProtectedKey
        credentialAssertion:
          type: object
          properties:
            credId:
              type: string
              minLength: 1
              description: Base64url-encoded id of the credential returned by the user's
                WebAuthn client.
            clientData:
              type: string
              minLength: 1
              description: Base64url-encoded, stringified JSON [client
                data](https://docs.dfns.co/api-reference/auth/credentials-data#client-data)
                object returned by the user's WebAuthn client.
            signature:
              type: string
              minLength: 1
              description: Base64url-encoded signature returned by the user's WebAuthn client.
            algorithm:
              type: string
              description: The algorithm/digest that the credential will use to sign data. If
                the algoritm is not specified then the algorithm will be
                determined by the key.
          required:
            - credId
            - clientData
            - signature
          additionalProperties: false
      required:
        - kind
        - credentialAssertion
      additionalProperties: false
      description: "Use an encrypted private key. "
      title: Password-protected Key
    PasswordAssertion:
      type: object
      properties:
        kind:
          type: string
          enum:
            - Password
        password:
          type: string
          minLength: 1
      required:
        - kind
        - password
      additionalProperties: false
      description: Not supported, will be removed in a future release.
      title: <Deprecated> Password
    FirstFactorAssertion:
      oneOf:
        - $ref: "#/components/schemas/Fido2Assertion"
        - $ref: "#/components/schemas/KeyAssertion"
        - $ref: "#/components/schemas/PasswordProtectedKeyAssertion"
        - $ref: "#/components/schemas/PasswordAssertion"
      discriminator:
        propertyName: kind
        mapping:
          Fido2: "#/components/schemas/Fido2Assertion"
          Key: "#/components/schemas/KeyAssertion"
          PasswordProtectedKey: "#/components/schemas/PasswordProtectedKeyAssertion"
          Password: "#/components/schemas/PasswordAssertion"
      description: First factor credential used to sign the challenge.
    TotpAssertion:
      type: object
      properties:
        kind:
          type: string
          enum:
            - Totp
        otpCode:
          type: string
          minLength: 1
      required:
        - kind
        - otpCode
      additionalProperties: false
      description: Not supported, will be removed in a future release.
      title: <Deprecated> TOTP
    SecondFactorAssertion:
      oneOf:
        - $ref: "#/components/schemas/Fido2Assertion"
        - $ref: "#/components/schemas/KeyAssertion"
        - $ref: "#/components/schemas/PasswordProtectedKeyAssertion"
        - $ref: "#/components/schemas/TotpAssertion"
      discriminator:
        propertyName: kind
        mapping:
          Fido2: "#/components/schemas/Fido2Assertion"
          Key: "#/components/schemas/KeyAssertion"
          PasswordProtectedKey: "#/components/schemas/PasswordProtectedKeyAssertion"
          Totp: "#/components/schemas/TotpAssertion"
      description: Second factor credential used to authenticate a user.
    CredentialKind:
      type: string
      description: The kind of credential.
      enum:
        - Fido2
        - Key
        - RecoveryKey
        - PasswordProtectedKey
    AuditLog:
      type: object
      properties:
        id:
          anyOf:
            - type: string
              minLength: 1
              maxLength: 64
              pattern: ^uj-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
              description: ""
              example: uj-22lhj-mp2ir-88at3r4cufpis60i
            - type: string
              minLength: 1
              maxLength: 64
              pattern: ^to-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
              description: ""
              example: to-202a0-cdo33-o65mbt6q758lvvnt
          description: Log id.
        action:
          type: string
          description: Action performed.
        actionToken:
          type: string
          description: User Action Signature used as token for permorming this action.
        userId:
          type:
            - string
            - "null"
          minLength: 1
          maxLength: 64
          pattern: ^us-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: User who performed the action.
          example: us-6b58p-r53sr-rlrd3l5cj3uc4ome
        username:
          type:
            - string
            - "null"
          description: Username who performed the action.
        datePerformed:
          type:
            - string
            - "null"
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When this action was signed."
          example: 2023-04-14T20:41:28.715Z
        firstFactorCredential:
          type: object
          properties:
            id:
              type: string
              minLength: 1
              maxLength: 64
              pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
              description: Id of the credential used to sign this action.
              example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
            kind:
              allOf:
                - $ref: "#/components/schemas/CredentialKind"
                - type:
                    - string
                    - "null"
                  description: Kind of credential used to sign this action.
            publicKey:
              type: string
              description: Public Key which can be used to verify signature.
            assertion:
              type:
                - object
                - "null"
              properties:
                authenticatorData:
                  type:
                    - string
                    - "null"
                  description: Used to verify the signature for Fido2 credentials. Null for Key
                    credentials, which sign clientData directly.
                clientData:
                  type: string
                  description: Information, including challenge, which you can use to verify the
                    signature.
                signature:
                  type: string
                  description: Signature of the clientData (and authenticatorData for Fido2).
              required:
                - authenticatorData
                - clientData
                - signature
              description: Cryptographic signature evidence. Null when the action was recorded
                without a WebAuthn assertion (e.g. system-initiated actions or
                staff-flow org-owner creations).
          required:
            - id
            - kind
            - publicKey
            - assertion
          description: Cryptographic Signature details. Use these parameters if you want
            to validate the signature.
      required:
        - id
        - action
        - actionToken
        - userId
        - username
        - datePerformed
        - firstFactorCredential
      additionalProperties: false
      example:
        id: uj-4vs1l-5012b-95825381215t26u8
        action: eyJwYXlsb2FkIjoie1wibmFtZVwi3215853bGlhXCJ9IiwibWV0aG9kIjoiUFVUIiwicGF0aCI6Ii93YWxsZX32584LTNsNmFwLXI0Y2J0LThqMDltaGh0YnU1MjQyYzgiLCJzZXJ2ZXIiOiJhcGkuZGZucy5pbyIsInN56534nkiOiJVcGRhdGUgd2FsbGV0IHdhLTNsNmFwLXI0Y2J0LThqMDlt84388jQyYzguIiwibm9uY2UiOiIifQ==
        actionToken: eyJ0eXAiOiJKV1QiLC453JFZERTQSJ9.eyJqdGkiOiJ1ai00dnMxbC01MDEyYi05NTg5Y3M0NXIy548nU4IiwiaXNzIjoiYXV0aC5kZm5zLmlvIiwiYXVk3543586XRoOnVzZXI6YWN0aW9uIiwic3ViIjoidXMtNG92aDQtNmEwaDgtODFvYWgwZmozdThsNmRqdC354348HBzOi8vY3VzdG9tL2FwcF9tZXRhZGF0YSI6eyJvcmdJZCI6Im9yLTFtZG9rLTV1dmgwLTllNzluOTlqNWE5azV1MWoiLCJmaXJzdEZhY3RvckNyZWRlbnRpYWxVdWlkIjoiY3ItN2JmcWstODl1YWctOG5scXZxdmd0NmR2ZDFtayIsInNlY29uZEZhY3RvckNyZWRlbnRpYWxVdWlkIjoiIiwiaGFzaCI6ImM5YTc5YjcxZjI0ZTRkMzJjNGJmN2M1NzlkYmQ3Y2RmZDRlNDUwOWFkMGM1ZmM5ZDVlNjEyYWFkODllMmQzOTYiLCJub25jZSI6Im5vLTVoMG44LWg5b211LTkxZHJqc2RjZnRxMzJmbmMifSwiaWF0IjoxNzYwMDE2MTg1LCJleHAiOjE3NjAwMTcwODV9.zva5vMQHkkbxGgk8IG2jHtbWOoftDA1ga_5INqLks2aCO9V29U3lWE9eE3Mu3M6z5SPHprF31BpIMW0jOzWbDA
        datePerformed: 2025-10-09T13:23:05.134Z
        userId: us-4ovh4-6a0h8-81oa5584u8l6djt
        username: my-user@my-company.com
        firstFactorCredential:
          id: cr-7bfqk-89uag-8nlq12437958dvd1mk
          kind: Fido2
          publicKey: |
            -----BEGIN PUBLIC KEY-----
            MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2315138132rYlwMzKbl458cZk
            yiHqVsN6QJRE/tqvqsdfq35eT8KEwjSGsh/Lv4LiWMFlnz/kIzjo6TCJpA==
            -----END PUBLIC KEY-----
          assertion:
            authenticatorData: k3SiDdanJToQdO2q1f3se58ELbhdGfzoZ3GRSPmOO9AdAAAAAA
            clientData: eyJ0eXBlIjoid2ViYXV0aG4uZ2V0qfses135ebmdlIjoiWlhsS2NGcERTVFpKYlU1dlRGUmFibGt5ZERKTVYwVXlZbnBXZGt4VWFIVmphbXd3V1ZkU2JrNHpXbk5QVjNOM1RVUlJhVXhEU25WaU1qVnFXbE5KTmtsdE5YWk1WRlUwWTBkVmVVeFVVblZaVkVGM1RGUm5lVTlIUlRKUFZFWXhZMjFPZEdFeVdYcE9WekJwVEVOS2QxbFliSE5pTWtaclUwZEdlbUZEU1RaSmJWSm9Xa2RhYkU5VVdUSmFSMVUxVFZSTk0xcEVUVFJQVjFFd1RrUlJlVTlFWXpGUFJFcHFUVlJKTVU1NlJYaE9hbWN6VFVkSk0xcEVTWGRaVjBsM1RsUlpNRmx0Vm14YWFtTXhUbGRLYWxwWFNYcE9Na2xwVEVOS2QxbFlVbTlKYW05cFRETmthR0pIZUd4a1NFMTJaREpGZEUweWR6SlpXRUYwWTJwU2FsbHVVWFJQUjI5M1QxY3hiMkZJVW1sa1ZGVjVUa1JLYWs5RFNYTkpiazR4WWxjeGFHTnVhMmxQYVVwV1kwZFNhR1JIVldka01rWnpZa2RXTUVsSVpHaE1WRTV6VG0xR2QweFlTVEJaTWtvd1RGUm9jVTFFYkhSaFIyZ3dXVzVWTVUxcVVYbFplbWQxU1c0dyIsIm9yaWdpbiI6Imh0dHBzOi8vYXBwLmRmbnMuaW8iLCJjcm9zc09yaWdpbiI6ZmFsc2V9
            signature: MEYCIQDq2iXdlHcsqf13se5BlK1VJFiMQuV1x-HTj1efWvu5dKGgIhAJOudYr43QPWNQnxu1Y1U7PJ3pxjQNhx7kBb821HZJNk
    PersonalAccessToken:
      type: object
      properties:
        accessToken:
          type: string
        dateCreated:
          type: string
        credId:
          type: string
        isActive:
          type: boolean
        kind:
          type: string
          enum:
            - Pat
            - ServiceAccount
            - Token
            - Code
            - Recovery
            - Temp
            - Application
          description: Access token kind.
        linkedUserId:
          type: string
        linkedAppId:
          type: string
        name:
          type: string
        orgId:
          type: string
        permissionAssignments:
          type: array
          items:
            type: object
            properties:
              permissionName:
                type: string
              permissionId:
                type: string
              assignmentId:
                type: string
              operations:
                type: array
                items:
                  type: string
            required:
              - permissionName
              - permissionId
              - assignmentId
        publicKey:
          type: string
        tokenId:
          type: string
      required:
        - dateCreated
        - credId
        - isActive
        - kind
        - linkedUserId
        - linkedAppId
        - name
        - orgId
        - permissionAssignments
        - publicKey
        - tokenId
    Credential:
      type: object
      properties:
        kind:
          type: string
          enum:
            - Fido2
            - Key
            - Password
            - Totp
            - RecoveryKey
            - PasswordProtectedKey
        credentialId:
          type: string
        credentialUuid:
          type: string
        dateCreated:
          type: string
        isActive:
          type: boolean
        name:
          type: string
        publicKey:
          type: string
        relyingPartyId:
          type: string
        origin:
          type: string
      required:
        - kind
        - credentialId
        - credentialUuid
        - dateCreated
        - isActive
        - name
        - publicKey
        - relyingPartyId
        - origin
    Fido2Attestation:
      type: object
      properties:
        credentialKind:
          type: string
          enum:
            - Fido2
        credentialInfo:
          type: object
          properties:
            credId:
              type: string
              minLength: 1
            clientData:
              type: string
              minLength: 1
            attestationData:
              type: string
              minLength: 1
          required:
            - credId
            - clientData
            - attestationData
          additionalProperties: false
        credentialName:
          type: string
          minLength: 1
        challengeIdentifier:
          type: string
          minLength: 1
      required:
        - credentialKind
        - credentialInfo
        - credentialName
        - challengeIdentifier
      additionalProperties: false
      description: Register a Fido2 Credential, also known as Passkeys or WebauthN
        credential.
      title: Fido2/Passkeys
    KeyAttestation:
      type: object
      properties:
        credentialKind:
          type: string
          enum:
            - Key
        credentialInfo:
          type: object
          properties:
            credId:
              type: string
              minLength: 1
            clientData:
              type: string
              minLength: 1
            attestationData:
              type: string
              minLength: 1
          required:
            - credId
            - clientData
            - attestationData
          additionalProperties: false
        credentialName:
          type: string
          minLength: 1
        challengeIdentifier:
          type: string
          minLength: 1
      required:
        - credentialKind
        - credentialInfo
        - credentialName
        - challengeIdentifier
      additionalProperties: false
      description: Register a "raw" public/private keypair, mostly meant to be used by
        Service Accounts. See [Generate a Key
        Pair](https://docs.dfns.co/developers/guides/generate-a-key-pair) for
        more details.
      title: Public/Private key pair
    PasswordProtectedKeyAttestation:
      type: object
      properties:
        credentialKind:
          type: string
          enum:
            - PasswordProtectedKey
        credentialInfo:
          type: object
          properties:
            credId:
              type: string
              minLength: 1
            clientData:
              type: string
              minLength: 1
            attestationData:
              type: string
              minLength: 1
          required:
            - credId
            - clientData
            - attestationData
          additionalProperties: false
        encryptedPrivateKey:
          type: string
          minLength: 1
        credentialName:
          type: string
          minLength: 1
        challengeIdentifier:
          type: string
          minLength: 1
      required:
        - credentialKind
        - credentialInfo
        - encryptedPrivateKey
        - credentialName
        - challengeIdentifier
      additionalProperties: false
      description: Register an encrypted private key. Note that Dfns only stores the
        encrypted private key and should not have access to the password to
        decrypt it!
      title: Password-protected Key
    RecoveryKeyAttestation:
      type: object
      properties:
        credentialKind:
          type: string
          enum:
            - RecoveryKey
        credentialInfo:
          type: object
          properties:
            credId:
              type: string
              minLength: 1
            clientData:
              type: string
              minLength: 1
            attestationData:
              type: string
              minLength: 1
          required:
            - credId
            - clientData
            - attestationData
          additionalProperties: false
        encryptedPrivateKey:
          type: string
          minLength: 1
        credentialName:
          type: string
          minLength: 1
        challengeIdentifier:
          type: string
          minLength: 1
      required:
        - credentialKind
        - credentialInfo
        - credentialName
        - challengeIdentifier
      additionalProperties: false
      description: Register a recovery key. See [Account
        Recovery](https://docs.dfns.co/api-reference/auth/account-recovery) for
        more details.
      title: Recovery Key
    PasswordAttestation:
      type: object
      properties:
        credentialKind:
          type: string
          enum:
            - Password
        credentialInfo:
          type: object
          properties:
            password:
              type: string
              minLength: 1
          required:
            - password
          additionalProperties: false
        credentialName:
          type: string
          minLength: 1
        challengeIdentifier:
          type: string
          minLength: 1
      required:
        - credentialKind
        - credentialInfo
        - credentialName
        - challengeIdentifier
      additionalProperties: false
      description: Not supported, will be removed in a future release.
      title: <Deprecated> Password
    TotpAttestation:
      type: object
      properties:
        credentialKind:
          type: string
          enum:
            - Totp
        credentialInfo:
          type: object
          properties:
            otpCode:
              type: string
              minLength: 1
          required:
            - otpCode
          additionalProperties: false
        credentialName:
          type: string
          minLength: 1
        challengeIdentifier:
          type: string
          minLength: 1
      required:
        - credentialKind
        - credentialInfo
        - credentialName
        - challengeIdentifier
      additionalProperties: false
      description: Not supported, will be removed in a future release.
      title: <Deprecated> TOTP
    FirstFactorAttestation:
      oneOf:
        - allOf:
            - $ref: "#/components/schemas/Fido2Attestation"
            - properties:
                credentialKind:
                  type: string
                  enum:
                    - Fido2
                credentialInfo:
                  type: object
                  properties:
                    credId:
                      type: string
                      minLength: 1
                    clientData:
                      type: string
                      minLength: 1
                    attestationData:
                      type: string
                      minLength: 1
                  required:
                    - credId
                    - clientData
                    - attestationData
                  additionalProperties: false
                credentialName:
                  type: string
                  minLength: 1
              required:
                - credentialKind
                - credentialInfo
        - allOf:
            - $ref: "#/components/schemas/KeyAttestation"
            - properties:
                credentialKind:
                  type: string
                  enum:
                    - Key
                credentialInfo:
                  type: object
                  properties:
                    credId:
                      type: string
                      minLength: 1
                    clientData:
                      type: string
                      minLength: 1
                    attestationData:
                      type: string
                      minLength: 1
                  required:
                    - credId
                    - clientData
                    - attestationData
                  additionalProperties: false
                credentialName:
                  type: string
                  minLength: 1
              required:
                - credentialKind
                - credentialInfo
        - allOf:
            - $ref: "#/components/schemas/PasswordAttestation"
            - properties:
                credentialKind:
                  type: string
                  enum:
                    - Password
                credentialInfo:
                  type: object
                  properties:
                    password:
                      type: string
                      minLength: 1
                  required:
                    - password
                  additionalProperties: false
                credentialName:
                  type: string
                  minLength: 1
              required:
                - credentialKind
                - credentialInfo
        - allOf:
            - $ref: "#/components/schemas/PasswordProtectedKeyAttestation"
            - properties:
                credentialKind:
                  type: string
                  enum:
                    - PasswordProtectedKey
                credentialInfo:
                  type: object
                  properties:
                    credId:
                      type: string
                      minLength: 1
                    clientData:
                      type: string
                      minLength: 1
                    attestationData:
                      type: string
                      minLength: 1
                  required:
                    - credId
                    - clientData
                    - attestationData
                  additionalProperties: false
                encryptedPrivateKey:
                  type: string
                  minLength: 1
                credentialName:
                  type: string
                  minLength: 1
              required:
                - credentialKind
                - credentialInfo
                - encryptedPrivateKey
      discriminator:
        propertyName: credentialKind
        mapping:
          Fido2: "#/components/schemas/Fido2Attestation"
          Key: "#/components/schemas/KeyAttestation"
          Password: "#/components/schemas/PasswordAttestation"
          PasswordProtectedKey: "#/components/schemas/PasswordProtectedKeyAttestation"
    SecondFactorAttestation:
      oneOf:
        - allOf:
            - $ref: "#/components/schemas/Fido2Attestation"
            - properties:
                credentialKind:
                  type: string
                  enum:
                    - Fido2
                credentialInfo:
                  type: object
                  properties:
                    credId:
                      type: string
                      minLength: 1
                    clientData:
                      type: string
                      minLength: 1
                    attestationData:
                      type: string
                      minLength: 1
                  required:
                    - credId
                    - clientData
                    - attestationData
                  additionalProperties: false
                credentialName:
                  type: string
                  minLength: 1
              required:
                - credentialKind
                - credentialInfo
        - allOf:
            - $ref: "#/components/schemas/KeyAttestation"
            - properties:
                credentialKind:
                  type: string
                  enum:
                    - Key
                credentialInfo:
                  type: object
                  properties:
                    credId:
                      type: string
                      minLength: 1
                    clientData:
                      type: string
                      minLength: 1
                    attestationData:
                      type: string
                      minLength: 1
                  required:
                    - credId
                    - clientData
                    - attestationData
                  additionalProperties: false
                credentialName:
                  type: string
                  minLength: 1
              required:
                - credentialKind
                - credentialInfo
        - allOf:
            - $ref: "#/components/schemas/TotpAttestation"
            - properties:
                credentialKind:
                  type: string
                  enum:
                    - Totp
                credentialInfo:
                  type: object
                  properties:
                    otpCode:
                      type: string
                      minLength: 1
                  required:
                    - otpCode
                  additionalProperties: false
                credentialName:
                  type: string
                  minLength: 1
              required:
                - credentialKind
                - credentialInfo
        - allOf:
            - $ref: "#/components/schemas/PasswordProtectedKeyAttestation"
            - properties:
                credentialKind:
                  type: string
                  enum:
                    - PasswordProtectedKey
                credentialInfo:
                  type: object
                  properties:
                    credId:
                      type: string
                      minLength: 1
                    clientData:
                      type: string
                      minLength: 1
                    attestationData:
                      type: string
                      minLength: 1
                  required:
                    - credId
                    - clientData
                    - attestationData
                  additionalProperties: false
                encryptedPrivateKey:
                  type: string
                  minLength: 1
                credentialName:
                  type: string
                  minLength: 1
              required:
                - credentialKind
                - credentialInfo
                - encryptedPrivateKey
      discriminator:
        propertyName: credentialKind
        mapping:
          Fido2: "#/components/schemas/Fido2Attestation"
          Key: "#/components/schemas/KeyAttestation"
          Totp: "#/components/schemas/TotpAttestation"
          PasswordProtectedKey: "#/components/schemas/PasswordProtectedKeyAttestation"
    KeyScheme:
      type: string
      description: The cryptographic scheme for the key.
      enum:
        - ECDSA
        - EdDSA
        - Schnorr
    KeyCurve:
      type: string
      enum:
        - ed25519
        - secp256k1
        - stark
      description: The elliptic curve for the key.
    Wallet:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: ID of the wallet.
          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
        network:
          type: string
          description: Network this wallet is bound to.
          enum: *a1
        address:
          type: string
          description: Wallet address on its corresponding network.
        signingKey:
          type: object
          properties:
            id:
              type: string
              minLength: 1
              maxLength: 64
              pattern: ^key-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
              description: Key id.
              example: key-01snl-t56gb-j8tsok0vn802p80i
            scheme:
              $ref: "#/components/schemas/KeyScheme"
            curve:
              $ref: "#/components/schemas/KeyCurve"
            publicKey:
              type: string
              description: Hex-encoded value of the public key.
              example: e2375c8c9e87bfcd0be8f29d76c818cabacd51584f72cb2222d49a13b036d84d3d
            delegatedTo:
              type: string
              minLength: 1
              maxLength: 64
              pattern: ^us-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
              description: The end user ID the key (and wallet) is delegated to.
              example: us-6b58p-r53sr-rlrd3l5cj3uc4ome
          required:
            - id
            - scheme
            - curve
            - publicKey
          description: Details about the key underlying the wallet.
        status:
          type: string
          enum:
            - Active
            - Inactive
            - Archived
          description: Wallet status.
        dateCreated:
          type: string
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date string
            when wallet was created."
          example: 2023-04-14T20:41:28.715Z
        dateDeleted:
          type: string
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date string
            when wallet was deleted."
          example: 2023-04-14T20:41:28.715Z
        name:
          type: string
          maxLength: 100
          description: Wallet nickname.
        custodial:
          type: boolean
          description: Whether the wallet is owned by an end user (non-custodial), or by
            your organization (custodial).
        externalId:
          type: string
          maxLength: 100
          description: User-defined value that can be used to correlate the entity with an
            external system.
        tags:
          type: array
          items:
            type: string
            pattern: ^[a-zA-Z0-9_.:/+-]{1,100}$
            description: Wallet Tag.
          maxItems: 10
          description: List of tags.
        validatorId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^cv-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Id of the validator on which the wallet is created for Canton
            networks
          example: cv-7jeof-m584r-p35ucm37ko3cqgts
      required:
        - id
        - network
        - signingKey
        - status
        - dateCreated
        - custodial
        - tags
      example:
        id: wa-1f04s-lqc9q-xxxxxxxxxxxxxxxx
        network: Ethereum
        address: "0x00e3495cf6af59008f22ffaf32d4c92ac33dac47"
        name: trading hot wallet
        signingKey:
          id: key-6ece3-9l565-xxxxxxxxxxxxxxxx
          scheme: ECDSA
          curve: secp256k1
          publicKey: e2375c8c9e87bfcd0be8f29d76c818cabacd51584f72cb2222d49a13b036d84d3d
        status: Active
        dateCreated: 2023-04-14T20:41:28.715Z
        custodial: true
        tags: []
    User:
      type: object
      properties:
        username:
          type: string
        name:
          type: string
        userId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^us-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: User id.
          example: us-6b58p-r53sr-rlrd3l5cj3uc4ome
        kind:
          type: string
          enum: &a56
            - CustomerEmployee
            - EndUser
          description: User kind.
        credentialUuid:
          type: string
        orgId:
          type: string
        permissions:
          type: array
          items:
            type: string
        isActive:
          type: boolean
        isServiceAccount:
          type: boolean
        isRegistered:
          type: boolean
        isSSORequired:
          type: boolean
        permissionAssignments:
          type: array
          items:
            type: object
            properties:
              permissionName:
                type: string
              permissionId:
                type: string
              assignmentId:
                type: string
              operations:
                type: array
                items:
                  type: string
            required:
              - permissionName
              - permissionId
              - assignmentId
      required:
        - username
        - name
        - userId
        - kind
        - credentialUuid
        - orgId
        - isActive
        - isServiceAccount
        - isRegistered
        - isSSORequired
        - permissionAssignments
    FeeSponsor:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Fee Sponsor id.
          example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
        name:
          type: string
          description: Nickname for the Fee Sponsor. This is displayed on the transfer
            modal in the dashboard.
        walletId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Id of the wallet that is used to sponsor the fee for other wallets
          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
        network:
          allOf:
            - $ref: "#/components/schemas/Network"
            - description: Network used for the wallet.
        status:
          type: string
          enum:
            - Active
            - Deactivated
            - Archived
          description: Fee sponsor status.
        dateCreated:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the Fee Sponsor was created."
          example: 2023-04-14T20:41:28.715Z
        allowEndUser:
          type: boolean
          description: Defines whether EndUsers and their delegated wallets can use this
            Fee Sponsor.
      required:
        - id
        - walletId
        - network
        - status
        - dateCreated
      additionalProperties: false
      example:
        id: fs-1f04s-lqc9q-xxxxxxxxxxxxxxxx
        walletId: wa-1f04s-lqc9q-xxxxxxxxxxxxxxxx
        network: Solana
        status: Active
        dateCreated: 2023-04-14T20:41:28.715Z
    Key:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^key-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Unique identifier for the key.
          example: key-01snl-t56gb-j8tsok0vn802p80i
        scheme:
          $ref: "#/components/schemas/KeyScheme"
        curve:
          $ref: "#/components/schemas/KeyCurve"
        publicKey:
          type: string
          description: Hex-encoded public key.
        masterKey:
          type: boolean
          description: Whether this key can be used as a master key for HD derivation.
        derivedFrom:
          type: object
          properties:
            keyId:
              type: string
              minLength: 1
              maxLength: 64
              pattern: ^key-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
              description: The master key this key was derived from.
              example: key-01snl-t56gb-j8tsok0vn802p80i
            path:
              type: string
              description: The derivation path used.
          required:
            - keyId
            - path
          description: Derivation info if this key was derived from a master key.
        name:
          type: string
          description: Nickname for the key.
        status:
          type: string
          enum:
            - Active
            - Archived
          description: Current status of the key.
        custodial:
          type: boolean
          description: Whether the key is custodial (owned by organization) or
            non-custodial (delegated to end user).
        dateCreated:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the key was created."
          example: 2023-04-14T20:41:28.715Z
        imported:
          type: boolean
          description: Whether this key was imported.
        exported:
          type: boolean
          description: Whether this key has been exported.
        dateExported:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the key was exported."
          example: 2023-04-14T20:41:28.715Z
        dateDeleted:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the key was deleted."
          example: 2023-04-14T20:41:28.715Z
      required:
        - id
        - scheme
        - curve
        - publicKey
        - status
        - custodial
        - dateCreated
    BlockchainKind:
      type: string
      enum:
        - Algorand
        - Aptos
        - Bitcoin
        - BitcoinCash
        - Canton
        - Cardano
        - Concordium
        - Cosmos
        - Evm
        - Hedera
        - Icp
        - Iota
        - Kaspa
        - Near
        - Polymesh
        - Solana
        - Starknet
        - Stellar
        - Substrate
        - Sui
        - Tezos
        - Ton
        - Tron
        - Xrpl
    SignatureRequest:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^sig-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Signature id.
          example: sig-4sfvl-f4iha-umighfi3hk4t54dr
        keyId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^key-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Key id.
          example: key-01snl-t56gb-j8tsok0vn802p80i
        requester:
          $ref: "#/components/schemas/Requester"
        requestBody:
          oneOf:
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Hash
                hash:
                  type: string
                  pattern: ^(0x)?[0-9a-fA-F]{64}$
                  description: 32-byte hash in hex encoded format.
                taprootMerkleRoot:
                  type: string
                  pattern: ^(0x)?([0-9A-Fa-f]{64})?$
                  description: Required when signing with a Schnorr key. Specify the merkle root
                    for tweaking the signing key, or the empty string "" to
                    tweak with the default merkle root.
                network:
                  $ref: "#/components/schemas/Network"
                blockchainKind:
                  $ref: "#/components/schemas/BlockchainKind"
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - hash
              additionalProperties: false
              description: All cryptographic scheme support hash signing. Different
                blockchains will apply different hash functions to compute the
                hash.
              title: Hash
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Message
                message:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                  description: An arbitrary hex encoded message.
                network:
                  $ref: "#/components/schemas/Network"
                blockchainKind:
                  $ref: "#/components/schemas/BlockchainKind"
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - message
              additionalProperties: false
              description: Signs an arbitrary hex encoded arbitrary message.
              title: Message
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Transaction
                transaction:
                  anyOf:
                    - type: string
                      pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                    - type: object
                      properties: {}
                  description: The unsigned hex encoded transaction or JSON object for compatible
                    networks
                network:
                  $ref: "#/components/schemas/Network"
                blockchainKind:
                  $ref: "#/components/schemas/BlockchainKind"
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - transaction
              additionalProperties: false
              description: |-
                Signs an unsigned transaction. The transaction parameter accepts hex-encoded transactions or JSON objects for compatible networks (Concordium, Starknet, Evm).

                The following blockchains only accept JSON transaction objects (not hex strings): Concordium, Starknet.

                For Starknet transactions, you may use invocation request objects (https://github.com/starkware-libs/starknet-specs/blob/v0.8.1/api/starknet_api_openrpc.json#L2621):

                | Field                         | Description                                                                                         | Type - Optional                  |
                |-------------------------------|-----------------------------------------------------------------------------------------------------|----------------------------------|
                | type                          | transaction type (always INVOKE              )                                                      | String (required)                |
                | calldata                      | **Array** of encoded function call parameters                                                       | **Array of Strings** (required)  |
                | nonce                         | Transaction nonce in hex format                                                                     | String (required)                |
                | version                       | Transaction version in hex format. Typically "0x3" for current transactions                         | String (required)                |
                | resourceBounds                | Gas bounds for L1, L2, and L1 data gas                                                              | Object (required)                |
                | ↳ resourceBounds.l1Gas        | L1 gas configuration with maxAmount and maxPricePerUnit                                             | Object (required)                |
                | ↳ resourceBounds.l2Gas        | L2 gas configuration with maxAmount and maxPricePerUnit                                             | Object (required)                |
                | ↳ resourceBounds.l1DataGas    | L1 data gas configuration with maxAmount and maxPricePerUnit                                        | Object (required)                |
                | tip                           | Transaction tip in hex format. Typically "0x0"                                                      | String (required)                |
                | paymasterData                 | Paymaster data array                                                                                | Array of Strings (required)      |
                | accountDeploymentData         | Account deployment data array                                                                       | Array of Strings (required)      |
                | nonceDataAvailabilityMode     | Data availability mode for nonce. Typically "L1" for now                                            | String (required)                |
                | feeDataAvailabilityMode       | Data availability mode for fee. Typically "L1" for now                                              | String (required)                |
                | chainId                       | The chain identifier in hex format                                                                  | String (required)                |
                | senderAddress                 | The address of the account sending the transaction                                                  | String (required)                |

                For Concordium transactions, use account transaction objects (https://developer.concordium.software/concordium-node-sdk-js/classes/ccd_js_gen.ConcordiumGRPCClient.html):

                | Field                          | Description                                                                  | Type - Optional              |
                |--------------------------------|------------------------------------------------------------------------------|------------------------------|
                | header.sender                  | Account address (base58)                                                     | String (required)            |
                | header.nonce                   | Account nonce                                                                | String (required)            |
                | header.expiry                  | Unix epoch seconds expiry                                                    | Number (required)            |
                | header.executionEnergyAmount   | Max NRG for execution                                                        | String (required)            |
                | header.numSignatures           | Number of signatures                                                         | Number (optional)            |
                | payload                        | Transaction payload (type-specific, e.g. Transfer, RegisterData)             | Object (required)            |

                ```json
                {
                  "kind": "Transaction",
                  "blockchainKind": "Concordium",
                  "transaction": {
                    "header": {
                      "sender": "4FmiTW2L2AccyR36ZBRKNqwQvBJBH8CAXWMLB1dbX5WyZmRo6N",
                      "nonce": "42",
                      "expiry": 1709510400,
                      "executionEnergyAmount": "501"
                    },
                    "payload": {
                      "Transfer": {
                        "amount": "1000000",
                        "toAddress": "3U4sfVSqGG6XK8g6eho2qRYtnHc4MWJBG1dfxdtPGbfHwFxini"
                      }
                    }
                  }
                }
                ```

                ```json
                {
                  "kind": "Transaction",
                  "transaction": "0xe703847735941a82520894f0965f5eb35ace69f01b77031f2cff22daca622887470de4df82000080"
                }
                ```

                ```json
                {
                  "kind": "Transaction",
                  "transaction": {
                    "type": "INVOKE",
                    "calldata": [
                      "1",
                      "2009894490435840142178314390393166646092438090257831307886760648929397478285",
                      "232670485425082704932579856502088130646006032362877466777181098476241604910",
                      "3",
                      "296727860213112272332383824629975240127004024814636931420022890499591637514",
                      "1",
                      "0"
                    ],
                    "nonce": "0x51",
                    "version": "0x3",
                    "resourceBounds": {
                      "l1Gas": { "maxAmount": "0x0", "maxPricePerUnit": "0x239a01ff6e6c" },
                      "l2Gas": { "maxAmount": "0x1694a0", "maxPricePerUnit": "0x10c388d00" },
                      "l1DataGas": { "maxAmount": "0x120", "maxPricePerUnit": "0x98e8" }
                    },
                    "tip": "0x0",
                    "paymasterData": [],
                    "accountDeploymentData": [],
                    "nonceDataAvailabilityMode": "L1",
                    "feeDataAvailabilityMode": "L1",
                    "chainId": "0x534e5f5345504f4c4941",
                    "senderAddress": "0x0535a9762b984c876abe0b164b0ccedb0d23a78978c9fe87e29deae0ea890c72"
                  }
                }
                ```
              title: Transaction
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Eip191
                message:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                  description: Hex-encoded message.
                network:
                  $ref: "#/components/schemas/Network"
                blockchainKind:
                  $ref: "#/components/schemas/BlockchainKind"
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - message
              additionalProperties: false
              description: Signs an personal_sign message as defined in
                [EIP-191](https://eips.ethereum.org/EIPS/eip-191).
              title: EIP-191 personal_sign Message
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Eip712
                types:
                  type: object
                  additionalProperties:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                        type:
                          type: string
                      required:
                        - name
                        - type
                      additionalProperties: false
                  description: Type definitions.
                domain:
                  type: object
                  properties:
                    name:
                      type: string
                      description: Name of the signing domain.
                    version:
                      type: string
                      description: Current major version of the signing domain.
                    chainId:
                      anyOf:
                        - type: integer
                          exclusiveMinimum: 0
                        - type: string
                      description: Chain ID.
                    verifyingContract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                      description: The address of the contract that will verify the signature.
                    salt:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{64}$
                      description: 32-byte value as a last-resort domain separator.
                  additionalProperties: false
                  description: Domain separator.
                message:
                  type: object
                  additionalProperties: {}
                  description: Structured message to sign.
                network:
                  $ref: "#/components/schemas/Network"
                blockchainKind:
                  $ref: "#/components/schemas/BlockchainKind"
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - types
                - domain
                - message
              additionalProperties: false
              description: Signs a typed structured data as defined in
                [EIP-712](https://eips.ethereum.org/EIPS/eip-712).
              title: EIP-712 TypedData
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Eip7702
                address:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                  description: The address of the contract the signer's EOA will be delegated to.
                nonce:
                  type: number
                  description: The current nonce of the signer EOA.
                chainId:
                  type: number
                  description: Chain ID.
                network:
                  $ref: "#/components/schemas/Network"
                blockchainKind:
                  $ref: "#/components/schemas/BlockchainKind"
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - address
                - nonce
                - chainId
              additionalProperties: false
              description: Signs an authorization tuple for type 4 set code transaction
                defined in [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702).
              title: EIP-7702 Authorization
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Snip12
                primaryType:
                  type: string
                  description: The primary type of the message.
                types:
                  type: object
                  additionalProperties:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                        type:
                          type: string
                      required:
                        - name
                        - type
                      additionalProperties: false
                  description: Type definitions.
                domain:
                  type: object
                  properties:
                    name:
                      type: string
                      description: Name of the signing domain.
                    version:
                      type: string
                      description: Current major version of the signing domain.
                    chainId:
                      anyOf:
                        - type: integer
                          exclusiveMinimum: 0
                        - type: string
                      description: Chain ID.
                    revision:
                      anyOf:
                        - type: number
                        - type: string
                      description: Revision of the domain.
                  description: Domain separator.
                message:
                  type: object
                  additionalProperties: {}
                  description: Structured message to sign.
                network:
                  $ref: "#/components/schemas/Network"
                blockchainKind:
                  $ref: "#/components/schemas/BlockchainKind"
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - primaryType
                - types
                - domain
                - message
              additionalProperties: false
              description: Signs a typed structured data as defined in
                [SNIP-12](https://github.com/starknet-io/SNIPs/blob/main/SNIPS/snip-12.md).
              title: SNIP-12 TypedData
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Psbt
                psbt:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                  description: The hex encoded PSBT.
                network:
                  $ref: "#/components/schemas/Network"
                blockchainKind:
                  $ref: "#/components/schemas/BlockchainKind"
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - psbt
              additionalProperties: false
              description: Signs a partially signed Bitcoin / Litecoin transaction.
              title: PSBT
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Bip322
                message:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                  description: The generic message hex encoded.
                format:
                  type: string
                  enum:
                    - Simple
                    - Full
                  description: Defaults to Simple if not present. The formatted signature is
                    returned in the `signedData` field in the response.
                network:
                  $ref: "#/components/schemas/Network"
                blockchainKind:
                  $ref: "#/components/schemas/BlockchainKind"
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - message
              additionalProperties: false
              description: "Signs a generic message using
                [BIP-322](https://github.com/bitcoin/bips/blob/master/bip-0322.\
                mediawiki). Note: signing payload construction depends on the
                targeted blockchain. Therefore it's tied to a specific `network`
                rather than the blockchain kind."
              title: BIP-322
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - SignDocDirect
                signDoc:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                  description: The hex encoded `SignDoc` Protobuf.
                network:
                  $ref: "#/components/schemas/Network"
                blockchainKind:
                  $ref: "#/components/schemas/BlockchainKind"
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - signDoc
              additionalProperties: false
              description: Signs an unsigned transaction using [sign mode
                direct](https://docs.cosmos.network/main/learn/advanced/transactions#sign_mode_direct-preferred).
              title: SignDocDirect
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - SignerPayload
                payload:
                  anyOf:
                    - type: string
                      pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                    - type: object
                      properties: {}
                  description: |
                    The unsigned Signer Payload formatted as JSON, or as a serialized hex-encoded buffer.

                    Please refer to the original Polkadot definition for more details: [SignerPayloadJson](https://github.com/polkadot-js/api/blob/v16.2.2/packages/types/src/types/extrinsic.ts#L32). Note that additional fields will be rejected.

                    | Field                | Description                                                                              | Type - Optional      |
                    | -------------------- | ---------------------------------------------------------------------------------------- | -------------------- |
                    | `address`            | ss58-encoded address of the sending account.                                             | String               |
                    | `blockHash`          | The hash of the checkpoint block, hex encoded.                                           | String               |
                    | `blockNumber`        | The checkpoint block number, hex encoded.                                                | String               |
                    | `era`                | The number of blocks after the checkpoint for which a transaction is valid, hex encoded. | String               |
                    | `genesisHash`        | The genesis hash of the chain, hex encoded.                                              | String               |
                    | `metadataHash`       | The metadataHash for the CheckMetadataHash SignedExtension, hex encoded.                 | String *(optional)*  |
                    | `mode`               | flag indicating whether to verify the metadata hash or not.                              | Integer *(optional)* |
                    | `method`             | The encoded method with arguments, hex encoded.                                          | String               |
                    | `nonce`              | The nonce for the transaction, hex encoded.                                              | String               |
                    | `tip`                | The tip to increase transaction priority, hex encoded.                                   | String               |
                    | `version`            | The version of the extrinsic.                                                            | Integer              |
                    | `specVersion`        | The current spec version for the runtime, hex encoded.                                   | String               |
                    | `transactionVersion` | The current transaction version for the runtime, hex encoded.                            | String               |
                    | `signedExtensions`   | The applicable signed extensions for this runtime.                                       | Array<String>       |

                    ```json
                    {
                      "network": "Polymesh",
                      "kind": "SignerPayload",
                      "payload": {
                        "address": "5H5tTnmLUqRgvTZvTwCdBKYjKLBm2gkp7u38Q9UUdJa8m6rX",
                        "blockHash": "0x2ace05e703aa50b48c0ccccfc8b424f7aab9a1e2c424ed12e45d20b1e8ffd0d6",
                        "blockNumber": "0x00000000",
                        "era": "0x00",
                        "genesisHash": "0x2ace05e703aa50b48c0ccccfc8b424f7aab9a1e2c424ed12e45d20b1e8ffd0d6",
                        "method": "0x07141f3da32e72ac6eb6cb40d9e757594363a617b2c3964a2b6ec6895c6648f48d500000",
                        "nonce": "0x00000000",
                        "tip": "0x00000000000000000000000000000000",
                        "version": 4,
                        "specVersion": "0x006adb7a",
                        "transactionVersion": "0x00000007",
                        "signedExtensions": []
                      }
                    }
                    ```
                network:
                  $ref: "#/components/schemas/Network"
                blockchainKind:
                  $ref: "#/components/schemas/BlockchainKind"
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - payload
              additionalProperties: false
              description: "Signs a [generic Signer
                Payload](https://github.com/polkadot-js/api/blob/v15.0.1/packag\
                es/types/src/extrinsic/SignerPayload.ts#L47-L51). Note:
                converting the generic signer payload to a signable extrinsic
                requires fetching metadata from the targeted blockchain.
                Therefore it's tied to a specific `network` rather than the
                blockchain kind."
              title: SignerPayload
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Cip8
                payload:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                  description: The generic message hex encoded.
                externalAad:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                  description: Allows an application to ask the user to sign some extra data but
                    NOT put it inside the COSE structure (only as part of the
                    data to sign).
                context:
                  type: string
                  enum:
                    - Signature1
                network:
                  $ref: "#/components/schemas/Network"
                blockchainKind:
                  $ref: "#/components/schemas/BlockchainKind"
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - context
              additionalProperties: false
              description: "Signs an arbitrary message using
                [CIP-8](https://cips.cardano.org/cip/CIP-0008). Note: signing
                address depends on the targeted blockchain. Therefore it's tied
                to a specific `network` rather than the blockchain kind."
              title: CIP-8
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - DfnsSmartAccountTransaction
                structured:
                  type: object
                  properties:
                    address:
                      type: string
                    userOperations:
                      type: array
                      items:
                        type: object
                        properties:
                          to:
                            type: string
                          value:
                            type: string
                          data:
                            type: string
                        required:
                          - to
                    message:
                      type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Eip712
                        domain:
                          type: object
                          properties:
                            name:
                              type: string
                            version:
                              type: string
                            chainId:
                              anyOf:
                                - type: number
                                - type: string
                            verifyingContract:
                              type: string
                            salt:
                              type: string
                        types:
                          type: object
                          additionalProperties:
                            type: array
                            items:
                              type: object
                              properties:
                                name:
                                  type: string
                                type:
                                  type: string
                              required:
                                - name
                                - type
                        message:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - domain
                        - types
                        - message
                    authorization:
                      type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Eip7702
                        address:
                          type: string
                        nonce:
                          type: number
                        chainId:
                          type: number
                      required:
                        - kind
                        - address
                        - nonce
                        - chainId
                  required:
                    - address
                    - userOperations
                    - message
                signatures:
                  type: object
                  additionalProperties:
                    type: object
                    properties:
                      r:
                        type: string
                      s:
                        type: string
                      recid:
                        type: number
                      encoded:
                        type: string
                    required:
                      - r
                      - s
                transactionReference:
                  type: string
                network:
                  $ref: "#/components/schemas/Network"
                blockchainKind:
                  $ref: "#/components/schemas/BlockchainKind"
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - structured
                - signatures
                - transactionReference
              additionalProperties: false
              title: Dfns Smart Account Transaction
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - StellarFeeBumpTransaction
                innerTransaction:
                  type: string
                transactionReference:
                  type: string
                network:
                  $ref: "#/components/schemas/Network"
                blockchainKind:
                  $ref: "#/components/schemas/BlockchainKind"
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - innerTransaction
                - transactionReference
              additionalProperties: false
              title: Stellar Fee Bump Transaction
        status:
          type: string
          enum:
            - Pending
            - Executing
            - Signed
            - Confirmed
            - Failed
            - Rejected
        reason:
          type: string
        signature:
          type: object
          properties:
            r:
              type: string
            s:
              type: string
            recid:
              type: number
            encoded:
              type: string
          required:
            - r
            - s
        signatures:
          type: array
          items:
            type: object
            properties:
              r:
                type: string
              s:
                type: string
              recid:
                type: number
              encoded:
                type: string
            required:
              - r
              - s
        signedData:
          type: string
        network:
          $ref: "#/components/schemas/Network"
        txHash:
          type: string
        fee:
          type: string
        approvalId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^ap-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          example: ap-2a9in-tt2a1-983lho480p35ejd0
        dateRequested:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the signature was requested."
          example: 2023-04-14T20:41:28.715Z
        datePolicyResolved:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the signature was approved by policy reviewers."
          example: 2023-04-14T20:41:28.715Z
        dateSigned:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the signature was signed."
          example: 2023-04-14T20:41:28.715Z
        dateConfirmed:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the signature was confirmed on chain."
          example: 2023-04-14T20:41:28.715Z
        externalId:
          type: string
        details:
          type: object
          additionalProperties: {}
          description: Structured representation of the data used to construct the
            signature (e.g. nonce, gas parameters). Shape is blockchain
            specific.
      required:
        - id
        - keyId
        - requester
        - requestBody
        - status
        - dateRequested
    CantonValidator:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^cv-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          example: cv-7jeof-m584r-p35ucm37ko3cqgts
        orgId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^or-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Organization id.
          example: or-30tnh-itmjs-s235s5ontr3r23h2
        network:
          type: string
          enum:
            - Canton
            - CantonDevnet
            - CantonTestnet
        name:
          type: string
        kind:
          type: string
          enum:
            - Shared
            - Custom
        dateCreated:
          type: string
        partyHint:
          type: string
      required:
        - id
        - orgId
        - network
        - kind
        - dateCreated
        - partyHint
    Permission:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^pm-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: ID of the permission (also referred to as "role" in the dashboard).
          example: pm-37vj4-jkr4l-lc9945spfftkne57
        name:
          type: string
          description: Human-readable name of the permission (role).
        operations:
          type: array
          items:
            type: string
          description: List of API operations this permission grants access to. See
            [Permissions
            List](https://docs.dfns.co/core-concepts/roles-and-permissions#list-of-permissions)
            for available operations.
        status:
          type: string
          enum:
            - Active
          description: Current status of the permission.
        isImmutable:
          type: boolean
          description: Whether this permission is system-managed and cannot be modified.
        isArchived:
          type: boolean
          description: Whether this permission has been archived (soft-deleted).
        dateCreated:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). Date the permission was created."
          example: 2023-04-14T20:41:28.715Z
        dateUpdated:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). Date the permission was last updated."
          example: 2023-04-14T20:41:28.715Z
      required:
        - id
        - name
        - operations
        - status
        - isImmutable
        - isArchived
        - dateCreated
        - dateUpdated
      additionalProperties: false
    ChangeRequestRequester:
      type: object
      properties:
        userId:
          type: string
        tokenId:
          type: string
        appId:
          type: string
      required:
        - userId
      description: The user who initiated the change request.
    Policy:
      oneOf:
        - type: object
          properties:
            id:
              type: string
            name:
              type: string
            status:
              type: string
              enum:
                - Active
                - Archived
            dateCreated:
              type: string
            dateUpdated:
              type: string
            activityKind:
              type: string
              enum:
                - Registry:Addresses:Modify
            rule:
              type: object
              properties:
                kind:
                  type: string
                  enum:
                    - AlwaysTrigger
                configuration:
                  type: object
                  properties: {}
                  additionalProperties: false
              required:
                - kind
              additionalProperties: false
              description: This rule will always be triggered, meaning that if this rule is
                defined on a policy, the policy will always trigger the policy
                action, regardless of the activity details.
              title: AlwaysTrigger
            action:
              oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - RequestApproval
                    approvalGroups:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                          quorum:
                            type: integer
                            minimum: 1
                          approvers:
                            type: object
                            properties:
                              userId:
                                type: object
                                properties:
                                  in:
                                    type: array
                                    items:
                                      type: string
                                      minLength: 1
                                    minItems: 1
                                    maxItems: 100
                                required:
                                  - in
                                additionalProperties: false
                            additionalProperties: false
                          initiatorCanApprove:
                            type: boolean
                            description: Whether the initiator of the activity can participate in the
                              approval.
                          serviceAccountsCanApprove:
                            type: boolean
                            description: Whether service accounts can participate in the approval for this
                              group.
                        required:
                          - quorum
                          - approvers
                        additionalProperties: false
                      minItems: 1
                    autoRejectTimeout:
                      type:
                        - integer
                        - "null"
                      minimum: 1
                  required:
                    - kind
                    - approvalGroups
                  additionalProperties: false
                  description: "

                    This action means that activity will first require an
                    Approval process to be completed before it can  be executed
                    (or be aborted if someone rejects it during the approval
                    process).


                    One or several groups of approvers need to be specified.
                    These groups define who is allowed to approve / reject an
                    activity.


                    The activity will only be executed if all approver groups
                    reach their \"quorum\" of approvals. Otherwise, if any one
                    user within any approver group rejects, then the activity is
                    aborted and the call is not executed.


                    The example below shows a `RequestApproval` action,
                    configured with one approval group requiring 2 approvals
                    amongst three specific users.


                    ```json

                    {

                    \  \"action\": {

                    \    \"kind\": \"RequestApproval\",

                    \    \"autoRejectTimeout\": 60, // minutes

                    \    \"approvalGroups\": [

                    \      {

                    \        \"name\": \"Admins\",

                    \        \"quorum\": 2, // only 2 approvers required in that
                    group\ 

                    \        \"approvers\": {

                    \          \"userId\": {

                    \            \"in\": [\"us-...1\", \"us-...2\",
                    \"us-...3\"],

                    \          }

                    \        }

                    \      }

                    \    ],


                    \  }

                    }

                    ```


                    **Don't lock yourself up**


                    By default, users cannot approve an activity they initiated
                    themselves, even if they are in an approval group. To allow
                    this, you must set `initiatorCanApprove: true`.


                    *Example 1:* For any wallet transfer, a policy is setup to
                    require approval from **1 specific admin user** (eg. the
                    CEO). `initiatorCanApprove` was not set to `true`. If the
                    CEO himself initiates a transfer, no-one can approve his
                    transfer and it's stuck.


                    *Example 2:* Company has only 3 users. A policy is setup to
                    require approval from **any 3 users** (`quorum: 3`) for any
                    modification of a policy. `initiatorCanApprove` was not set
                    to `true`. In this case, they are locked, and the policy
                    cannot be modified: whoever requests a modification cannot
                    approve, and the policy is therefore always missing one
                    approver. To unlock, they would need to invite a new user
                    and give him the rights to approve as well.

                    \    "
                  title: RequestApproval
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Block
                  required:
                    - kind
                  additionalProperties: false
                  description: >
                    This action means that the activity will be blocked if the
                    policy is triggered.


                    ```json

                    {
                      "action": {
                        "kind": "Block"
                      }
                    }

                    ```
                  title: Block
            filters:
              type: object
              properties: {}
          required:
            - id
            - name
            - status
            - activityKind
            - rule
            - action
          additionalProperties: false
          title: Registry:Addresses:Modify
        - type: object
          properties:
            id:
              type: string
            name:
              type: string
            status:
              type: string
              enum:
                - Active
                - Archived
            dateCreated:
              type: string
            dateUpdated:
              type: string
            activityKind:
              type: string
              enum:
                - Permissions:Assign
            rule:
              type: object
              properties:
                kind:
                  type: string
                  enum:
                    - AlwaysTrigger
                configuration:
                  type: object
                  properties: {}
                  additionalProperties: false
              required:
                - kind
              additionalProperties: false
              description: This rule will always be triggered, meaning that if this rule is
                defined on a policy, the policy will always trigger the policy
                action, regardless of the activity details.
              title: AlwaysTrigger
            action:
              oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - RequestApproval
                    approvalGroups:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                          quorum:
                            type: integer
                            minimum: 1
                          approvers:
                            type: object
                            properties:
                              userId:
                                type: object
                                properties:
                                  in:
                                    type: array
                                    items:
                                      type: string
                                      minLength: 1
                                    minItems: 1
                                    maxItems: 100
                                required:
                                  - in
                                additionalProperties: false
                            additionalProperties: false
                          initiatorCanApprove:
                            type: boolean
                            description: Whether the initiator of the activity can participate in the
                              approval.
                          serviceAccountsCanApprove:
                            type: boolean
                            description: Whether service accounts can participate in the approval for this
                              group.
                        required:
                          - quorum
                          - approvers
                        additionalProperties: false
                      minItems: 1
                    autoRejectTimeout:
                      type:
                        - integer
                        - "null"
                      minimum: 1
                  required:
                    - kind
                    - approvalGroups
                  additionalProperties: false
                  description: "

                    This action means that activity will first require an
                    Approval process to be completed before it can  be executed
                    (or be aborted if someone rejects it during the approval
                    process).


                    One or several groups of approvers need to be specified.
                    These groups define who is allowed to approve / reject an
                    activity.


                    The activity will only be executed if all approver groups
                    reach their \"quorum\" of approvals. Otherwise, if any one
                    user within any approver group rejects, then the activity is
                    aborted and the call is not executed.


                    The example below shows a `RequestApproval` action,
                    configured with one approval group requiring 2 approvals
                    amongst three specific users.


                    ```json

                    {

                    \  \"action\": {

                    \    \"kind\": \"RequestApproval\",

                    \    \"autoRejectTimeout\": 60, // minutes

                    \    \"approvalGroups\": [

                    \      {

                    \        \"name\": \"Admins\",

                    \        \"quorum\": 2, // only 2 approvers required in that
                    group\ 

                    \        \"approvers\": {

                    \          \"userId\": {

                    \            \"in\": [\"us-...1\", \"us-...2\",
                    \"us-...3\"],

                    \          }

                    \        }

                    \      }

                    \    ],


                    \  }

                    }

                    ```


                    **Don't lock yourself up**


                    By default, users cannot approve an activity they initiated
                    themselves, even if they are in an approval group. To allow
                    this, you must set `initiatorCanApprove: true`.


                    *Example 1:* For any wallet transfer, a policy is setup to
                    require approval from **1 specific admin user** (eg. the
                    CEO). `initiatorCanApprove` was not set to `true`. If the
                    CEO himself initiates a transfer, no-one can approve his
                    transfer and it's stuck.


                    *Example 2:* Company has only 3 users. A policy is setup to
                    require approval from **any 3 users** (`quorum: 3`) for any
                    modification of a policy. `initiatorCanApprove` was not set
                    to `true`. In this case, they are locked, and the policy
                    cannot be modified: whoever requests a modification cannot
                    approve, and the policy is therefore always missing one
                    approver. To unlock, they would need to invite a new user
                    and give him the rights to approve as well.

                    \    "
                  title: RequestApproval
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Block
                  required:
                    - kind
                  additionalProperties: false
                  description: >
                    This action means that the activity will be blocked if the
                    policy is triggered.


                    ```json

                    {
                      "action": {
                        "kind": "Block"
                      }
                    }

                    ```
                  title: Block
            filters:
              type: object
              properties:
                permissionId:
                  type: object
                  properties:
                    in:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      minItems: 1
                      maxItems: 100
                  required:
                    - in
                  additionalProperties: false
              required:
                - permissionId
              additionalProperties: false
          required:
            - id
            - name
            - status
            - activityKind
            - rule
            - action
          additionalProperties: false
          title: Permissions:Assign
        - type: object
          properties:
            id:
              type: string
            name:
              type: string
            status:
              type: string
              enum:
                - Active
                - Archived
            dateCreated:
              type: string
            dateUpdated:
              type: string
            activityKind:
              type: string
              enum:
                - Permissions:Modify
            rule:
              type: object
              properties:
                kind:
                  type: string
                  enum:
                    - AlwaysTrigger
                configuration:
                  type: object
                  properties: {}
                  additionalProperties: false
              required:
                - kind
              additionalProperties: false
              description: This rule will always be triggered, meaning that if this rule is
                defined on a policy, the policy will always trigger the policy
                action, regardless of the activity details.
              title: AlwaysTrigger
            action:
              oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - RequestApproval
                    approvalGroups:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                          quorum:
                            type: integer
                            minimum: 1
                          approvers:
                            type: object
                            properties:
                              userId:
                                type: object
                                properties:
                                  in:
                                    type: array
                                    items:
                                      type: string
                                      minLength: 1
                                    minItems: 1
                                    maxItems: 100
                                required:
                                  - in
                                additionalProperties: false
                            additionalProperties: false
                          initiatorCanApprove:
                            type: boolean
                            description: Whether the initiator of the activity can participate in the
                              approval.
                          serviceAccountsCanApprove:
                            type: boolean
                            description: Whether service accounts can participate in the approval for this
                              group.
                        required:
                          - quorum
                          - approvers
                        additionalProperties: false
                      minItems: 1
                    autoRejectTimeout:
                      type:
                        - integer
                        - "null"
                      minimum: 1
                  required:
                    - kind
                    - approvalGroups
                  additionalProperties: false
                  description: "

                    This action means that activity will first require an
                    Approval process to be completed before it can  be executed
                    (or be aborted if someone rejects it during the approval
                    process).


                    One or several groups of approvers need to be specified.
                    These groups define who is allowed to approve / reject an
                    activity.


                    The activity will only be executed if all approver groups
                    reach their \"quorum\" of approvals. Otherwise, if any one
                    user within any approver group rejects, then the activity is
                    aborted and the call is not executed.


                    The example below shows a `RequestApproval` action,
                    configured with one approval group requiring 2 approvals
                    amongst three specific users.


                    ```json

                    {

                    \  \"action\": {

                    \    \"kind\": \"RequestApproval\",

                    \    \"autoRejectTimeout\": 60, // minutes

                    \    \"approvalGroups\": [

                    \      {

                    \        \"name\": \"Admins\",

                    \        \"quorum\": 2, // only 2 approvers required in that
                    group\ 

                    \        \"approvers\": {

                    \          \"userId\": {

                    \            \"in\": [\"us-...1\", \"us-...2\",
                    \"us-...3\"],

                    \          }

                    \        }

                    \      }

                    \    ],


                    \  }

                    }

                    ```


                    **Don't lock yourself up**


                    By default, users cannot approve an activity they initiated
                    themselves, even if they are in an approval group. To allow
                    this, you must set `initiatorCanApprove: true`.


                    *Example 1:* For any wallet transfer, a policy is setup to
                    require approval from **1 specific admin user** (eg. the
                    CEO). `initiatorCanApprove` was not set to `true`. If the
                    CEO himself initiates a transfer, no-one can approve his
                    transfer and it's stuck.


                    *Example 2:* Company has only 3 users. A policy is setup to
                    require approval from **any 3 users** (`quorum: 3`) for any
                    modification of a policy. `initiatorCanApprove` was not set
                    to `true`. In this case, they are locked, and the policy
                    cannot be modified: whoever requests a modification cannot
                    approve, and the policy is therefore always missing one
                    approver. To unlock, they would need to invite a new user
                    and give him the rights to approve as well.

                    \    "
                  title: RequestApproval
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Block
                  required:
                    - kind
                  additionalProperties: false
                  description: >
                    This action means that the activity will be blocked if the
                    policy is triggered.


                    ```json

                    {
                      "action": {
                        "kind": "Block"
                      }
                    }

                    ```
                  title: Block
            filters:
              type: object
              properties:
                permissionId:
                  type: object
                  properties:
                    in:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      minItems: 1
                      maxItems: 100
                  required:
                    - in
                  additionalProperties: false
              required:
                - permissionId
              additionalProperties: false
          required:
            - id
            - name
            - status
            - activityKind
            - rule
            - action
          additionalProperties: false
          title: Permissions:Modify
        - type: object
          properties:
            id:
              type: string
            name:
              type: string
            status:
              type: string
              enum:
                - Active
                - Archived
            dateCreated:
              type: string
            dateUpdated:
              type: string
            activityKind:
              type: string
              enum:
                - Policies:Modify
            rule:
              type: object
              properties:
                kind:
                  type: string
                  enum:
                    - AlwaysTrigger
                configuration:
                  type: object
                  properties: {}
                  additionalProperties: false
              required:
                - kind
              additionalProperties: false
              description: This rule will always be triggered, meaning that if this rule is
                defined on a policy, the policy will always trigger the policy
                action, regardless of the activity details.
              title: AlwaysTrigger
            action:
              type: object
              properties:
                kind:
                  type: string
                  enum:
                    - RequestApproval
                approvalGroups:
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                      quorum:
                        type: integer
                        minimum: 1
                      approvers:
                        type: object
                        properties:
                          userId:
                            type: object
                            properties:
                              in:
                                type: array
                                items:
                                  type: string
                                  minLength: 1
                                minItems: 1
                                maxItems: 100
                            required:
                              - in
                            additionalProperties: false
                        additionalProperties: false
                      initiatorCanApprove:
                        type: boolean
                        description: Whether the initiator of the activity can participate in the
                          approval.
                      serviceAccountsCanApprove:
                        type: boolean
                        description: Whether service accounts can participate in the approval for this
                          group.
                    required:
                      - quorum
                      - approvers
                    additionalProperties: false
                  minItems: 1
                autoRejectTimeout:
                  type:
                    - integer
                    - "null"
                  minimum: 1
              required:
                - kind
                - approvalGroups
              additionalProperties: false
              description: "

                This action means that activity will first require an Approval
                process to be completed before it can  be executed (or be
                aborted if someone rejects it during the approval process).


                One or several groups of approvers need to be specified. These
                groups define who is allowed to approve / reject an activity.


                The activity will only be executed if all approver groups reach
                their \"quorum\" of approvals. Otherwise, if any one user within
                any approver group rejects, then the activity is aborted and the
                call is not executed.


                The example below shows a `RequestApproval` action, configured
                with one approval group requiring 2 approvals amongst three
                specific users.


                ```json

                {

                \  \"action\": {

                \    \"kind\": \"RequestApproval\",

                \    \"autoRejectTimeout\": 60, // minutes

                \    \"approvalGroups\": [

                \      {

                \        \"name\": \"Admins\",

                \        \"quorum\": 2, // only 2 approvers required in that
                group\ 

                \        \"approvers\": {

                \          \"userId\": {

                \            \"in\": [\"us-...1\", \"us-...2\", \"us-...3\"],

                \          }

                \        }

                \      }

                \    ],


                \  }

                }

                ```


                **Don't lock yourself up**


                By default, users cannot approve an activity they initiated
                themselves, even if they are in an approval group. To allow
                this, you must set `initiatorCanApprove: true`.


                *Example 1:* For any wallet transfer, a policy is setup to
                require approval from **1 specific admin user** (eg. the CEO).
                `initiatorCanApprove` was not set to `true`. If the CEO himself
                initiates a transfer, no-one can approve his transfer and it's
                stuck.


                *Example 2:* Company has only 3 users. A policy is setup to
                require approval from **any 3 users** (`quorum: 3`) for any
                modification of a policy. `initiatorCanApprove` was not set to
                `true`. In this case, they are locked, and the policy cannot be
                modified: whoever requests a modification cannot approve, and
                the policy is therefore always missing one approver. To unlock,
                they would need to invite a new user and give him the rights to
                approve as well.

                \    "
              title: RequestApproval
            filters:
              type: object
              properties:
                policyId:
                  type: object
                  properties:
                    in:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      minItems: 1
                      maxItems: 100
                  required:
                    - in
                  additionalProperties: false
              required:
                - policyId
              additionalProperties: false
          required:
            - id
            - name
            - status
            - activityKind
            - rule
            - action
          additionalProperties: false
          title: Policies:Modify
        - type: object
          properties:
            id:
              type: string
            name:
              type: string
            status:
              type: string
              enum:
                - Active
                - Archived
            dateCreated:
              type: string
            dateUpdated:
              type: string
            activityKind:
              type: string
              enum:
                - Registry:ContractSchemas:Modify
            rule:
              type: object
              properties:
                kind:
                  type: string
                  enum:
                    - AlwaysTrigger
                configuration:
                  type: object
                  properties: {}
                  additionalProperties: false
              required:
                - kind
              additionalProperties: false
              description: This rule will always be triggered, meaning that if this rule is
                defined on a policy, the policy will always trigger the policy
                action, regardless of the activity details.
              title: AlwaysTrigger
            action:
              oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - RequestApproval
                    approvalGroups:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                          quorum:
                            type: integer
                            minimum: 1
                          approvers:
                            type: object
                            properties:
                              userId:
                                type: object
                                properties:
                                  in:
                                    type: array
                                    items:
                                      type: string
                                      minLength: 1
                                    minItems: 1
                                    maxItems: 100
                                required:
                                  - in
                                additionalProperties: false
                            additionalProperties: false
                          initiatorCanApprove:
                            type: boolean
                            description: Whether the initiator of the activity can participate in the
                              approval.
                          serviceAccountsCanApprove:
                            type: boolean
                            description: Whether service accounts can participate in the approval for this
                              group.
                        required:
                          - quorum
                          - approvers
                        additionalProperties: false
                      minItems: 1
                    autoRejectTimeout:
                      type:
                        - integer
                        - "null"
                      minimum: 1
                  required:
                    - kind
                    - approvalGroups
                  additionalProperties: false
                  description: "

                    This action means that activity will first require an
                    Approval process to be completed before it can  be executed
                    (or be aborted if someone rejects it during the approval
                    process).


                    One or several groups of approvers need to be specified.
                    These groups define who is allowed to approve / reject an
                    activity.


                    The activity will only be executed if all approver groups
                    reach their \"quorum\" of approvals. Otherwise, if any one
                    user within any approver group rejects, then the activity is
                    aborted and the call is not executed.


                    The example below shows a `RequestApproval` action,
                    configured with one approval group requiring 2 approvals
                    amongst three specific users.


                    ```json

                    {

                    \  \"action\": {

                    \    \"kind\": \"RequestApproval\",

                    \    \"autoRejectTimeout\": 60, // minutes

                    \    \"approvalGroups\": [

                    \      {

                    \        \"name\": \"Admins\",

                    \        \"quorum\": 2, // only 2 approvers required in that
                    group\ 

                    \        \"approvers\": {

                    \          \"userId\": {

                    \            \"in\": [\"us-...1\", \"us-...2\",
                    \"us-...3\"],

                    \          }

                    \        }

                    \      }

                    \    ],


                    \  }

                    }

                    ```


                    **Don't lock yourself up**


                    By default, users cannot approve an activity they initiated
                    themselves, even if they are in an approval group. To allow
                    this, you must set `initiatorCanApprove: true`.


                    *Example 1:* For any wallet transfer, a policy is setup to
                    require approval from **1 specific admin user** (eg. the
                    CEO). `initiatorCanApprove` was not set to `true`. If the
                    CEO himself initiates a transfer, no-one can approve his
                    transfer and it's stuck.


                    *Example 2:* Company has only 3 users. A policy is setup to
                    require approval from **any 3 users** (`quorum: 3`) for any
                    modification of a policy. `initiatorCanApprove` was not set
                    to `true`. In this case, they are locked, and the policy
                    cannot be modified: whoever requests a modification cannot
                    approve, and the policy is therefore always missing one
                    approver. To unlock, they would need to invite a new user
                    and give him the rights to approve as well.

                    \    "
                  title: RequestApproval
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Block
                  required:
                    - kind
                  additionalProperties: false
                  description: >
                    This action means that the activity will be blocked if the
                    policy is triggered.


                    ```json

                    {
                      "action": {
                        "kind": "Block"
                      }
                    }

                    ```
                  title: Block
            filters:
              type: object
              properties: {}
          required:
            - id
            - name
            - status
            - activityKind
            - rule
            - action
          additionalProperties: false
          title: Registry:ContractSchemas:Modify
        - type: object
          properties:
            id:
              type: string
            name:
              type: string
            status:
              type: string
              enum:
                - Active
                - Archived
            dateCreated:
              type: string
            dateUpdated:
              type: string
            activityKind:
              type: string
              enum:
                - Wallets:Sign
            rule:
              oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - AlwaysTrigger
                    configuration:
                      type: object
                      properties: {}
                      additionalProperties: false
                  required:
                    - kind
                  additionalProperties: false
                  description: This rule will always be triggered, meaning that if this rule is
                    defined on a policy, the policy will always trigger the
                    policy action, regardless of the activity details.
                  title: AlwaysTrigger
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - TransactionRecipientWhitelist
                    configuration:
                      type: object
                      properties:
                        addresses:
                          type: array
                          items:
                            type: string
                            minLength: 1
                          description: Whitelisted recipient addresses
                      required:
                        - addresses
                      additionalProperties: false
                  required:
                    - kind
                    - configuration
                  additionalProperties: false
                  description: This rule will trigger if the destination address *is NOT
                    whitelisted*.
                  title: TransactionRecipientWhitelist
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - TransactionAmountLimit
                    configuration:
                      type: object
                      properties:
                        limit:
                          type: number
                          description: Amount limit in `currency`
                        currency:
                          type: string
                          enum: &a65
                            - USD
                          description: Fiat currency, currently only `USD`
                      required:
                        - limit
                        - currency
                      additionalProperties: false
                  required:
                    - kind
                    - configuration
                  additionalProperties: false
                  description: 'This rule will trigger if the wallet activity detected is
                    transferring some value which amount is greater than a given
                    limit. Note: If the fiat amount of the wallet activity
                    cannot be evaluated for any reason (eg. market prices are
                    not available, or eg. the amount cannot be inferred from a
                    wallet signature request, etc.), by default the rule will
                    trigger the policy (this is called "failing closed" and is
                    generally considered a security best practice).'
                  title: TransactionAmountLimit
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - TransactionAmountVelocity
                    configuration:
                      type: object
                      properties:
                        limit:
                          type: number
                          description: Amount limit in `currency`
                        currency:
                          type: string
                          enum: &a66
                            - USD
                          description: Currency for the amount limit above
                        timeframe:
                          type: integer
                          minimum: 1
                          maximum: 43200
                          description: Time period in minutes. Minimum 1, Maximum 43,200.
                      required:
                        - limit
                        - currency
                        - timeframe
                      additionalProperties: false
                  required:
                    - kind
                    - configuration
                  additionalProperties: false
                  description: This rule will trigger if the cumulative amount transferred from a
                    given wallet within a given timeframe is greater than a
                    specified limit.  The aggregate amount evaluated is based
                    only on the wallet that triggered the policy.
                  title: TransactionAmountVelocity
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - TransactionCountVelocity
                    configuration:
                      type: object
                      properties:
                        limit:
                          type: number
                          description: Count limit
                        timeframe:
                          type: integer
                          minimum: 1
                          maximum: 43200
                          description: Time period in minutes. Minimum 1, Maximum 43,200.
                      required:
                        - limit
                        - timeframe
                      additionalProperties: false
                  required:
                    - kind
                    - configuration
                  additionalProperties: false
                  description: This rule will trigger if the number of wallet activities for a
                    given wallet within a given timeframe, is greater than a
                    specified limit. The aggregate number of transactions
                    evaluated is based only on the wallet that triggered the
                    policy.
                  title: TransactionCountVelocity
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - ChainalysisTransactionPrescreening
                    configuration:
                      type: object
                      properties:
                        alerts:
                          type: object
                          properties:
                            alertLevel:
                              type: string
                              enum:
                                - LOW
                                - MEDIUM
                                - HIGH
                                - SEVERE
                            categoryIds:
                              type: array
                              items:
                                type: integer
                                exclusiveMinimum: 0
                          required:
                            - alertLevel
                            - categoryIds
                        exposures:
                          type: object
                          properties:
                            direct:
                              type: object
                              properties:
                                categoryIds:
                                  type: array
                                  items:
                                    type: integer
                                    exclusiveMinimum: 0
                              required:
                                - categoryIds
                          required:
                            - direct
                        addresses:
                          type: object
                          properties:
                            categoryIds:
                              type: array
                              items:
                                type: integer
                                exclusiveMinimum: 0
                          required:
                            - categoryIds
                        userIdTemplate:
                          type: string
                          minLength: 1
                          maxLength: 50
                          pattern: ^([a-zA-Z0-9_:-]|{wallet\.id}|{wallet\.externalId})+$
                          default: dfns
                          description: >-
                            Value sent to Chainalysis as the "user ID". Used by
                            Chainalysis for grouping transaction screenings. 
                              
                            This template can include variables, included in
                            brackets. The following variables are currently
                            supported:  `{wallet.id}` and `{wallet.externalId}`.

                            As an example, if you set `userIdTemplate:
                            "dfns:{wallet.id}_{wallet.externalId}"`, when your
                            wallet receives a transaction that gets screened by
                            a Chainalysis policy, the "user ID" sent to
                            Chainalysis will be `dfns:wa-xxx_yyy` (`wa-xxx`
                            being the wallet ID, and `yyy` being the wallet
                            external ID).
                        fallbackBehaviours:
                          type: object
                          properties:
                            skipUnscreenableTransaction:
                              type: boolean
                            skipUnsupportedNetwork:
                              type: boolean
                            skipUnsupportedAsset:
                              type: boolean
                            skipChainalysisFailure:
                              type: boolean
                          required:
                            - skipUnscreenableTransaction
                            - skipUnsupportedNetwork
                            - skipUnsupportedAsset
                            - skipChainalysisFailure
                      required:
                        - alerts
                        - exposures
                        - addresses
                        - fallbackBehaviours
                      additionalProperties: false
                  required:
                    - kind
                    - configuration
                  additionalProperties: false
                  description: |+
                    
                    <Info>
                    This rule can only be used once the Chainalysis integration is activated from the Dfns dashboard settings. (see more on [Chainalysis](https://docs.dfns.co/integrations/aml-kyt/chainalysis) integration page).
                    </Info>

                    It's a rule based on [Chainalysis](https://docs.dfns.co/integrations/aml-kyt/chainalysis) KYT integration (Know-Your-Transaction). Upon transfer attempt, we will first register the transfer with Chainalysis (as a ["withdrawal attempt"](https://docs.chainalysis.com/api/kyt/#registration-register-a-withdrawal-attempt)), and fetch the screening results (alerts, exposures, addresses detected). Based on the results, and the configuration of this rule, the policy will be triggered.

                    It's called "Pre"-screening, because the scanned transaction is not on chain yet, it's still a transaction attempt (before the transaction actually make it on chain).

                    ```json
                    {
                      "rule": {
                        "kind": "ChainalysisTransactionPrescreening",
                        "configuration": {
                          "alerts": {
                            "alertLevel": "LOW",
                            "categoryIds": []
                          },
                          "exposures": {
                            "direct": {
                              "categoryIds": []
                            }
                          },
                          "addresses": {
                            "categoryIds": []
                          },
                          "fallbackBehaviours": {
                            "skipUnscreenableTransaction": false,
                            "skipUnsupportedNetwork": false,
                            "skipUnsupportedAsset": false,
                            "skipChainalysisFailure": false
                          }
                        }
                      }
                    }
                    ```

                    **Configuration**

                    | Property | Type | Description |
                    | --- | --- | --- |
                    | `alerts`<br><br>`.alertLevel`* | `string` | Minimum alert level above which the rule should trigger, if any [alert is returned in Chainalysis results](https://docs.chainalysis.com/api/kyt/#withdrawal-attempts-get-alerts). Can be `LOW`, `MEDIUM`, `HIGH`, or `SEVERE` |
                    | `alerts`<br><br>`.categoryIds`* | list of integers | List of Chainalysis category IDs (see [here](https://docs.chainalysis.com/api/kyt/#categories)). If you leave this list empty, alerts of any category will trigger the rule. Otherwise, if you only want the rule to trigger on specific categories, you can specify some in the list. |
                    | `exposures`<br><br>`.direct`<br><br>`.categoryIds`* | list of integers | List of Chainalysis category IDs (see [here](https://docs.chainalysis.com/api/kyt/#categories)). If you leave this list empty, a [direct exposure](https://docs.chainalysis.com/api/kyt/#withdrawal-attempts-get-direct-exposure) of any category detected by chainalysis will trigger the rule. Otherwise, if you only want the rule to trigger on specific categories, you can specify some in the list. |
                    | `addresses`<br><br>`.categoryIds`* | list of integers | List of Chainalysis category IDs (see [here](https://docs.chainalysis.com/api/kyt/#categories)). If you leave this list empty, an [address](https://docs.chainalysis.com/api/kyt/#withdrawal-attempts-get-address-identifications) of any category identified by chainalysis will trigger the rule. Otherwise, if you only want the rule to trigger on specific categories, you can specify some in the list. |
                    | `fallbackBehaviours`<br><br>`.skipUnscreenableTransaction`* | boolean | Behaviour if the wallet activity is not screenable (eg. if it's a signature request of a hash). If true, a transaction which is "unscreenable" will just be skipped, and policy will not trigger |
                    | `fallbackBehaviours.skipUnsupportedNetwork`* | boolean | Behaviour if the wallet activity is on a network not supported by chainalysis, or not yet supported in the dfns-chainalysis integration. If true, an unsupported network will just be skipped, and policy will not trigger |
                    | `fallbackBehaviours.skipUnsupportedAsset`* | boolean | Behaviour if the wallet activity is with a asset not supported by chainalysis, or not yet supported in the dfns-chainalysis integration. If true, an unsupported asset will just be skipped, and policy will not trigger |
                    | `fallbackBehaviours.skipChainalysisFailure`* | boolean | Behaviour if any issue with Chainalysis calls (timeout, results took too long, rate limiting errors, any error). If true, will skip if any error happens |

                  title: ChainalysisTransactionPrescreening
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - GlobalLedgerTransactionPrescreening
                    configuration:
                      type: object
                      properties:
                        riskScoreThreshold:
                          type: integer
                          minimum: 0
                          maximum: 100
                          description: Risk score threshold (0-100). Policy triggers if
                            address/transaction risk score >= threshold
                        fallbackBehaviours:
                          type: object
                          properties:
                            skipUnscreenableTransaction:
                              type: boolean
                              description: skip all wallet requests that cannot be screened (eg. raw
                                signatures)
                            skipUnsupportedNetwork:
                              type: boolean
                              description: skip transfer requests to a network not supported yet in our
                                GlobalLedger integration
                            skipUnsupportedAsset:
                              type: boolean
                              description: skip transfer requests of an asset not supported by our
                                GlobalLedger integration
                            skipGlobalLedgerFailure:
                              type: boolean
                              description: skips any errors from GlobalLedger API request
                          required:
                            - skipUnscreenableTransaction
                            - skipUnsupportedNetwork
                            - skipUnsupportedAsset
                            - skipGlobalLedgerFailure
                      required:
                        - riskScoreThreshold
                        - fallbackBehaviours
                      additionalProperties: false
                  required:
                    - kind
                    - configuration
                  additionalProperties: false
                  description: >-
                    This rule uses GlobalLedger KYT for pre-screening outgoing
                    transfers by checking the destination address risk score.


                    Upon transfer attempt, we will query GlobalLedger's address
                    risk API, and check if the risk score (0-100) is at or above
                    the configured threshold, or if any alerts show up. If so,
                    the policy will be triggered.


                    It's called "Pre"-screening, because the scanned transaction
                    is not on chain yet, it's still a transaction attempt.
                  title: GlobalLedgerTransactionPrescreening
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - TravelRuleTransactionPrescreening
                    configuration:
                      type: object
                      properties:
                        vendor:
                          type: string
                          enum:
                            - Notabene
                        autoTriggerTimeoutSeconds:
                          type: integer
                          minimum: 0
                        autoClearAfterDeliveredTimeoutSeconds:
                          type: integer
                          minimum: 0
                      required:
                        - vendor
                        - autoTriggerTimeoutSeconds
                      additionalProperties: false
                  required:
                    - kind
                    - configuration
                  additionalProperties: false
                  description: |-
                    This rule can only be used once the Notabene integration is activated from the Dfns dashboard settings (see more on [Notabene](https://docs.dfns.co/integrations/travel-rule/notabene) integration page).
                        
                        It's a rule based on [Notabene](https://docs.dfns.co/integrations/travel-rule/notabene) [TravelRule](https://docs.dfns.co/integrations/travel-rule) integration. It ***ONLY*** applies to Dfns [Transfer Asset](https://docs.dfns.co/api-reference/wallets/transfer-asset) Api Calls. It is NOT supported for Transfers initiated via the dashboard. Upon transfer attempt with an optional [TravelRule](https://docs.dfns.co/api-reference/wallets/transfer-asset#body-travel-rule) payload, we will call Notabene's APIs on your behalf to both confirm the validity of the travel rule message and submit it for processing. Dfns then waits for a response from the counterparty (for custodial transfers) or Notabene (for non-custodial transfers).

                    It's called "Pre"-screening, because the transaction is not on chain yet, it's still a transaction attempt (before the transaction actually make it on chain).
                  title: TravelRuleTransactionPrescreening
            action:
              oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - RequestApproval
                    approvalGroups:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                          quorum:
                            type: integer
                            minimum: 1
                          approvers:
                            type: object
                            properties:
                              userId:
                                type: object
                                properties:
                                  in:
                                    type: array
                                    items:
                                      type: string
                                      minLength: 1
                                    minItems: 1
                                    maxItems: 100
                                required:
                                  - in
                                additionalProperties: false
                            additionalProperties: false
                          initiatorCanApprove:
                            type: boolean
                            description: Whether the initiator of the activity can participate in the
                              approval.
                          serviceAccountsCanApprove:
                            type: boolean
                            description: Whether service accounts can participate in the approval for this
                              group.
                        required:
                          - quorum
                          - approvers
                        additionalProperties: false
                      minItems: 1
                    autoRejectTimeout:
                      type:
                        - integer
                        - "null"
                      minimum: 1
                  required:
                    - kind
                    - approvalGroups
                  additionalProperties: false
                  description: "

                    This action means that activity will first require an
                    Approval process to be completed before it can  be executed
                    (or be aborted if someone rejects it during the approval
                    process).


                    One or several groups of approvers need to be specified.
                    These groups define who is allowed to approve / reject an
                    activity.


                    The activity will only be executed if all approver groups
                    reach their \"quorum\" of approvals. Otherwise, if any one
                    user within any approver group rejects, then the activity is
                    aborted and the call is not executed.


                    The example below shows a `RequestApproval` action,
                    configured with one approval group requiring 2 approvals
                    amongst three specific users.


                    ```json

                    {

                    \  \"action\": {

                    \    \"kind\": \"RequestApproval\",

                    \    \"autoRejectTimeout\": 60, // minutes

                    \    \"approvalGroups\": [

                    \      {

                    \        \"name\": \"Admins\",

                    \        \"quorum\": 2, // only 2 approvers required in that
                    group\ 

                    \        \"approvers\": {

                    \          \"userId\": {

                    \            \"in\": [\"us-...1\", \"us-...2\",
                    \"us-...3\"],

                    \          }

                    \        }

                    \      }

                    \    ],


                    \  }

                    }

                    ```


                    **Don't lock yourself up**


                    By default, users cannot approve an activity they initiated
                    themselves, even if they are in an approval group. To allow
                    this, you must set `initiatorCanApprove: true`.


                    *Example 1:* For any wallet transfer, a policy is setup to
                    require approval from **1 specific admin user** (eg. the
                    CEO). `initiatorCanApprove` was not set to `true`. If the
                    CEO himself initiates a transfer, no-one can approve his
                    transfer and it's stuck.


                    *Example 2:* Company has only 3 users. A policy is setup to
                    require approval from **any 3 users** (`quorum: 3`) for any
                    modification of a policy. `initiatorCanApprove` was not set
                    to `true`. In this case, they are locked, and the policy
                    cannot be modified: whoever requests a modification cannot
                    approve, and the policy is therefore always missing one
                    approver. To unlock, they would need to invite a new user
                    and give him the rights to approve as well.

                    \    "
                  title: RequestApproval
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Block
                  required:
                    - kind
                  additionalProperties: false
                  description: >
                    This action means that the activity will be blocked if the
                    policy is triggered.


                    ```json

                    {
                      "action": {
                        "kind": "Block"
                      }
                    }

                    ```
                  title: Block
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - NoAction
                  required:
                    - kind
                  additionalProperties: false
                  description: "

                    \    This action kind means that nothing will happen after
                    policy rule evaluation. It's meant to be used with policy
                    rules \"`ChainalysisTransactionPrescreening`\" or
                    \"`ChainalysisTransactionScreening`\". This action is for
                    when you just want the KYT analysis rule to be run, and then
                    if triggered, those result returned in a `policy.triggered`
                    [Webhook
                    Event](https://docs.dfns.co/api-reference/webhook-events).


                    ```json

                    {

                    \  \"action\": {

                    \    \"kind\": \"NoAction\"

                    \  }

                    }

                    ```

                    \    "
                  title: NoAction
            filters:
              type: object
              properties:
                walletId:
                  type: object
                  properties:
                    in:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      minItems: 1
                      maxItems: 100
                  required:
                    - in
                  additionalProperties: false
                walletTags:
                  type: object
                  properties:
                    hasAny:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      minItems: 1
                      maxItems: 100
                    hasAll:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      minItems: 1
                      maxItems: 100
                  additionalProperties: false
              additionalProperties: false
          required:
            - id
            - name
            - status
            - activityKind
            - rule
            - action
          additionalProperties: false
          title: Wallets:Sign
        - type: object
          properties:
            id:
              type: string
            name:
              type: string
            status:
              type: string
              enum:
                - Active
                - Archived
            dateCreated:
              type: string
            dateUpdated:
              type: string
            activityKind:
              type: string
              enum:
                - Wallets:IncomingTransaction
            rule:
              oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - ChainalysisTransactionScreening
                    configuration:
                      type: object
                      properties:
                        alerts:
                          type: object
                          properties:
                            alertLevel:
                              type: string
                              enum:
                                - LOW
                                - MEDIUM
                                - HIGH
                                - SEVERE
                            categoryIds:
                              type: array
                              items:
                                type: integer
                                exclusiveMinimum: 0
                          required:
                            - alertLevel
                            - categoryIds
                        exposures:
                          type: object
                          properties:
                            direct:
                              type: object
                              properties:
                                categoryIds:
                                  type: array
                                  items:
                                    type: integer
                                    exclusiveMinimum: 0
                              required:
                                - categoryIds
                          required:
                            - direct
                        userIdTemplate:
                          type: string
                          minLength: 1
                          maxLength: 50
                          pattern: ^([a-zA-Z0-9_:-]|{wallet\.id}|{wallet\.externalId})+$
                          default: dfns
                          description: >-
                            Value sent to Chainalysis as the "user ID". Used by
                            Chainalysis for grouping transaction screenings. 
                              
                            This template can include variables, included in
                            brackets. The following variables are currently
                            supported:  `{wallet.id}` and `{wallet.externalId}`.

                            As an example, if you set `userIdTemplate:
                            "dfns:{wallet.id}_{wallet.externalId}"`, when your
                            wallet receives a transaction that gets screened by
                            a Chainalysis policy, the "user ID" sent to
                            Chainalysis will be `dfns:wa-xxx_yyy` (`wa-xxx`
                            being the wallet ID, and `yyy` being the wallet
                            external ID).
                        fallbackBehaviours:
                          type: object
                          properties:
                            skipUnscreenableTransaction:
                              type: boolean
                            skipUnsupportedNetwork:
                              type: boolean
                            skipUnsupportedAsset:
                              type: boolean
                            skipChainalysisFailure:
                              type: boolean
                          required:
                            - skipUnscreenableTransaction
                            - skipUnsupportedNetwork
                            - skipUnsupportedAsset
                            - skipChainalysisFailure
                      required:
                        - alerts
                        - exposures
                        - fallbackBehaviours
                      additionalProperties: false
                  required:
                    - kind
                    - configuration
                  additionalProperties: false
                  description: |
                    
                    <Info>
                    This rule can only be used once the Chainalysis integration is activated from the Dfns dashboard settings. (see more on [Chainalysis](https://docs.dfns.co/integrations/aml-kyt/chainalysis) integration page).
                    </Info>

                    This rule can be used on a policy of `activityKind` = `Wallets:IncomingTransaction`, and with the action kind `NoAction`. It's a rule based on Chainalysis KYT integration (Know-Your-Transaction). Upon an incoming transaction detectedby our indexers, we will [register the transfer with Chainalysis](https://docs.chainalysis.com/api/kyt/#registration-register-a-transfer), and fetch the results of the analysis (alerts & exposures detected). Based on the results, and the configuration of this rule, the policy will be triggered.

                    The shape of the rule is almost like the `ChainalysisTransactionPrescreening` rule, expect the the `address` property is not supported.

                    ```json
                    {
                      "rule": {
                        "kind": "ChainalysisTransactionPrescreening",
                        "configuration": {
                          "alerts": {
                            "alertLevel": "LOW",
                            "categoryIds": []
                          },
                          "exposures": {
                            "direct": {
                              "categoryIds": []
                            }
                          },
                          "fallbackBehaviours": {
                            "skipUnscreenableTransaction": false,
                            "skipUnsupportedNetwork": false,
                            "skipUnsupportedAsset": false,
                            "skipChainalysisFailure": false
                          }
                        }
                      }
                    }
                    ```

                    **Configuration**

                    Please refer to the configuration for the `ChainalysisTransactionPrescreening` rule.
                  title: ChainalysisTransactionScreening
            action:
              oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - NoAction
                  required:
                    - kind
                  additionalProperties: false
                  description: "

                    \    This action kind means that nothing will happen after
                    policy rule evaluation. It's meant to be used with policy
                    rules \"`ChainalysisTransactionPrescreening`\" or
                    \"`ChainalysisTransactionScreening`\". This action is for
                    when you just want the KYT analysis rule to be run, and then
                    if triggered, those result returned in a `policy.triggered`
                    [Webhook
                    Event](https://docs.dfns.co/api-reference/webhook-events).


                    ```json

                    {

                    \  \"action\": {

                    \    \"kind\": \"NoAction\"

                    \  }

                    }

                    ```

                    \    "
                  title: NoAction
            filters:
              type: object
              properties:
                walletId:
                  type: object
                  properties:
                    in:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      minItems: 1
                      maxItems: 100
                  required:
                    - in
                  additionalProperties: false
                walletTags:
                  type: object
                  properties:
                    hasAny:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      minItems: 1
                      maxItems: 100
                    hasAll:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      minItems: 1
                      maxItems: 100
                  additionalProperties: false
              additionalProperties: false
          required:
            - id
            - name
            - status
            - activityKind
            - rule
            - action
          additionalProperties: false
          title: Wallets:IncomingTransaction
    TransferRequest:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^xfr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Transfer id.
          example: xfr-20g4k-nsdpo-mg6arrifgvid4orn
        walletId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: The source wallet for this tranfer.
          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
        network:
          allOf:
            - $ref: "#/components/schemas/Network"
            - description: The blockchain network this transfer is on.
        requester:
          $ref: "#/components/schemas/Requester"
        requestBody:
          oneOf:
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Native
                to:
                  type: string
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of native tokens to transfer in minimum denomination.
                memo:
                  anyOf:
                    - type: string
                      maxLength: 64
                      pattern: ^[a-zA-Z0-9]+$
                    - type: string
                      enum:
                        - ""
                  description: The memo or destination tag (supported networks only).
                priority:
                  type: string
                  enum:
                    - Slow
                    - Standard
                    - Fast
                  description: The priority that determines the fees paid for the transfer. All
                    EVM compatible networks and Bitcoin support `priority`. Not
                    supported for other networks. It uses the [estimate
                    fees](https://docs.dfns.co/api-reference/networks/estimate-fees)
                    API to calculate the transfer fees. When not specified,
                    defaults to `Standard` priority.
                createDestinationAccount:
                  type: boolean
                  description: Whether to create the destination account on chains that require
                    account creation (e.g., Stellar). Only valid for chains that
                    require the receiver account to exist before transfer.
                offer:
                  type: boolean
                  description: Optional field for Canton, if true it will create a transfer offer.
                expiresAt:
                  type: string
                  format: date-time
                  description: Optional field for Canton, especially useful in the context of
                    offers
                useDurableNonce:
                  type: boolean
                  description: "Optional Solana-only flag. When `true` the SOL transfer is built
                    as a durable-nonce transaction using one of the wallet's
                    nonce accounts (picked server-side). Use this for
                    offline-signing flows where the construct → broadcast gap
                    may exceed 90 seconds. The wallet's nonce account pool must
                    be pre-populated via `POST /wallets/{id}/transactions` with
                    `kind: CreateSolanaNonceAccounts`."
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - to
                - amount
              additionalProperties: false
              description: Transfer the native token of the network. All networks support the
                native token type.
              title: Native Asset
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Aip21
                metadata:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{64}$
                  description: "The asset metadata address. "
                to:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{64}$
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - metadata
                - to
                - amount
              additionalProperties: false
              description: Transfer Aptos fungible asset that implement the [AIP-21
                specification](https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-21.md).
              title: Aptos Fungible Asset (AIP-21)
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Asa
                assetId:
                  type: string
                  pattern: ^\d+$
                  description: "The token asset id. "
                to:
                  type: string
                  pattern: ^[A-Z0-9]{58}$
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                memo:
                  anyOf:
                    - type: string
                      maxLength: 64
                      pattern: ^[a-zA-Z0-9]+$
                    - type: string
                      enum:
                        - ""
                  description: The memo or destination tag.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - assetId
                - to
                - amount
              additionalProperties: false
              description: Transfer Algorand standard assets, or
                [ASAs](https://developer.algorand.org/docs/get-details/asa/).
              title: Algorand Standard Asset
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Asset
                assetId:
                  type: string
                  description: "The token asset id. "
                to:
                  type: string
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - assetId
                - to
                - amount
              additionalProperties: false
              description: Transfer Cardano assets following [Mary
                update](https://docs.cardano.org/about-cardano/evolution/upgrades/mary)
              title: Cardano Asset
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Cip56
                instrumentAdmin:
                  type: string
                  pattern: ^[a-zA-Z0-9-_]*::1220[a-f0-9]{64}$
                  description: The instrument admin address.
                instrumentId:
                  type: string
                  description: The instrument id.
                to:
                  type: string
                  pattern: ^[a-zA-Z0-9-_]*::1220[a-f0-9]{64}$
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                offer:
                  type: boolean
                  description: If true it will create a transfer offer.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - instrumentAdmin
                - instrumentId
                - to
                - amount
              additionalProperties: false
              description: Transfer standard tokens that implement the [CIP-56
                specification](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0056/cip-0056.md).
              title: Canton Standard Token (CIP-56)
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Cis2
                to:
                  type: string
                  pattern: ^[1-9A-HJ-NP-Za-km-z]{50}$
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                tokenAddress:
                  type: string
                  description: The token address following
                    (https://proposals.concordium.com/CIS/cis-2.html#token-address).
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - to
                - amount
                - tokenAddress
              additionalProperties: false
              description: Transfer tokens that implement the [CIS-2
                specification](https://proposals.concordium.software/CIS/cis-2.html).
              title: CIS-2 Standard
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Cis7
                to:
                  type: string
                  pattern: ^[1-9A-HJ-NP-Za-km-z]{50}$
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                tokenId:
                  type: string
                  description: The Cis7 token identifier.
                memo:
                  anyOf:
                    - type: string
                      maxLength: 64
                      pattern: ^[a-zA-Z0-9]+$
                    - type: string
                      enum:
                        - ""
                  description: The memo or destination tag.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - to
                - amount
                - tokenId
              additionalProperties: false
              description: Transfer Concordium protocol level tokens.
                (https://proposals.concordium.com/CIS/cis-7.html#cis-7-protocol-level-tokens-plts)
              title: Concordium Protocol Level Token (CIS-7)
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Coin
                coin:
                  type: string
                  description: The coin identifier.
                to:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{64}$
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - coin
                - to
                - amount
              additionalProperties: false
              description: Transfer Sui fungible assets that implement [coin
                standard](https://docs.sui.io/standards/coin).
              title: Sui Coin
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Erc20
                contract:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{40}$
                  description: The ERC-20 contract address.
                to:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{40}$
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                priority:
                  type: string
                  enum:
                    - Slow
                    - Standard
                    - Fast
                  description: The priority that determines the fees paid for the transfer.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - contract
                - to
                - amount
              additionalProperties: false
              description: Transfer fungible tokens that implement the [ERC-20
                specification](https://eips.ethereum.org/EIPS/eip-20).
              title: EVM Fungible Token (ERC-20)
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Erc721
                contract:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{40}$
                  description: The ERC-721 contract address.
                to:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{40}$
                  description: The destination address.
                tokenId:
                  type: string
                  pattern: ^\d+$
                  description: The token to transfer.
                priority:
                  type: string
                  enum:
                    - Slow
                    - Standard
                    - Fast
                  description: The priority that determines the fees paid for the transfer.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - contract
                - to
                - tokenId
              additionalProperties: false
              description: Transfer non-fungible tokens that implement the [ERC-721
                specification](https://eips.ethereum.org/EIPS/eip-721)
              title: EVM Non Fungible Token (ERC-721)
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Erc7984
                contract:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{40}$
                  description: The ERC-7984 confidential token contract address.
                to:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{40}$
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                priority:
                  type: string
                  enum:
                    - Slow
                    - Standard
                    - Fast
                  description: The priority that determines the fees paid for the transfer.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - contract
                - to
                - amount
              additionalProperties: false
              description: Transfer confidential tokens that implement the [ERC-7984
                specification](https://eips.ethereum.org/EIPS/eip-7984). The
                transfer amount is encrypted on-chain using Fully Homomorphic
                Encryption (FHE).
              title: EVM Confidential Token (ERC-7984)
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Hip17
                tokenId:
                  type: string
                  description: The token to transfer.
                serialNumber:
                  type: string
                  pattern: ^\d+$
                to:
                  type: string
                  pattern: ^(0x[0-9a-fA-F]{40}|0\.0\.(\d+|[0-9a-fA-F]{40}|[0-9a-fA-F]{64,}))$
                  description: The destination address.
                memo:
                  anyOf:
                    - type: string
                      maxLength: 64
                      pattern: ^[a-zA-Z0-9]+$
                    - type: string
                      enum:
                        - ""
                  description: The memo or destination tag.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - tokenId
                - serialNumber
                - to
              additionalProperties: false
              description: ""
              title: Hedera Non-Fungible Token (HIP-17)
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Hts
                tokenId:
                  type: string
                  description: The token to transfer.
                to:
                  type: string
                  pattern: ^(0x[0-9a-fA-F]{40}|0\.0\.(\d+|[0-9a-fA-F]{40}|[0-9a-fA-F]{64,}))$
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                memo:
                  anyOf:
                    - type: string
                      maxLength: 64
                      pattern: ^[a-zA-Z0-9]+$
                    - type: string
                      enum:
                        - ""
                  description: The memo.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - tokenId
                - to
                - amount
              additionalProperties: false
              description: ""
              title: Hedera Tokens (HTS)
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Iou
                currency:
                  type: string
                  description: The IOU currency code.
                issuer:
                  type: string
                  pattern: ^r[1-9A-HJ-NP-Za-km-z]{24,34}$
                  description: The IOU issuer address.
                to:
                  type: string
                  pattern: ^r[1-9A-HJ-NP-Za-km-z]{24,34}$
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                memo:
                  anyOf:
                    - type: string
                      maxLength: 64
                      pattern: ^[a-zA-Z0-9]+$
                    - type: string
                      enum:
                        - ""
                  description: The memo or destination tag.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - currency
                - issuer
                - to
                - amount
              additionalProperties: false
              description: Transfer XRPL IOU tokens with specified currency and issuer.
                (https://xrpl.org/docs/concepts/tokens/fungible-tokens/trust-line-tokens)
              title: XRPL IOU Token
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Sep41
                issuer:
                  type: string
                  pattern: ^(G[A-Z0-9]{55}|M[A-Z0-9]{68})$
                  description: The asset issuer address.
                assetCode:
                  type: string
                  description: The asset code.
                to:
                  type: string
                  pattern: ^(G[A-Z0-9]{55}|M[A-Z0-9]{68})$
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                memo:
                  anyOf:
                    - type: string
                      maxLength: 64
                      pattern: ^[a-zA-Z0-9]+$
                    - type: string
                      enum:
                        - ""
                  description: The memo or destination tag.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - issuer
                - assetCode
                - to
                - amount
              additionalProperties: false
              description: Transfer classic [Stellar
                Assets](https://developers.stellar.org/docs/issuing-assets/anatomy-of-an-asset).
                They all implement the [SEP-41 token
                interface](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0041.md).
              title: Stellar Classic Assets (SEP-41)
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Snip2
                contract:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{64}$
                  description: The SNIP-2 (ERC-20-like) contract address.
                to:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{64}$
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - contract
                - to
                - amount
              additionalProperties: false
              description: Transfer fungible tokens that implement the [SNIP-2 (ERC-20-like)
                specification](https://github.com/starknet-io/SNIPs/blob/ea46a8777d8c8d53a43f45b7beb1abcc301a1a69/SNIPS/snip-2.md).
              title: Starknet SNIP-2 (ERC-20 like)
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Snip3
                contract:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{64}$
                  description: The SNIP-3 (ERC-721) contract address.
                to:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{64}$
                  description: The destination address.
                tokenId:
                  type: string
                  pattern: ^\d+$
                  description: The token to transfer.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - contract
                - to
                - tokenId
              additionalProperties: false
              description: Transfer non-fungible tokens that implement the [SNIP-3
                (ERC-721-like)
                specification](https://github.com/starknet-io/SNIPs/blob/ea46a8777d8c8d53a43f45b7beb1abcc301a1a69/SNIPS/snip-3.md)
              title: Starknet SNIP-3 (ERC-721-like)
            - type: object
              properties:
                kind:
                  type: string
                  enum: &a57
                    - Spl
                    - Spl2022
                to:
                  type: string
                  pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                mint:
                  type: string
                  pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
                  description: The mint account address.
                memo:
                  anyOf:
                    - type: string
                      maxLength: 64
                      pattern: ^[a-zA-Z0-9]+$
                    - type: string
                      enum:
                        - ""
                  description: The memo or destination tag.
                createDestinationAccount:
                  type: boolean
                  description: If `true`, pay to create the associated token account for the
                    recipient if it doesn't exist. Defaults to `false`.
                useDurableNonce:
                  type: boolean
                  description: "Optional. When `true` the SPL transfer is built as a durable-nonce
                    transaction using one of the wallet's nonce accounts (picked
                    server-side). The wallet's nonce account pool must be
                    pre-populated via `POST /wallets/{id}/transactions` with
                    `kind: CreateSolanaNonceAccounts`."
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - to
                - amount
                - mint
              additionalProperties: false
              description: Transfer [SPL tokens](https://spl.solana.com/token) or [SPL 2022
                tokens](https://spl.solana.com/token-2022).
              title: Solana Program Library Token (SPL and SPL 2022)
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Tep74
                to:
                  type: string
                  pattern: ^(?:[A-Za-z0-9\-_]{48}|\d+:[a-fA-F0-9]{64})$
                  description: The destination address.
                master:
                  type: string
                  pattern: ^(?:[A-Za-z0-9\-_]{48}|\d+:[a-fA-F0-9]{64})$
                  description: The Jetton master contract address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                memo:
                  anyOf:
                    - type: string
                      maxLength: 64
                      pattern: ^[a-zA-Z0-9]+$
                    - type: string
                      enum:
                        - ""
                  description: The memo or destination tag.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - to
                - master
                - amount
              additionalProperties: false
              description: Transfer
                [Jetton](https://github.com/ton-blockchain/TEPs/blob/master/text/0074-jettons-standard.md)
                tokens.
              title: TON Jetton (TEP-74)
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Trc10
                tokenId:
                  type: string
                  pattern: ^\d+$
                  description: The token ID.
                to:
                  type: string
                  pattern: ^T[0-9a-zA-Z]{33}$
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - tokenId
                - to
                - amount
              additionalProperties: false
              description: Transfer TRON's TRC-10 fungible tokens
              title: TRON Native Fungible Token (TRC-10)
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Trc20
                contract:
                  type: string
                  pattern: ^T[0-9a-zA-Z]{33}$
                  description: The smart contract address.
                to:
                  type: string
                  pattern: ^T[0-9a-zA-Z]{33}$
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - contract
                - to
                - amount
              additionalProperties: false
              description: Transfer fungible tokens that implement the TRC-20 smart contract
                specification.
              title: TRON Smart Contract Fungible Token (TRC-20)
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Trc721
                contract:
                  type: string
                  pattern: ^T[0-9a-zA-Z]{33}$
                  description: The smart contract address.
                to:
                  type: string
                  pattern: ^T[0-9a-zA-Z]{33}$
                  description: The destination address.
                tokenId:
                  type: string
                  pattern: ^\d+$
                  description: The token to transfer.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - contract
                - to
                - tokenId
              additionalProperties: false
              description: Transfer non-fungible tokens that implement the TRC-721 smart
                contract specification.
              title: TRON Non Fungible Token (TRC-721)
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Xls33
                issuanceId:
                  type: string
                  description: The XLS-33 issuance identifier.
                to:
                  type: string
                  pattern: ^r[1-9A-HJ-NP-Za-km-z]{24,34}$
                  description: The destination address.
                amount:
                  type: string
                  pattern: ^\d+$
                  description: The amount of tokens to transfer in minimum denomination.
                memo:
                  anyOf:
                    - type: string
                      maxLength: 64
                      pattern: ^[a-zA-Z0-9]+$
                    - type: string
                      enum:
                        - ""
                  description: The memo or destination tag.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key. (read more
                    [here](https://docs.dfns.co/api-reference/idempotency))
                travelRule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Notabene
                        beneficiaryVASPdid:
                          type: string
                        beneficiaryProof:
                          type: object
                          additionalProperties: {}
                        originator:
                          type: object
                          additionalProperties: {}
                        beneficiary:
                          type: object
                          additionalProperties: {}
                      required:
                        - kind
                        - originator
                        - beneficiary
                      additionalProperties: false
                      title: Notabene Travel Rule
                  description: A travel rule payload to associate with the transfer. (read more
                    [here](https://docs.dfns.co/features/travel-rule))
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the fee sponsor that will be used to pay for your transfer
                    fees, it might not be available for all blockchains. (read
                    more [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
              required:
                - kind
                - issuanceId
                - to
                - amount
              additionalProperties: false
              description: Transfer XRPL XLS-33 Token with specified issuance ID.
                (https://xrpl.org/docs/concepts/tokens/fungible-tokens/multi-purpose-tokens
              title: XRPL XLS-33 Token
        metadata:
          type: object
          properties:
            asset:
              type: object
              properties:
                symbol:
                  type: string
                decimals:
                  type: integer
                  description: Number of decimals used by the asset, see [this
                    guide](https://docs.dfns.co/guides/developers/displaying-balances)
                    for more details.
                verified:
                  type: boolean
                  description: Whether the asset is verified by DFNS as legitimate.
                quotes:
                  type: object
                  properties:
                    EUR: &a2
                      type: number
                    USD: *a2
                  description: Corresponding asset price in USD at the time of transfer.
          required:
            - asset
          description: Additional metadata about the transfered asset.
        status:
          type: string
          enum:
            - Pending
            - Executing
            - Broadcasted
            - Confirmed
            - Failed
            - Rejected
          description: >-
            Transfer status.


            | Status | Definition |

            | --- | --- |

            | `Pending` | The request is pending approval due to a policy
            applied to the wallet. |

            | `Executing` | The request is approved and is in the process of
            being executed. note this status is only set for a short time
            between pending and broadcasted. |

            | `Broadcasted` | The transaction has been successfully written to
            the mempool. |

            | `Confirmed` | The transaction has been confirmed on-chain by our
            indexing pipeline. |

            | `Failed` | Indicates either system failure to complete the request
            or the transaction failed on chain. |

            | `Rejected` | The request has been rejected by a policy approval
            action. |
        reason:
          type: string
          description: The reason for a failed transfer.
        txHash:
          type: string
          description: The blockchain transaction hash for this transfer.
        fee:
          type: string
          description: The fee paid for this transfer in minimum denomination.
        dateRequested:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the transfer was requested."
          example: 2023-04-14T20:41:28.715Z
        datePolicyResolved:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the transfer was approved by policy reviewers."
          example: 2023-04-14T20:41:28.715Z
        dateBroadcasted:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the transfer was broadcasted to the blockchain."
          example: 2023-04-14T20:41:28.715Z
        dateConfirmed:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the transfer was confirmed on chain."
          example: 2023-04-14T20:41:28.715Z
        approvalId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^ap-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: The id of the approval request if this transfer triggered a policy.
          example: ap-2a9in-tt2a1-983lho480p35ejd0
        externalId:
          type: string
          description: The external id provided at transfer creation time.
        feeSponsorId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: The fee sponsor id used to pay for the transfer fees.
          example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
        replacementId:
          type: string
          description: The id of the replacement transaction (cancel or speed-up) issued
            for this transfer.
        details:
          type: object
          additionalProperties: {}
          description: Structured representation of the data used to construct the
            signature (e.g. nonce, gas parameters). Shape is blockchain
            specific.
      required:
        - id
        - walletId
        - network
        - requester
        - requestBody
        - metadata
        - status
        - dateRequested
    TransactionRequest:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^tx-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Transaction id.
          example: tx-583hu-sp2p7-slvb9nqpa3hd8bus
        walletId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Wallet id.
          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
        network:
          $ref: "#/components/schemas/Network"
        requester:
          $ref: "#/components/schemas/Requester"
        requestBody:
          oneOf:
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Transaction
                transaction:
                  anyOf:
                    - type: string
                      pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                    - type: object
                      properties: {}
                  description: The unsigned hex encoded transaction or JSON transactions for
                    compatible networks.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - transaction
              additionalProperties: false
              description: |
                Signs an unsigned transaction and broadcasts it to chain.
                For EVM transactions, you may use JSON objects:

                | Field                | Description                                                                                                                                                                                                                         | Type - Optional              |
                |----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------|
                | type                 | Ethereum transaction type. 0 for legacy transaction; 2 for EIP-1559 transaction; 4 for EIP-7702 transaction. Default is 2 if undefined.                                                                                             | Integer (optional)           |
                | to                   | The destination address or target contract. Leave undefined when the transaction is a contract deployment.                                                                                                                          | String (optional)            |
                | value                | The amount of native tokens to transfer in minimum denomination.                                                                                                                                                                    | String (optional)            |
                | data                 | ABI encoded function call data in hex format. Can also be the encoded smart contract data when the transaction is a contract deployment.                                                                                            | String (optional)            |
                | nonce                | The transaction number to guarantee idempotency. If omitted, it will be provided automatically. Note the same nonce can be submitted multiple times with a higher maxFeePerGas to "overwrite" existing transactions in the mempool. | Integer or String (optional) |
                | gasLimit             | The maximum amount of gas that can be spent for executing the transaction. If omitted, it will be calculated automatically.                                                                                                         | String (optional)            |
                | gasPrice             | The amount of per unit gas. Only valid for a type 0 legacy transaction. If omitted, it will be calculated automatically.                                                                                                            | String (optional)            |
                | maxFeePerGas         | The maximum amount of per unit gas willing to be paid for the transaction. Valid for type 2 and type 4 transactions. If omitted, it will be calculated automatically.                                                               | String (optional)            |
                | maxPriorityFeePerGas | The maximum amount of per unit gas to be included as a tip to the validator. Valid for type 2 and type 4 transactions. If omitted, it will be calculated automatically.                                                             | String (optional)            |
                | authorizationList    | A list that indicates what code the signer of each authorization desires to execute in the context of their EOA. Only valid for type 4 transaction.                                                                                 | Authorization (optional)     |

                For Starknet transactions, you may use invocation request objects (https://github.com/starkware-libs/starknet-specs/blob/v0.8.1/api/starknet_api_openrpc.json#L2621):

                | Field                         | Description                                                                                         | Type - Optional                  |
                |-------------------------------|-----------------------------------------------------------------------------------------------------|----------------------------------|
                | calldata                      | **Array** of encoded function call parameters                                                       | **Array of Strings** (required)  |
                | nonce                         | Transaction nonce in hex format                                                                     | String (required)                |
                | version                       | Transaction version in hex format. Typically "0x3" for current transactions                         | String (required)                |
                | resourceBounds                | Gas bounds for L1, L2, and L1 data gas                                                              | Object (required)                |
                | ↳ resourceBounds.l1Gas        | L1 gas configuration with maxAmount and maxPricePerUnit                                             | Object (required)                |
                | ↳ resourceBounds.l2Gas        | L2 gas configuration with maxAmount and maxPricePerUnit                                             | Object (required)                |
                | ↳ resourceBounds.l1DataGas    | L1 data gas configuration with maxAmount and maxPricePerUnit                                        | Object (required)                |
                | tip                           | Transaction tip in hex format. Typically "0x0"                                                      | String (required)                |
                | paymasterData                 | Paymaster data array                                                                                | Array of Strings (required)      |
                | accountDeploymentData         | Account deployment data array                                                                       | Array of Strings (required)      |
                | nonceDataAvailabilityMode     | Data availability mode for nonce. Typically "L1" for now                                            | String (required)                |
                | feeDataAvailabilityMode       | Data availability mode for fee. Typically "L1" for now                                              | String (required)                |

                For Concordium transactions, you may use JSON objects (from https://github.com/Concordium/concordium-node-sdk-js/blob/sdk/12.0.0-alpha.3/packages/sdk/src/transactions/Transaction.ts#L102)

                | Field                            | Description                                                                                                                                                  | Type - Optional
                |----------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------|
                | Header                           | Transaction header for the intermediary state of account transactions, i.e. prior to being signing.                                                          | Object (required)               |
                | ↳ Header.executionEnergyAmount   | The destination address or target contract. Leave undefined when the transaction is a contract deployment.                                                   | String/Number/BigInt (required) |
                | ↳ Header.numSignatures           | The number of signatures the transaction can hold. If "undefined", this will be defined at the time of signing                                               | Integer (optional)              |
                | ↳ Header.sender                  | The account address that is source of this transaction                                                                                                       | String (optional)               |
                | ↳ Header.nonce                   | The account nonce                                                                                                                                            | String/Number/BigInt (optional) |
                | ↳ Header.expiry                  | expiration of the transaction                                                                                                                                | Integer (optional)              |
                | Payload                          | The transaction account payload in JSON format (https://github.com/Concordium/concordium-node-sdk-js/blob/main/packages/sdk/src/accountTransactions.ts#L646) | Object (required)               |



                ```json
                {
                  "kind": "Transaction",
                  "transaction": {
                    "to": "0x00fb58432ef9d418bf6688bcf0a226d2fcaa18e2",
                    "data": "0x40d097c3000000000000000000000000d2f77f85a50cdd650ca562f3a180284e1d5b4934",
                    "maxFeePerGas": "1626000000000",
                    "maxPriorityFeePerGas": "1332000000000"
                  }
                }
                ```

                ```json
                {
                  "kind": "Transaction",
                  "transaction": {
                    "type": "INVOKE",
                    "calldata": [
                      "1",
                      "2009894490435840142178314390393166646092438090257831307886760648929397478285",
                      "232670485425082704932579856502088130646006032362877466777181098476241604910",
                      "3",
                      "296727860213112272332383824629975240127004024814636931420022890499591637514",
                      "1",
                      "0"
                    ],
                    "nonce": "0x51",
                    "version": "0x3",
                    "resourceBounds": {
                      "l1Gas": { "maxAmount": "0x0", "maxPricePerUnit": "0x239a01ff6e6c" },
                      "l2Gas": { "maxAmount": "0x1694a0", "maxPricePerUnit": "0x10c388d00" },
                      "l1DataGas": { "maxAmount": "0x120", "maxPricePerUnit": "0x98e8" }
                    },
                    "tip": "0x0",
                    "paymasterData": [],
                    "accountDeploymentData": [],
                    "nonceDataAvailabilityMode": "L1",
                    "feeDataAvailabilityMode": "L1",
                  }
                }
                ```

                ```json
                {
                  "kind": "Transaction",
                  "transaction": {
                    "header": {
                      "sender": undefined,
                      "nonce": undefined,
                      "expiry": undefined,
                      "executionEnergyAmount": 300
                    },
                    "payload": {
                      "type": "transferWithMemo",
                      "toAddress": "4HhAcToZs6rtxGcgsBRS3VcjeAECPTTSTFVUKS6rBSVEZAPL6d",
                      "memo": "000968656c6c6f20636364",
                      "amount": "1"
                    }
                  }
                }
                ```
              title: Transaction
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Psbt
                psbt:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                  description: The hex encoded PSBT.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - psbt
              additionalProperties: false
              description: Signs a partially signed Bitcoin / Litecoin transaction.
              title: PSBT
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - SignDocDirect
                signDoc:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - signDoc
              additionalProperties: false
              description: Signs an unsigned transaction using [sign mode
                direct](https://docs.cosmos.network/main/learn/advanced/transactions#sign_mode_direct-preferred).
              title: SignDocDirect
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - UserOperations
                userOperations:
                  type: array
                  items:
                    type: object
                    properties:
                      to:
                        type: string
                        pattern: ^0x[0-9a-fA-F]{40}$
                        description: The destination address or target contract.
                      value:
                        type: string
                        pattern: ^\d+$
                        description: The amount of native tokens to transfer in minimum denomination.
                      data:
                        type: string
                        pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                        description: ABI encoded function call data in hex format.
                    required:
                      - to
                feeSponsorId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: A fee sponsor id to sponsor the transaction fee by another wallet.
                    (read more
                    [here](https://docs.dfns.co/features/fee-sponsors))
                  example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - userOperations
                - feeSponsorId
              additionalProperties: false
              description: >-
                Signs one or more user operations and broadcasts to chain using
                a sponsored transaction. Used for invoking arbitrary smart
                contract calls, including batch operations, with a [fee
                sponsor](https://docs.dfns.co/features/fee-sponsors).


                Can only be used with a fee sponsor. Unsponsored user operations
                are not supported.
              title: EVM Sponsored transaction
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - FunctionCall
                call:
                  type: object
                  properties: {}
                  description: Function call arguments
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - call
              additionalProperties: false
              description: Calls an on-chain function that mutates state.
              title: Function Call
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - TransferPreapproval
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
              additionalProperties: false
              description: Enable canton coin auto approval.
              title: Canton Transfer Preapproval
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Evm
                to:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{40}$
                value:
                  anyOf:
                    - type: string
                      pattern: ^\d+$
                    - type: string
                      pattern: ^0x[0-9a-fA-F]*$
                data:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                nonce:
                  anyOf:
                    - type: integer
                      minimum: 0
                    - type: string
                      pattern: ^\d+$
                    - type: string
                      pattern: ^0x[0-9a-fA-F]*$
                  description: The current nonce of the signer EOA.
                gasLimit:
                  anyOf:
                    - type: string
                      pattern: ^\d+$
                    - type: string
                      pattern: ^0x[0-9a-fA-F]*$
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
              additionalProperties: false
              description: Deprecated. Only support type 2 transactions. Use the new JSON
                format with `Transaction` kind instead which has support for
                legacy and type 4 transactions.
              title: <Deprecated> EVM Transaction
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Eip1559
                to:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{40}$
                value:
                  anyOf:
                    - type: string
                      pattern: ^\d+$
                    - type: string
                      pattern: ^0x[0-9a-fA-F]*$
                data:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                nonce:
                  anyOf:
                    - type: integer
                      minimum: 0
                    - type: string
                      pattern: ^\d+$
                    - type: string
                      pattern: ^0x[0-9a-fA-F]*$
                gasLimit:
                  anyOf:
                    - type: string
                      pattern: ^\d+$
                    - type: string
                      pattern: ^0x[0-9a-fA-F]*$
                maxFeePerGas:
                  anyOf:
                    - type: string
                      pattern: ^\d+$
                    - type: string
                      pattern: ^0x[0-9a-fA-F]*$
                maxPriorityFeePerGas:
                  anyOf:
                    - type: string
                      pattern: ^\d+$
                    - type: string
                      pattern: ^0x[0-9a-fA-F]*$
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
              additionalProperties: false
              description: Deprecated. Only support type 2 transactions. Use the new JSON
                format with `Transaction` kind instead which has support for
                legacy and type 4 transactions.
              title: <Deprecated> EVM EIP-1559
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - CreateSolanaNonceAccounts
                nonceAuthority:
                  type: string
                  description: Optional Solana address. The wallet that will own the nonce
                    accounts (be their on-chain authority). When omitted, the
                    URL wallet bootstraps for itself. When set, the URL wallet
                    pays the rent and signs the bootstrap, but the resulting
                    accounts' authority is this address — used to bootstrap on
                    behalf of an offline wallet that can't sign within the
                    90-second blockhash window.
                count:
                  type: integer
                  exclusiveMinimum: 0
                  maximum: 8
                  description: Optional. Number of nonce accounts to create in one bootstrap
                    transaction (1–8; capped by Solana max-tx-size budget).
                    Defaults to 1.
                priority:
                  type: string
                  enum:
                    - Slow
                    - Standard
                    - Fast
                  description: Priority for the bootstrap fee. Defaults to Standard.
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
              additionalProperties: false
              description: "Creates Solana durable-nonce accounts owned by the calling wallet
                (or by `nonceAuthority` for cross-bootstrap). Pre-populates the
                wallet's nonce account pool so subsequent transfers can use
                `useDurableNonce: true`."
              title: Create Solana Nonce Accounts
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - AcceptInboundAsset
                issuer:
                  type: string
                  description: Stellar (G-address) or XRPL (r-address) issuer of the asset.
                assetCode:
                  type: string
                  description: Stellar asset code (1–12 ASCII alphanumeric chars).
                currency:
                  type: string
                  description: XRPL IOU currency code.
                assetId:
                  type: string
                  pattern: ^\d+$
                  description: Algorand Standard Asset (ASA) id.
                tokenId:
                  type: string
                  description: Hedera token entity id, e.g. "0.0.456858".
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
              additionalProperties: false
              description: Accept a non-native asset into the wallet on chains that gate
                inbound holding at the protocol level. Maps to Stellar
                `ChangeTrust`, XRPL `TrustSet`, Algorand asset opt-in (a
                0-amount asset transfer to self), Hedera `TokenAssociate`, or
                Canton `TransferPreapproval`. The body fields differ per network
                — see the field descriptions.
              title: AcceptInboundAsset
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - SettleOffer
                txHash:
                  type: string
                decision:
                  type: string
                  enum:
                    - Accept
                    - Reject
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - txHash
                - decision
              additionalProperties: false
              description: Transaction for accepting or refusing a transfer offer.
              title: Offer Settlement
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - ActivateAccount
                args:
                  type: object
                  properties: {}
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
              additionalProperties: false
              description: Transaction for activating an account after creation.
              title: Account Activation
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - CancelTransaction
                txHash:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                signedTx:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - signedTx
              additionalProperties: false
              description: Transaction cancelling a previously sent transaction.
              title: Transaction Cancellation
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - SpeedUpTransaction
                txHash:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                signedTx:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: A unique ID from your system. It can be leveraged to be used as an
                    idempotency key (read more
                    [here](https://docs.dfns.co/api-reference/idempotency)).
              required:
                - kind
                - txHash
                - signedTx
              additionalProperties: false
              description: Transaction speeding up a previously sent transaction.
              title: Transaction Speed Up
        status:
          type: string
          enum:
            - Pending
            - Executing
            - Broadcasted
            - Confirmed
            - Failed
            - Rejected
        reason:
          type: string
        txHash:
          type: string
        fee:
          type: string
        approvalId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^ap-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          example: ap-2a9in-tt2a1-983lho480p35ejd0
        dateRequested:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the transaction was requested."
          example: 2023-04-14T20:41:28.715Z
        datePolicyResolved:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the transaction was approved by policy reviewers."
          example: 2023-04-14T20:41:28.715Z
        dateBroadcasted:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the transaction was broadcasted to the blockchain."
          example: 2023-04-14T20:41:28.715Z
        dateConfirmed:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the transaction was confirmed on chain."
          example: 2023-04-14T20:41:28.715Z
        externalId:
          type: string
        replacementId:
          type: string
          description: The id of the replacement transaction (cancel or speed-up) issued
            for this transaction.
        details:
          type: object
          additionalProperties: {}
          description: Structured representation of the data used to construct the
            signature (e.g. nonce, gas parameters). Shape is blockchain
            specific.
      required:
        - id
        - walletId
        - network
        - requester
        - requestBody
        - status
        - dateRequested
    Swap:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^swap-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Swap id.
          example: swap-5ch70-fc3n7-3k2cbo8d7q5lnts4
        quoteId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^swapQuote-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Id of the quote this swap is based on.
          example: swapQuote-7n9p0-cth75-6l74n2sj7u73ooeq
        reference:
          type:
            - string
            - "null"
          description: Optional user-defined reference for this Swap.
        walletId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Id of the Dfns wallet spending the sourceAsset.
          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
        targetWalletId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Id of the Dfns wallet receiving the target asset. Currently this
            value must be the same as the `walletId`.
          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
        status:
          type: string
          enum:
            - PendingPolicyApproval
            - InProgress
            - Completed
            - Failed
            - Rejected
          description: Swap status.
        provider:
          type: string
          enum:
            - UniswapX
            - UniswapClassic
          description: Swap provider.
        quotedSourceAsset:
          allOf:
            - oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Native
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - amount
                  title: Native Asset
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Erc20
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - contract
                    - amount
                  title: EVM Fungible Token (ERC-20)
            - type: object
              properties:
                metadata:
                  type: object
                  properties:
                    network:
                      $ref: "#/components/schemas/Network"
                    name:
                      type: string
                    symbol:
                      type: string
                    decimals:
                      type: number
                    tid:
                      type: string
                  required:
                    - network
                    - decimals
              required:
                - metadata
          description: The source asset for this swap transaction.
        quotedTargetAsset:
          allOf:
            - oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Native
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - amount
                  title: Native Asset
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Erc20
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - contract
                    - amount
                  title: EVM Fungible Token (ERC-20)
            - type: object
              properties:
                metadata:
                  type: object
                  properties:
                    network:
                      $ref: "#/components/schemas/Network"
                    name:
                      type: string
                    symbol:
                      type: string
                    decimals:
                      type: number
                    tid:
                      type: string
                  required:
                    - network
                    - decimals
              required:
                - metadata
          description: The target asset for this swap transaction.
        slippageBps:
          type: number
          description: The slippage tolerance for this trade in [basis
            point](https://en.wikipedia.org/wiki/Basis_point) (BPS). Slippage
            tolerance defines the maximum price difference you are willing to
            accept during a trade from the estimated quote, ensuring you still
            receive at least a minimum number of tokens if the price shifts. One
            basis point equals one-hundredth of a percentage point, or 0.01%.
        dateCreated:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the swap was initiated."
        requestBody:
          anyOf:
            - type: object
              properties:
                quoteId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^swapQuote-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Quote to use for this swap.
                  example: swapQuote-7n9p0-cth75-6l74n2sj7u73ooeq
                reference:
                  type: string
                  description: An optional reference for this Swap.
                provider:
                  type: string
                  enum:
                    - UniswapX
                    - UniswapClassic
                  description: Provided for this swap. Used for attesting that the swap is being
                    created with the same parameters as the quote.
                walletId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the Dfns wallet spending the sourceAsset. Used for attesting
                    that the swap is being created with the same parameters as
                    the quote.
                  example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                targetWalletId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the Dfns wallet receiving the target asset. Currently this
                    value must be the same as the `walletId`. Used for attesting
                    that the swap is being created with the same parameters as
                    the quote.
                  example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                slippageBps:
                  type: number
                  description: "The slippage tolerance for this trade in [basis
                    point](https://en.wikipedia.org/wiki/Basis_point) (BPS).
                    Slippage tolerance defines the maximum price difference you
                    are willing to accept during a trade from the estimated
                    quote, ensuring you still receive at least a minimum number
                    of tokens if the price shifts. One basis point equals
                    one-hundredth of a percentage point, or 0.01%. Used for
                    attesting that the swap is being created with the same
                    parameters as the quote. "
                sourceAsset:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Native
                        amount:
                          type: string
                          pattern: ^\d+$
                      required:
                        - kind
                        - amount
                      title: Native Asset
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Erc20
                        contract:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{40}$
                        amount:
                          type: string
                          pattern: ^\d+$
                      required:
                        - kind
                        - contract
                        - amount
                      title: EVM Fungible Token (ERC-20)
                  description: The source asset that will be spent on the Swap transaction. Used
                    for attesting that the swap is being created with the same
                    parameters as the quote.
                targetAsset:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Native
                        amount:
                          type: string
                          pattern: ^\d+$
                      required:
                        - kind
                        - amount
                      title: Native Asset
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Erc20
                        contract:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{40}$
                        amount:
                          type: string
                          pattern: ^\d+$
                      required:
                        - kind
                        - contract
                        - amount
                      title: EVM Fungible Token (ERC-20)
                  description: The target asset that will be received with the Swap transaction.
                    Used for attesting that the swap is being created with the
                    same parameters as the quote.
              required:
                - quoteId
                - provider
                - walletId
                - slippageBps
                - sourceAsset
                - targetAsset
            - type: object
              properties: {}
          description: The full request used for initiating this swap.
        requester:
          $ref: "#/components/schemas/Requester"
        failureReason:
          type: string
          description: The failure reason, if any. Only present when status is Failed.
      required:
        - id
        - quoteId
        - reference
        - walletId
        - targetWalletId
        - status
        - provider
        - quotedSourceAsset
        - quotedTargetAsset
        - slippageBps
        - dateCreated
        - requestBody
        - requester
      example:
        id: swap-6a3ku-bn8d7-8u5rs1oukojms7k8
        quoteId: swapQuote-3hgv4-q8tbf-8v2ajmrbmg6m4i9t
        reference: null
        walletId: wa-3l3cj-l8mq7-8q78f9nopq7f1qjv
        targetWalletId: wa-3l3cj-l8mq7-8q78f9nopq7f1qjv
        status: PendingPolicyApproval
        provider: UniswapClassic
        quotedSourceAsset:
          kind: Native
          amount: "10000000000"
          metadata:
            network: EthereumSepolia
            name: Ethereum
            symbol: SepoliaETH
            decimals: 18
            tid: native:eth
        quotedTargetAsset:
          kind: Erc20
          contract: "0xda0be7efd234295395d4204d0df4358339b57b27"
          amount: "6467571553831928182"
          metadata:
            network: EthereumSepolia
            name: Test
            symbol: Test
            decimals: 18
            tid: erc20:0xda0be7efd234295395d4204d0df4358339b57b27
        slippageBps: 100
        dateCreated: 2025-09-11T10:57:55.758Z
        requestBody:
          quoteId: swapQuote-3hgv4-q8tbf-8v2ajmrbmg6m4i9t
          walletId: wa-3l3cj-l8mq7-8q78f9nopq7f1qjv
          targetWalletId: wa-3l3cj-l8mq7-8q78f9nopq7f1qjv
          provider: UniswapClassic
          slippageBps: 100
          sourceAsset:
            kind: Native
            amount: "10000000000"
          targetAsset:
            kind: Erc20
            contract: "0xda0be7efd234295395d4204d0df4358339b57b27"
            amount: "653003161"
        requester:
          userId: us-48r5q-eshfg-9pmr2lo6bmpr4i4i
          tokenId: to-4etah-smoal-9n3rmhul4dpaueg5
    BlockchainEvent:
      oneOf:
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a3
                          type: number
                        USD: *a3
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a4
                          type: number
                        USD: *a4
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - NativeTransfer
            from:
              type: string
            to:
              type: string
            value:
              type: string
            fee:
              type: string
            memo:
              type: string
            liquidityPool:
              type: string
            balanceId:
              type: string
            symbol:
              type: string
              description: "@deprecated use metadata.asset.symbol instead"
            decimals:
              type: number
              description: "@deprecated use metadata.asset.decimals instead"
            verified:
              type: boolean
              description: "@deprecated use metadata.asset.verified instead"
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - value
            - symbol
            - decimals
          title: Native Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a5
                          type: number
                        USD: *a5
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a6
                          type: number
                        USD: *a6
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - Aip21Transfer
            metadataAddress:
              type: string
            from:
              type: string
            to:
              type: string
            value:
              type: string
            fee:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - metadataAddress
            - from
            - to
            - value
          title: Aptos Fungible Asset (AIP-21) Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a7
                          type: number
                        USD: *a7
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a8
                          type: number
                        USD: *a8
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - AsaTransfer
            assetId:
              type: string
            from:
              type: string
            to:
              type: string
            value:
              type: string
            fee:
              type: string
            optIn:
              type: boolean
            optOut:
              type: boolean
            clawback:
              type: boolean
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - assetId
            - from
            - to
            - value
          title: Algorand Standard Asset Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a9
                          type: number
                        USD: *a9
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a10
                          type: number
                        USD: *a10
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - AssetTransfer
            assetId:
              type: string
            from:
              type: string
            to:
              type: string
            value:
              type: string
            fee:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - assetId
            - value
          title: Cardano Asset Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a11
                          type: number
                        USD: *a11
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a12
                          type: number
                        USD: *a12
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - Cip56Transfer
            instrumentId:
              type: string
            instrumentAdmin:
              type: string
            from:
              type: string
            to:
              type: string
            value:
              type: string
            fee:
              type: string
            memo:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - instrumentId
            - instrumentAdmin
            - from
            - to
            - value
          title: Canton Standard Token (CIP-56) Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a13
                          type: number
                        USD: *a13
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a14
                          type: number
                        USD: *a14
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - CoinTransfer
            coin:
              type: string
            from:
              type: string
            tos:
              type: array
              items:
                type: string
            value:
              type: string
            fee:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - coin
            - from
            - value
          title: Sui Coin Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a15
                          type: number
                        USD: *a15
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a16
                          type: number
                        USD: *a16
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - Cis2Transfer
            from:
              type: string
            to:
              type: string
            value:
              type: string
            tokenAddress:
              type: string
            fee:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - value
            - tokenAddress
          title: Concordium CIS2 Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a17
                          type: number
                        USD: *a17
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a18
                          type: number
                        USD: *a18
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - Cis7Transfer
            from:
              type: string
            to:
              type: string
            value:
              type: string
            fee:
              type: string
            tokenId:
              type: string
            memo:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - value
            - tokenId
          title: Concordium CIS7 Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a19
                          type: number
                        USD: *a19
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a20
                          type: number
                        USD: *a20
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - Erc20Transfer
            contract:
              type: string
            from:
              type: string
            to:
              type: string
            value:
              type: string
            fee:
              type: string
            symbol:
              type: string
              description: "@deprecated use metadata.asset.symbol instead"
            decimals:
              type: number
              description: "@deprecated use metadata.asset.decimals instead"
            verified:
              type: boolean
              description: "@deprecated use metadata.asset.verified instead"
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - contract
            - from
            - to
            - value
            - decimals
          title: EVM Fungible Token (ERC-20) Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a21
                          type: number
                        USD: *a21
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a22
                          type: number
                        USD: *a22
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - Erc721Transfer
            contract:
              type: string
            from:
              type: string
            to:
              type: string
            tokenId:
              type: string
            fee:
              type: string
            symbol:
              type: string
              description: "@deprecated use metadata.asset.symbol instead"
            verified:
              type: boolean
              description: "@deprecated use metadata.asset.verified instead"
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - contract
            - from
            - to
            - tokenId
          title: EVM Non Fungible Token (ERC-721) Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a23
                          type: number
                        USD: *a23
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a24
                          type: number
                        USD: *a24
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - Erc7984Transfer
            contract:
              type: string
            from:
              type: string
            to:
              type: string
            value:
              type: string
            fee:
              type: string
            symbol:
              type: string
              description: "@deprecated use metadata.asset.symbol instead"
            decimals:
              type: number
              description: "@deprecated use metadata.asset.decimals instead"
            verified:
              type: boolean
              description: "@deprecated use metadata.asset.verified instead"
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - contract
            - from
            - to
            - value
            - decimals
          title: EVM Confidential Token (ERC-7984) Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a25
                          type: number
                        USD: *a25
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a26
                          type: number
                        USD: *a26
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - Hip17Transfer
            tokenId:
              type: string
            serialNumber:
              type: string
            from:
              type: string
            to:
              type: string
            fee:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - tokenId
            - serialNumber
          title: HIP17 Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a27
                          type: number
                        USD: *a27
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a28
                          type: number
                        USD: *a28
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - HtsTransfer
            tokenId:
              type: string
            froms:
              type: array
              items:
                type: string
            tos:
              type: array
              items:
                type: string
            value:
              type: string
            fee:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - froms
            - tos
            - value
          title: HTS Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a29
                          type: number
                        USD: *a29
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a30
                          type: number
                        USD: *a30
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - IouTransfer
            currency:
              type: string
            issuer:
              type: string
            from:
              type: string
            to:
              type: string
            value:
              type: string
            fee:
              type: string
            memo:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - currency
            - issuer
            - value
          title: XRPL IOU Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a31
                          type: number
                        USD: *a31
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a32
                          type: number
                        USD: *a32
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - LockedCoinTransfer
            coin:
              type: string
            from:
              type: string
            tos:
              type: array
              items:
                type: string
            value:
              type: string
            fee:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - coin
            - from
            - value
          title: Locked Coin Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a33
                          type: number
                        USD: *a33
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a34
                          type: number
                        USD: *a34
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - Xls33Transfer
            issuanceId:
              type: string
            from:
              type: string
            to:
              type: string
            value:
              type: string
            fee:
              type: string
            memo:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - issuanceId
            - value
          title: XRPL XLS-33 Token Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a35
                          type: number
                        USD: *a35
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a36
                          type: number
                        USD: *a36
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - Sep41Transfer
            issuer:
              type: string
            assetCode:
              type: string
            from:
              type: string
            to:
              type: string
            value:
              type: string
            fee:
              type: string
            memo:
              type: string
            liquidityPool:
              type: string
            balanceId:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - issuer
            - assetCode
            - from
            - to
            - value
          title: Stellar Classic Assets (SEP-41) Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a37
                          type: number
                        USD: *a37
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a38
                          type: number
                        USD: *a38
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - Snip2Transfer
            contract:
              type: string
            from:
              type: string
            to:
              type: string
            value:
              type: string
            fee:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - contract
            - from
            - to
            - value
          title: Snip2 Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a39
                          type: number
                        USD: *a39
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a40
                          type: number
                        USD: *a40
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - Snip3Transfer
            contract:
              type: string
            from:
              type: string
            to:
              type: string
            tokenId:
              type: string
            fee:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - contract
            - from
            - to
            - tokenId
          title: Snip3 Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a41
                          type: number
                        USD: *a41
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a42
                          type: number
                        USD: *a42
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - SplTransfer
                - Spl2022Transfer
            from:
              type: string
            to:
              type: string
            mint:
              type: string
            value:
              type: string
            fee:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - mint
            - value
          title: Solana Program Library Token (SPL and SPL 2022) Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a43
                          type: number
                        USD: *a43
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a44
                          type: number
                        USD: *a44
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - Tep74Transfer
            master:
              type: string
            from:
              type: string
            to:
              type: string
            value:
              type: string
            fee:
              type: string
            memo:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - master
            - from
            - value
          title: TON Jetton (TEP-74) Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a45
                          type: number
                        USD: *a45
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a46
                          type: number
                        USD: *a46
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - Trc10Transfer
            tokenId:
              type: string
            from:
              type: string
            to:
              type: string
            value:
              type: string
            fee:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - tokenId
            - from
            - to
            - value
          title: TRON Native Fungible Token (TRC-10) Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a47
                          type: number
                        USD: *a47
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a48
                          type: number
                        USD: *a48
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - Trc20Transfer
            contract:
              type: string
            from:
              type: string
            to:
              type: string
            value:
              type: string
            fee:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - contract
            - from
            - to
            - value
          title: TRON Smart Contract Fungible Token (TRC-20) Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a49
                          type: number
                        USD: *a49
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a50
                          type: number
                        USD: *a50
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - Trc721Transfer
            contract:
              type: string
            from:
              type: string
            to:
              type: string
            tokenId:
              type: string
            fee:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - contract
            - from
            - to
            - tokenId
          title: TRON Non Fungible Token (TRC-721) Transfer
        - type: object
          properties:
            walletId:
              type: string
            direction:
              type: string
              enum:
                - In
                - Out
            network:
              $ref: "#/components/schemas/Network"
            blockNumber:
              type: number
            txHash:
              type: string
            index:
              type: string
            timestamp:
              type: string
            metadata:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a51
                          type: number
                        USD: *a51
                      description: Corresponding asset price in USD at the time of transfer.
                fee:
                  type: object
                  properties:
                    symbol:
                      type: string
                    decimals:
                      type: integer
                      description: Number of decimals used by the asset, see [this
                        guide](https://docs.dfns.co/guides/developers/displaying-balances)
                        for more details.
                    verified:
                      type: boolean
                      description: Whether the asset is verified by DFNS as legitimate.
                    quotes:
                      type: object
                      properties:
                        EUR: &a52
                          type: number
                        USD: *a52
                      description: Corresponding asset price in USD at the time of transfer.
              required:
                - asset
            kind:
              type: string
              enum:
                - UtxoTransfer
            froms:
              type: array
              items:
                type: string
            tos:
              type: array
              items:
                type: string
            value:
              type: string
            fee:
              type: string
          required:
            - walletId
            - direction
            - network
            - blockNumber
            - txHash
            - timestamp
            - metadata
            - kind
            - froms
            - tos
            - value
          title: UTXO Transfer
      example:
        kind: Erc20Transfer
        walletId: wa-1f04s-lqc9q-xxxxxxxxxxxxxxxx
        network: Ethereum
        direction: Out
        blockNumber: 19036906
        timestamp: 2024-01-18T23:03:59.000Z
        txHash: "0x8e88793607610a83798eb5ec6dde861f3e459c7e4a22e78b0d2e675b86d0d1e7"
        index: "134"
        contract: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
        from: "0xea09cf8a006493566f8a8fd3d0b32ebff5939d6a"
        to: "0xc42754e6f79f15082613b2b4ebead83dcf8116b6"
        value: "1000000"
        decimals: 6
        fee: "1542993669053672"
        metadata:
          asset:
            symbol: USDC
            decimals: 6
            verified: true
          fee:
            symbol: ETH
            decimals: 18
            verified: true
    PolicyApproval:
      type: object
      properties:
        id:
          type: string
        initiatorId:
          type: string
        activity:
          oneOf:
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Wallets:Sign
                transferRequest:
                  $ref: "#/components/schemas/TransferRequest"
                transactionRequest:
                  $ref: "#/components/schemas/TransactionRequest"
                signatureRequest:
                  $ref: "#/components/schemas/SignatureRequest"
                swapRequest:
                  $ref: "#/components/schemas/Swap"
              required:
                - kind
              description: |2
                
                      A "`Wallets:Sign`" activity represents any activity which involves signing with a wallet. Currently, in our API, these can be:

                * a Transfer Request (created using the endpoint [Transfer Asset from Wallet](https://docs.dfns.co/api-reference/wallets/transfer-asset))
                * a Transaction Request (created using the endpoint [Broadcast Transaction from Wallet](https://docs.dfns.co/api-reference/wallets/sign-and-broadcast-transaction))
                * a Signature Request (created using the endpoint [Generate Signature from Wallet](https://docs.dfns.co/api-reference/keys/generate-signature))
              title: Wallets:Sign
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Wallets:IncomingTransaction
                blockchainEvent:
                  $ref: "#/components/schemas/BlockchainEvent"
              required:
                - kind
                - blockchainEvent
              description: A "`Wallets:IncomingTransaction`" activity represents when our
                indexers detected an incoming transaction into a wallet. This
                activity kind has to be used with the rule kind
                "`ChainalysisTransactionScreening`" (see more on
                [Chainalysis](https://docs.dfns.co/integrations/aml-kyt/chainalysis)
                integration page), and the action kind "`NoAction`", meaning
                that no actual action will be taken as a result of the
                Chainalysis screening, other than notifying you through a
                webhook event if the policy is triggered. The reason for that,
                is that the incoming transaction is already on-chain, so the
                funds are already in the wallet, we cannot block that transfer
                on chain.
              title: Wallets:IncomingTransaction
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Policies:Modify
                changeRequest:
                  type: object
                  properties:
                    id:
                      type: string
                    requester:
                      $ref: "#/components/schemas/ChangeRequestRequester"
                    kind:
                      type: string
                      enum:
                        - Policy
                    operationKind:
                      type: string
                      enum: &a64
                        - Update
                    status:
                      type: string
                      enum:
                        - Applied
                        - Failed
                        - Pending
                        - Rejected
                    entityId:
                      type: string
                    dateCreated:
                      type: string
                      format: date-time
                    dateResolved:
                      type: string
                      format: date-time
                    approvalId:
                      type: string
                    body:
                      $ref: "#/components/schemas/Policy"
                  required:
                    - id
                    - requester
                    - kind
                    - operationKind
                    - status
                    - entityId
                    - dateCreated
                    - body
                  additionalProperties: false
              required:
                - kind
                - changeRequest
              description: |2
                
                      A "`Policies:Modify`" activity represents any activity which involves updating or archiving a policy. These activities are Policy change requests, created as a result of calling either:

                * the endpoint [Update Policy](https://docs.dfns.co/api-reference/policies/update-policy)
                * the endpoint [Delete Policy](https://docs.dfns.co/api-reference/policies/delete-policy)
              title: Policies:Modify
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Permissions:Modify
                changeRequest:
                  type: object
                  properties:
                    id:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: ID of the change request.
                      example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                    requester:
                      $ref: "#/components/schemas/ChangeRequestRequester"
                    status:
                      type: string
                      enum:
                        - Applied
                        - Failed
                        - Pending
                        - Rejected
                      description: Current status of the change request.
                    entityId:
                      type: string
                      description: ID of the entity being changed.
                    dateCreated:
                      type: string
                      format: date-time
                      description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                        UTC). Date the change request was created."
                      example: 2023-04-14T20:41:28.715Z
                    dateResolved:
                      type: string
                      format: date-time
                      description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                        UTC). Date the change request was resolved."
                      example: 2023-04-14T20:41:28.715Z
                    approvalId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^ap-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      example: ap-2a9in-tt2a1-983lho480p35ejd0
                    kind:
                      type: string
                      enum:
                        - Permission
                    operationKind:
                      type: string
                      enum: &a63
                        - Update
                    body:
                      type: object
                      properties:
                        id:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^pm-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: ID of the permission (also referred to as "role" in the dashboard).
                          example: pm-37vj4-jkr4l-lc9945spfftkne57
                        name:
                          type: string
                          description: Human-readable name of the permission (role).
                        status:
                          type: string
                          enum:
                            - Active
                          description: Current status of the permission.
                        operations:
                          type: array
                          items:
                            type: string
                          description: List of API operations this permission grants access to. See
                            [Permissions
                            List](https://docs.dfns.co/core-concepts/roles-and-permissions#list-of-permissions)
                            for available operations.
                        isImmutable:
                          type: boolean
                          description: Whether this permission is system-managed and cannot be modified.
                        isArchived:
                          type: boolean
                          description: Whether this permission has been archived (soft-deleted).
                      required:
                        - id
                        - name
                        - status
                        - operations
                        - isImmutable
                        - isArchived
                      additionalProperties: false
                  required:
                    - id
                    - requester
                    - status
                    - entityId
                    - dateCreated
                    - kind
                    - operationKind
                    - body
                  additionalProperties: false
              required:
                - kind
                - changeRequest
              description: |2
                
                      A "`Permissions:Modify`" activity represents any activity which involves updating or archiving a permission. These activities are Permission change requests, created as a result of calling either:

                * the endpoint [Update Permission](https://docs.dfns.co/api-reference/permissions/update-permission)
                * the endpoint [Delete Permission](https://docs.dfns.co/api-reference/permissions/delete-permission)
              title: Permissions:Modify
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Permissions:Assign
                changeRequest:
                  type: object
                  properties:
                    id:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: ID of the change request.
                      example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                    requester:
                      $ref: "#/components/schemas/ChangeRequestRequester"
                    status:
                      type: string
                      enum:
                        - Applied
                        - Failed
                        - Pending
                        - Rejected
                      description: Current status of the change request.
                    entityId:
                      type: string
                      description: ID of the entity being changed.
                    dateCreated:
                      type: string
                      format: date-time
                      description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                        UTC). Date the change request was created."
                      example: 2023-04-14T20:41:28.715Z
                    dateResolved:
                      type: string
                      format: date-time
                      description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                        UTC). Date the change request was resolved."
                      example: 2023-04-14T20:41:28.715Z
                    approvalId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^ap-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      example: ap-2a9in-tt2a1-983lho480p35ejd0
                    kind:
                      type: string
                      enum:
                        - Assignment
                    operationKind:
                      type: string
                      enum: &a62
                        - Create
                        - Delete
                    body:
                      type: object
                      properties:
                        id:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^as-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: ID of the permission assignment.
                          example: as-1vcmc-qrek0-6b4vii9pln60907e
                        permissionId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^pm-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: ID of the permission (also referred to as "role" in the dashboard).
                          example: pm-37vj4-jkr4l-lc9945spfftkne57
                        identityId:
                          type: string
                          description: ID of the identity the permission is assigned to. Can be a user ID,
                            a service account ID, or a personal access token
                            (PAT) ID.
                        isImmutable:
                          type: boolean
                          description: Whether this assignment is system-managed and cannot be modified.
                      required:
                        - id
                        - permissionId
                        - identityId
                        - isImmutable
                      additionalProperties: false
                  required:
                    - id
                    - requester
                    - status
                    - entityId
                    - dateCreated
                    - kind
                    - operationKind
                    - body
                  additionalProperties: false
              required:
                - kind
                - changeRequest
              description: |2
                
                      A "`Permissions:Assign`" activity represents any activity which involves assigning a permission (or revoking it, aka "deleting a permission assignment"). These activities are Assignment change requests, created as a result of calling either:

                * the endpoint [Assign Permission](https://docs.dfns.co/api-reference/permissions/assign-permission)
                * the endpoint [Revoke Permission](https://docs.dfns.co/api-reference/permissions/revoke-permission)
              title: Permissions:Assign
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Registry:Addresses:Modify
                changeRequest:
                  type: object
                  properties:
                    id:
                      type: string
                    kind:
                      type: string
                      enum:
                        - Alias
                    body:
                      oneOf:
                        - type: object
                          properties:
                            entityId:
                              type: string
                            alias:
                              type: string
                            operationKind:
                              type: string
                              enum:
                                - Create
                            description:
                              type: string
                              minLength: 1
                              maxLength: 200
                            values:
                              type: object
                              properties:
                                add:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      network:
                                        $ref: "#/components/schemas/Network"
                                      memo:
                                        type: string
                                        minLength: 1
                                        maxLength: 64
                                        pattern: ^[a-zA-Z0-9]+$
                                      value:
                                        type: string
                                        minLength: 1
                                        maxLength: 300
                                        pattern: ^[a-zA-Z0-9_:-]+$
                                    required:
                                      - network
                                      - value
                              required:
                                - add
                          required:
                            - entityId
                            - alias
                            - operationKind
                            - values
                          additionalProperties: false
                          title: Alias creation
                        - type: object
                          properties:
                            entityId:
                              type: string
                            alias:
                              type: string
                            operationKind:
                              type: string
                              enum:
                                - Update
                            description:
                              type:
                                - string
                                - "null"
                              minLength: 1
                              maxLength: 200
                            values:
                              type: object
                              properties:
                                add:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      network:
                                        $ref: "#/components/schemas/Network"
                                      memo:
                                        type: string
                                        minLength: 1
                                        maxLength: 64
                                        pattern: ^[a-zA-Z0-9]+$
                                      value:
                                        type: string
                                        minLength: 1
                                        maxLength: 300
                                        pattern: ^[a-zA-Z0-9_:-]+$
                                    required:
                                      - network
                                      - value
                                remove:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      network:
                                        $ref: "#/components/schemas/Network"
                                      memo:
                                        type: string
                                        minLength: 1
                                        maxLength: 64
                                        pattern: ^[a-zA-Z0-9]+$
                                      value:
                                        type: string
                                        minLength: 1
                                        maxLength: 300
                                        pattern: ^[a-zA-Z0-9_:-]+$
                                    required:
                                      - network
                                      - value
                              required:
                                - add
                                - remove
                          required:
                            - entityId
                            - alias
                            - operationKind
                            - values
                          additionalProperties: false
                          title: Alias update
                        - type: object
                          properties:
                            entityId:
                              type: string
                            alias:
                              type: string
                            operationKind:
                              type: string
                              enum:
                                - Delete
                          required:
                            - entityId
                            - alias
                            - operationKind
                          title: Alias deletion
                  required:
                    - id
                    - kind
                    - body
              required:
                - kind
                - changeRequest
              description: ""
              title: Registry:Addresses:Modify
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Registry:ContractSchemas:Modify
                changeRequest:
                  type: object
                  properties:
                    id:
                      type: string
                    kind:
                      type: string
                      enum:
                        - SmartContract
                    operationKind:
                      type: string
                      enum: &a71
                        - Create
                        - Delete
                    body:
                      type: object
                      properties:
                        id:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^cs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          example: cs-30ude-5i87r-gfrpg3fi68l2u14b
                        name:
                          type: string
                          minLength: 1
                          maxLength: 50
                          pattern: ^[a-z0-9-]+$
                        description:
                          type: string
                          minLength: 1
                          maxLength: 200
                        network:
                          type: string
                          enum: &a59
                            - ArbitrumOne
                            - ArbitrumSepolia
                            - ArcTestnet
                            - AvalancheC
                            - AvalancheCFuji
                            - Base
                            - BaseSepolia
                            - Bob
                            - BobSepolia
                            - Bsc
                            - BscTestnet
                            - Berachain
                            - BerachainBepolia
                            - Celo
                            - CeloAlfajores
                            - Codex
                            - CodexSepolia
                            - Ethereum
                            - EthereumClassic
                            - EthereumClassicMordor
                            - EthereumSepolia
                            - EthereumHolesky
                            - EthereumHoodi
                            - FantomOpera
                            - FantomTestnet
                            - FlareC
                            - FlareCCoston2
                            - FlowEvm
                            - FlowEvmTestnet
                            - Ink
                            - InkSepolia
                            - Optimism
                            - OptimismSepolia
                            - Plasma
                            - PlasmaTestnet
                            - Plume
                            - PlumeSepolia
                            - Polygon
                            - PolygonAmoy
                            - Race
                            - RaceSepolia
                            - Tempo
                            - TempoModerato
                            - Tsc
                            - TscTestnet1
                            - Xdc
                            - XdcApothem
                            - XLayer
                            - XLayerSepolia
                        address:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{40}$
                        schema: {}
                      required:
                        - id
                        - name
                        - network
                        - address
                  required:
                    - id
                    - kind
                    - operationKind
                    - body
              required:
                - kind
                - changeRequest
              description: ""
              title: Registry:ContractSchemas:Modify
        status:
          type: string
          enum:
            - Pending
            - Approved
            - Denied
            - Expired
        expirationDate:
          type: string
        dateCreated:
          type: string
        dateUpdated:
          type: string
        dateResolved:
          type: string
        policyEvaluations:
          type: array
          items:
            type: object
            properties:
              policyId:
                type: string
              triggered:
                type: boolean
              reason:
                type: string
              context: {}
            required:
              - policyId
              - triggered
              - reason
        decisions:
          type: array
          items:
            type: object
            properties:
              userId:
                type: string
              date:
                type: string
              reason:
                type:
                  - string
                  - "null"
              value:
                type: string
                enum:
                  - Approved
                  - Denied
            required:
              - userId
              - date
              - reason
              - value
      required:
        - id
        - initiatorId
        - activity
        - status
        - dateUpdated
        - policyEvaluations
        - decisions
      additionalProperties: false
    Stake:
      oneOf:
        - type: object
          properties:
            id:
              type: string
              minLength: 1
              maxLength: 64
              pattern: ^stk-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
              example: stk-0pmu3-tog2k-fdtn0teii2i4r13f
            provider:
              type: string
              enum:
                - Figment
              description: The staking infrastructure provider used to manage the stake.
            walletId:
              type: string
              minLength: 1
              maxLength: 64
              pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
              description: Wallet id.
              example: wa-5pfuu-9euek-h0odgb6snva8ph3k
            status:
              type: string
              enum:
                - Active
                - Failed
                - Staking
                - Unbonding
                - Unbond
                - Withdrawing
                - Withdrawn
              description: >-
                Status of the stake position.


                | Status | Definition |

                | --- | --- |

                | `Staking` | The stake is being created and funds are being
                delegated to the validator. |

                | `Active` | The stake is active and earning rewards. |

                | `Unbonding` | The stake is in the process of being unbonded
                (cooldown period). |

                | `Unbond` | The stake has been unbonded and is ready for
                withdrawal. |

                | `Withdrawing` | The staked funds are in the process of being
                withdrawn. |

                | `Withdrawn` | The staked funds have been fully withdrawn. |

                | `Failed` | The staking operation failed. |
            requester:
              $ref: "#/components/schemas/Requester"
            requestBody:
              allOf:
                - oneOf:
                    - type: object
                      properties:
                        protocol:
                          type: string
                          enum:
                            - Babylon
                        walletId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: Id of the Dfns wallet making the deposit.
                          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                        provider:
                          type: string
                          enum:
                            - Figment
                          description: Staking Provider
                        amount:
                          type: string
                          pattern: ^\d+$
                          description: Transaction amount denominated in min units
                        duration:
                          type: number
                      required:
                        - protocol
                        - walletId
                        - provider
                        - amount
                        - duration
                      title: Babylon
                    - type: object
                      properties:
                        protocol:
                          type: string
                          enum:
                            - Ethereum
                        walletId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: Id of the Dfns wallet making the deposit.
                          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                        provider:
                          type: string
                          enum:
                            - Figment
                          description: Staking Provider
                        amount:
                          type: string
                          pattern: ^\d+$
                          description: Transaction amount denominated in min units
                      required:
                        - protocol
                        - walletId
                        - provider
                        - amount
                      title: Ethereum
                    - type: object
                      properties:
                        protocol:
                          type: string
                          enum:
                            - Iota
                        walletId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: Id of the Dfns wallet making the deposit.
                          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                        validator:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{64}$
                        amount:
                          type: string
                          pattern: ^\d+$
                          description: Transaction amount denominated in min units
                        lockedIotas:
                          type: array
                          items:
                            type: string
                            pattern: ^0x[0-9a-fA-F]{64}$
                          minItems: 1
                      required:
                        - protocol
                        - walletId
                        - validator
                        - amount
                      title: Iota
                - type: object
                  properties:
                    externalId:
                      type: string
            dateCreated:
              type: string
              format: date-time
              description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                UTC). When the stake was created."
              example: 2023-04-14T20:41:28.715Z
            protocol:
              type: string
              enum:
                - Babylon
            data:
              type: object
              properties:
                finalityProviders:
                  type: array
                  items:
                    type: string
                covenantPubkeys:
                  type: array
                  items:
                    type: string
                magicBytes:
                  type: string
                covenantThreshold:
                  type: number
                minUnbondingTime:
                  type: number
                lockHeight:
                  type: number
              required:
                - finalityProviders
                - covenantPubkeys
                - magicBytes
                - covenantThreshold
                - minUnbondingTime
                - lockHeight
          required:
            - id
            - walletId
            - status
            - requester
            - requestBody
            - dateCreated
            - protocol
            - data
          title: Babylon
        - type: object
          properties:
            id:
              type: string
              minLength: 1
              maxLength: 64
              pattern: ^stk-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
              example: stk-0pmu3-tog2k-fdtn0teii2i4r13f
            provider:
              type: string
              enum:
                - Figment
              description: The staking infrastructure provider used to manage the stake.
            walletId:
              type: string
              minLength: 1
              maxLength: 64
              pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
              description: Wallet id.
              example: wa-5pfuu-9euek-h0odgb6snva8ph3k
            status:
              type: string
              enum:
                - Active
                - Failed
                - Staking
                - Unbonding
                - Unbond
                - Withdrawing
                - Withdrawn
              description: >-
                Status of the stake position.


                | Status | Definition |

                | --- | --- |

                | `Staking` | The stake is being created and funds are being
                delegated to the validator. |

                | `Active` | The stake is active and earning rewards. |

                | `Unbonding` | The stake is in the process of being unbonded
                (cooldown period). |

                | `Unbond` | The stake has been unbonded and is ready for
                withdrawal. |

                | `Withdrawing` | The staked funds are in the process of being
                withdrawn. |

                | `Withdrawn` | The staked funds have been fully withdrawn. |

                | `Failed` | The staking operation failed. |
            requester:
              $ref: "#/components/schemas/Requester"
            requestBody:
              allOf:
                - oneOf:
                    - type: object
                      properties:
                        protocol:
                          type: string
                          enum:
                            - Babylon
                        walletId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: Id of the Dfns wallet making the deposit.
                          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                        provider:
                          type: string
                          enum:
                            - Figment
                          description: Staking Provider
                        amount:
                          type: string
                          pattern: ^\d+$
                          description: Transaction amount denominated in min units
                        duration:
                          type: number
                      required:
                        - protocol
                        - walletId
                        - provider
                        - amount
                        - duration
                      title: Babylon
                    - type: object
                      properties:
                        protocol:
                          type: string
                          enum:
                            - Ethereum
                        walletId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: Id of the Dfns wallet making the deposit.
                          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                        provider:
                          type: string
                          enum:
                            - Figment
                          description: Staking Provider
                        amount:
                          type: string
                          pattern: ^\d+$
                          description: Transaction amount denominated in min units
                      required:
                        - protocol
                        - walletId
                        - provider
                        - amount
                      title: Ethereum
                    - type: object
                      properties:
                        protocol:
                          type: string
                          enum:
                            - Iota
                        walletId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: Id of the Dfns wallet making the deposit.
                          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                        validator:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{64}$
                        amount:
                          type: string
                          pattern: ^\d+$
                          description: Transaction amount denominated in min units
                        lockedIotas:
                          type: array
                          items:
                            type: string
                            pattern: ^0x[0-9a-fA-F]{64}$
                          minItems: 1
                      required:
                        - protocol
                        - walletId
                        - validator
                        - amount
                      title: Iota
                - type: object
                  properties:
                    externalId:
                      type: string
            dateCreated:
              type: string
              format: date-time
              description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                UTC). When the stake was created."
              example: 2023-04-14T20:41:28.715Z
            protocol:
              type: string
              enum:
                - Iota
            data:
              type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Iota
                    - LockedIota
                stakedObjects:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                      amount:
                        type: string
                      expirationDate:
                        type: string
                    required:
                      - id
                      - amount
                amount:
                  type: string
                validator:
                  type: string
              required:
                - kind
                - amount
                - validator
          required:
            - id
            - walletId
            - status
            - requester
            - requestBody
            - dateCreated
            - protocol
            - data
          title: Iota
        - type: object
          properties:
            id:
              type: string
              minLength: 1
              maxLength: 64
              pattern: ^stk-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
              example: stk-0pmu3-tog2k-fdtn0teii2i4r13f
            provider:
              type: string
              enum:
                - Figment
              description: The staking infrastructure provider used to manage the stake.
            walletId:
              type: string
              minLength: 1
              maxLength: 64
              pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
              description: Wallet id.
              example: wa-5pfuu-9euek-h0odgb6snva8ph3k
            status:
              type: string
              enum:
                - Active
                - Failed
                - Staking
                - Unbonding
                - Unbond
                - Withdrawing
                - Withdrawn
              description: >-
                Status of the stake position.


                | Status | Definition |

                | --- | --- |

                | `Staking` | The stake is being created and funds are being
                delegated to the validator. |

                | `Active` | The stake is active and earning rewards. |

                | `Unbonding` | The stake is in the process of being unbonded
                (cooldown period). |

                | `Unbond` | The stake has been unbonded and is ready for
                withdrawal. |

                | `Withdrawing` | The staked funds are in the process of being
                withdrawn. |

                | `Withdrawn` | The staked funds have been fully withdrawn. |

                | `Failed` | The staking operation failed. |
            requester:
              $ref: "#/components/schemas/Requester"
            requestBody:
              allOf:
                - oneOf:
                    - type: object
                      properties:
                        protocol:
                          type: string
                          enum:
                            - Babylon
                        walletId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: Id of the Dfns wallet making the deposit.
                          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                        provider:
                          type: string
                          enum:
                            - Figment
                          description: Staking Provider
                        amount:
                          type: string
                          pattern: ^\d+$
                          description: Transaction amount denominated in min units
                        duration:
                          type: number
                      required:
                        - protocol
                        - walletId
                        - provider
                        - amount
                        - duration
                      title: Babylon
                    - type: object
                      properties:
                        protocol:
                          type: string
                          enum:
                            - Ethereum
                        walletId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: Id of the Dfns wallet making the deposit.
                          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                        provider:
                          type: string
                          enum:
                            - Figment
                          description: Staking Provider
                        amount:
                          type: string
                          pattern: ^\d+$
                          description: Transaction amount denominated in min units
                      required:
                        - protocol
                        - walletId
                        - provider
                        - amount
                      title: Ethereum
                    - type: object
                      properties:
                        protocol:
                          type: string
                          enum:
                            - Iota
                        walletId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: Id of the Dfns wallet making the deposit.
                          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                        validator:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{64}$
                        amount:
                          type: string
                          pattern: ^\d+$
                          description: Transaction amount denominated in min units
                        lockedIotas:
                          type: array
                          items:
                            type: string
                            pattern: ^0x[0-9a-fA-F]{64}$
                          minItems: 1
                      required:
                        - protocol
                        - walletId
                        - validator
                        - amount
                      title: Iota
                - type: object
                  properties:
                    externalId:
                      type: string
            dateCreated:
              type: string
              format: date-time
              description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                UTC). When the stake was created."
              example: 2023-04-14T20:41:28.715Z
            protocol:
              type: string
              enum:
                - Ethereum
            data:
              type:
                - object
                - "null"
              properties:
                validator:
                  type: object
                  properties:
                    pubkey:
                      type: string
                    withdrawalAddress:
                      type: string
                  required:
                    - pubkey
                    - withdrawalAddress
              required:
                - validator
          required:
            - id
            - walletId
            - status
            - requester
            - requestBody
            - dateCreated
            - protocol
            - data
          title: Ethereum
    StakeAction:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^stka-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          example: stka-567ui-9g9b7-ftgvpstk8qfa71b4
        stakeId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^stk-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          example: stk-0pmu3-tog2k-fdtn0teii2i4r13f
        status:
          type: string
          enum:
            - PendingPolicyApproval
            - InProgress
            - Completed
            - Failed
            - Rejected
          description: >-
            Status of the stake action.


            | Status | Definition |

            | --- | --- |

            | `PendingPolicyApproval` | The action is pending approval due to a
            policy applied to the wallet. |

            | `InProgress` | The action has been initiated and is being
            processed. |

            | `Completed` | The action has been successfully completed. |

            | `Failed` | The action has failed. Check failureReason for details.
            |

            | `Rejected` | The action has been rejected by a policy approval
            action. |
        transactionId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^tx-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Deprecated.
          example: tx-583hu-sp2p7-slvb9nqpa3hd8bus
        signatureId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^sig-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Deprecated.
          example: sig-4sfvl-f4iha-umighfi3hk4t54dr
        transactionHash:
          type: string
          description: Deprecated.
        kind:
          type: string
          enum:
            - Stake
            - Unbond
            - Deposit
            - Withdraw
          description: >-
            The type of staking action being performed.


            | Kind | Definition |

            | --- | --- |

            | `Stake` | Delegate funds to a validator to begin earning rewards.
            |

            | `Unbond` | Initiate the unbonding process to release staked funds
            (subject to cooldown). |

            | `Deposit` | Add additional funds to an existing stake position. |

            | `Withdraw` | Withdraw unbonded funds from the stake position. |
        requester:
          $ref: "#/components/schemas/Requester"
        requestBody:
          anyOf:
            - allOf:
                - oneOf:
                    - type: object
                      properties:
                        protocol:
                          type: string
                          enum:
                            - Babylon
                        walletId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: Id of the Dfns wallet making the deposit.
                          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                        provider:
                          type: string
                          enum:
                            - Figment
                          description: Staking Provider
                        amount:
                          type: string
                          pattern: ^\d+$
                          description: Transaction amount denominated in min units
                        duration:
                          type: number
                      required:
                        - protocol
                        - walletId
                        - provider
                        - amount
                        - duration
                      title: Babylon
                    - type: object
                      properties:
                        protocol:
                          type: string
                          enum:
                            - Ethereum
                        walletId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: Id of the Dfns wallet making the deposit.
                          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                        provider:
                          type: string
                          enum:
                            - Figment
                          description: Staking Provider
                        amount:
                          type: string
                          pattern: ^\d+$
                          description: Transaction amount denominated in min units
                      required:
                        - protocol
                        - walletId
                        - provider
                        - amount
                      title: Ethereum
                    - type: object
                      properties:
                        protocol:
                          type: string
                          enum:
                            - Iota
                        walletId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: Id of the Dfns wallet making the deposit.
                          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                        validator:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{64}$
                        amount:
                          type: string
                          pattern: ^\d+$
                          description: Transaction amount denominated in min units
                        lockedIotas:
                          type: array
                          items:
                            type: string
                            pattern: ^0x[0-9a-fA-F]{64}$
                          minItems: 1
                      required:
                        - protocol
                        - walletId
                        - validator
                        - amount
                      title: Iota
                - type: object
                  properties:
                    externalId:
                      type: string
            - allOf:
                - anyOf:
                    - oneOf:
                        - type: object
                          properties:
                            protocol:
                              type: string
                              enum:
                                - Iota
                            kind:
                              type: string
                              enum:
                                - Withdraw
                            amount:
                              type: string
                              pattern: ^\d+$
                          required:
                            - protocol
                            - kind
                            - amount
                          title: IOTA Withdrawal
                        - type: object
                          properties:
                            protocol:
                              type: string
                              enum:
                                - Iota
                            kind:
                              type: string
                              enum:
                                - Deposit
                            amount:
                              type: string
                              pattern: ^\d+$
                            lockedIotas:
                              type: array
                              items:
                                type: string
                                pattern: ^0x[0-9a-fA-F]{64}$
                          required:
                            - protocol
                            - kind
                            - amount
                          title: IOTA Deposit
                    - type: object
                      properties:
                        protocol:
                          type: string
                          enum:
                            - Ethereum
                        kind:
                          type: string
                          enum:
                            - Withdraw
                      required:
                        - protocol
                        - kind
                      title: Ethereum Withdrawal
                - type: object
                  properties:
                    externalId:
                      type: string
        failureReason:
          type: string
          description: The failure reason, if any. Only present when status is Failed.
        dateCreated:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the stake action was created."
          example: 2023-04-14T20:41:28.715Z
      required:
        - id
        - stakeId
        - status
        - kind
        - requester
        - requestBody
        - dateCreated
    SwapQuote:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^swapQuote-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: ID of the Swap Quote.
          example: swapQuote-7n9p0-cth75-6l74n2sj7u73ooeq
        walletId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Id of the Dfns wallet spending the sourceAsset.
          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
        targetWalletId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: If not provided, the walletId is used as the target wallet. If
            provided, this field is currently required to be the same as
            walletId
          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
        provider:
          type: string
          enum:
            - UniswapX
            - UniswapClassic
          description: Swap provider.
        sourceAsset:
          allOf:
            - oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Native
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - amount
                  title: Native Asset
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Erc20
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - contract
                    - amount
                  title: EVM Fungible Token (ERC-20)
            - type: object
              properties:
                metadata:
                  type: object
                  properties:
                    network:
                      $ref: "#/components/schemas/Network"
                    name:
                      type: string
                    symbol:
                      type: string
                    decimals:
                      type: number
                    tid:
                      type: string
                  required:
                    - network
                    - decimals
              required:
                - metadata
          description: The source asset that will be spent on the swap transaction.
        targetAsset:
          allOf:
            - oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Native
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - amount
                  title: Native Asset
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Erc20
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - contract
                    - amount
                  title: EVM Fungible Token (ERC-20)
            - type: object
              properties:
                metadata:
                  type: object
                  properties:
                    network:
                      $ref: "#/components/schemas/Network"
                    name:
                      type: string
                    symbol:
                      type: string
                    decimals:
                      type: number
                    tid:
                      type: string
                  required:
                    - network
                    - decimals
              required:
                - metadata
          description: The target asset that will be received with the swap transaction.
        slippageBps:
          type: number
          description: The slippage tolerance for this trade in [basis
            point](https://en.wikipedia.org/wiki/Basis_point) (BPS). Slippage
            tolerance defines the maximum price difference you're willing to
            accept during a trade from the estimated quote, ensuring you still
            receive at least a minimum number of tokens if the price shifts. One
            basis point equals one-hundredth of a percentage point, or 0.01%.
        dateCreated:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the quote was created."
        requestBody:
          anyOf:
            - type: object
              properties:
                provider:
                  type: string
                  enum:
                    - UniswapX
                    - UniswapClassic
                  description: Swap provider.
                walletId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the Dfns wallet spending the sourceAsset.
                  example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                targetWalletId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the Dfns wallet receiving the target asset. Currently this
                    value must be the same as the `walletId`.
                  example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                sourceAsset:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Native
                        amount:
                          type: string
                          pattern: ^\d+$
                      required:
                        - kind
                        - amount
                      title: Native Asset
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Erc20
                        contract:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{40}$
                        amount:
                          type: string
                          pattern: ^\d+$
                      required:
                        - kind
                        - contract
                        - amount
                      title: EVM Fungible Token (ERC-20)
                  description: The source asset that will be spent on the Swap transaction,
                    following the same stucture as the [transfer
                    API](https://docs.dfns.co/api-reference/wallets/transfer-asset).
                targetAsset:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Native
                      required:
                        - kind
                      title: Native Asset
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Erc20
                        contract:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{40}$
                      required:
                        - kind
                        - contract
                      title: EVM Fungible Token (ERC-20)
                  description: The target asset that will be received with the Swap transaction,
                    follows the same structure as sourceAsset, but doesn't
                    include the amount.
                slippageBps:
                  type: number
                  description: The slippage tolerance for this trade in [basis
                    point](https://en.wikipedia.org/wiki/Basis_point) (BPS).
                    Slippage tolerance defines the maximum price difference
                    you're willing to accept during a trade from the estimated
                    quote, ensuring you still receive at least a minimum number
                    of tokens if the price shifts. One basis point equals
                    one-hundredth of a percentage point, or 0.01%.
              required:
                - provider
                - walletId
                - sourceAsset
                - targetAsset
                - slippageBps
            - type: object
              properties: {}
          description: The full request used for obtaining this quote.
        requester:
          $ref: "#/components/schemas/Requester"
      required:
        - id
        - walletId
        - provider
        - sourceAsset
        - targetAsset
        - slippageBps
        - dateCreated
        - requestBody
        - requester
      example:
        id: swapQuote-3hgv4-q8tbf-8v2ajmrbmg6m4i9t
        walletId: wa-3l3cj-l8mq7-8q78f9nopq7f1qjv
        targetWalletId: wa-3l3cj-l8mq7-8q78f9nopq7f1qjv
        provider: UniswapClassic
        sourceAsset:
          kind: Native
          amount: "10000000000"
          metadata:
            network: EthereumSepolia
            name: Ethereum
            symbol: SepoliaETH
            decimals: 18
            tid: native:eth
        targetAsset:
          kind: Erc20
          contract: "0xda0be7efd234295395d4204d0df4358339b57b27"
          amount: "6467571553831928182"
          metadata:
            network: EthereumSepolia
            name: Test
            symbol: Test
            decimals: 18
            tid: erc20:0xda0be7efd234295395d4204d0df4358339b57b27
        slippageBps: 100
        dateCreated: 2025-09-11T10:52:15.039Z
        requestBody:
          provider: UniswapClassic
          walletId: wa-3l3cj-l8mq7-8q78f9nopq7f1qjv
          targetWalletId: wa-3l3cj-l8mq7-8q78f9nopq7f1qjv
          sourceAsset:
            kind: Native
            amount: "10000000000"
          targetAsset:
            kind: Erc20
            contract: "0xda0be7efd234295395d4204d0df4358339b57b27"
          slippageBps: 100
        requester:
          userId: us-48r5q-eshfg-9pmr2lo6bmpr4i4i
          tokenId: to-4etah-smoal-9n3rmhul4dpaueg5
    Offer:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^offer-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Offer id.
          example: offer-3ugfu-o8duj-vqu770ckmg7ilhp4
        orgId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^or-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Organization id.
          example: or-30tnh-itmjs-s235s5ontr3r23h2
        walletId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Wallet id.
          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
        network:
          $ref: "#/components/schemas/Network"
        kind:
          type: string
          enum:
            - Native
            - Aip21
            - Asa
            - Coin
            - Cip56
            - Erc20
            - Erc721
            - Erc7984
            - Asset
            - Hip17
            - Hts
            - Sep41
            - Spl
            - Spl2022
            - Snip2
            - Snip3
            - Tep74
            - Trc10
            - Trc20
            - Trc721
            - Cis7
            - Cis2
            - Iou
            - Xls33
        metadata:
          type: object
          properties:
            asset:
              type: object
              properties:
                symbol:
                  type: string
                decimals:
                  type: integer
                  description: Number of decimals used by the asset, see [this
                    guide](https://docs.dfns.co/guides/developers/displaying-balances)
                    for more details.
                verified:
                  type: boolean
                  description: Whether the asset is verified by DFNS as legitimate.
                quotes:
                  type: object
                  properties:
                    EUR: &a53
                      type: number
                    USD: *a53
                  description: Corresponding asset price in USD at the time of transfer.
          required:
            - asset
        txHash:
          type: string
        status:
          type: string
          enum:
            - Pending
            - Accepted
            - Rejected
            - Withdrawn
            - Expired
        from:
          type: string
        to:
          type: string
        value:
          type: string
          pattern: ^\d+(\.\d+)?$
        timestamp:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the offer was created."
          example: 2023-04-14T20:41:28.715Z
        expiresAt:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the offer expires."
          example: 2023-04-14T20:41:28.715Z
        memo:
          type: string
        settlementTransactionId:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^tx-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          description: Transaction id.
          example: tx-583hu-sp2p7-slvb9nqpa3hd8bus
        dateSettled:
          type: string
          format: date-time
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). When the offer was settled."
          example: 2023-04-14T20:41:28.715Z
      required:
        - id
        - orgId
        - walletId
        - network
        - kind
        - metadata
        - txHash
        - status
        - from
        - to
        - value
        - timestamp
    Webhook:
      type: object
      properties:
        id:
          type: string
          description: Webhook ID
        url:
          type: string
          description: Webhook url
        events:
          type: array
          items:
            anyOf:
              - type: string
                enum: &a54
                  - policy.triggered
                  - policy.approval.pending
                  - policy.approval.resolved
                  - key.created
                  - key.deleted
                  - key.delegated
                  - key.exported
                  - wallet.blockchainevent.detected
                  - wallet.created
                  - wallet.activated
                  - wallet.delegated
                  - wallet.exported
                  - wallet.signature.failed
                  - wallet.signature.rejected
                  - wallet.signature.requested
                  - wallet.signature.signed
                  - wallet.transaction.broadcasted
                  - wallet.transaction.confirmed
                  - wallet.transaction.failed
                  - wallet.transaction.rejected
                  - wallet.transaction.requested
                  - wallet.transfer.broadcasted
                  - wallet.transfer.confirmed
                  - wallet.transfer.failed
                  - wallet.transfer.rejected
                  - wallet.transfer.requested
                  - wallet.offer.received
                  - wallet.offer.accepted
                  - wallet.offer.rejected
                  - wallet.offer.withdrawn
                  - wallet.tags.modified
                  - payout.action.required
                description: WebhookEventKind
              - type: string
                enum:
                  - "*"
            description: WebhookEventKind
          description: All events this webhook is subscribed to.
        status:
          type: string
          enum:
            - Enabled
            - Disabled
          description: Webhook status
        description:
          type: string
          description: Short description this webhook's purpose
        dateCreated:
          type: string
          description: Date when webhook was created
        dateUpdated:
          type: string
          description: Date when webhook was last updated
        secret:
          type: string
          description: The secret associated with this webhook, with which webhook
            requests will be signed.
      required:
        - id
        - url
        - events
        - status
        - dateCreated
        - dateUpdated
        - secret
    WebhookEvent:
      type: object
      properties:
        id:
          type: string
          description: WebhookEvent ID
        date:
          type: string
          description: ISO date string when event was raised
        kind:
          type: string
          enum: *a54
          description: Webhook event
        data:
          type: object
          additionalProperties: {}
        status:
          type: string
          description: Status code of the webhook request
        error:
          type: string
          description: Error message if any error happened during the webhook request.
        timestampSent:
          type: integer
          exclusiveMinimum: 0
          description: Unix timestamp when the event was forwarded to the webhook url by
            our servers.
      required:
        - id
        - date
        - kind
        - data
        - status
        - timestampSent
  parameters: {}
paths:
  /agreements/latest-unaccepted:
    get:
      summary: Get Latest Unaccepted Agreement
      tags:
        - Agreements
      security:
        - authenticationToken: []
      description: Get the latest unaccepted agreement for a specific agreement type
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Agreements:Acceptance:Read`: Always required.
      parameters:
        - schema:
            type: string
            enum:
              - PrivacyPolicy
              - TermsAndConditions
              - UniswapTermsOfService
              - UniswapPrivacyPolicy
          required: true
          name: agreementType
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  latestAgreement:
                    $ref: "#/components/schemas/Agreement"
                required:
                  - latestAgreement
  /agreements/{agreementId}/accept:
    post:
      summary: Record Agreement Acceptance
      tags:
        - Agreements
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Record the acceptance of a specific agreement by its ID
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Agreements:Acceptance:Create`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: agreementId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  agreementId:
                    type: string
                  userId:
                    type: string
                  dateAccepted:
                    type: string
                required:
                  - agreementId
                  - userId
                  - dateAccepted
                additionalProperties: false
  /allocations:
    post:
      summary: Create Allocation
      tags:
        - Allocations
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Create a new allocation.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Allocations:Create`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    walletId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Wallet id.
                      example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                    protocol:
                      type: string
                      enum:
                        - 0fns
                      description: Ofns protocol
                    externalId:
                      type: string
                      description: An optional external identifier provided by the client to ensure
                        idempotency and prevent duplicate operations.
                    sourceAsset:
                      type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Erc20
                        contract:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{40}$
                        amount:
                          type: string
                          pattern: ^\d+$
                      required:
                        - kind
                        - contract
                        - amount
                      title: EVM Fungible Token (ERC-20)
                    targetAsset:
                      type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Erc20
                        contract:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{40}$
                        amount:
                          type: string
                          pattern: ^\d+$
                      required:
                        - kind
                        - contract
                        - amount
                      title: EVM Fungible Token (ERC-20)
                    slippageBps:
                      type: number
                      description: The slippage tolerance for this trade in [basis
                        point](https://en.wikipedia.org/wiki/Basis_point) (BPS).
                        Slippage tolerance defines the maximum price difference
                        you're willing to accept during a trade from the
                        estimated quote, ensuring you still receive at least a
                        minimum number of tokens if the price shifts. One basis
                        point equals one-hundredth of a percentage point, or
                        0.01%.
                  required:
                    - walletId
                    - protocol
                    - sourceAsset
                    - targetAsset
                    - slippageBps
                  description: Request body for creating a allocation investment using the 0fns
                    protocol.
                  title: 0fns Allocation Request
              description: Request body for creating a allocation investment. Different
                protocols may have different requirements.
            examples:
              Ofns:
                value:
                  externalId: ext-123
                  sourceAsset:
                    kind: Erc20
                    contract: "0x6b175474e89094c44da98b954eedeac495271d0f"
                    amount: "1000000000000000000"
                  targetAsset:
                    kind: Erc20
                    contract: "0x5d3a536e4d6dbd6114cc1ead35777bab948e3643"
                    amount: "32000000000000000000"
                  slippageBps: 50
                  walletId: wa-4g991-s29to-9hrq4nbuto6ih33b
                  protocol: 0fns
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/Allocation"
                  - type: object
                    properties:
                      actions:
                        type: array
                        items:
                          $ref: "#/components/schemas/AllocationAction"
                    required:
                      - actions
                description: A allocation investment representing funds deposited to earn
                  interest from a DeFi protocol.
    get:
      summary: List Allocations
      tags:
        - Allocations
      security:
        - authenticationToken: []
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Allocations:Read`: Always required.
      parameters:
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/Allocation"
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                required:
                  - items
  /allocations/{allocationId}/actions:
    post:
      summary: Create Allocation Action
      tags:
        - Allocations
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Create a new action for an existing allocation.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Allocations:Update`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Unique identifier for the allocation investment.
          required: true
          description: Unique identifier for the allocation investment.
          name: allocationId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Deposit
                    - Withdraw
                  description: "The type of action being performed on the allocation investment:
                    Deposit to add funds or Withdraw to remove funds."
                externalId:
                  type: string
                  description: An optional external identifier provided by the client to ensure
                    idempotency and prevent duplicate operations.
                sourceAsset:
                  type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Erc20
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - contract
                    - amount
                  title: EVM Fungible Token (ERC-20)
                targetAsset:
                  type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Erc20
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                    amount:
                      type: string
                      pattern: ^\d+$
                  required:
                    - kind
                    - contract
                    - amount
                  title: EVM Fungible Token (ERC-20)
                slippageBps:
                  type: number
                  description: The slippage tolerance for this trade in [basis
                    point](https://en.wikipedia.org/wiki/Basis_point) (BPS).
                    Slippage tolerance defines the maximum price difference
                    you're willing to accept during a trade from the estimated
                    quote, ensuring you still receive at least a minimum number
                    of tokens if the price shifts. One basis point equals
                    one-hundredth of a percentage point, or 0.01%.
              required:
                - kind
                - sourceAsset
                - targetAsset
                - slippageBps
              description: Request body for creating a allocation action. Different protocols
                may have different requirements.
              title: 0fns Allocation Action Request
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/Allocation"
                  - type: object
                    properties:
                      actions:
                        type: array
                        items:
                          $ref: "#/components/schemas/AllocationAction"
                    required:
                      - actions
                description: A allocation investment representing funds deposited to earn
                  interest from a DeFi protocol.
    get:
      summary: List Allocation Actions
      tags:
        - Allocations
      security:
        - authenticationToken: []
      description: Retrieve the list of actions for a specific allocation.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Allocations:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Unique identifier for the allocation investment.
          required: true
          description: Unique identifier for the allocation investment.
          name: allocationId
          in: path
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/AllocationAction"
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                required:
                  - items
  /allocations/{allocationId}:
    get:
      summary: Get Allocation
      tags:
        - Allocations
      security:
        - authenticationToken: []
      description: Retrieve the details of a specific allocation.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Allocations:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Unique identifier for the allocation investment.
          required: true
          description: Unique identifier for the allocation investment.
          name: allocationId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/Allocation"
                  - type: object
                    properties:
                      actions:
                        type: array
                        items:
                          $ref: "#/components/schemas/AllocationAction"
                    required:
                      - actions
                description: A allocation investment representing funds deposited to earn
                  interest from a DeFi protocol.
  /auth/action:
    post:
      summary: Create User Action Signature
      tags:
        - Auth
      security:
        - authenticationToken: []
      description: |
        Completes the user action signing process and provides a signing token that can be used to verify the user intended to perform the action.

        This is the first step of the [User Action Signing flow](http://docs.dfns.co/api-reference/auth/signing-flows).

        The type of credentials used to sign the action is determined by the `kind` field in the nested objects (`firstFactor` and `secondFactor`). Supported credential kinds are:
        * `Fido2`: User action is signed by a user's signing device using `WebAuthn`.
        * `Key`: User action is signed by a user's, or token's, private key.
        * `PasswordProtectedKey`: Login challenge is signed by the decrypted user's private key that was sent during [Create User Action Signature Challenge](https://docs.dfns.co/api-reference/auth/create-user-action-challenge) step.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          No permission required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                challengeIdentifier:
                  type: string
                  description: Temporary authentication token returned by the Create Challenge
                    endpoint.
                firstFactor:
                  $ref: "#/components/schemas/FirstFactorAssertion"
                secondFactor:
                  $ref: "#/components/schemas/SecondFactorAssertion"
              required:
                - challengeIdentifier
                - firstFactor
              additionalProperties: false
            examples:
              Fido2 Passkey credential:
                value:
                  challengeIdentifier: eyJ0e...fQNA
                  firstFactor:
                    kind: Fido2
                    credentialAssertion:
                      credId: c1QEdgnPLJargwzy3cbYKny4Q18u0hr97unXsF3DiE8
                      clientData: eyJ0eXBlIjoid2ViYXV0aG4uZ2V0IiwiY2hhbGxlbmdlIjoiTVdNME1tWTVZVFEwTURSaU56ZGhOVEZoTnpZNU9EUXdOV0k1WlRRNFkyUmhPRFppTkRrM1pUWXpPVEU1T0dZeU1EY3haakJqWXprNE1tUTVZelkxTUEiLCJvcmlnaW4iOiJodHRwczovL2FwcC5kZm5zLm5pbmphIiwiY3Jvc3NPcmlnaW4iOmZhbHNlfQ
                      authenticatorData: WT-zFZUBbJHfBkmhzTlPf49LTn7asLeTQKhm_riCvFgFAAAAAA
                      signature: MEUCIQDJ8G9J1NTjdoKx0yloYw45bpn6fJhcqCoUGiZuOU1IAQIgAtPt7S8FHFYW9OMHh3S5FVAxk-lhli-2lX22bBNSDog
                      userHandle: dXMtMmJhMGgtbHZwMnEtOHYxODYwcGNqMWJoNWlyaQ
              Key Credential:
                value:
                  challengeIdentifier: eyJ0e...fQNA
                  firstFactor:
                    kind: Key
                    credentialAssertion:
                      credId: 6Ca6tAOFTx2odyJBnCoRO-gPvfpfy0EOoOcEaxfxIOk
                      clientData: eyJ0eXBlIjoia2V5LmdldCIsImNoYWxsZW5nZSI6Ik1XTTBNbVk1WVRRME1EUmlOemRoTlRGaE56WTVPRFF3TldJNVpUUTRZMlJoT0RaaU5EazNaVFl6T1RFNU9HWXlNRGN4WmpCall6azRNbVE1WXpZMU1BIiwib3JpZ2luIjoiaHR0cHM6Ly9hcHAuZGZucy5uaW5qYSIsImNyb3NzT3JpZ2luIjpmYWxzZX0
                      signature: owt8WtpJT_6eEuw4UwdIX2HMMwENgk0SrI-RoCMPhx_9YMVpNKJGmJfHUusf_R1Mor9a_hinQVuXj4_XRdeJFSY2AySXSUk
              Password-protected Key Credential:
                value:
                  challengeIdentifier: eyJ0e...fQNA
                  firstFactor:
                    kind: PasswordProtectedKey
                    credentialAssertion:
                      credId: 6Ca6tAOFTx2odyJBnCoRO-gPvfpfy0EOoOcEaxfxIOk
                      clientData: eyJ0eXBlIjoia2V5LmdldCIsImNoYWxsZW5nZSI6Ik1XTTBNbVk1WVRRME1EUmlOemRoTlRGaE56WTVPRFF3TldJNVpUUTRZMlJoT0RaaU5EazNaVFl6T1RFNU9HWXlNRGN4WmpCall6azRNbVE1WXpZMU1BIiwib3JpZ2luIjoiaHR0cHM6Ly9hcHAuZGZucy5uaW5qYSIsImNyb3NzT3JpZ2luIjpmYWxzZX0
                      signature: owt8WtpJT_6eEuw4UwdIX2HMMwENgk0SrI-RoCMPhx_9YMVpNKJGmJfHUusf_R1Mor9a_hinQVuXj4_XRdeJFSY2AySXSUk
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  userAction:
                    type: string
                required:
                  - userAction
                example:
                  userAction: eyJ0eX...bzrQakA
  /auth/action/init:
    post:
      summary: Create User Action Challenge
      tags:
        - Auth
      security:
        - authenticationToken: []
      description: >-
        Starts a user action signing session, returning a challenge that will be
        used to verify the user's intent to perform an action.
          
          This is the first step of the [User Action Signing flow](http://docs.dfns.co/api-reference/auth/signing-flows).
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          No permission required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                userActionServerKind:
                  type: string
                  enum:
                    - Api
                  description: Optional indicator of which Dfns service being called.
                userActionHttpMethod:
                  type: string
                  enum:
                    - POST
                    - PUT
                    - DELETE
                    - GET
                  description: The HTTP method that will be used to make the request that is being
                    signed.
                userActionHttpPath:
                  type: string
                  minLength: 1
                  description: The path of the request that is being signed.
                userActionPayload:
                  type: string
                  description: The JSON-encoded body of the request that is being signed.
              required:
                - userActionHttpMethod
                - userActionHttpPath
                - userActionPayload
              additionalProperties: false
              example:
                userActionPayload: '{"name": "My PAT","publicKey": "-----BEGIN PUBLIC
                  KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZQt0YI2hdsFNmKJesSkAHldyPLIV\nFLI/AhQ5eGasA7jU8tEXOb6nGvxRaTIXrgZ2NPdk78O8zMqz5u9AekH8jA==\n-----END
                  PUBLIC KEY-----","daysValid": 365,"permissionId":
                  "pm-delaw-avoca-v16r37fpp8koqebc"}'
                userActionHttpMethod: POST
                userActionHttpPath: /auth/pats
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  challenge:
                    type: string
                    description: Challenge (string) to be signed by the requester with his private
                      key.
                  challengeIdentifier:
                    type: string
                    description: A JWT that identifies the signing session.
                  rp:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                    required:
                      - id
                      - name
                    description: Deprecated. Should not be used.
                  supportedCredentialKinds:
                    type: array
                    items:
                      type: object
                      properties:
                        kind:
                          $ref: "#/components/schemas/CredentialKind"
                        factor:
                          type: string
                          enum:
                            - first
                            - second
                            - either
                          description: Indicates if the credential can be used as a first factor, second
                            factor, or either; can be `first`, `second`, or
                            `either`.
                        requiresSecondFactor:
                          type: boolean
                          description: When true indicates a second factor credential is required if the
                            credential is used as a first factor.
                      required:
                        - kind
                        - factor
                        - requiresSecondFactor
                    description: Identifies the kind of credentials that can be used to sign the
                      user action.
                  userVerification:
                    type: string
                    enum:
                      - required
                      - preferred
                      - discouraged
                    description: >
                      Value indicating if the user should be prompted for a
                      second factor. Can be one of the following values:

                      * required to indicate the user must be prompted for their
                      pin, biometrics, or another second factor option

                      * preferred to indicate the user should be prompted for a
                      second factor if it is supported

                      * discouraged to indicate the user should not be prompted
                      for their second factor unless the device requires it
                  attestation:
                    type: string
                    enum:
                      - none
                      - indirect
                      - direct
                      - enterprise
                    description: >
                      Identifies the information needed to verify the user's
                      signing certificate; can be one of the following:

                      * none: indicates no attestation data is required

                      * indirect: indicates the attestation data should be
                      given, but that it can be generated using an Anonymization
                      CA

                      * direct: indicates the attestation data must be given and
                      should be generated by the authenticator

                      * enterprise: indicates the attestation data should
                      include information to uniquely identify the user's device
                  allowCredentials:
                    type: object
                    properties:
                      key:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - public-key
                              description: Is always `public-key`.
                            id:
                              type: string
                              minLength: 1
                              maxLength: 64
                              pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                              description: ID that identifies the credential.
                              example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                          required:
                            - type
                            - id
                        description: List of keys that the user can use to sign the user action.
                      passwordProtectedKey:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - public-key
                              description: Is always `public-key`.
                            id:
                              type: string
                              minLength: 1
                              maxLength: 64
                              pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                              description: ID that identifies the credential.
                              example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                            encryptedPrivateKey:
                              type: string
                              description: Encrypted Private Key. Only the user knows the password to decrypt
                                it and have access to the private key.
                          required:
                            - type
                            - id
                            - encryptedPrivateKey
                        description: List of password protected keys that the user can use to sign the
                          login challenge.
                      webauthn:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - public-key
                              description: Is always `public-key`.
                            id:
                              type: string
                              minLength: 1
                              maxLength: 64
                              pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                              description: ID that identifies the credential.
                              example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                          required:
                            - type
                            - id
                        description: List of WebAuthn credentials that the user can use to sign the user
                          action.
                    required:
                      - key
                      - webauthn
                    description: List of credentials that the user can use to sign the user action.
                  externalAuthenticationUrl:
                    type: string
                    description: Optional url containing a secret value that can be used to enable
                      cross device/origin signing.
                required:
                  - challenge
                  - challengeIdentifier
                  - supportedCredentialKinds
                  - userVerification
                  - attestation
                  - allowCredentials
                  - externalAuthenticationUrl
                example: &a55
                  supportedCredentialKinds:
                    - kind: Fido2
                      factor: first
                      requiresSecondFactor: true
                  challenge: MWM0MmY5YTQ0MDRiNzdhNTFhNzY5ODQwNWI5ZTQ4Y2RhODZiNDk3ZTYzOTE5OGYyMDcxZjBjYzk4MmQ5YzY1MA
                  challengeIdentifier: eyJ0e...fQNA
                  userVerification: required
                  attestation: direct
                  externalAuthenticationUrl: ""
                  allowCredentials:
                    key: []
                    passwordProtectedKey:
                      - type: public-key
                        id: hIjkx5PqVxz8wbtuvOh2UYHEY1QXS8mMfKeEDGt-0Fo=
                        encryptedPrivateKey: LsXVskHYqqrKKxBC9KvqStLEmxak5Y7NaboDDlRSIW7evUJpQTT1AYvx0EsFskmriaVb3AjTCGEv7gqUKokml1USL7+dVmrUVhV+cNWtS5AorvRuZr1FMGVKFkW1pKJhFNH2e2O661UhpyXsRXzcmksA7ZN/V37ZK7ITue0gs6I=
                    webauthn:
                      - type: public-key
                        id: c1QEdgnPLJargwzy3cbYKny4Q18u0hr97unXsF3DiE8
  /auth/action/logs:
    get:
      summary: List Audit Logs
      tags:
        - Auth
      security:
        - authenticationToken: []
      description: >2+
        
          Gets all signature events which have occurred in the over the timeframe.  The max range the API supports is 7 days.

        StartTime and EndTime are URL-encoded UTC ISO timestamps:    

        `startTime=2025-08-29T02%3A46%3A40Z`   

        `endTime=2025-09-01T02%3A46%3A40Z`   


        An additional optional query parameter, `userId` can be specified to
        filter down events to a particular user. The API will return results
        found in CSV format.



        Dfns maintains a script which can be used for audit log signature
        validation: [WebAuthn Signature
        Verifier](https://github.com/dfns/example-scripts/tree/m/python/utils)

      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Auth:Logs:Read`: Always required.
      parameters:
        - schema:
            type: string
            format: date-time
            description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
              UTC). Start of the range."
          required: true
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). Start of the range."
          name: startTime
          in: query
        - schema:
            type: string
            format: date-time
            description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
              UTC). End of the range. The max range the API supports is 7 days."
          required: true
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). End of the range. The max range the API supports is 7 days."
          name: endTime
          in: query
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Provide a user id to list events from that particular user only.
          required: false
          description: Provide a user id to list events from that particular user only.
          name: userId
          in: query
      responses:
        "200":
          description: Success
          content:
            text/csv:
              schema:
                type: string
                description: "List of event in CSV format. Content contains:\ 

                  \       \ 

                  | Field | Type | description |

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

                  | Date Performed | date-time | When the action was performed |

                  | Audit Log ID | log id | id of the log (to use with [Get
                  Audit
                  Log](https://docs.dfns.co/api-reference/auth/get-audit-log)) |

                  | User ID | user id | User id who performed the action |

                  | Primary Credential ID | credential id | Credential used by
                  the user |

                  | Action Path\tSummary | string | Summary of this action |


                  Check out '[Get Audit
                  Log](https://docs.dfns.co/api-reference/auth/get-audit-log)'
                  response for more details about those fields.

                  \    "
                example: |-
                  Date Performed,Audit Log ID,User ID,Username,Primary Credential ID,Action Path,Summary
                  2025-10-09T13:23:05.134Z,uj-4vs1l-5012b-9589s12d57t26u8,us-4ovh4-6a0h8-81d2df5e2u8l6djt,my-user@my-company.com,cr-7bfqk-89uag-8nle1s2d3f8e6dvd1mk,/wallets/wa-3l6ap-r4cbt-8js1e2f3s8u5242c8,Update wallet wa-3l6ap-r4cbt-8j09mhse1f3s5e242c8.
  /auth/action/logs/{id}:
    get:
      summary: Get Audit Log
      tags:
        - Auth
      security:
        - authenticationToken: []
      description: "

        Gets detailed information for a particular audit log. Specifically, the
        API returns the action performed, as well as the `firstFactorCredential`
        in which you will find the signature information required to validate
        it.\ 


        Dfns maintains a script which can be used for audit log signature
        validation: [WebAuthn Signature
        Verifier](https://github.com/dfns/example-scripts/tree/m/python/utils)

        \  "
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Auth:Logs:Read`: Always required.
      parameters:
        - schema:
            anyOf:
              - type: string
                minLength: 1
                maxLength: 64
                pattern: ^uj-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                description: ""
                example: uj-22lhj-mp2ir-88at3r4cufpis60i
              - type: string
                minLength: 1
                maxLength: 64
                pattern: ^to-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                description: ""
                example: to-202a0-cdo33-o65mbt6q758lvvnt
            description: Log id you need information about.
          required: true
          description: Log id you need information about.
          name: id
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AuditLog"
  /auth/apps:
    get:
      summary: List Applications
      tags:
        - Auth
      security:
        - authenticationToken: []
      deprecated: true
      description: >-
        <Warning>
          Applications are deprecated and will be removed in a future release. See details [here](https://docs.dfns.co/developers/guides/applications-deprecation).
          </Warning>
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          No permission required.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        appId:
                          type: string
                        kind:
                          type: string
                          enum:
                            - ServerSideApplication
                            - ClientSideApplication
                        orgId:
                          type: string
                        expectedRpId:
                          type: string
                        name:
                          type: string
                        isActive:
                          type: boolean
                        expectedOrigin:
                          type: string
                        permissionAssignments:
                          type: array
                          items:
                            type: object
                            properties:
                              permissionName:
                                type: string
                              permissionId:
                                type: string
                              assignmentId:
                                type: string
                              operations:
                                type: array
                                items:
                                  type: string
                            required:
                              - permissionName
                              - permissionId
                              - assignmentId
                        accessTokens:
                          type: array
                          items:
                            $ref: "#/components/schemas/PersonalAccessToken"
                      required:
                        - appId
                        - kind
                        - orgId
                        - name
                        - isActive
                        - permissionAssignments
                        - accessTokens
                required:
                  - items
  /auth/apps/{appId}:
    get:
      summary: Get Application
      tags:
        - Auth
      security:
        - authenticationToken: []
      deprecated: true
      description: >-
        <Warning>
          Applications are deprecated and will be removed in a future release. See details [here](https://docs.dfns.co/developers/guides/applications-deprecation).
          </Warning>
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          No permission required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: appId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  appId:
                    type: string
                  kind:
                    type: string
                    enum:
                      - ServerSideApplication
                      - ClientSideApplication
                  orgId:
                    type: string
                  expectedRpId:
                    type: string
                  name:
                    type: string
                  isActive:
                    type: boolean
                  expectedOrigin:
                    type: string
                  permissionAssignments:
                    type: array
                    items:
                      type: object
                      properties:
                        permissionName:
                          type: string
                        permissionId:
                          type: string
                        assignmentId:
                          type: string
                        operations:
                          type: array
                          items:
                            type: string
                      required:
                        - permissionName
                        - permissionId
                        - assignmentId
                  accessTokens:
                    type: array
                    items:
                      $ref: "#/components/schemas/PersonalAccessToken"
                required:
                  - appId
                  - kind
                  - orgId
                  - name
                  - isActive
                  - permissionAssignments
                  - accessTokens
  /auth/credentials:
    post:
      summary: Create Credential
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: |-
        Part of the flow [Create Credential Regular flow](https://docs.dfns.co/api-reference/auth/credentials#regular-flow).

        Adds a new credential to a user's account. See [Credential Kinds](https://docs.dfns.co/api-reference/auth/credentials#credential-kinds) for all supported credential types.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ❌ Personal Access Token not allowed    
          ❌ Service Account

          #### Required Permissions

          No permission required.
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: "#/components/schemas/Fido2Attestation"
                - $ref: "#/components/schemas/KeyAttestation"
                - $ref: "#/components/schemas/PasswordProtectedKeyAttestation"
                - $ref: "#/components/schemas/RecoveryKeyAttestation"
                - $ref: "#/components/schemas/PasswordAttestation"
                - $ref: "#/components/schemas/TotpAttestation"
              discriminator:
                propertyName: credentialKind
                mapping:
                  Fido2: "#/components/schemas/Fido2Attestation"
                  Key: "#/components/schemas/KeyAttestation"
                  PasswordProtectedKey: "#/components/schemas/PasswordProtectedKeyAttestation"
                  RecoveryKey: "#/components/schemas/RecoveryKeyAttestation"
                  Password: "#/components/schemas/PasswordAttestation"
                  Totp: "#/components/schemas/TotpAttestation"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Credential"
    get:
      summary: List Credentials
      tags:
        - Auth
      security:
        - authenticationToken: []
      description: List all credentials for a user.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ❌ Service Account

          #### Required Permissions

          No permission required.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/Credential"
                required:
                  - items
  /auth/credentials/init:
    post:
      summary: Create Credential Challenge
      tags:
        - Auth
      security:
        - authenticationToken: []
      description: >-
        Part of the flow [Create Credential Regular
        flow](https://docs.dfns.co/api-reference/auth/credentials#regular-flow).
          
          Starts a create user credential session, returning a challenge that will be used to verify the user's identity.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ❌ Personal Access Token not allowed    
          ❌ Service Account

          #### Required Permissions

          No permission required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                kind:
                  $ref: "#/components/schemas/CredentialKind"
              required:
                - kind
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      kind:
                        type: string
                        enum:
                          - Fido2
                      user:
                        type: object
                        properties:
                          id:
                            type: string
                          displayName:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - displayName
                          - name
                      challengeIdentifier:
                        type: string
                      challenge:
                        type: string
                      rp:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - name
                      authenticatorSelection:
                        type: object
                        properties:
                          authenticatorAttachment:
                            type: string
                            enum:
                              - platform
                              - cross-platform
                          residentKey:
                            type: string
                            enum:
                              - required
                              - preferred
                              - discouraged
                          requireResidentKey:
                            type: boolean
                          userVerification:
                            type: string
                            enum:
                              - required
                              - preferred
                              - discouraged
                            description: >
                              Value indicating if the user should be prompted
                              for a second factor. Can be one of the following
                              values:

                              * required to indicate the user must be prompted
                              for their pin, biometrics, or another second
                              factor option

                              * preferred to indicate the user should be
                              prompted for a second factor if it is supported

                              * discouraged to indicate the user should not be
                              prompted for their second factor unless the device
                              requires it
                        required:
                          - residentKey
                          - requireResidentKey
                          - userVerification
                      attestation:
                        type: string
                        enum:
                          - none
                          - indirect
                          - direct
                          - enterprise
                        description: >
                          Identifies the information needed to verify the user's
                          signing certificate; can be one of the following:

                          * none: indicates no attestation data is required

                          * indirect: indicates the attestation data should be
                          given, but that it can be generated using an
                          Anonymization CA

                          * direct: indicates the attestation data must be given
                          and should be generated by the authenticator

                          * enterprise: indicates the attestation data should
                          include information to uniquely identify the user's
                          device
                      pubKeyCredParams:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - public-key
                            alg:
                              type: number
                          required:
                            - type
                            - alg
                      excludeCredentials:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - public-key
                              description: Is always `public-key`.
                            id:
                              type: string
                              minLength: 1
                              maxLength: 64
                              pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                              description: ID that identifies the credential.
                              example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                          required:
                            - type
                            - id
                      temporaryAuthenticationToken:
                        type: string
                        description: "@deprecated use challengeIdentifier instead"
                    required:
                      - kind
                      - user
                      - challengeIdentifier
                      - challenge
                      - authenticatorSelection
                      - attestation
                      - pubKeyCredParams
                      - excludeCredentials
                      - temporaryAuthenticationToken
                    description: Fido2 Credential, also known as Passkeys or WebauthN credential.
                    title: Fido2/Passkeys
                  - type: object
                    properties:
                      kind:
                        type: string
                        enum:
                          - Key
                      user:
                        type: object
                        properties:
                          id:
                            type: string
                          displayName:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - displayName
                          - name
                      challengeIdentifier:
                        type: string
                      challenge:
                        type: string
                      rp:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - name
                      attestation:
                        type: string
                        enum:
                          - none
                          - indirect
                          - direct
                          - enterprise
                        description: >
                          Identifies the information needed to verify the user's
                          signing certificate; can be one of the following:

                          * none: indicates no attestation data is required

                          * indirect: indicates the attestation data should be
                          given, but that it can be generated using an
                          Anonymization CA

                          * direct: indicates the attestation data must be given
                          and should be generated by the authenticator

                          * enterprise: indicates the attestation data should
                          include information to uniquely identify the user's
                          device
                      pubKeyCredParams:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - public-key
                            alg:
                              type: number
                          required:
                            - type
                            - alg
                      temporaryAuthenticationToken:
                        type: string
                        description: "@deprecated use challengeIdentifier instead"
                    required:
                      - kind
                      - user
                      - challengeIdentifier
                      - challenge
                      - attestation
                      - pubKeyCredParams
                      - temporaryAuthenticationToken
                    description: '"raw" public/private keypair.'
                    title: Public/Private key pair
                  - type: object
                    properties:
                      kind:
                        type: string
                        enum:
                          - PasswordProtectedKey
                      user:
                        type: object
                        properties:
                          id:
                            type: string
                          displayName:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - displayName
                          - name
                      challengeIdentifier:
                        type: string
                      challenge:
                        type: string
                      rp:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - name
                      attestation:
                        type: string
                        enum:
                          - none
                          - indirect
                          - direct
                          - enterprise
                        description: >
                          Identifies the information needed to verify the user's
                          signing certificate; can be one of the following:

                          * none: indicates no attestation data is required

                          * indirect: indicates the attestation data should be
                          given, but that it can be generated using an
                          Anonymization CA

                          * direct: indicates the attestation data must be given
                          and should be generated by the authenticator

                          * enterprise: indicates the attestation data should
                          include information to uniquely identify the user's
                          device
                      pubKeyCredParams:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - public-key
                            alg:
                              type: number
                          required:
                            - type
                            - alg
                      temporaryAuthenticationToken:
                        type: string
                        description: "@deprecated use challengeIdentifier instead"
                    required:
                      - kind
                      - user
                      - challengeIdentifier
                      - challenge
                      - attestation
                      - pubKeyCredParams
                      - temporaryAuthenticationToken
                    description: "Encrypted private key. "
                    title: Password-protected Key
                  - type: object
                    properties:
                      kind:
                        type: string
                        enum:
                          - RecoveryKey
                      user:
                        type: object
                        properties:
                          id:
                            type: string
                          displayName:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - displayName
                          - name
                      challengeIdentifier:
                        type: string
                      challenge:
                        type: string
                      rp:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - name
                      attestation:
                        type: string
                        enum:
                          - none
                          - indirect
                          - direct
                          - enterprise
                        description: >
                          Identifies the information needed to verify the user's
                          signing certificate; can be one of the following:

                          * none: indicates no attestation data is required

                          * indirect: indicates the attestation data should be
                          given, but that it can be generated using an
                          Anonymization CA

                          * direct: indicates the attestation data must be given
                          and should be generated by the authenticator

                          * enterprise: indicates the attestation data should
                          include information to uniquely identify the user's
                          device
                      pubKeyCredParams:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - public-key
                            alg:
                              type: number
                          required:
                            - type
                            - alg
                      temporaryAuthenticationToken:
                        type: string
                        description: "@deprecated use challengeIdentifier instead"
                    required:
                      - kind
                      - user
                      - challengeIdentifier
                      - challenge
                      - attestation
                      - pubKeyCredParams
                      - temporaryAuthenticationToken
                    description: "Use an recovery key. "
                    title: Recovery Credentials
                  - type: object
                    properties:
                      kind:
                        type: string
                        enum:
                          - Password
                      user:
                        type: object
                        properties:
                          id:
                            type: string
                          displayName:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - displayName
                          - name
                      challengeIdentifier:
                        type: string
                      rp:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - name
                      temporaryAuthenticationToken:
                        type: string
                        description: "@deprecated use challengeIdentifier instead"
                    required:
                      - kind
                      - user
                      - challengeIdentifier
                      - temporaryAuthenticationToken
                    description: Not supported, will be removed in a future release.
                    title: <Deprecated> Password
                  - type: object
                    properties:
                      kind:
                        type: string
                        enum:
                          - Totp
                      user:
                        type: object
                        properties:
                          id:
                            type: string
                          displayName:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - displayName
                          - name
                      challengeIdentifier:
                        type: string
                      rp:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - name
                      otpUrl:
                        type: string
                      temporaryAuthenticationToken:
                        type: string
                        description: "@deprecated use challengeIdentifier instead"
                    required:
                      - kind
                      - user
                      - challengeIdentifier
                      - otpUrl
                      - temporaryAuthenticationToken
                    description: Not supported, will be removed in a future release.
                    title: <Deprecated> TOTP
  /auth/credentials/activate:
    put:
      summary: Activate Credential
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Activates a credential that was previously deactivated. If the
        credential is already activated no action is taken.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ❌ Personal Access Token not allowed    
          ❌ Service Account

          #### Required Permissions

          No permission required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                credentialUuid:
                  type: string
                  minLength: 1
              required:
                - credentialUuid
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
  /auth/credentials/deactivate:
    put:
      summary: Deactivate Credential
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Deactivates a credential that was previously active. If the
        credential is already deactivated no action is taken.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ❌ Personal Access Token not allowed    
          ❌ Service Account

          #### Required Permissions

          No permission required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                credentialUuid:
                  type: string
                  minLength: 1
              required:
                - credentialUuid
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
  /auth/credentials/code:
    post:
      summary: Create Credential Code
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: |-
        Part of the [Create Credential With Code flow](https://docs.dfns.co/api-reference/auth/credentials#create-credential-with-code-flow).

        Creates a one-time-code that can then be used to create a new credential from a place you don't have access to one of your existing credential.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ❌ Personal Access Token not allowed    
          ❌ Service Account

          #### Required Permissions

          No permission required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                expiration:
                  anyOf:
                    - type: string
                      format: date-time
                    - type: integer
                      exclusiveMinimum: 0
                  description: Code expiration, as an ISO-8601 datetime string or a unix timestamp
              required:
                - expiration
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  expiration:
                    type: string
                required:
                  - code
                  - expiration
  /auth/credentials/code/init:
    post:
      summary: Create Credential Challenge With Code
      tags:
        - Auth
      security:
        - {}
      description: |
        Part of the flow [Create Credential With Code](https://docs.dfns.co/api-reference/auth/credentials#create-credential-with-code-flow).

        Creates a credential challenge using a one time code-time-code. This challenge must then be signed by the new credential, before finalizing the flow.
      x-mint:
        content: |-
          #### Authentication

          No authentication required.

          #### Required Permissions

          No authentication required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                credentialKind:
                  type: string
                  enum:
                    - Fido2
                    - Key
                    - Password
                    - Totp
                    - RecoveryKey
                    - PasswordProtectedKey
                code:
                  type: string
                  minLength: 1
              required:
                - credentialKind
                - code
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      kind:
                        type: string
                        enum:
                          - Fido2
                      user:
                        type: object
                        properties:
                          id:
                            type: string
                          displayName:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - displayName
                          - name
                      challengeIdentifier:
                        type: string
                      challenge:
                        type: string
                      rp:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - name
                      authenticatorSelection:
                        type: object
                        properties:
                          authenticatorAttachment:
                            type: string
                            enum:
                              - platform
                              - cross-platform
                          residentKey:
                            type: string
                            enum:
                              - required
                              - preferred
                              - discouraged
                          requireResidentKey:
                            type: boolean
                          userVerification:
                            type: string
                            enum:
                              - required
                              - preferred
                              - discouraged
                            description: >
                              Value indicating if the user should be prompted
                              for a second factor. Can be one of the following
                              values:

                              * required to indicate the user must be prompted
                              for their pin, biometrics, or another second
                              factor option

                              * preferred to indicate the user should be
                              prompted for a second factor if it is supported

                              * discouraged to indicate the user should not be
                              prompted for their second factor unless the device
                              requires it
                        required:
                          - residentKey
                          - requireResidentKey
                          - userVerification
                      attestation:
                        type: string
                        enum:
                          - none
                          - indirect
                          - direct
                          - enterprise
                        description: >
                          Identifies the information needed to verify the user's
                          signing certificate; can be one of the following:

                          * none: indicates no attestation data is required

                          * indirect: indicates the attestation data should be
                          given, but that it can be generated using an
                          Anonymization CA

                          * direct: indicates the attestation data must be given
                          and should be generated by the authenticator

                          * enterprise: indicates the attestation data should
                          include information to uniquely identify the user's
                          device
                      pubKeyCredParams:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - public-key
                            alg:
                              type: number
                          required:
                            - type
                            - alg
                      excludeCredentials:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - public-key
                              description: Is always `public-key`.
                            id:
                              type: string
                              minLength: 1
                              maxLength: 64
                              pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                              description: ID that identifies the credential.
                              example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                          required:
                            - type
                            - id
                      temporaryAuthenticationToken:
                        type: string
                        description: "@deprecated use challengeIdentifier instead"
                    required:
                      - kind
                      - user
                      - challengeIdentifier
                      - challenge
                      - authenticatorSelection
                      - attestation
                      - pubKeyCredParams
                      - excludeCredentials
                      - temporaryAuthenticationToken
                    description: Fido2 Credential, also known as Passkeys or WebauthN credential.
                    title: Fido2/Passkeys
                  - type: object
                    properties:
                      kind:
                        type: string
                        enum:
                          - Key
                      user:
                        type: object
                        properties:
                          id:
                            type: string
                          displayName:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - displayName
                          - name
                      challengeIdentifier:
                        type: string
                      challenge:
                        type: string
                      rp:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - name
                      attestation:
                        type: string
                        enum:
                          - none
                          - indirect
                          - direct
                          - enterprise
                        description: >
                          Identifies the information needed to verify the user's
                          signing certificate; can be one of the following:

                          * none: indicates no attestation data is required

                          * indirect: indicates the attestation data should be
                          given, but that it can be generated using an
                          Anonymization CA

                          * direct: indicates the attestation data must be given
                          and should be generated by the authenticator

                          * enterprise: indicates the attestation data should
                          include information to uniquely identify the user's
                          device
                      pubKeyCredParams:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - public-key
                            alg:
                              type: number
                          required:
                            - type
                            - alg
                      temporaryAuthenticationToken:
                        type: string
                        description: "@deprecated use challengeIdentifier instead"
                    required:
                      - kind
                      - user
                      - challengeIdentifier
                      - challenge
                      - attestation
                      - pubKeyCredParams
                      - temporaryAuthenticationToken
                    description: '"raw" public/private keypair.'
                    title: Public/Private key pair
                  - type: object
                    properties:
                      kind:
                        type: string
                        enum:
                          - PasswordProtectedKey
                      user:
                        type: object
                        properties:
                          id:
                            type: string
                          displayName:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - displayName
                          - name
                      challengeIdentifier:
                        type: string
                      challenge:
                        type: string
                      rp:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - name
                      attestation:
                        type: string
                        enum:
                          - none
                          - indirect
                          - direct
                          - enterprise
                        description: >
                          Identifies the information needed to verify the user's
                          signing certificate; can be one of the following:

                          * none: indicates no attestation data is required

                          * indirect: indicates the attestation data should be
                          given, but that it can be generated using an
                          Anonymization CA

                          * direct: indicates the attestation data must be given
                          and should be generated by the authenticator

                          * enterprise: indicates the attestation data should
                          include information to uniquely identify the user's
                          device
                      pubKeyCredParams:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - public-key
                            alg:
                              type: number
                          required:
                            - type
                            - alg
                      temporaryAuthenticationToken:
                        type: string
                        description: "@deprecated use challengeIdentifier instead"
                    required:
                      - kind
                      - user
                      - challengeIdentifier
                      - challenge
                      - attestation
                      - pubKeyCredParams
                      - temporaryAuthenticationToken
                    description: "Encrypted private key. "
                    title: Password-protected Key
                  - type: object
                    properties:
                      kind:
                        type: string
                        enum:
                          - RecoveryKey
                      user:
                        type: object
                        properties:
                          id:
                            type: string
                          displayName:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - displayName
                          - name
                      challengeIdentifier:
                        type: string
                      challenge:
                        type: string
                      rp:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - name
                      attestation:
                        type: string
                        enum:
                          - none
                          - indirect
                          - direct
                          - enterprise
                        description: >
                          Identifies the information needed to verify the user's
                          signing certificate; can be one of the following:

                          * none: indicates no attestation data is required

                          * indirect: indicates the attestation data should be
                          given, but that it can be generated using an
                          Anonymization CA

                          * direct: indicates the attestation data must be given
                          and should be generated by the authenticator

                          * enterprise: indicates the attestation data should
                          include information to uniquely identify the user's
                          device
                      pubKeyCredParams:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - public-key
                            alg:
                              type: number
                          required:
                            - type
                            - alg
                      temporaryAuthenticationToken:
                        type: string
                        description: "@deprecated use challengeIdentifier instead"
                    required:
                      - kind
                      - user
                      - challengeIdentifier
                      - challenge
                      - attestation
                      - pubKeyCredParams
                      - temporaryAuthenticationToken
                    description: "Use an recovery key. "
                    title: Recovery Credentials
                  - type: object
                    properties:
                      kind:
                        type: string
                        enum:
                          - Password
                      user:
                        type: object
                        properties:
                          id:
                            type: string
                          displayName:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - displayName
                          - name
                      challengeIdentifier:
                        type: string
                      rp:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - name
                      temporaryAuthenticationToken:
                        type: string
                        description: "@deprecated use challengeIdentifier instead"
                    required:
                      - kind
                      - user
                      - challengeIdentifier
                      - temporaryAuthenticationToken
                    description: Not supported, will be removed in a future release.
                    title: <Deprecated> Password
                  - type: object
                    properties:
                      kind:
                        type: string
                        enum:
                          - Totp
                      user:
                        type: object
                        properties:
                          id:
                            type: string
                          displayName:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - displayName
                          - name
                      challengeIdentifier:
                        type: string
                      rp:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                        required:
                          - id
                          - name
                      otpUrl:
                        type: string
                      temporaryAuthenticationToken:
                        type: string
                        description: "@deprecated use challengeIdentifier instead"
                    required:
                      - kind
                      - user
                      - challengeIdentifier
                      - otpUrl
                      - temporaryAuthenticationToken
                    description: Not supported, will be removed in a future release.
                    title: <Deprecated> TOTP
  /auth/credentials/code/verify:
    post:
      summary: Create Credential With Code
      tags:
        - Auth
      security:
        - {}
      description: "Finalizes the flow [Create Credential With
        Code](https://docs.dfns.co/api-reference/auth/credentials#create-creden\
        tial-with-code-flow).

        \ \ 

        Adds a new credential to a user's account. This endpoint is similar to
        the [Create
        Credential](https://docs.dfns.co/api-reference/auth/create-credential)
        endpoint, except:

        * it does not need the user to be authenticated

        * it does not need user action signing

        * it will only work with the challenge gotten from the [Create
        Credential Challenge With
        Code](https://docs.dfns.co/api-reference/auth/create-credential-challen\
        ge-with-code) endpoint


        \  "
      x-mint:
        content: |-
          #### Authentication

          No authentication required.

          #### Required Permissions

          No authentication required.
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: "#/components/schemas/Fido2Attestation"
                - $ref: "#/components/schemas/KeyAttestation"
                - $ref: "#/components/schemas/PasswordProtectedKeyAttestation"
                - $ref: "#/components/schemas/RecoveryKeyAttestation"
                - $ref: "#/components/schemas/PasswordAttestation"
                - $ref: "#/components/schemas/TotpAttestation"
              discriminator:
                propertyName: credentialKind
                mapping:
                  Fido2: "#/components/schemas/Fido2Attestation"
                  Key: "#/components/schemas/KeyAttestation"
                  PasswordProtectedKey: "#/components/schemas/PasswordProtectedKeyAttestation"
                  RecoveryKey: "#/components/schemas/RecoveryKeyAttestation"
                  Password: "#/components/schemas/PasswordAttestation"
                  Totp: "#/components/schemas/TotpAttestation"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Credential"
  /auth/login/init:
    post:
      summary: Create Login Challenge
      tags:
        - Auth
      security:
        - {}
      description: >-
        Start a user login session, returning a challenge that will be used to
        verify the user's identity.


        If the user has a credential of kind `PasswordProtectedKey` a temporary
        one time code needs to be passed in the `loginCode` field.


        If the user has at least one discoverable WebAuthn credential,
        `username` is optional (username-less flow).
      x-mint:
        content: |-
          #### Authentication

          No authentication required.

          #### Required Permissions

          No authentication required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
                orgId:
                  type: string
                loginCode:
                  type: string
              required:
                - orgId
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  challenge:
                    type: string
                    description: Challenge (string) to be signed by the requester with his private
                      key.
                  challengeIdentifier:
                    type: string
                    description: A JWT that identifies the signing session.
                  rp:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                    required:
                      - id
                      - name
                    description: Deprecated. Should not be used.
                  supportedCredentialKinds:
                    type: array
                    items:
                      type: object
                      properties:
                        kind:
                          $ref: "#/components/schemas/CredentialKind"
                        factor:
                          type: string
                          enum:
                            - first
                            - second
                            - either
                          description: Indicates if the credential can be used as a first factor, second
                            factor, or either; can be `first`, `second`, or
                            `either`.
                        requiresSecondFactor:
                          type: boolean
                          description: When true indicates a second factor credential is required if the
                            credential is used as a first factor.
                      required:
                        - kind
                        - factor
                        - requiresSecondFactor
                    description: Identifies the kind of credentials that can be used to sign the
                      user action.
                  userVerification:
                    type: string
                    enum:
                      - required
                      - preferred
                      - discouraged
                    description: >
                      Value indicating if the user should be prompted for a
                      second factor. Can be one of the following values:

                      * required to indicate the user must be prompted for their
                      pin, biometrics, or another second factor option

                      * preferred to indicate the user should be prompted for a
                      second factor if it is supported

                      * discouraged to indicate the user should not be prompted
                      for their second factor unless the device requires it
                  attestation:
                    type: string
                    enum:
                      - none
                      - indirect
                      - direct
                      - enterprise
                    description: >
                      Identifies the information needed to verify the user's
                      signing certificate; can be one of the following:

                      * none: indicates no attestation data is required

                      * indirect: indicates the attestation data should be
                      given, but that it can be generated using an Anonymization
                      CA

                      * direct: indicates the attestation data must be given and
                      should be generated by the authenticator

                      * enterprise: indicates the attestation data should
                      include information to uniquely identify the user's device
                  allowCredentials:
                    type: object
                    properties:
                      key:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - public-key
                              description: Is always `public-key`.
                            id:
                              type: string
                              minLength: 1
                              maxLength: 64
                              pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                              description: ID that identifies the credential.
                              example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                          required:
                            - type
                            - id
                        description: List of keys that the user can use to sign the user action.
                      passwordProtectedKey:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - public-key
                              description: Is always `public-key`.
                            id:
                              type: string
                              minLength: 1
                              maxLength: 64
                              pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                              description: ID that identifies the credential.
                              example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                            encryptedPrivateKey:
                              type: string
                              description: Encrypted Private Key. Only the user knows the password to decrypt
                                it and have access to the private key.
                          required:
                            - type
                            - id
                            - encryptedPrivateKey
                        description: List of password protected keys that the user can use to sign the
                          login challenge.
                      webauthn:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - public-key
                              description: Is always `public-key`.
                            id:
                              type: string
                              minLength: 1
                              maxLength: 64
                              pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                              description: ID that identifies the credential.
                              example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                          required:
                            - type
                            - id
                        description: List of WebAuthn credentials that the user can use to sign the user
                          action.
                    required:
                      - key
                      - webauthn
                    description: List of credentials that the user can use to sign the user action.
                  externalAuthenticationUrl:
                    type: string
                    description: Optional url containing a secret value that can be used to enable
                      cross device/origin signing.
                required:
                  - challenge
                  - challengeIdentifier
                  - supportedCredentialKinds
                  - userVerification
                  - attestation
                  - allowCredentials
                  - externalAuthenticationUrl
                example: *a55
  /auth/login/delegated:
    post:
      summary: Delegated Login
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: >2
        
          <Warning>
        Only a [Service
        Account](https://docs.dfns.co/api-reference/auth/service-accounts) can
        use this endpoint.

        </Warning>


        Logs a user into an organization without the user's credentials.


        If you want to use your own authentication system, while still using
        `Delegated Signing`, you can use this endpoint to authenticate a user
        without needing the user's credentials.


        The user authentication token can be used for read operations within the
        Dfns API, however, write operations will still require the user to sign
        the action.
      x-mint:
        content: |-
          #### Authentication

          ❌ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Auth:Login:Delegated`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
              required:
                - username
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  token:
                    type: string
                required:
                  - token
  /auth/login:
    post:
      summary: Complete User Login
      tags:
        - Auth
      security:
        - {}
      description: >
        Completes the login process and provides the authenticated user with
        their authentication token.


        The type of credentials used to login is determined by the `kind` field
        in the nested objects (`firstFactor` and `secondFactor`). Supported
        credential kinds are:

        * `Fido2`: Login challenge is signed by a user's signing device using
        `WebAuthn`.

        * `Key`: Login challenge is signed by a user's private key.

        * `PasswordProtectedKey`: Login challenge is signed by the decrypted
        user's private key that was sent during [Create User Login
        Challenge](../registration/inituserregistration) step.
      x-mint:
        content: |-
          #### Authentication

          No authentication required.

          #### Required Permissions

          No authentication required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                challengeIdentifier:
                  type: string
                  description: Temporary authentication token returned by the Create Challenge
                    endpoint.
                firstFactor:
                  $ref: "#/components/schemas/FirstFactorAssertion"
                secondFactor:
                  $ref: "#/components/schemas/SecondFactorAssertion"
              required:
                - challengeIdentifier
                - firstFactor
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                anyOf:
                  - type: object
                    properties:
                      token:
                        type: string
                    required:
                      - token
                  - type: object
                    properties:
                      ssoClientId:
                        type: string
                    required:
                      - ssoClientId
  /auth/logout:
    put:
      summary: Logout
      tags:
        - Auth
      security:
        - authenticationToken: []
      description: Completes the user logout process.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ❌ Personal Access Token not allowed    
          ❌ Service Account

          #### Required Permissions

          No permission required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                allSessions:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
  /auth/login/code:
    post:
      summary: Send Login Code
      tags:
        - Auth
      security:
        - {}
      description: "

        \  Sends a temporary one time code to the user that can be used during
        login flow.


        If the user has a credential of kind `PasswordProtectedKey` a temporary
        one time code needs to be passed in the `loginCode` field. That's
        because the [Create Login
        Challenge](https://docs.dfns.co/api-reference/auth/create-login-challen\
        ge) is unauthenticated and returns the encrypted private key of the
        user. So we need a first step to verify the identity of the user to
        prevent anybody from fetching the encrypted private key and trying to
        brute force it offline.


        \  "
      x-mint:
        content: |-
          #### Authentication

          No authentication required.

          #### Required Permissions

          No authentication required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
                orgId:
                  type: string
                  minLength: 1
              required:
                - username
                - orgId
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
  /auth/login/social:
    post:
      summary: Social Login
      tags:
        - Auth
      security:
        - {}
      description: Completes the login process and provides the authenticated user
        with their authentication token.
      x-mint:
        content: |-
          #### Authentication

          No authentication required.

          #### Required Permissions

          No authentication required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                orgId:
                  type: string
                socialLoginProviderKind:
                  type: string
                  enum:
                    - Oidc
                idToken:
                  type: string
              required:
                - socialLoginProviderKind
                - idToken
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  token:
                    type: string
                required:
                  - token
  /auth/login/sso:
    post:
      summary: Complete SSO Login
      tags:
        - Auth
      security:
        - {}
      description: Completes the login process and provides the authenticated user
        with their authentication token.
      x-mint:
        content: |-
          #### Authentication

          No authentication required.

          #### Required Permissions

          No authentication required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  description: Authorization code obtained from the IdP
                state:
                  type: string
                  description: State forwarded by the IdP
              required:
                - code
                - state
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  token:
                    type: string
                required:
                  - token
  /auth/login/sso/init:
    post:
      summary: Initiate SSO Login
      tags:
        - Auth
      security:
        - {}
      description: Initialize the login process with SSO by returning the IdP URL to call.
      x-mint:
        content: |-
          #### Authentication

          No authentication required.

          #### Required Permissions

          No authentication required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                orgId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^or-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Organization id.
                  example: or-30tnh-itmjs-s235s5ontr3r23h2
                clientId:
                  type: string
                  description: Client Id obtained from the IdP
                redirectUri:
                  type: string
                  format: uri
                  description: Redirect URI used for the authentication flow
              required:
                - orgId
                - clientId
                - redirectUri
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  ssoRedirectUrl:
                    type: string
                    format: uri
                    description: The URL to redirect the user to authenticate with the IdP
                required:
                  - ssoRedirectUrl
  /auth/pats:
    get:
      summary: List Personal Access Tokens
      tags:
        - Auth
      security:
        - authenticationToken: []
      description: Retrieve the list of your Personal Access Tokens.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          No permission required.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/PersonalAccessToken"
                required:
                  - items
    post:
      summary: Create Personal Access Token
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Create a new Personal Access Token for the caller.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ❌ Personal Access Token not allowed    
          ❌ Service Account

          #### Required Permissions

          `Auth:Pats:Create`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                publicKey:
                  type: string
                  pattern: ^-----BEGIN (RSA )?PUBLIC KEY-----[A-Za-z0-9+/=\n\r\\]+-----END (RSA
                    )?PUBLIC KEY-----\s?$
                permissionId:
                  type: string
                externalId:
                  type: string
                daysValid:
                  type: integer
                  exclusiveMinimum: 0
                secondsValid:
                  type: integer
                  exclusiveMinimum: 0
              required:
                - name
                - publicKey
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  accessToken:
                    type: string
                  dateCreated:
                    type: string
                  credId:
                    type: string
                  isActive:
                    type: boolean
                  kind:
                    type: string
                    enum:
                      - Pat
                      - ServiceAccount
                      - Token
                      - Code
                      - Recovery
                      - Temp
                      - Application
                  linkedUserId:
                    type: string
                  linkedAppId:
                    type: string
                  name:
                    type: string
                  orgId:
                    type: string
                  publicKey:
                    type: string
                  tokenId:
                    type: string
                  permissionAssignments:
                    type: array
                    items:
                      type: object
                      properties:
                        permissionName:
                          type: string
                        permissionId:
                          type: string
                        assignmentId:
                          type: string
                        operations:
                          type: array
                          items:
                            type: string
                      required:
                        - permissionName
                        - permissionId
                        - assignmentId
                required:
                  - accessToken
                  - dateCreated
                  - credId
                  - isActive
                  - kind
                  - linkedUserId
                  - linkedAppId
                  - name
                  - orgId
                  - publicKey
                  - tokenId
                  - permissionAssignments
  /auth/pats/{tokenId}:
    get:
      summary: Get Personal Access Token
      tags:
        - Auth
      security:
        - authenticationToken: []
      description: Retrieve a specific Personal Access Token.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          No permission required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: tokenId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PersonalAccessToken"
    put:
      summary: Update Personal Access Token
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Update a specific Personal Access Token.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          No permission required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: tokenId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                externalId:
                  type: string
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PersonalAccessToken"
    delete:
      summary: Delete Personal Access Token
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Delete a specific Personal Access Token.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          No permission required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: tokenId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PersonalAccessToken"
  /auth/pats/{tokenId}/activate:
    put:
      summary: Activate Personal Access Token
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Activate a specific Personal Access Token.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          No permission required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: tokenId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PersonalAccessToken"
  /auth/pats/{tokenId}/deactivate:
    put:
      summary: Deactivate Personal Access Token
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Deactivates a credential that was previously active. If the
        credential is already deactivated no action is taken.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          No permission required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: tokenId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PersonalAccessToken"
  /auth/recover/user/delegated:
    post:
      summary: Create Delegated Recovery Challenge
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: >
        
        <Warning>

        Only a [Service
        Account](https://docs.dfns.co/api-reference/auth/service-accounts) can
        use this endpoint.

        </Warning>


        This endpoint enables setting up a recovery workflow for Delegated
        Signing. Via this configuration, the end user will not receive an email
        from Dfns but instead can establish recovery credentials that leverage
        the customer's brand for the recovery workflow.


        Once the user has been verified by your auth system and this API has
        been called, you can call [Recover
        User](https://docs.dfns.co/api-reference/auth/recover-user) to complete
        the recovery process.
      x-mint:
        content: |-
          #### Authentication

          ❌ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Auth:Recover:Delegated`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
                  minLength: 1
                credentialId:
                  type: string
                  minLength: 1
              required:
                - username
                - credentialId
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  user:
                    type: object
                    properties:
                      id:
                        type: string
                      displayName:
                        type: string
                      name:
                        type: string
                    required:
                      - id
                      - displayName
                      - name
                  temporaryAuthenticationToken:
                    type: string
                  challenge:
                    type: string
                  rp:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                    required:
                      - id
                      - name
                  supportedCredentialKinds:
                    type: object
                    properties:
                      firstFactor:
                        type: array
                        items:
                          type: string
                          enum:
                            - Fido2
                            - Key
                            - Password
                            - Totp
                            - RecoveryKey
                            - PasswordProtectedKey
                      secondFactor:
                        type: array
                        items:
                          type: string
                          enum:
                            - Fido2
                            - Key
                            - Password
                            - Totp
                            - RecoveryKey
                            - PasswordProtectedKey
                    required:
                      - firstFactor
                      - secondFactor
                  authenticatorSelection:
                    type: object
                    properties:
                      authenticatorAttachment:
                        type: string
                        enum:
                          - platform
                          - cross-platform
                      residentKey:
                        type: string
                        enum:
                          - required
                          - preferred
                          - discouraged
                      requireResidentKey:
                        type: boolean
                      userVerification:
                        type: string
                        enum:
                          - required
                          - preferred
                          - discouraged
                        description: >
                          Value indicating if the user should be prompted for a
                          second factor. Can be one of the following values:

                          * required to indicate the user must be prompted for
                          their pin, biometrics, or another second factor option

                          * preferred to indicate the user should be prompted
                          for a second factor if it is supported

                          * discouraged to indicate the user should not be
                          prompted for their second factor unless the device
                          requires it
                    required:
                      - residentKey
                      - requireResidentKey
                      - userVerification
                  attestation:
                    type: string
                    enum:
                      - none
                      - indirect
                      - direct
                      - enterprise
                    description: >
                      Identifies the information needed to verify the user's
                      signing certificate; can be one of the following:

                      * none: indicates no attestation data is required

                      * indirect: indicates the attestation data should be
                      given, but that it can be generated using an Anonymization
                      CA

                      * direct: indicates the attestation data must be given and
                      should be generated by the authenticator

                      * enterprise: indicates the attestation data should
                      include information to uniquely identify the user's device
                  pubKeyCredParams:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - public-key
                        alg:
                          type: number
                      required:
                        - type
                        - alg
                  excludeCredentials:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - public-key
                          description: Is always `public-key`.
                        id:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: ID that identifies the credential.
                          example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                      required:
                        - type
                        - id
                  otpUrl:
                    type: string
                  allowedRecoveryCredentials:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        encryptedRecoveryKey:
                          type: string
                      required:
                        - id
                        - encryptedRecoveryKey
                      additionalProperties: false
                required:
                  - user
                  - temporaryAuthenticationToken
                  - challenge
                  - supportedCredentialKinds
                  - authenticatorSelection
                  - attestation
                  - pubKeyCredParams
                  - excludeCredentials
                  - otpUrl
                  - allowedRecoveryCredentials
                additionalProperties: false
  /auth/recover/user:
    post:
      summary: Recover User
      tags:
        - Auth
      security:
        - authenticationToken: []
      description: |
        Recovers a user, using a recovery credential. After successfully recovering the user, all of the user's previous credentials and personal access tokens will be invalidated.

        This flow requires cryptographic validation of newly created credential(s) using a recovery credential. The `recovery.credentialAssertion.clientData` field's challenge must be the _base64url-encoded_ representation of the `newCredential` object.

        The process is as follows:

        1. Construct the `newCredential` object, using the challenge obtained from either the [Create Recovery Challenge](https://docs.dfns.co/api-reference/auth/create-recovery-challenge) or [Create Delegated Recovery Challenge](https://docs.dfns.co/api-reference/auth/create-delegated-recovery-challenge) endpoints.
        2. Serialize the `newCredential` object to JSON and then base64url-encode the resulting JSON string. This _base64url-encoded_ string will serve as the challenge for the `recovery.credentialAssertion` object.
        3. Construct the `recovery.credentialAssertion` object, using the _base64url-encoded_ string generated in step 2 as its challenge.
      x-mint:
        content: |-
          #### Authentication

          ❌ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ❌ Service Account    
          ✅ Recovery Code

          #### Required Permissions

          No permission required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                recovery:
                  type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - RecoveryKey
                    credentialAssertion:
                      type: object
                      properties:
                        credId:
                          type: string
                          minLength: 1
                          description: Base64url-encoded id of the credential returned by the user's
                            WebAuthn client.
                        clientData:
                          type: string
                          minLength: 1
                          description: Base64url-encoded, stringified JSON [client
                            data](https://docs.dfns.co/api-reference/auth/credentials-data#client-data)
                            object returned by the user's WebAuthn client.
                        signature:
                          type: string
                          minLength: 1
                          description: Base64url-encoded signature returned by the user's WebAuthn client.
                        algorithm:
                          type: string
                          description: The algorithm/digest that the credential will use to sign data. If
                            the algoritm is not specified then the algorithm
                            will be determined by the key.
                      required:
                        - credId
                        - clientData
                        - signature
                      additionalProperties: false
                  required:
                    - kind
                    - credentialAssertion
                  additionalProperties: false
                newCredentials:
                  type: object
                  properties:
                    firstFactorCredential:
                      $ref: "#/components/schemas/FirstFactorAttestation"
                    secondFactorCredential:
                      $ref: "#/components/schemas/SecondFactorAttestation"
                    recoveryCredential:
                      allOf:
                        - $ref: "#/components/schemas/RecoveryKeyAttestation"
                        - properties:
                            credentialKind:
                              type: string
                              enum:
                                - RecoveryKey
                            credentialInfo:
                              type: object
                              properties:
                                credId:
                                  type: string
                                  minLength: 1
                                clientData:
                                  type: string
                                  minLength: 1
                                attestationData:
                                  type: string
                                  minLength: 1
                              required:
                                - credId
                                - clientData
                                - attestationData
                              additionalProperties: false
                            encryptedPrivateKey:
                              type: string
                              minLength: 1
                            credentialName:
                              type: string
                              minLength: 1
                          required:
                            - credentialKind
                            - credentialInfo
                  required:
                    - firstFactorCredential
                  additionalProperties: false
              required:
                - recovery
                - newCredentials
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  credential:
                    type: object
                    properties:
                      uuid:
                        type: string
                      kind:
                        type: string
                        enum:
                          - Fido2
                          - Key
                          - Password
                          - Totp
                          - RecoveryKey
                          - PasswordProtectedKey
                      name:
                        type: string
                    required:
                      - uuid
                      - kind
                      - name
                  user:
                    type: object
                    properties:
                      id:
                        type: string
                      username:
                        type: string
                      orgId:
                        type: string
                    required:
                      - id
                      - username
                      - orgId
                required:
                  - credential
                  - user
  /auth/recover/user/init:
    post:
      summary: Create Recovery Challenge
      tags:
        - Auth
      security:
        - {}
      description: Starts a user recovery session, returning a challenge that will be
        used to verify the user's identity.
      x-mint:
        content: |-
          #### Authentication

          No authentication required.

          #### Required Permissions

          No authentication required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
                  minLength: 1
                verificationCode:
                  type: string
                  minLength: 1
                orgId:
                  type: string
                  minLength: 1
                credentialId:
                  type: string
                  minLength: 1
              required:
                - username
                - verificationCode
                - orgId
                - credentialId
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  user:
                    type: object
                    properties:
                      id:
                        type: string
                      displayName:
                        type: string
                      name:
                        type: string
                    required:
                      - id
                      - displayName
                      - name
                  temporaryAuthenticationToken:
                    type: string
                  challenge:
                    type: string
                  rp:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                    required:
                      - id
                      - name
                  supportedCredentialKinds:
                    type: object
                    properties:
                      firstFactor:
                        type: array
                        items:
                          type: string
                          enum:
                            - Fido2
                            - Key
                            - Password
                            - Totp
                            - RecoveryKey
                            - PasswordProtectedKey
                      secondFactor:
                        type: array
                        items:
                          type: string
                          enum:
                            - Fido2
                            - Key
                            - Password
                            - Totp
                            - RecoveryKey
                            - PasswordProtectedKey
                    required:
                      - firstFactor
                      - secondFactor
                  authenticatorSelection:
                    type: object
                    properties:
                      authenticatorAttachment:
                        type: string
                        enum:
                          - platform
                          - cross-platform
                      residentKey:
                        type: string
                        enum:
                          - required
                          - preferred
                          - discouraged
                      requireResidentKey:
                        type: boolean
                      userVerification:
                        type: string
                        enum:
                          - required
                          - preferred
                          - discouraged
                        description: >
                          Value indicating if the user should be prompted for a
                          second factor. Can be one of the following values:

                          * required to indicate the user must be prompted for
                          their pin, biometrics, or another second factor option

                          * preferred to indicate the user should be prompted
                          for a second factor if it is supported

                          * discouraged to indicate the user should not be
                          prompted for their second factor unless the device
                          requires it
                    required:
                      - residentKey
                      - requireResidentKey
                      - userVerification
                  attestation:
                    type: string
                    enum:
                      - none
                      - indirect
                      - direct
                      - enterprise
                    description: >
                      Identifies the information needed to verify the user's
                      signing certificate; can be one of the following:

                      * none: indicates no attestation data is required

                      * indirect: indicates the attestation data should be
                      given, but that it can be generated using an Anonymization
                      CA

                      * direct: indicates the attestation data must be given and
                      should be generated by the authenticator

                      * enterprise: indicates the attestation data should
                      include information to uniquely identify the user's device
                  pubKeyCredParams:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - public-key
                        alg:
                          type: number
                      required:
                        - type
                        - alg
                  excludeCredentials:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - public-key
                          description: Is always `public-key`.
                        id:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: ID that identifies the credential.
                          example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                      required:
                        - type
                        - id
                  otpUrl:
                    type: string
                  allowedRecoveryCredentials:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        encryptedRecoveryKey:
                          type: string
                      required:
                        - id
                        - encryptedRecoveryKey
                      additionalProperties: false
                required:
                  - user
                  - temporaryAuthenticationToken
                  - challenge
                  - supportedCredentialKinds
                  - authenticatorSelection
                  - attestation
                  - pubKeyCredParams
                  - excludeCredentials
                  - otpUrl
                  - allowedRecoveryCredentials
                additionalProperties: false
  /auth/recover/user/code:
    post:
      summary: Send Recovery Code Email
      tags:
        - Auth
      security:
        - {}
      description: Send the user a recovery verification code. This code is used as a
        second factor to verify the user initiated the recovery request.
      x-mint:
        content: |-
          #### Authentication

          No authentication required.

          #### Required Permissions

          No authentication required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
                  minLength: 1
                orgId:
                  type: string
                  minLength: 1
              required:
                - username
                - orgId
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
  /auth/registration/delegated:
    post:
      summary: Create Delegated Registration Challenge
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: |-
        <Warning>
        Only a [Service Account](https://docs.dfns.co/api-reference/auth/service-accounts) can use this endpoint.
        </Warning>

        If you want to use your own authentication system, while still using `Delegated Signing`, you can use this endpoint to register a new End User in your organization, without your user needing to receive an email from Dfns.

        This endpoint will:
        1. Create a new User attached to your organization
        2. Initiates a User Registration Challenge and returns the registration challenge.

        On successful creation, the user's registration challenge will be returned. You will then need to call [Complete User Registration](https://docs.dfns.co/api-reference/auth/complete-user-registration) or [Complete End User Registration with Wallets](https://docs.dfns.co/api-reference/auth/complete-end-user-registration-with-wallets) to complete the user's registration.
      x-mint:
        content: |-
          #### Authentication

          ❌ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Auth:Register:Delegated`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  minLength: 1
                kind:
                  type: string
                  enum:
                    - EndUser
                externalId:
                  type: string
                  minLength: 1
              required:
                - email
                - kind
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  user:
                    type: object
                    properties:
                      id:
                        type: string
                      displayName:
                        type: string
                      name:
                        type: string
                    required:
                      - id
                      - displayName
                      - name
                  temporaryAuthenticationToken:
                    type: string
                  challenge:
                    type: string
                  rp:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                    required:
                      - id
                      - name
                  supportedCredentialKinds:
                    type: object
                    properties:
                      firstFactor:
                        type: array
                        items:
                          type: string
                          enum:
                            - Fido2
                            - Key
                            - Password
                            - Totp
                            - RecoveryKey
                            - PasswordProtectedKey
                      secondFactor:
                        type: array
                        items:
                          type: string
                          enum:
                            - Fido2
                            - Key
                            - Password
                            - Totp
                            - RecoveryKey
                            - PasswordProtectedKey
                    required:
                      - firstFactor
                      - secondFactor
                  authenticatorSelection:
                    type: object
                    properties:
                      authenticatorAttachment:
                        type: string
                        enum:
                          - platform
                          - cross-platform
                      residentKey:
                        type: string
                        enum:
                          - required
                          - preferred
                          - discouraged
                      requireResidentKey:
                        type: boolean
                      userVerification:
                        type: string
                        enum:
                          - required
                          - preferred
                          - discouraged
                        description: >
                          Value indicating if the user should be prompted for a
                          second factor. Can be one of the following values:

                          * required to indicate the user must be prompted for
                          their pin, biometrics, or another second factor option

                          * preferred to indicate the user should be prompted
                          for a second factor if it is supported

                          * discouraged to indicate the user should not be
                          prompted for their second factor unless the device
                          requires it
                    required:
                      - residentKey
                      - requireResidentKey
                      - userVerification
                  attestation:
                    type: string
                    enum:
                      - none
                      - indirect
                      - direct
                      - enterprise
                    description: >
                      Identifies the information needed to verify the user's
                      signing certificate; can be one of the following:

                      * none: indicates no attestation data is required

                      * indirect: indicates the attestation data should be
                      given, but that it can be generated using an Anonymization
                      CA

                      * direct: indicates the attestation data must be given and
                      should be generated by the authenticator

                      * enterprise: indicates the attestation data should
                      include information to uniquely identify the user's device
                  pubKeyCredParams:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - public-key
                        alg:
                          type: number
                      required:
                        - type
                        - alg
                  excludeCredentials:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - public-key
                          description: Is always `public-key`.
                        id:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: ID that identifies the credential.
                          example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                      required:
                        - type
                        - id
                  otpUrl:
                    type: string
                required:
                  - user
                  - temporaryAuthenticationToken
                  - challenge
                  - supportedCredentialKinds
                  - authenticatorSelection
                  - attestation
                  - pubKeyCredParams
                  - excludeCredentials
                  - otpUrl
  /auth/registration/init:
    post:
      summary: Create Registration Challenge
      tags:
        - Auth
      security:
        - {}
      description: Starts a user registration session. It returns a challenge that
        will need to be signed by a passkey and used to perform the step
        [Complete User Registration](/api-reference/auth/register)
      x-mint:
        content: |-
          #### Authentication

          No authentication required.

          #### Required Permissions

          No authentication required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                orgId:
                  type: string
                  minLength: 1
                username:
                  type: string
                  minLength: 1
                registrationCode:
                  type: string
                  minLength: 1
              required:
                - orgId
                - username
                - registrationCode
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  user:
                    type: object
                    properties:
                      id:
                        type: string
                      displayName:
                        type: string
                      name:
                        type: string
                    required:
                      - id
                      - displayName
                      - name
                  temporaryAuthenticationToken:
                    type: string
                  challenge:
                    type: string
                  rp:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                    required:
                      - id
                      - name
                  supportedCredentialKinds:
                    type: object
                    properties:
                      firstFactor:
                        type: array
                        items:
                          type: string
                          enum:
                            - Fido2
                            - Key
                            - Password
                            - Totp
                            - RecoveryKey
                            - PasswordProtectedKey
                      secondFactor:
                        type: array
                        items:
                          type: string
                          enum:
                            - Fido2
                            - Key
                            - Password
                            - Totp
                            - RecoveryKey
                            - PasswordProtectedKey
                    required:
                      - firstFactor
                      - secondFactor
                  authenticatorSelection:
                    type: object
                    properties:
                      authenticatorAttachment:
                        type: string
                        enum:
                          - platform
                          - cross-platform
                      residentKey:
                        type: string
                        enum:
                          - required
                          - preferred
                          - discouraged
                      requireResidentKey:
                        type: boolean
                      userVerification:
                        type: string
                        enum:
                          - required
                          - preferred
                          - discouraged
                        description: >
                          Value indicating if the user should be prompted for a
                          second factor. Can be one of the following values:

                          * required to indicate the user must be prompted for
                          their pin, biometrics, or another second factor option

                          * preferred to indicate the user should be prompted
                          for a second factor if it is supported

                          * discouraged to indicate the user should not be
                          prompted for their second factor unless the device
                          requires it
                    required:
                      - residentKey
                      - requireResidentKey
                      - userVerification
                  attestation:
                    type: string
                    enum:
                      - none
                      - indirect
                      - direct
                      - enterprise
                    description: >
                      Identifies the information needed to verify the user's
                      signing certificate; can be one of the following:

                      * none: indicates no attestation data is required

                      * indirect: indicates the attestation data should be
                      given, but that it can be generated using an Anonymization
                      CA

                      * direct: indicates the attestation data must be given and
                      should be generated by the authenticator

                      * enterprise: indicates the attestation data should
                      include information to uniquely identify the user's device
                  pubKeyCredParams:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - public-key
                        alg:
                          type: number
                      required:
                        - type
                        - alg
                  excludeCredentials:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - public-key
                          description: Is always `public-key`.
                        id:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: ID that identifies the credential.
                          example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                      required:
                        - type
                        - id
                  otpUrl:
                    type: string
                required:
                  - user
                  - temporaryAuthenticationToken
                  - challenge
                  - supportedCredentialKinds
                  - authenticatorSelection
                  - attestation
                  - pubKeyCredParams
                  - excludeCredentials
                  - otpUrl
  /auth/registration/social:
    post:
      summary: Create Social Registration Challenge
      tags:
        - Auth
      security:
        - {}
      description: Starts an end-user registration session by passing a JWT obtained
        by an IdP. It returns a challenge that will need to be signed by a
        passkey and used to perform [Complete End User Registration with
        Wallets](/api-reference/auth/register-end-user).
      x-mint:
        content: |-
          #### Authentication

          No authentication required.

          #### Required Permissions

          No authentication required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                orgId:
                  type: string
                socialLoginProviderKind:
                  type: string
                  enum:
                    - Oidc
                idToken:
                  type: string
              required:
                - socialLoginProviderKind
                - idToken
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  user:
                    type: object
                    properties:
                      id:
                        type: string
                      displayName:
                        type: string
                      name:
                        type: string
                    required:
                      - id
                      - displayName
                      - name
                  temporaryAuthenticationToken:
                    type: string
                  challenge:
                    type: string
                  rp:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                    required:
                      - id
                      - name
                  supportedCredentialKinds:
                    type: object
                    properties:
                      firstFactor:
                        type: array
                        items:
                          type: string
                          enum:
                            - Fido2
                            - Key
                            - Password
                            - Totp
                            - RecoveryKey
                            - PasswordProtectedKey
                      secondFactor:
                        type: array
                        items:
                          type: string
                          enum:
                            - Fido2
                            - Key
                            - Password
                            - Totp
                            - RecoveryKey
                            - PasswordProtectedKey
                    required:
                      - firstFactor
                      - secondFactor
                  authenticatorSelection:
                    type: object
                    properties:
                      authenticatorAttachment:
                        type: string
                        enum:
                          - platform
                          - cross-platform
                      residentKey:
                        type: string
                        enum:
                          - required
                          - preferred
                          - discouraged
                      requireResidentKey:
                        type: boolean
                      userVerification:
                        type: string
                        enum:
                          - required
                          - preferred
                          - discouraged
                        description: >
                          Value indicating if the user should be prompted for a
                          second factor. Can be one of the following values:

                          * required to indicate the user must be prompted for
                          their pin, biometrics, or another second factor option

                          * preferred to indicate the user should be prompted
                          for a second factor if it is supported

                          * discouraged to indicate the user should not be
                          prompted for their second factor unless the device
                          requires it
                    required:
                      - residentKey
                      - requireResidentKey
                      - userVerification
                  attestation:
                    type: string
                    enum:
                      - none
                      - indirect
                      - direct
                      - enterprise
                    description: >
                      Identifies the information needed to verify the user's
                      signing certificate; can be one of the following:

                      * none: indicates no attestation data is required

                      * indirect: indicates the attestation data should be
                      given, but that it can be generated using an Anonymization
                      CA

                      * direct: indicates the attestation data must be given and
                      should be generated by the authenticator

                      * enterprise: indicates the attestation data should
                      include information to uniquely identify the user's device
                  pubKeyCredParams:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - public-key
                        alg:
                          type: number
                      required:
                        - type
                        - alg
                  excludeCredentials:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - public-key
                          description: Is always `public-key`.
                        id:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: ID that identifies the credential.
                          example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                      required:
                        - type
                        - id
                  otpUrl:
                    type: string
                required:
                  - user
                  - temporaryAuthenticationToken
                  - challenge
                  - supportedCredentialKinds
                  - authenticatorSelection
                  - attestation
                  - pubKeyCredParams
                  - excludeCredentials
                  - otpUrl
  /auth/registration:
    post:
      summary: Complete User Registration
      tags:
        - Auth
      security:
        - authenticationToken: []
      description: >
        Completes the user registration process and creates the user's initial
        credentials.


        The type of credentials being registered is determined by the
        `credentialKind` field in the nested objects (`firstFactorCredential` ,
        `secondFactorCredential` and `RecoveryCredential`). Supported credential
        kinds are:

        * `Fido2`: User action is signed by a user's signing device using
        `WebAuthn`.

        * `Key`: User action is signed by a user's, or token's, private key.

        * `PasswordProtectedKey`: User action is signed by a user's, or token's,
        private key. The encrypted version of the private key is stored by Dfns
        and returns during the signing flow for the user to decrypt it.

        * `RecoveryKey` : Similar to `PasswordProtectedKey`, but this credential
        can only be used to recover an account not to sign an action or login.
        Once this credential is used all the other user's credentials are
        invalidated.
      x-mint:
        content: |-
          #### Authentication

          ❌ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ❌ Service Account    
          ✅ Registration Code

          #### Required Permissions

          No permission required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                firstFactorCredential:
                  $ref: "#/components/schemas/FirstFactorAttestation"
                secondFactorCredential:
                  $ref: "#/components/schemas/SecondFactorAttestation"
                recoveryCredential:
                  allOf:
                    - $ref: "#/components/schemas/RecoveryKeyAttestation"
                    - properties:
                        credentialKind:
                          type: string
                          enum:
                            - RecoveryKey
                        credentialInfo:
                          type: object
                          properties:
                            credId:
                              type: string
                              minLength: 1
                            clientData:
                              type: string
                              minLength: 1
                            attestationData:
                              type: string
                              minLength: 1
                          required:
                            - credId
                            - clientData
                            - attestationData
                          additionalProperties: false
                        encryptedPrivateKey:
                          type: string
                          minLength: 1
                        credentialName:
                          type: string
                          minLength: 1
                      required:
                        - credentialKind
                        - credentialInfo
              required:
                - firstFactorCredential
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  credential:
                    type: object
                    properties:
                      uuid:
                        type: string
                      kind:
                        type: string
                        enum:
                          - Fido2
                          - Key
                          - Password
                          - Totp
                          - RecoveryKey
                          - PasswordProtectedKey
                      name:
                        type: string
                    required:
                      - uuid
                      - kind
                      - name
                  user:
                    type: object
                    properties:
                      id:
                        type: string
                      username:
                        type: string
                      orgId:
                        type: string
                    required:
                      - id
                      - username
                      - orgId
                required:
                  - credential
                  - user
  /auth/registration/enduser:
    post:
      summary: Complete End User Registration with Wallets
      tags:
        - Auth
      security:
        - authenticationToken: []
      description: >-
        Completes the end user registration process and creates the user's
        initial credentials along with delegated wallets for the new end user.


        The type of credentials being registered is determined by the
        `credentialKind` field in the nested objects (`firstFactorCredential` ,
        `secondFactorCredential` and `RecoveryCredential`). Supported credential
        kinds are:

        * `Fido2`: User action is signed by a user's signing device using
        `WebAuthn`.

        * `Key`: User action is signed by a user's, or token's, private key.

        * `PasswordProtectedKey`: User action is signed by a user's, or token's,
        private key. The encrypted version of the private key is stored by Dfns
        and returns during the signing flow for the user to decrypt it.


        The number of delegated wallets created and the wallet types are
        determined by the `wallets` specifications. The end user is
        automatically assigned `ManagedDefaultEndUserAccess` managed permission
        that grants the end user full access to the wallets.
      x-mint:
        content: |-
          #### Authentication

          ❌ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ❌ Service Account    
          ✅ Registration Code

          #### Required Permissions

          No permission required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                firstFactorCredential:
                  $ref: "#/components/schemas/FirstFactorAttestation"
                secondFactorCredential:
                  $ref: "#/components/schemas/SecondFactorAttestation"
                recoveryCredential:
                  allOf:
                    - $ref: "#/components/schemas/RecoveryKeyAttestation"
                    - properties:
                        credentialKind:
                          type: string
                          enum:
                            - RecoveryKey
                        credentialInfo:
                          type: object
                          properties:
                            credId:
                              type: string
                              minLength: 1
                            clientData:
                              type: string
                              minLength: 1
                            attestationData:
                              type: string
                              minLength: 1
                          required:
                            - credId
                            - clientData
                            - attestationData
                          additionalProperties: false
                        encryptedPrivateKey:
                          type: string
                          minLength: 1
                        credentialName:
                          type: string
                          minLength: 1
                      required:
                        - credentialKind
                        - credentialInfo
                wallets:
                  type: array
                  items:
                    type: object
                    properties:
                      network:
                        type: string
                        enum: *a1
                      name:
                        type: string
                        maxLength: 100
                        description: Wallet nickname.
                    required:
                      - network
                    additionalProperties: false
                  minItems: 1
              required:
                - firstFactorCredential
                - wallets
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  credential:
                    type: object
                    properties:
                      uuid:
                        type: string
                      kind:
                        type: string
                        enum:
                          - Fido2
                          - Key
                          - Password
                          - Totp
                          - RecoveryKey
                          - PasswordProtectedKey
                      name:
                        type: string
                    required:
                      - uuid
                      - kind
                      - name
                  user:
                    type: object
                    properties:
                      id:
                        type: string
                      username:
                        type: string
                      orgId:
                        type: string
                    required:
                      - id
                      - username
                      - orgId
                  authentication:
                    type: object
                    properties:
                      token:
                        type: string
                    required:
                      - token
                  wallets:
                    type: array
                    items:
                      $ref: "#/components/schemas/Wallet"
                required:
                  - credential
                  - user
                  - authentication
                  - wallets
  /auth/registration/code:
    put:
      summary: Resend Registration Code
      tags:
        - Auth
      security:
        - {}
      description: Sends the user a new registration code. The previous registration
        code will be marked invalid. If the user has already completed their
        registration no action will be taken.
      x-mint:
        content: |-
          #### Authentication

          No authentication required.

          #### Required Permissions

          No authentication required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
                  minLength: 1
                orgId:
                  type: string
                  minLength: 1
              required:
                - username
                - orgId
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
  /auth/service-accounts:
    get:
      summary: List Service Accounts
      tags:
        - Auth
      security:
        - authenticationToken: []
      description: List all Service Accounts in your organization.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Auth:ServiceAccounts:Read`: Always required.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        userInfo:
                          type: object
                          properties:
                            username:
                              type: string
                            name:
                              type: string
                            userId:
                              type: string
                              minLength: 1
                              maxLength: 64
                              pattern: ^us-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                              description: User id.
                              example: us-6b58p-r53sr-rlrd3l5cj3uc4ome
                            kind:
                              type: string
                              enum: *a56
                              description: User kind.
                            credentialUuid:
                              type: string
                            orgId:
                              type: string
                            permissions:
                              type: array
                              items:
                                type: string
                            isActive:
                              type: boolean
                            isServiceAccount:
                              type: boolean
                            isRegistered:
                              type: boolean
                            permissionAssignments:
                              type: array
                              items:
                                type: object
                                properties:
                                  permissionName:
                                    type: string
                                  permissionId:
                                    type: string
                                  assignmentId:
                                    type: string
                                  operations:
                                    type: array
                                    items:
                                      type: string
                                required:
                                  - permissionName
                                  - permissionId
                                  - assignmentId
                          required:
                            - username
                            - name
                            - userId
                            - kind
                            - credentialUuid
                            - orgId
                            - isActive
                            - isServiceAccount
                            - isRegistered
                            - permissionAssignments
                        accessTokens:
                          type: array
                          items:
                            $ref: "#/components/schemas/PersonalAccessToken"
                      required:
                        - userInfo
                        - accessTokens
                required:
                  - items
    post:
      summary: Create Service Account
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Create a new Service Account for your organization.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ❌ Personal Access Token not allowed    
          ❌ Service Account

          #### Required Permissions

          `Auth:ServiceAccounts:Create`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                publicKey:
                  type: string
                  pattern: ^-----BEGIN (RSA )?PUBLIC KEY-----[A-Za-z0-9+/=\n\r\\]+-----END (RSA
                    )?PUBLIC KEY-----\s?$
                permissionId:
                  type: string
                externalId:
                  type: string
                daysValid:
                  type: integer
                  exclusiveMinimum: 0
              required:
                - name
                - publicKey
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  userInfo:
                    type: object
                    properties:
                      username:
                        type: string
                      name:
                        type: string
                      userId:
                        type: string
                        minLength: 1
                        maxLength: 64
                        pattern: ^us-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                        description: User id.
                        example: us-6b58p-r53sr-rlrd3l5cj3uc4ome
                      kind:
                        type: string
                        enum: *a56
                        description: User kind.
                      credentialUuid:
                        type: string
                      orgId:
                        type: string
                      permissions:
                        type: array
                        items:
                          type: string
                      isActive:
                        type: boolean
                      isServiceAccount:
                        type: boolean
                      isRegistered:
                        type: boolean
                      permissionAssignments:
                        type: array
                        items:
                          type: object
                          properties:
                            permissionName:
                              type: string
                            permissionId:
                              type: string
                            assignmentId:
                              type: string
                            operations:
                              type: array
                              items:
                                type: string
                          required:
                            - permissionName
                            - permissionId
                            - assignmentId
                    required:
                      - username
                      - name
                      - userId
                      - kind
                      - credentialUuid
                      - orgId
                      - isActive
                      - isServiceAccount
                      - isRegistered
                      - permissionAssignments
                  accessTokens:
                    type: array
                    items:
                      $ref: "#/components/schemas/PersonalAccessToken"
                required:
                  - userInfo
                  - accessTokens
  /auth/service-accounts/{serviceAccountId}:
    get:
      summary: Get Service Account
      tags:
        - Auth
      security:
        - authenticationToken: []
      description: Get information about a specific Service Account.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Auth:ServiceAccounts:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: serviceAccountId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  userInfo:
                    type: object
                    properties:
                      username:
                        type: string
                      name:
                        type: string
                      userId:
                        type: string
                        minLength: 1
                        maxLength: 64
                        pattern: ^us-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                        description: User id.
                        example: us-6b58p-r53sr-rlrd3l5cj3uc4ome
                      kind:
                        type: string
                        enum: *a56
                        description: User kind.
                      credentialUuid:
                        type: string
                      orgId:
                        type: string
                      permissions:
                        type: array
                        items:
                          type: string
                      isActive:
                        type: boolean
                      isServiceAccount:
                        type: boolean
                      isRegistered:
                        type: boolean
                      permissionAssignments:
                        type: array
                        items:
                          type: object
                          properties:
                            permissionName:
                              type: string
                            permissionId:
                              type: string
                            assignmentId:
                              type: string
                            operations:
                              type: array
                              items:
                                type: string
                          required:
                            - permissionName
                            - permissionId
                            - assignmentId
                    required:
                      - username
                      - name
                      - userId
                      - kind
                      - credentialUuid
                      - orgId
                      - isActive
                      - isServiceAccount
                      - isRegistered
                      - permissionAssignments
                  accessTokens:
                    type: array
                    items:
                      $ref: "#/components/schemas/PersonalAccessToken"
                required:
                  - userInfo
                  - accessTokens
    put:
      summary: Update Service Account
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Update a specific Service Account.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Auth:ServiceAccounts:Update`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: serviceAccountId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                externalId:
                  type: string
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  userInfo:
                    type: object
                    properties:
                      username:
                        type: string
                      name:
                        type: string
                      userId:
                        type: string
                        minLength: 1
                        maxLength: 64
                        pattern: ^us-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                        description: User id.
                        example: us-6b58p-r53sr-rlrd3l5cj3uc4ome
                      kind:
                        type: string
                        enum: *a56
                        description: User kind.
                      credentialUuid:
                        type: string
                      orgId:
                        type: string
                      permissions:
                        type: array
                        items:
                          type: string
                      isActive:
                        type: boolean
                      isServiceAccount:
                        type: boolean
                      isRegistered:
                        type: boolean
                      permissionAssignments:
                        type: array
                        items:
                          type: object
                          properties:
                            permissionName:
                              type: string
                            permissionId:
                              type: string
                            assignmentId:
                              type: string
                            operations:
                              type: array
                              items:
                                type: string
                          required:
                            - permissionName
                            - permissionId
                            - assignmentId
                    required:
                      - username
                      - name
                      - userId
                      - kind
                      - credentialUuid
                      - orgId
                      - isActive
                      - isServiceAccount
                      - isRegistered
                      - permissionAssignments
                  accessTokens:
                    type: array
                    items:
                      $ref: "#/components/schemas/PersonalAccessToken"
                required:
                  - userInfo
                  - accessTokens
    delete:
      summary: Delete Service Account
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Delete a specific Service Account.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Auth:ServiceAccounts:Delete`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: serviceAccountId
          in: path
        - schema:
            type:
              - boolean
              - "null"
            default: false
            description: If true, bypasses the policy approver check and deletes
              immediately.
          required: false
          description: If true, bypasses the policy approver check and deletes immediately.
          name: force
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  userInfo:
                    type: object
                    properties:
                      username:
                        type: string
                      name:
                        type: string
                      userId:
                        type: string
                        minLength: 1
                        maxLength: 64
                        pattern: ^us-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                        description: User id.
                        example: us-6b58p-r53sr-rlrd3l5cj3uc4ome
                      kind:
                        type: string
                        enum: *a56
                        description: User kind.
                      credentialUuid:
                        type: string
                      orgId:
                        type: string
                      permissions:
                        type: array
                        items:
                          type: string
                      isActive:
                        type: boolean
                      isServiceAccount:
                        type: boolean
                      isRegistered:
                        type: boolean
                      permissionAssignments:
                        type: array
                        items:
                          type: object
                          properties:
                            permissionName:
                              type: string
                            permissionId:
                              type: string
                            assignmentId:
                              type: string
                            operations:
                              type: array
                              items:
                                type: string
                          required:
                            - permissionName
                            - permissionId
                            - assignmentId
                    required:
                      - username
                      - name
                      - userId
                      - kind
                      - credentialUuid
                      - orgId
                      - isActive
                      - isServiceAccount
                      - isRegistered
                      - permissionAssignments
                  accessTokens:
                    type: array
                    items:
                      $ref: "#/components/schemas/PersonalAccessToken"
                required:
                  - userInfo
                  - accessTokens
  /auth/service-accounts/{serviceAccountId}/activate:
    put:
      summary: Activate Service Account
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Activate a specific Service Account.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ❌ Personal Access Token not allowed    
          ✅ Service Account

          #### Required Permissions

          `Auth:ServiceAccounts:Activate`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: serviceAccountId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  userInfo:
                    type: object
                    properties:
                      username:
                        type: string
                      name:
                        type: string
                      userId:
                        type: string
                        minLength: 1
                        maxLength: 64
                        pattern: ^us-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                        description: User id.
                        example: us-6b58p-r53sr-rlrd3l5cj3uc4ome
                      kind:
                        type: string
                        enum: *a56
                        description: User kind.
                      credentialUuid:
                        type: string
                      orgId:
                        type: string
                      permissions:
                        type: array
                        items:
                          type: string
                      isActive:
                        type: boolean
                      isServiceAccount:
                        type: boolean
                      isRegistered:
                        type: boolean
                      permissionAssignments:
                        type: array
                        items:
                          type: object
                          properties:
                            permissionName:
                              type: string
                            permissionId:
                              type: string
                            assignmentId:
                              type: string
                            operations:
                              type: array
                              items:
                                type: string
                          required:
                            - permissionName
                            - permissionId
                            - assignmentId
                    required:
                      - username
                      - name
                      - userId
                      - kind
                      - credentialUuid
                      - orgId
                      - isActive
                      - isServiceAccount
                      - isRegistered
                      - permissionAssignments
                  accessTokens:
                    type: array
                    items:
                      $ref: "#/components/schemas/PersonalAccessToken"
                required:
                  - userInfo
                  - accessTokens
  /auth/service-accounts/{serviceAccountId}/deactivate:
    put:
      summary: Deactivate Service Account
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Deactivate a specific Service Account.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ❌ Personal Access Token not allowed    
          ✅ Service Account

          #### Required Permissions

          `Auth:ServiceAccounts:Deactivate`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: serviceAccountId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                force:
                  type: boolean
                  default: false
                  description: If true, bypasses the policy approver check and deactivates
                    immediately.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  userInfo:
                    type: object
                    properties:
                      username:
                        type: string
                      name:
                        type: string
                      userId:
                        type: string
                        minLength: 1
                        maxLength: 64
                        pattern: ^us-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                        description: User id.
                        example: us-6b58p-r53sr-rlrd3l5cj3uc4ome
                      kind:
                        type: string
                        enum: *a56
                        description: User kind.
                      credentialUuid:
                        type: string
                      orgId:
                        type: string
                      permissions:
                        type: array
                        items:
                          type: string
                      isActive:
                        type: boolean
                      isServiceAccount:
                        type: boolean
                      isRegistered:
                        type: boolean
                      permissionAssignments:
                        type: array
                        items:
                          type: object
                          properties:
                            permissionName:
                              type: string
                            permissionId:
                              type: string
                            assignmentId:
                              type: string
                            operations:
                              type: array
                              items:
                                type: string
                          required:
                            - permissionName
                            - permissionId
                            - assignmentId
                    required:
                      - username
                      - name
                      - userId
                      - kind
                      - credentialUuid
                      - orgId
                      - isActive
                      - isServiceAccount
                      - isRegistered
                      - permissionAssignments
                  accessTokens:
                    type: array
                    items:
                      $ref: "#/components/schemas/PersonalAccessToken"
                required:
                  - userInfo
                  - accessTokens
  /auth/users/{userId}/activate:
    put:
      summary: Activate User
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Activate a specific User.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ❌ Personal Access Token not allowed    
          ✅ Service Account

          #### Required Permissions

          `Auth:Users:Activate`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: userId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
  /auth/users/{userId}/deactivate:
    put:
      summary: Deactivate User
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Deactivate a specific User.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ❌ Personal Access Token not allowed    
          ✅ Service Account

          #### Required Permissions

          `Auth:Users:Deactivate`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: userId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
  /auth/users/{userId}:
    delete:
      summary: Delete User
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Delete a specific User.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Auth:Users:Delete`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: userId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
    get:
      summary: Get User
      tags:
        - Auth
      security:
        - authenticationToken: []
      description: Retrieve information about a specific User.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Auth:Users:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: userId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
    put:
      summary: Update User
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Update a specific User.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Auth:Users:Update`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: userId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                isSSORequired:
                  type: boolean
              required:
                - isSSORequired
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
  /auth/users:
    post:
      summary: Create User
      tags:
        - Auth
      security:
        - authenticationToken: []
          userActionSignature: []
      description: "Invite a new user in the caller's org. This will create the user
        and send a registration email to the created User's email, with a
        registration code, and pointing him to complete his registration on Dfns
        Dashboard. The user is created without any permissions.

        \ \ 

        \  <Note>If you want the created User to not know about about Dfns, and
        don't want him to\ 

        \  receive the registration email from Dfns, you should rather use the
        Delegated Registration\ 

        \  endpoint.</Note>

        \  "
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ❌ Personal Access Token not allowed    
          ✅ Service Account

          #### Required Permissions

          `Auth:Users:Create`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  format: email
                  description: The email address of the new user.
                kind:
                  type: string
                  enum:
                    - CustomerEmployee
                  description: >-
                    The kind of user being created. 
                          In this endpoint it can only be "`CustomerEmployee`" (creating an "`EndUser`" is done through the [Delegated Registration](https://docs.dfns.co/api-reference/auth/registration-flows#delegated-users-registration-flow) endpoint)
                publicKey:
                  type: string
                externalId:
                  type: string
                  description: Value that can be used to correlate the entity with an external
                    system.
                isSSORequired:
                  type: boolean
                  default: false
                  description: If set to true, the user will have to authenticate via SSO
              required:
                - email
                - kind
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
    get:
      summary: List Users
      tags:
        - Auth
      security:
        - authenticationToken: []
      description: List all Users in your organization.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Auth:Users:Read`: Always required.
      parameters:
        - schema:
            type: integer
            exclusiveMinimum: 0
            maximum: 200
          required: false
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
          required: false
          name: paginationToken
          in: query
        - schema:
            type: string
            enum:
              - CustomerEmployee
              - EndUser
          required: false
          name: kind
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/User"
                  nextPageToken:
                    type: string
                required:
                  - items
  /exchanges/{exchangeId}:
    get:
      summary: Get Exchange
      tags:
        - Exchanges
      security:
        - authenticationToken: []
      description: Retrieve the details of a specific exchange integration configuration.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ❌ Service Account

          #### Required Permissions

          `Exchanges:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: exchangeId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  kind:
                    type: string
                    enum:
                      - Binance
                      - Kraken
                      - CoinbaseApp
                      - CoinbasePrime
                  dateCreated:
                    type: string
                required:
                  - id
                  - kind
                  - dateCreated
    delete:
      summary: Delete Exchange
      tags:
        - Exchanges
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Delete the exchange configuration from your organization.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ❌ Service Account

          #### Required Permissions

          `Exchanges:Delete`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: exchangeId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  deleted:
                    type: boolean
                    enum:
                      - true
                required:
                  - deleted
  /exchanges:
    post:
      summary: Create Exchange
      tags:
        - Exchanges
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Link your organization with a cryptocurrency exchange.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ❌ Service Account

          #### Required Permissions

          `Exchanges:Create`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  maxLength: 100
                kind:
                  type: string
                  enum:
                    - Binance
                    - Kraken
                    - CoinbaseApp
                    - CoinbasePrime
                readConfiguration:
                  type: object
                  properties:
                    publicApiKey:
                      type: string
                    privateApiKey:
                      type: string
                    password:
                      type: string
                    otp:
                      type: string
                  required:
                    - publicApiKey
                    - privateApiKey
                writeConfiguration:
                  type: object
                  properties:
                    publicApiKey:
                      type: string
                    privateApiKey:
                      type: string
                    password:
                      type: string
                    otp:
                      type: string
                  required:
                    - publicApiKey
                    - privateApiKey
              required:
                - kind
                - readConfiguration
                - writeConfiguration
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  kind:
                    type: string
                    enum:
                      - Binance
                      - Kraken
                      - CoinbaseApp
                      - CoinbasePrime
                  dateCreated:
                    type: string
                required:
                  - id
                  - kind
                  - dateCreated
                additionalProperties: false
    get:
      summary: List Exchanges
      tags:
        - Exchanges
      security:
        - authenticationToken: []
      description: List all configured exchange integrations.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ❌ Service Account

          #### Required Permissions

          `Exchanges:Read`: Always required.
      parameters:
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        kind:
                          type: string
                          enum:
                            - Binance
                            - Kraken
                            - CoinbaseApp
                            - CoinbasePrime
                        dateCreated:
                          type: string
                      required:
                        - id
                        - kind
                        - dateCreated
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                required:
                  - items
  /exchanges/{exchangeId}/accounts:
    get:
      summary: List Accounts
      tags:
        - Exchanges
      security:
        - authenticationToken: []
      description: Get a list of accounts for a specific exchange.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ❌ Service Account

          #### Required Permissions

          `Exchanges:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: exchangeId
          in: path
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        exchangeId:
                          type: string
                        exchangeName:
                          type: string
                      required:
                        - id
                        - exchangeId
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                required:
                  - items
  /exchanges/{exchangeId}/accounts/{accountId}/assets:
    get:
      summary: List Account Assets
      tags:
        - Exchanges
      security:
        - authenticationToken: []
      description: Retrieve the list of assets for a specific account on a specific
        exchange.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Exchanges:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: exchangeId
          in: path
        - schema:
            type: string
            minLength: 1
          required: true
          name: accountId
          in: path
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        symbol:
                          type: string
                        balance:
                          type: string
                      required:
                        - symbol
                        - balance
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                required:
                  - items
  /exchanges/{exchangeId}/accounts/{accountId}/assets/{asset}/withdrawal-networks:
    get:
      summary: List Asset Withdrawal Networks
      tags:
        - Exchanges
      security:
        - authenticationToken: []
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Exchanges:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: exchangeId
          in: path
        - schema:
            type: string
            minLength: 1
          required: true
          name: accountId
          in: path
        - schema:
            type: string
            minLength: 1
          required: true
          name: asset
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  allOf:
                    - oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Native
                          required:
                            - kind
                          title: Native assets
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Aip21
                            metadata:
                              type: string
                          required:
                            - kind
                            - metadata
                          title: Aptos Fungible Assets (AIP-21)
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Asa
                            assetId:
                              type: string
                          required:
                            - kind
                            - assetId
                          title: Algorand Standard Assets (ASAs)
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Cis2
                            tokenAddress:
                              type: string
                          required:
                            - kind
                            - tokenAddress
                          title: Concordium CIS-2 tokens
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum: &a68
                                - Erc20
                                - Snip2
                                - Trc20
                            contract:
                              type: string
                          required:
                            - kind
                            - contract
                          title: EVM ERC-20/Starknet SNIP-2/TRON TRC-20 tokens
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Erc7984
                            contract:
                              type: string
                          required:
                            - kind
                            - contract
                          title: EVM ERC-7984 confidential tokens
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Hts
                            tokenId:
                              type: string
                          required:
                            - kind
                            - tokenId
                          title: Hedera tokens (HTS)
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Iou
                            currency:
                              type: string
                            issuer:
                              type: string
                          required:
                            - kind
                            - currency
                            - issuer
                          title: XRP Ledger IOU tokens
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Cip56
                            instrumentId:
                              type: string
                            instrumentAdmin:
                              type: string
                          required:
                            - kind
                            - instrumentId
                            - instrumentAdmin
                          title: Canton CIP-56 tokens
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum: &a69
                                - Coin
                                - LockedCoin
                            coin:
                              type: string
                          required:
                            - kind
                            - coin
                          title: Sui/IOTA Coin assets
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Xls33
                            issuanceId:
                              type: string
                          required:
                            - kind
                            - issuanceId
                          title: XRP Ledger MPL (XLS-33) tokens
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Asset
                            assetId:
                              type: string
                          required:
                            - kind
                            - assetId
                          title: Polymesh/Cardano assets
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Cis7
                            tokenId:
                              type: string
                          required:
                            - kind
                            - tokenId
                          title: Concordium PLTs ( CIS-7 tokens)
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Sep41
                            issuer:
                              type: string
                            assetCode:
                              type: string
                          required:
                            - kind
                            - issuer
                            - assetCode
                          title: Stellar SEP-41 tokens
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Trc10
                            tokenId:
                              type: string
                          required:
                            - kind
                            - tokenId
                          title: TRON TRC-10 tokens
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum: &a70
                                - Spl
                                - Spl2022
                            mint:
                              type: string
                          required:
                            - kind
                            - mint
                          title: Solana SPL/SPL2022 tokens
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Tep74
                            master:
                              type: string
                          required:
                            - kind
                            - master
                          title: TON TEP-74 Jetton
                    - type: object
                      properties:
                        network:
                          $ref: "#/components/schemas/Network"
                        decimals:
                          type: number
                      required:
                        - network
                        - decimals
  /exchanges/{exchangeId}/accounts/{accountId}/deposits:
    post:
      summary: Create Exchange Deposit
      tags:
        - Exchanges
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Creates a new exchange deposit transaction.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Exchanges:Deposits:Create`: Always required.   
          `Wallets:Transfers:Create`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            description: "The exchange id obtained from the Create Exchange endpoint. Ex:
              `ex-1f04s-lqc9q-xxxxxxxxxxxxxxxx`"
          required: true
          description: "The exchange id obtained from the Create Exchange endpoint. Ex:
            `ex-1f04s-lqc9q-xxxxxxxxxxxxxxxx`"
          name: exchangeId
          in: path
        - schema:
            type: string
            minLength: 1
            description: Unique identifier for the account like "spot"
          required: true
          description: Unique identifier for the account like "spot"
          name: accountId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Native
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of native tokens to transfer in minimum denomination.
                    priority:
                      type: string
                      enum:
                        - Slow
                        - Standard
                        - Fast
                      description: The priority that determines the fees paid for the transfer. All
                        EVM compatible networks and Bitcoin support `priority`.
                        Not supported for other networks. It uses the [estimate
                        fees](https://docs.dfns.co/api-reference/networks/estimate-fees)
                        API to calculate the transfer fees. When not specified,
                        defaults to `Standard` priority.
                    createDestinationAccount:
                      type: boolean
                      description: Whether to create the destination account on chains that require
                        account creation (e.g., Stellar). Only valid for chains
                        that require the receiver account to exist before
                        transfer.
                    offer:
                      type: boolean
                      description: Optional field for Canton, if true it will create a transfer offer.
                    expiresAt:
                      type: string
                      format: date-time
                      description: Optional field for Canton, especially useful in the context of
                        offers
                    useDurableNonce:
                      type: boolean
                      description: "Optional Solana-only flag. When `true` the SOL transfer is built
                        as a durable-nonce transaction using one of the wallet's
                        nonce accounts (picked server-side). Use this for
                        offline-signing flows where the construct → broadcast
                        gap may exceed 90 seconds. The wallet's nonce account
                        pool must be pre-populated via `POST
                        /wallets/{id}/transactions` with `kind:
                        CreateSolanaNonceAccounts`."
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                    walletId:
                      type: string
                      minLength: 1
                    otp:
                      type: string
                      minLength: 6
                      maxLength: 6
                  required:
                    - kind
                    - amount
                    - walletId
                  description: ""
                  title: Native Assets
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Erc20
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                      description: The ERC-20 contract address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    priority:
                      type: string
                      enum:
                        - Slow
                        - Standard
                        - Fast
                      description: The priority that determines the fees paid for the transfer.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                    walletId:
                      type: string
                      minLength: 1
                    otp:
                      type: string
                      minLength: 6
                      maxLength: 6
                  required:
                    - kind
                    - contract
                    - amount
                    - walletId
                  description: ""
                  title: EVM Fungible Token (ERC-20)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Trc10
                    tokenId:
                      type: string
                      pattern: ^\d+$
                      description: The token ID.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                    walletId:
                      type: string
                      minLength: 1
                    otp:
                      type: string
                      minLength: 6
                      maxLength: 6
                  required:
                    - kind
                    - tokenId
                    - amount
                    - walletId
                  description: ""
                  title: TRON Native Fungible Token (TRC-10)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Trc20
                    contract:
                      type: string
                      pattern: ^T[0-9a-zA-Z]{33}$
                      description: The smart contract address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                    walletId:
                      type: string
                      minLength: 1
                    otp:
                      type: string
                      minLength: 6
                      maxLength: 6
                  required:
                    - kind
                    - contract
                    - amount
                    - walletId
                  description: ""
                  title: TRON Smart Contract Fungible Token (TRC-20)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Asa
                    assetId:
                      type: string
                      pattern: ^\d+$
                      description: "The token asset id. "
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                    walletId:
                      type: string
                      minLength: 1
                    otp:
                      type: string
                      minLength: 6
                      maxLength: 6
                  required:
                    - kind
                    - assetId
                    - amount
                    - walletId
                  description: ""
                  title: Algorand Standard Asset
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Sep41
                    issuer:
                      type: string
                      pattern: ^(G[A-Z0-9]{55}|M[A-Z0-9]{68})$
                      description: The asset issuer address.
                    assetCode:
                      type: string
                      description: The asset code.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                    walletId:
                      type: string
                      minLength: 1
                    otp:
                      type: string
                      minLength: 6
                      maxLength: 6
                  required:
                    - kind
                    - issuer
                    - assetCode
                    - amount
                    - walletId
                  description: ""
                  title: Stellar Classic Assets (SEP-41)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum: *a57
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    mint:
                      type: string
                      pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
                      description: The mint account address.
                    createDestinationAccount:
                      type: boolean
                      description: If `true`, pay to create the associated token account for the
                        recipient if it doesn't exist. Defaults to `false`.
                    useDurableNonce:
                      type: boolean
                      description: "Optional. When `true` the SPL transfer is built as a durable-nonce
                        transaction using one of the wallet's nonce accounts
                        (picked server-side). The wallet's nonce account pool
                        must be pre-populated via `POST
                        /wallets/{id}/transactions` with `kind:
                        CreateSolanaNonceAccounts`."
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                    walletId:
                      type: string
                      minLength: 1
                    otp:
                      type: string
                      minLength: 6
                      maxLength: 6
                  required:
                    - kind
                    - amount
                    - mint
                    - walletId
                  description: ""
                  title: Solana Program Library Token (SPL and SPL 2022)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Tep74
                    master:
                      type: string
                      pattern: ^(?:[A-Za-z0-9\-_]{48}|\d+:[a-fA-F0-9]{64})$
                      description: The Jetton master contract address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                    walletId:
                      type: string
                      minLength: 1
                    otp:
                      type: string
                      minLength: 6
                      maxLength: 6
                  required:
                    - kind
                    - master
                    - amount
                    - walletId
                  description: ""
                  title: TON Jetton (TEP-74)
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  exchangeId:
                    type: string
                  accountId:
                    type: string
                  transferId:
                    type: string
                  exchangeReference:
                    type: string
                  kind:
                    type: string
                    enum: &a58
                      - Withdrawal
                      - Deposit
                  walletId:
                    type: string
                  requester:
                    $ref: "#/components/schemas/Requester"
                  requestBody:
                    oneOf:
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - Native
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of native tokens to transfer in minimum denomination.
                          priority:
                            type: string
                            enum:
                              - Slow
                              - Standard
                              - Fast
                            description: The priority that determines the fees paid for the transfer. All
                              EVM compatible networks and Bitcoin support
                              `priority`. Not supported for other networks. It
                              uses the [estimate
                              fees](https://docs.dfns.co/api-reference/networks/estimate-fees)
                              API to calculate the transfer fees. When not
                              specified, defaults to `Standard` priority.
                          createDestinationAccount:
                            type: boolean
                            description: Whether to create the destination account on chains that require
                              account creation (e.g., Stellar). Only valid for
                              chains that require the receiver account to exist
                              before transfer.
                          offer:
                            type: boolean
                            description: Optional field for Canton, if true it will create a transfer offer.
                          expiresAt:
                            type: string
                            format: date-time
                            description: Optional field for Canton, especially useful in the context of
                              offers
                          useDurableNonce:
                            type: boolean
                            description: "Optional Solana-only flag. When `true` the SOL transfer is built
                              as a durable-nonce transaction using one of the
                              wallet's nonce accounts (picked server-side). Use
                              this for offline-signing flows where the construct
                              → broadcast gap may exceed 90 seconds. The
                              wallet's nonce account pool must be pre-populated
                              via `POST /wallets/{id}/transactions` with `kind:
                              CreateSolanaNonceAccounts`."
                          externalId:
                            type: string
                            minLength: 1
                            maxLength: 50
                            description: A unique ID from your system. It can be leveraged to be used as an
                              idempotency key. (read more
                              [here](https://docs.dfns.co/api-reference/idempotency))
                          travelRule:
                            oneOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - Notabene
                                  beneficiaryVASPdid:
                                    type: string
                                  beneficiaryProof:
                                    type: object
                                    additionalProperties: {}
                                  originator:
                                    type: object
                                    additionalProperties: {}
                                  beneficiary:
                                    type: object
                                    additionalProperties: {}
                                required:
                                  - kind
                                  - originator
                                  - beneficiary
                                additionalProperties: false
                                title: Notabene Travel Rule
                            description: A travel rule payload to associate with the transfer. (read more
                              [here](https://docs.dfns.co/features/travel-rule))
                          feeSponsorId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: Id of the fee sponsor that will be used to pay for your transfer
                              fees, it might not be available for all
                              blockchains. (read more
                              [here](https://docs.dfns.co/features/fee-sponsors))
                            example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                          walletId:
                            type: string
                            minLength: 1
                          otp:
                            type: string
                            minLength: 6
                            maxLength: 6
                        required:
                          - kind
                          - amount
                          - walletId
                        description: ""
                        title: Native Assets
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - Erc20
                          contract:
                            type: string
                            pattern: ^0x[0-9a-fA-F]{40}$
                            description: The ERC-20 contract address.
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of tokens to transfer in minimum denomination.
                          priority:
                            type: string
                            enum:
                              - Slow
                              - Standard
                              - Fast
                            description: The priority that determines the fees paid for the transfer.
                          externalId:
                            type: string
                            minLength: 1
                            maxLength: 50
                            description: A unique ID from your system. It can be leveraged to be used as an
                              idempotency key. (read more
                              [here](https://docs.dfns.co/api-reference/idempotency))
                          travelRule:
                            oneOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - Notabene
                                  beneficiaryVASPdid:
                                    type: string
                                  beneficiaryProof:
                                    type: object
                                    additionalProperties: {}
                                  originator:
                                    type: object
                                    additionalProperties: {}
                                  beneficiary:
                                    type: object
                                    additionalProperties: {}
                                required:
                                  - kind
                                  - originator
                                  - beneficiary
                                additionalProperties: false
                                title: Notabene Travel Rule
                            description: A travel rule payload to associate with the transfer. (read more
                              [here](https://docs.dfns.co/features/travel-rule))
                          feeSponsorId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: Id of the fee sponsor that will be used to pay for your transfer
                              fees, it might not be available for all
                              blockchains. (read more
                              [here](https://docs.dfns.co/features/fee-sponsors))
                            example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                          walletId:
                            type: string
                            minLength: 1
                          otp:
                            type: string
                            minLength: 6
                            maxLength: 6
                        required:
                          - kind
                          - contract
                          - amount
                          - walletId
                        description: ""
                        title: EVM Fungible Token (ERC-20)
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - Trc10
                          tokenId:
                            type: string
                            pattern: ^\d+$
                            description: The token ID.
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of tokens to transfer in minimum denomination.
                          externalId:
                            type: string
                            minLength: 1
                            maxLength: 50
                            description: A unique ID from your system. It can be leveraged to be used as an
                              idempotency key. (read more
                              [here](https://docs.dfns.co/api-reference/idempotency))
                          travelRule:
                            oneOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - Notabene
                                  beneficiaryVASPdid:
                                    type: string
                                  beneficiaryProof:
                                    type: object
                                    additionalProperties: {}
                                  originator:
                                    type: object
                                    additionalProperties: {}
                                  beneficiary:
                                    type: object
                                    additionalProperties: {}
                                required:
                                  - kind
                                  - originator
                                  - beneficiary
                                additionalProperties: false
                                title: Notabene Travel Rule
                            description: A travel rule payload to associate with the transfer. (read more
                              [here](https://docs.dfns.co/features/travel-rule))
                          feeSponsorId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: Id of the fee sponsor that will be used to pay for your transfer
                              fees, it might not be available for all
                              blockchains. (read more
                              [here](https://docs.dfns.co/features/fee-sponsors))
                            example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                          walletId:
                            type: string
                            minLength: 1
                          otp:
                            type: string
                            minLength: 6
                            maxLength: 6
                        required:
                          - kind
                          - tokenId
                          - amount
                          - walletId
                        description: ""
                        title: TRON Native Fungible Token (TRC-10)
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - Trc20
                          contract:
                            type: string
                            pattern: ^T[0-9a-zA-Z]{33}$
                            description: The smart contract address.
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of tokens to transfer in minimum denomination.
                          externalId:
                            type: string
                            minLength: 1
                            maxLength: 50
                            description: A unique ID from your system. It can be leveraged to be used as an
                              idempotency key. (read more
                              [here](https://docs.dfns.co/api-reference/idempotency))
                          travelRule:
                            oneOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - Notabene
                                  beneficiaryVASPdid:
                                    type: string
                                  beneficiaryProof:
                                    type: object
                                    additionalProperties: {}
                                  originator:
                                    type: object
                                    additionalProperties: {}
                                  beneficiary:
                                    type: object
                                    additionalProperties: {}
                                required:
                                  - kind
                                  - originator
                                  - beneficiary
                                additionalProperties: false
                                title: Notabene Travel Rule
                            description: A travel rule payload to associate with the transfer. (read more
                              [here](https://docs.dfns.co/features/travel-rule))
                          feeSponsorId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: Id of the fee sponsor that will be used to pay for your transfer
                              fees, it might not be available for all
                              blockchains. (read more
                              [here](https://docs.dfns.co/features/fee-sponsors))
                            example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                          walletId:
                            type: string
                            minLength: 1
                          otp:
                            type: string
                            minLength: 6
                            maxLength: 6
                        required:
                          - kind
                          - contract
                          - amount
                          - walletId
                        description: ""
                        title: TRON Smart Contract Fungible Token (TRC-20)
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - Asa
                          assetId:
                            type: string
                            pattern: ^\d+$
                            description: "The token asset id. "
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of tokens to transfer in minimum denomination.
                          externalId:
                            type: string
                            minLength: 1
                            maxLength: 50
                            description: A unique ID from your system. It can be leveraged to be used as an
                              idempotency key. (read more
                              [here](https://docs.dfns.co/api-reference/idempotency))
                          travelRule:
                            oneOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - Notabene
                                  beneficiaryVASPdid:
                                    type: string
                                  beneficiaryProof:
                                    type: object
                                    additionalProperties: {}
                                  originator:
                                    type: object
                                    additionalProperties: {}
                                  beneficiary:
                                    type: object
                                    additionalProperties: {}
                                required:
                                  - kind
                                  - originator
                                  - beneficiary
                                additionalProperties: false
                                title: Notabene Travel Rule
                            description: A travel rule payload to associate with the transfer. (read more
                              [here](https://docs.dfns.co/features/travel-rule))
                          feeSponsorId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: Id of the fee sponsor that will be used to pay for your transfer
                              fees, it might not be available for all
                              blockchains. (read more
                              [here](https://docs.dfns.co/features/fee-sponsors))
                            example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                          walletId:
                            type: string
                            minLength: 1
                          otp:
                            type: string
                            minLength: 6
                            maxLength: 6
                        required:
                          - kind
                          - assetId
                          - amount
                          - walletId
                        description: ""
                        title: Algorand Standard Asset
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - Sep41
                          issuer:
                            type: string
                            pattern: ^(G[A-Z0-9]{55}|M[A-Z0-9]{68})$
                            description: The asset issuer address.
                          assetCode:
                            type: string
                            description: The asset code.
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of tokens to transfer in minimum denomination.
                          externalId:
                            type: string
                            minLength: 1
                            maxLength: 50
                            description: A unique ID from your system. It can be leveraged to be used as an
                              idempotency key. (read more
                              [here](https://docs.dfns.co/api-reference/idempotency))
                          travelRule:
                            oneOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - Notabene
                                  beneficiaryVASPdid:
                                    type: string
                                  beneficiaryProof:
                                    type: object
                                    additionalProperties: {}
                                  originator:
                                    type: object
                                    additionalProperties: {}
                                  beneficiary:
                                    type: object
                                    additionalProperties: {}
                                required:
                                  - kind
                                  - originator
                                  - beneficiary
                                additionalProperties: false
                                title: Notabene Travel Rule
                            description: A travel rule payload to associate with the transfer. (read more
                              [here](https://docs.dfns.co/features/travel-rule))
                          feeSponsorId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: Id of the fee sponsor that will be used to pay for your transfer
                              fees, it might not be available for all
                              blockchains. (read more
                              [here](https://docs.dfns.co/features/fee-sponsors))
                            example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                          walletId:
                            type: string
                            minLength: 1
                          otp:
                            type: string
                            minLength: 6
                            maxLength: 6
                        required:
                          - kind
                          - issuer
                          - assetCode
                          - amount
                          - walletId
                        description: ""
                        title: Stellar Classic Assets (SEP-41)
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum: *a57
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of tokens to transfer in minimum denomination.
                          mint:
                            type: string
                            pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
                            description: The mint account address.
                          createDestinationAccount:
                            type: boolean
                            description: If `true`, pay to create the associated token account for the
                              recipient if it doesn't exist. Defaults to
                              `false`.
                          useDurableNonce:
                            type: boolean
                            description: "Optional. When `true` the SPL transfer is built as a durable-nonce
                              transaction using one of the wallet's nonce
                              accounts (picked server-side). The wallet's nonce
                              account pool must be pre-populated via `POST
                              /wallets/{id}/transactions` with `kind:
                              CreateSolanaNonceAccounts`."
                          externalId:
                            type: string
                            minLength: 1
                            maxLength: 50
                            description: A unique ID from your system. It can be leveraged to be used as an
                              idempotency key. (read more
                              [here](https://docs.dfns.co/api-reference/idempotency))
                          travelRule:
                            oneOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - Notabene
                                  beneficiaryVASPdid:
                                    type: string
                                  beneficiaryProof:
                                    type: object
                                    additionalProperties: {}
                                  originator:
                                    type: object
                                    additionalProperties: {}
                                  beneficiary:
                                    type: object
                                    additionalProperties: {}
                                required:
                                  - kind
                                  - originator
                                  - beneficiary
                                additionalProperties: false
                                title: Notabene Travel Rule
                            description: A travel rule payload to associate with the transfer. (read more
                              [here](https://docs.dfns.co/features/travel-rule))
                          feeSponsorId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: Id of the fee sponsor that will be used to pay for your transfer
                              fees, it might not be available for all
                              blockchains. (read more
                              [here](https://docs.dfns.co/features/fee-sponsors))
                            example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                          walletId:
                            type: string
                            minLength: 1
                          otp:
                            type: string
                            minLength: 6
                            maxLength: 6
                        required:
                          - kind
                          - amount
                          - mint
                          - walletId
                        description: ""
                        title: Solana Program Library Token (SPL and SPL 2022)
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - Tep74
                          master:
                            type: string
                            pattern: ^(?:[A-Za-z0-9\-_]{48}|\d+:[a-fA-F0-9]{64})$
                            description: The Jetton master contract address.
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of tokens to transfer in minimum denomination.
                          externalId:
                            type: string
                            minLength: 1
                            maxLength: 50
                            description: A unique ID from your system. It can be leveraged to be used as an
                              idempotency key. (read more
                              [here](https://docs.dfns.co/api-reference/idempotency))
                          travelRule:
                            oneOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - Notabene
                                  beneficiaryVASPdid:
                                    type: string
                                  beneficiaryProof:
                                    type: object
                                    additionalProperties: {}
                                  originator:
                                    type: object
                                    additionalProperties: {}
                                  beneficiary:
                                    type: object
                                    additionalProperties: {}
                                required:
                                  - kind
                                  - originator
                                  - beneficiary
                                additionalProperties: false
                                title: Notabene Travel Rule
                            description: A travel rule payload to associate with the transfer. (read more
                              [here](https://docs.dfns.co/features/travel-rule))
                          feeSponsorId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: Id of the fee sponsor that will be used to pay for your transfer
                              fees, it might not be available for all
                              blockchains. (read more
                              [here](https://docs.dfns.co/features/fee-sponsors))
                            example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                          walletId:
                            type: string
                            minLength: 1
                          otp:
                            type: string
                            minLength: 6
                            maxLength: 6
                        required:
                          - kind
                          - master
                          - amount
                          - walletId
                        description: ""
                        title: TON Jetton (TEP-74)
                  dateCreated:
                    type: string
                required:
                  - id
                  - exchangeId
                  - accountId
                  - kind
                  - walletId
                  - requester
                  - requestBody
                  - dateCreated
  /exchanges/{exchangeId}/accounts/{accountId}/withdrawals:
    post:
      summary: Create Exchange Withdrawal
      tags:
        - Exchanges
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Creates a new exchange withdrawal transaction.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Exchanges:Withdrawals:Create`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            description: "The exchange id obtained from the Create Exchange endpoint. Ex:
              `ex-1f04s-lqc9q-xxxxxxxxxxxxxxxx`"
          required: true
          description: "The exchange id obtained from the Create Exchange endpoint. Ex:
            `ex-1f04s-lqc9q-xxxxxxxxxxxxxxxx`"
          name: exchangeId
          in: path
        - schema:
            type: string
            minLength: 1
            description: Unique identifier for the account like "spot"
          required: true
          description: Unique identifier for the account like "spot"
          name: accountId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Native
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of native tokens to transfer in minimum denomination.
                    priority:
                      type: string
                      enum:
                        - Slow
                        - Standard
                        - Fast
                      description: The priority that determines the fees paid for the transfer. All
                        EVM compatible networks and Bitcoin support `priority`.
                        Not supported for other networks. It uses the [estimate
                        fees](https://docs.dfns.co/api-reference/networks/estimate-fees)
                        API to calculate the transfer fees. When not specified,
                        defaults to `Standard` priority.
                    createDestinationAccount:
                      type: boolean
                      description: Whether to create the destination account on chains that require
                        account creation (e.g., Stellar). Only valid for chains
                        that require the receiver account to exist before
                        transfer.
                    offer:
                      type: boolean
                      description: Optional field for Canton, if true it will create a transfer offer.
                    expiresAt:
                      type: string
                      format: date-time
                      description: Optional field for Canton, especially useful in the context of
                        offers
                    useDurableNonce:
                      type: boolean
                      description: "Optional Solana-only flag. When `true` the SOL transfer is built
                        as a durable-nonce transaction using one of the wallet's
                        nonce accounts (picked server-side). Use this for
                        offline-signing flows where the construct → broadcast
                        gap may exceed 90 seconds. The wallet's nonce account
                        pool must be pre-populated via `POST
                        /wallets/{id}/transactions` with `kind:
                        CreateSolanaNonceAccounts`."
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                    walletId:
                      type: string
                      minLength: 1
                    otp:
                      type: string
                      minLength: 6
                      maxLength: 6
                  required:
                    - kind
                    - amount
                    - walletId
                  description: ""
                  title: Native Assets
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Erc20
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                      description: The ERC-20 contract address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    priority:
                      type: string
                      enum:
                        - Slow
                        - Standard
                        - Fast
                      description: The priority that determines the fees paid for the transfer.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                    walletId:
                      type: string
                      minLength: 1
                    otp:
                      type: string
                      minLength: 6
                      maxLength: 6
                  required:
                    - kind
                    - contract
                    - amount
                    - walletId
                  description: ""
                  title: EVM Fungible Token (ERC-20)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Trc10
                    tokenId:
                      type: string
                      pattern: ^\d+$
                      description: The token ID.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                    walletId:
                      type: string
                      minLength: 1
                    otp:
                      type: string
                      minLength: 6
                      maxLength: 6
                  required:
                    - kind
                    - tokenId
                    - amount
                    - walletId
                  description: ""
                  title: TRON Native Fungible Token (TRC-10)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Trc20
                    contract:
                      type: string
                      pattern: ^T[0-9a-zA-Z]{33}$
                      description: The smart contract address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                    walletId:
                      type: string
                      minLength: 1
                    otp:
                      type: string
                      minLength: 6
                      maxLength: 6
                  required:
                    - kind
                    - contract
                    - amount
                    - walletId
                  description: ""
                  title: TRON Smart Contract Fungible Token (TRC-20)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Asa
                    assetId:
                      type: string
                      pattern: ^\d+$
                      description: "The token asset id. "
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                    walletId:
                      type: string
                      minLength: 1
                    otp:
                      type: string
                      minLength: 6
                      maxLength: 6
                  required:
                    - kind
                    - assetId
                    - amount
                    - walletId
                  description: ""
                  title: Algorand Standard Asset
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Sep41
                    issuer:
                      type: string
                      pattern: ^(G[A-Z0-9]{55}|M[A-Z0-9]{68})$
                      description: The asset issuer address.
                    assetCode:
                      type: string
                      description: The asset code.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                    walletId:
                      type: string
                      minLength: 1
                    otp:
                      type: string
                      minLength: 6
                      maxLength: 6
                  required:
                    - kind
                    - issuer
                    - assetCode
                    - amount
                    - walletId
                  description: ""
                  title: Stellar Classic Assets (SEP-41)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum: *a57
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    mint:
                      type: string
                      pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
                      description: The mint account address.
                    createDestinationAccount:
                      type: boolean
                      description: If `true`, pay to create the associated token account for the
                        recipient if it doesn't exist. Defaults to `false`.
                    useDurableNonce:
                      type: boolean
                      description: "Optional. When `true` the SPL transfer is built as a durable-nonce
                        transaction using one of the wallet's nonce accounts
                        (picked server-side). The wallet's nonce account pool
                        must be pre-populated via `POST
                        /wallets/{id}/transactions` with `kind:
                        CreateSolanaNonceAccounts`."
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                    walletId:
                      type: string
                      minLength: 1
                    otp:
                      type: string
                      minLength: 6
                      maxLength: 6
                  required:
                    - kind
                    - amount
                    - mint
                    - walletId
                  description: ""
                  title: Solana Program Library Token (SPL and SPL 2022)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Tep74
                    master:
                      type: string
                      pattern: ^(?:[A-Za-z0-9\-_]{48}|\d+:[a-fA-F0-9]{64})$
                      description: The Jetton master contract address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                    walletId:
                      type: string
                      minLength: 1
                    otp:
                      type: string
                      minLength: 6
                      maxLength: 6
                  required:
                    - kind
                    - master
                    - amount
                    - walletId
                  description: ""
                  title: TON Jetton (TEP-74)
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  exchangeId:
                    type: string
                  accountId:
                    type: string
                  transferId:
                    type: string
                  exchangeReference:
                    type: string
                  kind:
                    type: string
                    enum: *a58
                  walletId:
                    type: string
                  requester:
                    $ref: "#/components/schemas/Requester"
                  requestBody:
                    oneOf:
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - Native
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of native tokens to transfer in minimum denomination.
                          priority:
                            type: string
                            enum:
                              - Slow
                              - Standard
                              - Fast
                            description: The priority that determines the fees paid for the transfer. All
                              EVM compatible networks and Bitcoin support
                              `priority`. Not supported for other networks. It
                              uses the [estimate
                              fees](https://docs.dfns.co/api-reference/networks/estimate-fees)
                              API to calculate the transfer fees. When not
                              specified, defaults to `Standard` priority.
                          createDestinationAccount:
                            type: boolean
                            description: Whether to create the destination account on chains that require
                              account creation (e.g., Stellar). Only valid for
                              chains that require the receiver account to exist
                              before transfer.
                          offer:
                            type: boolean
                            description: Optional field for Canton, if true it will create a transfer offer.
                          expiresAt:
                            type: string
                            format: date-time
                            description: Optional field for Canton, especially useful in the context of
                              offers
                          useDurableNonce:
                            type: boolean
                            description: "Optional Solana-only flag. When `true` the SOL transfer is built
                              as a durable-nonce transaction using one of the
                              wallet's nonce accounts (picked server-side). Use
                              this for offline-signing flows where the construct
                              → broadcast gap may exceed 90 seconds. The
                              wallet's nonce account pool must be pre-populated
                              via `POST /wallets/{id}/transactions` with `kind:
                              CreateSolanaNonceAccounts`."
                          externalId:
                            type: string
                            minLength: 1
                            maxLength: 50
                            description: A unique ID from your system. It can be leveraged to be used as an
                              idempotency key. (read more
                              [here](https://docs.dfns.co/api-reference/idempotency))
                          travelRule:
                            oneOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - Notabene
                                  beneficiaryVASPdid:
                                    type: string
                                  beneficiaryProof:
                                    type: object
                                    additionalProperties: {}
                                  originator:
                                    type: object
                                    additionalProperties: {}
                                  beneficiary:
                                    type: object
                                    additionalProperties: {}
                                required:
                                  - kind
                                  - originator
                                  - beneficiary
                                additionalProperties: false
                                title: Notabene Travel Rule
                            description: A travel rule payload to associate with the transfer. (read more
                              [here](https://docs.dfns.co/features/travel-rule))
                          feeSponsorId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: Id of the fee sponsor that will be used to pay for your transfer
                              fees, it might not be available for all
                              blockchains. (read more
                              [here](https://docs.dfns.co/features/fee-sponsors))
                            example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                          walletId:
                            type: string
                            minLength: 1
                          otp:
                            type: string
                            minLength: 6
                            maxLength: 6
                        required:
                          - kind
                          - amount
                          - walletId
                        description: ""
                        title: Native Assets
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - Erc20
                          contract:
                            type: string
                            pattern: ^0x[0-9a-fA-F]{40}$
                            description: The ERC-20 contract address.
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of tokens to transfer in minimum denomination.
                          priority:
                            type: string
                            enum:
                              - Slow
                              - Standard
                              - Fast
                            description: The priority that determines the fees paid for the transfer.
                          externalId:
                            type: string
                            minLength: 1
                            maxLength: 50
                            description: A unique ID from your system. It can be leveraged to be used as an
                              idempotency key. (read more
                              [here](https://docs.dfns.co/api-reference/idempotency))
                          travelRule:
                            oneOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - Notabene
                                  beneficiaryVASPdid:
                                    type: string
                                  beneficiaryProof:
                                    type: object
                                    additionalProperties: {}
                                  originator:
                                    type: object
                                    additionalProperties: {}
                                  beneficiary:
                                    type: object
                                    additionalProperties: {}
                                required:
                                  - kind
                                  - originator
                                  - beneficiary
                                additionalProperties: false
                                title: Notabene Travel Rule
                            description: A travel rule payload to associate with the transfer. (read more
                              [here](https://docs.dfns.co/features/travel-rule))
                          feeSponsorId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: Id of the fee sponsor that will be used to pay for your transfer
                              fees, it might not be available for all
                              blockchains. (read more
                              [here](https://docs.dfns.co/features/fee-sponsors))
                            example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                          walletId:
                            type: string
                            minLength: 1
                          otp:
                            type: string
                            minLength: 6
                            maxLength: 6
                        required:
                          - kind
                          - contract
                          - amount
                          - walletId
                        description: ""
                        title: EVM Fungible Token (ERC-20)
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - Trc10
                          tokenId:
                            type: string
                            pattern: ^\d+$
                            description: The token ID.
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of tokens to transfer in minimum denomination.
                          externalId:
                            type: string
                            minLength: 1
                            maxLength: 50
                            description: A unique ID from your system. It can be leveraged to be used as an
                              idempotency key. (read more
                              [here](https://docs.dfns.co/api-reference/idempotency))
                          travelRule:
                            oneOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - Notabene
                                  beneficiaryVASPdid:
                                    type: string
                                  beneficiaryProof:
                                    type: object
                                    additionalProperties: {}
                                  originator:
                                    type: object
                                    additionalProperties: {}
                                  beneficiary:
                                    type: object
                                    additionalProperties: {}
                                required:
                                  - kind
                                  - originator
                                  - beneficiary
                                additionalProperties: false
                                title: Notabene Travel Rule
                            description: A travel rule payload to associate with the transfer. (read more
                              [here](https://docs.dfns.co/features/travel-rule))
                          feeSponsorId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: Id of the fee sponsor that will be used to pay for your transfer
                              fees, it might not be available for all
                              blockchains. (read more
                              [here](https://docs.dfns.co/features/fee-sponsors))
                            example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                          walletId:
                            type: string
                            minLength: 1
                          otp:
                            type: string
                            minLength: 6
                            maxLength: 6
                        required:
                          - kind
                          - tokenId
                          - amount
                          - walletId
                        description: ""
                        title: TRON Native Fungible Token (TRC-10)
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - Trc20
                          contract:
                            type: string
                            pattern: ^T[0-9a-zA-Z]{33}$
                            description: The smart contract address.
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of tokens to transfer in minimum denomination.
                          externalId:
                            type: string
                            minLength: 1
                            maxLength: 50
                            description: A unique ID from your system. It can be leveraged to be used as an
                              idempotency key. (read more
                              [here](https://docs.dfns.co/api-reference/idempotency))
                          travelRule:
                            oneOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - Notabene
                                  beneficiaryVASPdid:
                                    type: string
                                  beneficiaryProof:
                                    type: object
                                    additionalProperties: {}
                                  originator:
                                    type: object
                                    additionalProperties: {}
                                  beneficiary:
                                    type: object
                                    additionalProperties: {}
                                required:
                                  - kind
                                  - originator
                                  - beneficiary
                                additionalProperties: false
                                title: Notabene Travel Rule
                            description: A travel rule payload to associate with the transfer. (read more
                              [here](https://docs.dfns.co/features/travel-rule))
                          feeSponsorId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: Id of the fee sponsor that will be used to pay for your transfer
                              fees, it might not be available for all
                              blockchains. (read more
                              [here](https://docs.dfns.co/features/fee-sponsors))
                            example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                          walletId:
                            type: string
                            minLength: 1
                          otp:
                            type: string
                            minLength: 6
                            maxLength: 6
                        required:
                          - kind
                          - contract
                          - amount
                          - walletId
                        description: ""
                        title: TRON Smart Contract Fungible Token (TRC-20)
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - Asa
                          assetId:
                            type: string
                            pattern: ^\d+$
                            description: "The token asset id. "
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of tokens to transfer in minimum denomination.
                          externalId:
                            type: string
                            minLength: 1
                            maxLength: 50
                            description: A unique ID from your system. It can be leveraged to be used as an
                              idempotency key. (read more
                              [here](https://docs.dfns.co/api-reference/idempotency))
                          travelRule:
                            oneOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - Notabene
                                  beneficiaryVASPdid:
                                    type: string
                                  beneficiaryProof:
                                    type: object
                                    additionalProperties: {}
                                  originator:
                                    type: object
                                    additionalProperties: {}
                                  beneficiary:
                                    type: object
                                    additionalProperties: {}
                                required:
                                  - kind
                                  - originator
                                  - beneficiary
                                additionalProperties: false
                                title: Notabene Travel Rule
                            description: A travel rule payload to associate with the transfer. (read more
                              [here](https://docs.dfns.co/features/travel-rule))
                          feeSponsorId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: Id of the fee sponsor that will be used to pay for your transfer
                              fees, it might not be available for all
                              blockchains. (read more
                              [here](https://docs.dfns.co/features/fee-sponsors))
                            example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                          walletId:
                            type: string
                            minLength: 1
                          otp:
                            type: string
                            minLength: 6
                            maxLength: 6
                        required:
                          - kind
                          - assetId
                          - amount
                          - walletId
                        description: ""
                        title: Algorand Standard Asset
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - Sep41
                          issuer:
                            type: string
                            pattern: ^(G[A-Z0-9]{55}|M[A-Z0-9]{68})$
                            description: The asset issuer address.
                          assetCode:
                            type: string
                            description: The asset code.
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of tokens to transfer in minimum denomination.
                          externalId:
                            type: string
                            minLength: 1
                            maxLength: 50
                            description: A unique ID from your system. It can be leveraged to be used as an
                              idempotency key. (read more
                              [here](https://docs.dfns.co/api-reference/idempotency))
                          travelRule:
                            oneOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - Notabene
                                  beneficiaryVASPdid:
                                    type: string
                                  beneficiaryProof:
                                    type: object
                                    additionalProperties: {}
                                  originator:
                                    type: object
                                    additionalProperties: {}
                                  beneficiary:
                                    type: object
                                    additionalProperties: {}
                                required:
                                  - kind
                                  - originator
                                  - beneficiary
                                additionalProperties: false
                                title: Notabene Travel Rule
                            description: A travel rule payload to associate with the transfer. (read more
                              [here](https://docs.dfns.co/features/travel-rule))
                          feeSponsorId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: Id of the fee sponsor that will be used to pay for your transfer
                              fees, it might not be available for all
                              blockchains. (read more
                              [here](https://docs.dfns.co/features/fee-sponsors))
                            example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                          walletId:
                            type: string
                            minLength: 1
                          otp:
                            type: string
                            minLength: 6
                            maxLength: 6
                        required:
                          - kind
                          - issuer
                          - assetCode
                          - amount
                          - walletId
                        description: ""
                        title: Stellar Classic Assets (SEP-41)
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum: *a57
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of tokens to transfer in minimum denomination.
                          mint:
                            type: string
                            pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
                            description: The mint account address.
                          createDestinationAccount:
                            type: boolean
                            description: If `true`, pay to create the associated token account for the
                              recipient if it doesn't exist. Defaults to
                              `false`.
                          useDurableNonce:
                            type: boolean
                            description: "Optional. When `true` the SPL transfer is built as a durable-nonce
                              transaction using one of the wallet's nonce
                              accounts (picked server-side). The wallet's nonce
                              account pool must be pre-populated via `POST
                              /wallets/{id}/transactions` with `kind:
                              CreateSolanaNonceAccounts`."
                          externalId:
                            type: string
                            minLength: 1
                            maxLength: 50
                            description: A unique ID from your system. It can be leveraged to be used as an
                              idempotency key. (read more
                              [here](https://docs.dfns.co/api-reference/idempotency))
                          travelRule:
                            oneOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - Notabene
                                  beneficiaryVASPdid:
                                    type: string
                                  beneficiaryProof:
                                    type: object
                                    additionalProperties: {}
                                  originator:
                                    type: object
                                    additionalProperties: {}
                                  beneficiary:
                                    type: object
                                    additionalProperties: {}
                                required:
                                  - kind
                                  - originator
                                  - beneficiary
                                additionalProperties: false
                                title: Notabene Travel Rule
                            description: A travel rule payload to associate with the transfer. (read more
                              [here](https://docs.dfns.co/features/travel-rule))
                          feeSponsorId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: Id of the fee sponsor that will be used to pay for your transfer
                              fees, it might not be available for all
                              blockchains. (read more
                              [here](https://docs.dfns.co/features/fee-sponsors))
                            example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                          walletId:
                            type: string
                            minLength: 1
                          otp:
                            type: string
                            minLength: 6
                            maxLength: 6
                        required:
                          - kind
                          - amount
                          - mint
                          - walletId
                        description: ""
                        title: Solana Program Library Token (SPL and SPL 2022)
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - Tep74
                          master:
                            type: string
                            pattern: ^(?:[A-Za-z0-9\-_]{48}|\d+:[a-fA-F0-9]{64})$
                            description: The Jetton master contract address.
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of tokens to transfer in minimum denomination.
                          externalId:
                            type: string
                            minLength: 1
                            maxLength: 50
                            description: A unique ID from your system. It can be leveraged to be used as an
                              idempotency key. (read more
                              [here](https://docs.dfns.co/api-reference/idempotency))
                          travelRule:
                            oneOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - Notabene
                                  beneficiaryVASPdid:
                                    type: string
                                  beneficiaryProof:
                                    type: object
                                    additionalProperties: {}
                                  originator:
                                    type: object
                                    additionalProperties: {}
                                  beneficiary:
                                    type: object
                                    additionalProperties: {}
                                required:
                                  - kind
                                  - originator
                                  - beneficiary
                                additionalProperties: false
                                title: Notabene Travel Rule
                            description: A travel rule payload to associate with the transfer. (read more
                              [here](https://docs.dfns.co/features/travel-rule))
                          feeSponsorId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: Id of the fee sponsor that will be used to pay for your transfer
                              fees, it might not be available for all
                              blockchains. (read more
                              [here](https://docs.dfns.co/features/fee-sponsors))
                            example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                          walletId:
                            type: string
                            minLength: 1
                          otp:
                            type: string
                            minLength: 6
                            maxLength: 6
                        required:
                          - kind
                          - master
                          - amount
                          - walletId
                        description: ""
                        title: TON Jetton (TEP-74)
                  dateCreated:
                    type: string
                required:
                  - id
                  - exchangeId
                  - accountId
                  - kind
                  - walletId
                  - requester
                  - requestBody
                  - dateCreated
  /fee-sponsors:
    post:
      summary: Create Fee Sponsor
      tags:
        - Fee Sponsors
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Creates a new `FeeSponsor` associated with a sponsor wallet.
        Returns a new fee sponsor entity with the `id` to be used when making a
        transfer.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `FeeSponsors:Create`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: Nickname for the Fee Sponsor. This will be displayed on the
                    transfer modal in the dashboard.
                walletId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the wallet that will be used to sponsor the fee for other
                    wallets.
                  example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                allowEndUser:
                  type: boolean
                  default: false
                  description: Defines whether EndUsers and their delegated wallets can use this
                    Fee Sponsor.
              required:
                - walletId
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FeeSponsor"
    get:
      summary: List Fee Sponsors
      tags:
        - Fee Sponsors
      security:
        - authenticationToken: []
      description: Retrieves all Fee Sponsors configured in your organization.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `FeeSponsors:Read`: Always required.
      parameters:
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/FeeSponsor"
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                required:
                  - items
  /fee-sponsors/{feeSponsorId}:
    get:
      summary: Get Fee Sponsor
      tags:
        - Fee Sponsors
      security:
        - authenticationToken: []
      description: Retrieve a Fee Sponsor information by ID.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `FeeSponsors:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
            description: Which Fee Sponsor you wish to retrieve.
          required: true
          description: Which Fee Sponsor you wish to retrieve.
          name: feeSponsorId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FeeSponsor"
    delete:
      summary: Delete Fee Sponsor
      tags:
        - Fee Sponsors
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Delete a Fee Sponsor. This action is irreversible. The fee sponsor
        won't be able to be used anymore when making a transfer.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `FeeSponsors:Delete`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
            description: Which Fee Sponsor you wish to delete.
          required: true
          description: Which Fee Sponsor you wish to delete.
          name: feeSponsorId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FeeSponsor"
  /fee-sponsors/{feeSponsorId}/deactivate:
    put:
      summary: Deactivate Fee Sponsor
      tags:
        - Fee Sponsors
      security:
        - authenticationToken: []
          userActionSignature: []
      description: "Deactivate a Fee Sponsor: The fee sponsor won't be able to be used
        anymore when making a transfer."
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `FeeSponsors:Update`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
            description: Which Fee Sponsor you wish to deactivate.
          required: true
          description: Which Fee Sponsor you wish to deactivate.
          name: feeSponsorId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FeeSponsor"
  /fee-sponsors/{feeSponsorId}/activate:
    put:
      summary: Activate Fee Sponsor
      tags:
        - Fee Sponsors
      security:
        - authenticationToken: []
          userActionSignature: []
      description: "Activate a Fee Sponsor: The fee sponsor can be used when making a
        transfer."
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `FeeSponsors:Update`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
            description: Which Fee Sponsor you wish to activate.
          required: true
          description: Which Fee Sponsor you wish to activate.
          name: feeSponsorId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FeeSponsor"
  /fee-sponsors/{feeSponsorId}/fees:
    get:
      summary: List Sponsored Fees
      tags:
        - Fee Sponsors
      security:
        - authenticationToken: []
      description: Retrieves all fees paid by the specific Fee Sponsor.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `FeeSponsors:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
            description: Fee Sponsor to retrieve the fees from.
          required: true
          description: Fee Sponsor to retrieve the fees from.
          name: feeSponsorId
          in: path
        - schema:
            type: string
            pattern: ^\d+$
          required: false
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
          required: false
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        feeSponsorId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: Fee Sponsor id.
                          example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                        sponsoreeId:
                          type: string
                          description: Id of the entity being sponsored, e.g. a wallet id.
                        requestId:
                          type: string
                          description: Id of the request that was sponsored.
                        fee:
                          type: string
                          description: Fee amount that was paid for the request
                        dateRequested:
                          type: string
                          format: date-time
                          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                            UTC). When the sponsorship was requested."
                          example: 2023-04-14T20:41:28.715Z
                        dateConfirmed:
                          type: string
                          format: date-time
                          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                            UTC). When the sponsorship was confirmed."
                          example: 2023-04-14T20:41:28.715Z
                      required:
                        - feeSponsorId
                        - sponsoreeId
                        - requestId
                        - dateRequested
                        - dateConfirmed
                  nextPageToken:
                    type: string
                required:
                  - items
  /keys:
    post:
      summary: Create Key
      tags:
        - Keys
      security:
        - authenticationToken: []
          userActionSignature: []
      description: "Creates a key for the given scheme and curve. Returns the new key
        entity. "
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Keys:Create`: Always required   
          `Keys:Delegate`: Required if `delegateTo` is specified.   
          `Keys:ChildKeys:Create`: Required if `deriveFrom` is specified.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                scheme:
                  $ref: "#/components/schemas/KeyScheme"
                curve:
                  $ref: "#/components/schemas/KeyCurve"
                name:
                  type: string
                  maxLength: 100
                  description: Nickname for the key.
                masterKey:
                  type: boolean
                  description: Whether this key can be used as a master key for HD derivation.
                deriveFrom:
                  type: object
                  properties:
                    keyId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^key-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: The master key to derive from.
                      example: key-01snl-t56gb-j8tsok0vn802p80i
                    path:
                      type: string
                      pattern: ^m(\/(0|[1-9]\d{0,9}))+$
                      description: Use this to specify the derivation path of the signing key. One
                        will be auto generated if left blank.
                  required:
                    - keyId
                  description: Options for hierarchical deterministic key derivation.
                storeId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^store-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: The key store to save the key to.
                  example: store-425nf-ebf0a-qq22t6qra51tj8j0
                delegateTo:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^us-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: ID of the end user to delegate this key to.
                  example: us-6b58p-r53sr-rlrd3l5cj3uc4ome
                delayDelegation:
                  type: boolean
                  description: Whether to delay delegation until explicitly triggered.
              required:
                - scheme
                - curve
              additionalProperties: false
            examples:
              EdDSA:
                value:
                  scheme: EdDSA
                  curve: ed25519
              Schnorr:
                value:
                  scheme: Schnorr
                  curve: secp256k1
              Stark:
                value:
                  scheme: ECDSA
                  curve: stark
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Key"
    get:
      summary: List Keys
      tags:
        - Keys
      security:
        - authenticationToken: []
      description: Retrieve all keys registered for your organization.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Keys:Read`: Always required.
      parameters:
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
        - schema:
            type: string
            minLength: 1
            description: Filter by owner id or username.
          required: false
          description: Filter by owner id or username.
          name: owner
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/Key"
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                required:
                  - items
  /keys/{keyId}/delegate:
    post:
      summary: Delegate Key
      tags:
        - Keys
      security:
        - authenticationToken: []
          userActionSignature: []
      description: >
        <Warning>

        Only keys created with "`delayDelegation: true`" can then be delegated
        to an end-user. It means you need to know ahead of time that you're
        creating a wallet meant to be delegated to an end-user later. This is a
        safety to prevent, for example, a treasury wallet from being
        unintentionally delegated to an end-user.

        </Warning>


        <Note>

        When a key is delegated to an end user, all wallets using this key as
        the signing key are also automatically delegated to the same end user.
        Key and wallet ownerships are guaranteed to be always consistent.

        </Note>


        <Danger>

        This operation is irreversible. The key ownership will be transferred to
        the end-user

        </Danger>


        In most cases, when you want to implement [Wallet
        Delegation](https://docs.dfns.co/developers/guides/wallet-delegation),
        simply create the wallet by directly delegating it to an end user, in
        which case it will the non-custodial from the start.  There are some
        rare cases, however, where the key or wallet must be created before the
        user has accessed to the system.  To accommodate this, we've added the
        ability to create a key or wallet in delay delegation mode, and then
        later delegate it (i.e.: transfer ownership of it) to an end user via
        this endpoint.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Keys:Delegate`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: keyId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                delegateTo:
                  type: string
                  minLength: 1
              required:
                - delegateTo
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  keyId:
                    type: string
                  status:
                    type: string
                    enum:
                      - Delegated
                required:
                  - keyId
                  - status
  /keys/{keyId}:
    delete:
      summary: Delete Key
      tags:
        - Keys
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Deletes the key and all wallets using this key. Once deleted, keys
        (and wallets) are not usable anymore, and won't count in your overall
        organisation wallet count.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Keys:Delete`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: keyId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/Key"
                  - additionalProperties: false
    get:
      summary: Get Key
      tags:
        - Keys
      security:
        - authenticationToken: []
      description: Retrieves a key information by its ID.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Keys:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: The key to retrieve.
          required: true
          description: The key to retrieve.
          name: keyId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/Key"
                  - type: object
                    properties:
                      wallets:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              minLength: 1
                              maxLength: 64
                              pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                              description: The wallet id.
                              example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                            network:
                              type: string
                              description: The network of the wallet.
                              enum: *a1
                          required:
                            - id
                            - network
                        description: Wallets associated with this key.
                      store:
                        type: object
                        properties:
                          id:
                            type: string
                            description: The key store id.
                          kind:
                            type: string
                            enum:
                              - Hsm
                              - Mpc
                              - OfflineSigner
                            description: The type of key store.
                          keyId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^key-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: The key id within the store.
                            example: key-01snl-t56gb-j8tsok0vn802p80i
                          derivationPath:
                            type: string
                            description: The HD derivation path if applicable.
                        required:
                          - id
                          - kind
                          - keyId
                        description: Key store details.
                    required:
                      - wallets
                      - store
    put:
      summary: Update Key
      tags:
        - Keys
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Updates the name of an existing key.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Keys:Update`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: keyId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type:
                    - string
                    - "null"
                  maxLength: 100
              required:
                - name
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/Key"
                  - additionalProperties: false
  /keys/{keyId}/derive:
    post:
      summary: Derive Key
      tags:
        - Keys
      security:
        - authenticationToken: []
          userActionSignature: []
      description: >-
        Dfns decentralized key management network supports threshold
        Diffie-Hellman protocol based on [GLOW20
        paper](https://eprint.iacr.org/2020/096). You can use the DH protocol to
        derive output from a domain separation tag and a seed value. The
        derivation process is deterministic, i.e. the same Diffie-Hellman key
        and seed will lead to the same derived output. To ensure
        reproducibility, we use hash to curve
        [RFC9380](https://www.rfc-editor.org/rfc/rfc9380.html) and standard
        ciphersuite `secp256k1_XMD:SHA-256_SSWU_RO_`.


        <Tip>

        The seed doesn’t need to be secret. Without access to the DH key, it is
        not possible to do the derivation, even if the seed is known. Moreover,
        if both seed and derived output are known, it’s also not possible to do
        the derivation for another seed without having access to the DH key.

        </Tip>


        This endpoint only supports Diffie-Hellman keys. Regular threshold
        signature keys, like `ECDSA` or `EdDSA`, will not work. You can create a
        Diffie-Hellman key with the [Create
        Key](https://docs.dfns.co/api-reference/keys/create-key) endpoint using
        `scheme=DH` and `curve=secp256k1`.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Keys:Derive`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: keyId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                domain:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                seed:
                  type: string
                  pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
              required:
                - domain
                - seed
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  output:
                    type: string
                required:
                  - output
  /keys/{keyId}/export:
    post:
      summary: Export Key
      tags:
        - Keys
      security:
        - authenticationToken: []
          userActionSignature: []
      description: |-
        Dfns secures private keys by generating them as MPC key shares in our decentralized key management network.  Our goal is to eliminate all single points of failure (SPOFs) associated with blockchain private keys.

        In certain circumstances, however, customers require Dfns to export a private key. In this case, Dfns exposes the following endpoint which can be used in conjunction with our [export SDK](https://github.com/dfns/dfns-sdk-ts/tree/m/examples/sdk/export-wallet).

        <Danger>
        Dfns can not guarantee the security of exported keys as we have no way to control blockchain transactions once the single point of failure has been reconstituted.  For this reason, this feature is restricted to customers who have signed a contractual addendum limiting our liability for exported keys.  Additionally, by default exported keys can no longer be used to sign within the Dfns platform. Please contact your sales representative for more information.
        </Danger>
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Keys:Export`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: keyId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                encryptionKey:
                  type: string
                  minLength: 1
                supportedSchemes:
                  type: array
                  items:
                    type: object
                    properties:
                      protocol:
                        anyOf:
                          - type: string
                            enum:
                              - CGGMP24
                              - FROST
                              - FROST_BITCOIN
                              - GLOW20_DH
                              - KU23
                          - type: string
                            enum:
                              - CGGMP21
                      curve:
                        type: string
                        enum:
                          - ed25519
                          - secp256k1
                          - stark
                    required:
                      - protocol
                      - curve
                    additionalProperties: false
              required:
                - encryptionKey
                - supportedSchemes
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  publicKey:
                    type: string
                  protocol:
                    anyOf:
                      - type: string
                        enum:
                          - CGGMP24
                          - FROST
                          - FROST_BITCOIN
                          - GLOW20_DH
                          - KU23
                      - type: string
                        enum:
                          - CGGMP21
                  curve:
                    type: string
                    enum:
                      - ed25519
                      - secp256k1
                      - stark
                  minSigners:
                    type: number
                    description: The TSS threshold of the wallet private signing key shares
                  encryptedKeyShares:
                    type: array
                    items:
                      type: object
                      properties:
                        signerId:
                          type: string
                          description: Base64-encoded ID of the signer exported the encrypted keyshare
                        encryptedKeyShare:
                          type: string
                          description: Base64-encoded keyshare
                      required:
                        - signerId
                        - encryptedKeyShare
                    description: Keyshares of the exported wallet. They are encrypted with the
                      provided encryption key. The exported private key is
                      re-constructed from these keyshares.
                required:
                  - publicKey
                  - protocol
                  - curve
                  - minSigners
                  - encryptedKeyShares
  /keys/{keyId}/signatures:
    post:
      summary: Generate Signature
      tags:
        - Keys
      security:
        - authenticationToken: []
          userActionSignature: []
      description: |
        Request to generate a signature with the key. **This process does not broadcast anything on-chain**, this is just an off-chain signature request.

        Dfns is compatible with any blockchain that uses a supported [key format](https://docs.dfns.co/networks/supported-key-formats). If Dfns doesn't officially integrate with a blockchain, you can use hash signing to generate the signatures to interact with the chain.

        <Note>
        If you were using the deprecated `POST /wallets/{walletId}/signatures` endpoint, then you should now use this one. See the [deprecation notice](https://docs.dfns.co/developers/guides/keys-and-multichain-migration-guide) to get more information about how to change your code. TL,DR: from a wallet you can obtain the key as `wallet.signingKey.id`.
        </Note>
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Keys:Signatures:Create`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: The key to sign with.
          required: true
          description: The key to sign with.
          name: keyId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Hash
                    hash:
                      type: string
                      pattern: ^(0x)?[0-9a-fA-F]{64}$
                      description: 32-byte hash in hex encoded format.
                    taprootMerkleRoot:
                      type: string
                      pattern: ^(0x)?([0-9A-Fa-f]{64})?$
                      description: Required when signing with a Schnorr key. Specify the merkle root
                        for tweaking the signing key, or the empty string "" to
                        tweak with the default merkle root.
                    network:
                      $ref: "#/components/schemas/Network"
                    blockchainKind:
                      $ref: "#/components/schemas/BlockchainKind"
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - hash
                  additionalProperties: false
                  description: All cryptographic scheme support hash signing. Different
                    blockchains will apply different hash functions to compute
                    the hash.
                  title: Hash
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Message
                    message:
                      type: string
                      pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                      description: An arbitrary hex encoded message.
                    network:
                      $ref: "#/components/schemas/Network"
                    blockchainKind:
                      $ref: "#/components/schemas/BlockchainKind"
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - message
                  additionalProperties: false
                  description: Signs an arbitrary hex encoded arbitrary message.
                  title: Message
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Transaction
                    transaction:
                      anyOf:
                        - type: string
                          pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                        - type: object
                          properties: {}
                      description: The unsigned hex encoded transaction or JSON object for compatible
                        networks
                    network:
                      $ref: "#/components/schemas/Network"
                    blockchainKind:
                      $ref: "#/components/schemas/BlockchainKind"
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - transaction
                  additionalProperties: false
                  description: |-
                    Signs an unsigned transaction. The transaction parameter accepts hex-encoded transactions or JSON objects for compatible networks (Concordium, Starknet, Evm).

                    The following blockchains only accept JSON transaction objects (not hex strings): Concordium, Starknet.

                    For Starknet transactions, you may use invocation request objects (https://github.com/starkware-libs/starknet-specs/blob/v0.8.1/api/starknet_api_openrpc.json#L2621):

                    | Field                         | Description                                                                                         | Type - Optional                  |
                    |-------------------------------|-----------------------------------------------------------------------------------------------------|----------------------------------|
                    | type                          | transaction type (always INVOKE              )                                                      | String (required)                |
                    | calldata                      | **Array** of encoded function call parameters                                                       | **Array of Strings** (required)  |
                    | nonce                         | Transaction nonce in hex format                                                                     | String (required)                |
                    | version                       | Transaction version in hex format. Typically "0x3" for current transactions                         | String (required)                |
                    | resourceBounds                | Gas bounds for L1, L2, and L1 data gas                                                              | Object (required)                |
                    | ↳ resourceBounds.l1Gas        | L1 gas configuration with maxAmount and maxPricePerUnit                                             | Object (required)                |
                    | ↳ resourceBounds.l2Gas        | L2 gas configuration with maxAmount and maxPricePerUnit                                             | Object (required)                |
                    | ↳ resourceBounds.l1DataGas    | L1 data gas configuration with maxAmount and maxPricePerUnit                                        | Object (required)                |
                    | tip                           | Transaction tip in hex format. Typically "0x0"                                                      | String (required)                |
                    | paymasterData                 | Paymaster data array                                                                                | Array of Strings (required)      |
                    | accountDeploymentData         | Account deployment data array                                                                       | Array of Strings (required)      |
                    | nonceDataAvailabilityMode     | Data availability mode for nonce. Typically "L1" for now                                            | String (required)                |
                    | feeDataAvailabilityMode       | Data availability mode for fee. Typically "L1" for now                                              | String (required)                |
                    | chainId                       | The chain identifier in hex format                                                                  | String (required)                |
                    | senderAddress                 | The address of the account sending the transaction                                                  | String (required)                |

                    For Concordium transactions, use account transaction objects (https://developer.concordium.software/concordium-node-sdk-js/classes/ccd_js_gen.ConcordiumGRPCClient.html):

                    | Field                          | Description                                                                  | Type - Optional              |
                    |--------------------------------|------------------------------------------------------------------------------|------------------------------|
                    | header.sender                  | Account address (base58)                                                     | String (required)            |
                    | header.nonce                   | Account nonce                                                                | String (required)            |
                    | header.expiry                  | Unix epoch seconds expiry                                                    | Number (required)            |
                    | header.executionEnergyAmount   | Max NRG for execution                                                        | String (required)            |
                    | header.numSignatures           | Number of signatures                                                         | Number (optional)            |
                    | payload                        | Transaction payload (type-specific, e.g. Transfer, RegisterData)             | Object (required)            |

                    ```json
                    {
                      "kind": "Transaction",
                      "blockchainKind": "Concordium",
                      "transaction": {
                        "header": {
                          "sender": "4FmiTW2L2AccyR36ZBRKNqwQvBJBH8CAXWMLB1dbX5WyZmRo6N",
                          "nonce": "42",
                          "expiry": 1709510400,
                          "executionEnergyAmount": "501"
                        },
                        "payload": {
                          "Transfer": {
                            "amount": "1000000",
                            "toAddress": "3U4sfVSqGG6XK8g6eho2qRYtnHc4MWJBG1dfxdtPGbfHwFxini"
                          }
                        }
                      }
                    }
                    ```

                    ```json
                    {
                      "kind": "Transaction",
                      "transaction": "0xe703847735941a82520894f0965f5eb35ace69f01b77031f2cff22daca622887470de4df82000080"
                    }
                    ```

                    ```json
                    {
                      "kind": "Transaction",
                      "transaction": {
                        "type": "INVOKE",
                        "calldata": [
                          "1",
                          "2009894490435840142178314390393166646092438090257831307886760648929397478285",
                          "232670485425082704932579856502088130646006032362877466777181098476241604910",
                          "3",
                          "296727860213112272332383824629975240127004024814636931420022890499591637514",
                          "1",
                          "0"
                        ],
                        "nonce": "0x51",
                        "version": "0x3",
                        "resourceBounds": {
                          "l1Gas": { "maxAmount": "0x0", "maxPricePerUnit": "0x239a01ff6e6c" },
                          "l2Gas": { "maxAmount": "0x1694a0", "maxPricePerUnit": "0x10c388d00" },
                          "l1DataGas": { "maxAmount": "0x120", "maxPricePerUnit": "0x98e8" }
                        },
                        "tip": "0x0",
                        "paymasterData": [],
                        "accountDeploymentData": [],
                        "nonceDataAvailabilityMode": "L1",
                        "feeDataAvailabilityMode": "L1",
                        "chainId": "0x534e5f5345504f4c4941",
                        "senderAddress": "0x0535a9762b984c876abe0b164b0ccedb0d23a78978c9fe87e29deae0ea890c72"
                      }
                    }
                    ```
                  title: Transaction
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Eip191
                    message:
                      type: string
                      pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                      description: Hex-encoded message.
                    network:
                      $ref: "#/components/schemas/Network"
                    blockchainKind:
                      $ref: "#/components/schemas/BlockchainKind"
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - message
                  additionalProperties: false
                  description: Signs an personal_sign message as defined in
                    [EIP-191](https://eips.ethereum.org/EIPS/eip-191).
                  title: EIP-191 personal_sign Message
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Eip712
                    types:
                      type: object
                      additionalProperties:
                        type: array
                        items:
                          type: object
                          properties:
                            name:
                              type: string
                            type:
                              type: string
                          required:
                            - name
                            - type
                          additionalProperties: false
                      description: Type definitions.
                    domain:
                      type: object
                      properties:
                        name:
                          type: string
                          description: Name of the signing domain.
                        version:
                          type: string
                          description: Current major version of the signing domain.
                        chainId:
                          anyOf:
                            - type: integer
                              exclusiveMinimum: 0
                            - type: string
                          description: Chain ID.
                        verifyingContract:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{40}$
                          description: The address of the contract that will verify the signature.
                        salt:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{64}$
                          description: 32-byte value as a last-resort domain separator.
                      additionalProperties: false
                      description: Domain separator.
                    message:
                      type: object
                      additionalProperties: {}
                      description: Structured message to sign.
                    network:
                      $ref: "#/components/schemas/Network"
                    blockchainKind:
                      $ref: "#/components/schemas/BlockchainKind"
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - types
                    - domain
                    - message
                  additionalProperties: false
                  description: Signs a typed structured data as defined in
                    [EIP-712](https://eips.ethereum.org/EIPS/eip-712).
                  title: EIP-712 TypedData
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Eip7702
                    address:
                      type: string
                      pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                      description: The address of the contract the signer's EOA will be delegated to.
                    nonce:
                      type: number
                      description: The current nonce of the signer EOA.
                    chainId:
                      type: number
                      description: Chain ID.
                    network:
                      $ref: "#/components/schemas/Network"
                    blockchainKind:
                      $ref: "#/components/schemas/BlockchainKind"
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - address
                    - nonce
                    - chainId
                  additionalProperties: false
                  description: Signs an authorization tuple for type 4 set code transaction
                    defined in
                    [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702).
                  title: EIP-7702 Authorization
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Snip12
                    primaryType:
                      type: string
                      description: The primary type of the message.
                    types:
                      type: object
                      additionalProperties:
                        type: array
                        items:
                          type: object
                          properties:
                            name:
                              type: string
                            type:
                              type: string
                          required:
                            - name
                            - type
                          additionalProperties: false
                      description: Type definitions.
                    domain:
                      type: object
                      properties:
                        name:
                          type: string
                          description: Name of the signing domain.
                        version:
                          type: string
                          description: Current major version of the signing domain.
                        chainId:
                          anyOf:
                            - type: integer
                              exclusiveMinimum: 0
                            - type: string
                          description: Chain ID.
                        revision:
                          anyOf:
                            - type: number
                            - type: string
                          description: Revision of the domain.
                      description: Domain separator.
                    message:
                      type: object
                      additionalProperties: {}
                      description: Structured message to sign.
                    network:
                      $ref: "#/components/schemas/Network"
                    blockchainKind:
                      $ref: "#/components/schemas/BlockchainKind"
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - primaryType
                    - types
                    - domain
                    - message
                  additionalProperties: false
                  description: Signs a typed structured data as defined in
                    [SNIP-12](https://github.com/starknet-io/SNIPs/blob/main/SNIPS/snip-12.md).
                  title: SNIP-12 TypedData
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Psbt
                    psbt:
                      type: string
                      pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                      description: The hex encoded PSBT.
                    network:
                      $ref: "#/components/schemas/Network"
                    blockchainKind:
                      $ref: "#/components/schemas/BlockchainKind"
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - psbt
                  additionalProperties: false
                  description: Signs a partially signed Bitcoin / Litecoin transaction.
                  title: PSBT
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Bip322
                    message:
                      type: string
                      pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                      description: The generic message hex encoded.
                    format:
                      type: string
                      enum:
                        - Simple
                        - Full
                      description: Defaults to Simple if not present. The formatted signature is
                        returned in the `signedData` field in the response.
                    network:
                      $ref: "#/components/schemas/Network"
                    blockchainKind:
                      $ref: "#/components/schemas/BlockchainKind"
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - message
                  additionalProperties: false
                  description: "Signs a generic message using
                    [BIP-322](https://github.com/bitcoin/bips/blob/master/bip-0\
                    322.mediawiki). Note: signing payload construction depends
                    on the targeted blockchain. Therefore it's tied to a
                    specific `network` rather than the blockchain kind."
                  title: BIP-322
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - SignDocDirect
                    signDoc:
                      type: string
                      pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                      description: The hex encoded `SignDoc` Protobuf.
                    network:
                      $ref: "#/components/schemas/Network"
                    blockchainKind:
                      $ref: "#/components/schemas/BlockchainKind"
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - signDoc
                  additionalProperties: false
                  description: Signs an unsigned transaction using [sign mode
                    direct](https://docs.cosmos.network/main/learn/advanced/transactions#sign_mode_direct-preferred).
                  title: SignDocDirect
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - SignerPayload
                    payload:
                      anyOf:
                        - type: string
                          pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                        - type: object
                          properties: {}
                      description: |
                        The unsigned Signer Payload formatted as JSON, or as a serialized hex-encoded buffer.

                        Please refer to the original Polkadot definition for more details: [SignerPayloadJson](https://github.com/polkadot-js/api/blob/v16.2.2/packages/types/src/types/extrinsic.ts#L32). Note that additional fields will be rejected.

                        | Field                | Description                                                                              | Type - Optional      |
                        | -------------------- | ---------------------------------------------------------------------------------------- | -------------------- |
                        | `address`            | ss58-encoded address of the sending account.                                             | String               |
                        | `blockHash`          | The hash of the checkpoint block, hex encoded.                                           | String               |
                        | `blockNumber`        | The checkpoint block number, hex encoded.                                                | String               |
                        | `era`                | The number of blocks after the checkpoint for which a transaction is valid, hex encoded. | String               |
                        | `genesisHash`        | The genesis hash of the chain, hex encoded.                                              | String               |
                        | `metadataHash`       | The metadataHash for the CheckMetadataHash SignedExtension, hex encoded.                 | String *(optional)*  |
                        | `mode`               | flag indicating whether to verify the metadata hash or not.                              | Integer *(optional)* |
                        | `method`             | The encoded method with arguments, hex encoded.                                          | String               |
                        | `nonce`              | The nonce for the transaction, hex encoded.                                              | String               |
                        | `tip`                | The tip to increase transaction priority, hex encoded.                                   | String               |
                        | `version`            | The version of the extrinsic.                                                            | Integer              |
                        | `specVersion`        | The current spec version for the runtime, hex encoded.                                   | String               |
                        | `transactionVersion` | The current transaction version for the runtime, hex encoded.                            | String               |
                        | `signedExtensions`   | The applicable signed extensions for this runtime.                                       | Array<String>       |

                        ```json
                        {
                          "network": "Polymesh",
                          "kind": "SignerPayload",
                          "payload": {
                            "address": "5H5tTnmLUqRgvTZvTwCdBKYjKLBm2gkp7u38Q9UUdJa8m6rX",
                            "blockHash": "0x2ace05e703aa50b48c0ccccfc8b424f7aab9a1e2c424ed12e45d20b1e8ffd0d6",
                            "blockNumber": "0x00000000",
                            "era": "0x00",
                            "genesisHash": "0x2ace05e703aa50b48c0ccccfc8b424f7aab9a1e2c424ed12e45d20b1e8ffd0d6",
                            "method": "0x07141f3da32e72ac6eb6cb40d9e757594363a617b2c3964a2b6ec6895c6648f48d500000",
                            "nonce": "0x00000000",
                            "tip": "0x00000000000000000000000000000000",
                            "version": 4,
                            "specVersion": "0x006adb7a",
                            "transactionVersion": "0x00000007",
                            "signedExtensions": []
                          }
                        }
                        ```
                    network:
                      $ref: "#/components/schemas/Network"
                    blockchainKind:
                      $ref: "#/components/schemas/BlockchainKind"
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - payload
                  additionalProperties: false
                  description: "Signs a [generic Signer
                    Payload](https://github.com/polkadot-js/api/blob/v15.0.1/pa\
                    ckages/types/src/extrinsic/SignerPayload.ts#L47-L51). Note:
                    converting the generic signer payload to a signable
                    extrinsic requires fetching metadata from the targeted
                    blockchain. Therefore it's tied to a specific `network`
                    rather than the blockchain kind."
                  title: SignerPayload
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Cip8
                    payload:
                      type: string
                      pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                      description: The generic message hex encoded.
                    externalAad:
                      type: string
                      pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                      description: Allows an application to ask the user to sign some extra data but
                        NOT put it inside the COSE structure (only as part of
                        the data to sign).
                    context:
                      type: string
                      enum:
                        - Signature1
                    network:
                      $ref: "#/components/schemas/Network"
                    blockchainKind:
                      $ref: "#/components/schemas/BlockchainKind"
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - context
                  additionalProperties: false
                  description: "Signs an arbitrary message using
                    [CIP-8](https://cips.cardano.org/cip/CIP-0008). Note:
                    signing address depends on the targeted blockchain.
                    Therefore it's tied to a specific `network` rather than the
                    blockchain kind."
                  title: CIP-8
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - DfnsSmartAccountTransaction
                    structured:
                      type: object
                      properties:
                        address:
                          type: string
                        userOperations:
                          type: array
                          items:
                            type: object
                            properties:
                              to:
                                type: string
                              value:
                                type: string
                              data:
                                type: string
                            required:
                              - to
                        message:
                          type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Eip712
                            domain:
                              type: object
                              properties:
                                name:
                                  type: string
                                version:
                                  type: string
                                chainId:
                                  anyOf:
                                    - type: number
                                    - type: string
                                verifyingContract:
                                  type: string
                                salt:
                                  type: string
                            types:
                              type: object
                              additionalProperties:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    name:
                                      type: string
                                    type:
                                      type: string
                                  required:
                                    - name
                                    - type
                            message:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - domain
                            - types
                            - message
                        authorization:
                          type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Eip7702
                            address:
                              type: string
                            nonce:
                              type: number
                            chainId:
                              type: number
                          required:
                            - kind
                            - address
                            - nonce
                            - chainId
                      required:
                        - address
                        - userOperations
                        - message
                    signatures:
                      type: object
                      additionalProperties:
                        type: object
                        properties:
                          r:
                            type: string
                          s:
                            type: string
                          recid:
                            type: number
                          encoded:
                            type: string
                        required:
                          - r
                          - s
                    transactionReference:
                      type: string
                    network:
                      $ref: "#/components/schemas/Network"
                    blockchainKind:
                      $ref: "#/components/schemas/BlockchainKind"
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - structured
                    - signatures
                    - transactionReference
                  additionalProperties: false
                  title: Dfns Smart Account Transaction
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - StellarFeeBumpTransaction
                    innerTransaction:
                      type: string
                    transactionReference:
                      type: string
                    network:
                      $ref: "#/components/schemas/Network"
                    blockchainKind:
                      $ref: "#/components/schemas/BlockchainKind"
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - innerTransaction
                    - transactionReference
                  additionalProperties: false
                  title: Stellar Fee Bump Transaction
            examples:
              Bip322:
                value:
                  network: BitcoinSignet
                  kind: Bip322
                  message: "0x49206c6f76652044666e73"
              Cip8:
                value:
                  network: CardanoPreprod
                  kind: Cip8
                  payload: "0x49206c6f76652044666e73"
                  externalAad: "0x616464697469706e616c5f64617461"
                  context: Signature1
              Eip191:
                value:
                  blockchainKind: Evm
                  kind: Eip191
                  message: "0x49206c6f76652044666e73"
              Eip712:
                value:
                  blockchainKind: Evm
                  kind: Eip712
                  types:
                    Person:
                      - name: name
                        type: string
                      - name: wallet
                        type: address
                    Mail:
                      - name: from
                        type: Person
                      - name: to
                        type: Person
                      - name: contents
                        type: string
                  domain:
                    name: Ether Mail
                    version: "1"
                    chainId: 1
                    verifyingContract: "0x1b352de7a926ebd1bf52194dab487c2cb0793a9b"
                    salt: "0xf2d857f4a3edcb9b78b4d503bfe733db1e3f6cdc2b7971ee739626c97e86a558"
                  message:
                    from:
                      name: Chris
                      wallet: "0x00e3495cf6af59008f22ffaf32d4c92ac33dac47"
                    to:
                      name: Bob
                      wallet: "0xcc0ee1a1c5e788b61916c8f1c96c960f9a9d3db7"
                    contents: Hello, Bob!
              Eip7702:
                value:
                  blockchainKind: Evm
                  kind: Eip7702
                  chainId: 1
                  address: "0xf5138ba9777A42F76437Ecd5F3cDb96Decd72b4e"
                  nonce: 0
              Hash:
                value:
                  kind: Hash
                  hash: "0xd356339fa071e88335fdfab167cb600430522b71839d8556fa351fe1b4cd7556"
              Message:
                value:
                  blockchainKind: Evm
                  kind: Message
                  message: "0x49206c6f76652044666e73"
              Psbt:
                value:
                  blockchainKind: Bitcoin
                  kind: Psbt
                  psbt: "0x70736274ff0100db02000000019fc89619065ef6b81415397bb9879dfc78cacbaae660\
                    72d69eb619bfd79d5cba0200000000fdffffff0350c3000000000000225\
                    120cc8f48c274c1ac263046c301cb9e028979c8e89c4060b4b857c414ed\
                    6e7b43760000000000000000496a476262743400223d31efd004ca86999\
                    dedb0b32445f8ead685b4e99d92ec19ea0e211afd9672a99172cdc13644\
                    990aabe785f1595843de7f884249a28cc3170112e7a018b0c6fa00a2171\
                    b0000000000225120223d31efd004ca86999dedb0b32445f8ead685b4e9\
                    9d92ec19ea0e211afd9672dd5d03000001012b9ceb1b000000000022512\
                    0223d31efd004ca86999dedb0b32445f8ead685b4e99d92ec19ea0e211a\
                    fd9672011720223d31efd004ca86999dedb0b32445f8ead685b4e99d92e\
                    c19ea0e211afd967200000000"
              Hash (Schnorr):
                value:
                  kind: Hash
                  hash: "0xd356339fa071e88335fdfab167cb600430522b71839d8556fa351fe1b4cd7556"
                  taprootMerkleRoot: ""
              Transaction:
                value:
                  blockchainKind: Evm
                  kind: Transaction
                  transaction: "0xe703847735941a82520894f0965f5eb35ace69f01b77031f2cff22daca62288\
                    7470de4df82000080"
              Transaction (EVM JSON):
                value:
                  blockchainKind: Evm
                  kind: Transaction
                  transaction:
                    to: "0xd964d741998edc275f3800eed113378a391951d9"
                    value: "20000000000000000"
                    nonce: "3"
                    gasLimit: "21000"
                    maxFeePerGas: "2000000000"
                    maxPriorityFeePerGas: "1000000000"
              Transaction (Concordium JSON):
                value:
                  blockchainKind: Concordium
                  kind: Transaction
                  transaction:
                    header:
                      sender: 4FmiTW2L2AccyR36ZBRKNqwQvBJBH8CAXWMLB1dbX5WyZmRo6N
                      nonce: "42"
                      expiry: 1709510400
                      executionEnergyAmount: "501"
                    payload:
                      Transfer:
                        amount: "1000000"
                        toAddress: 3U4sfVSqGG6XK8g6eho2qRYtnHc4MWJBG1dfxdtPGbfHwFxini
              Transaction (Starknet JSON):
                value:
                  blockchainKind: Starknet
                  kind: Transaction
                  transaction:
                    type: INVOKE
                    calldata:
                      - "1"
                      - "200989449043584014217831439039316664609243809025783130\
                        7886760648929397478285"
                      - "232670485425082704932579856502088130646006032362877466\
                        777181098476241604910"
                      - "3"
                      - "296727860213112272332383824629975240127004024814636931\
                        420022890499591637514"
                      - "1"
                      - "0"
                    nonce: "0x51"
                    version: "0x3"
                    resourceBounds:
                      l1Gas:
                        maxAmount: "0x0"
                        maxPricePerUnit: "0x239a01ff6e6c"
                      l2Gas:
                        maxAmount: "0x1694a0"
                        maxPricePerUnit: "0x10c388d00"
                      l1DataGas:
                        maxAmount: "0x120"
                        maxPricePerUnit: "0x98e8"
                    tip: "0x0"
                    paymasterData: []
                    accountDeploymentData: []
                    nonceDataAvailabilityMode: L1
                    feeDataAvailabilityMode: L1
                    chainId: "0x534e5f5345504f4c4941"
                    senderAddress: "0x0535a9762b984c876abe0b164b0ccedb0d23a78978c9fe87e29deae0ea890\
                      c72"
              SignerPayload:
                value:
                  network: PolymeshTestnet
                  kind: SignerPayload
                  payload:
                    address: 5ELwJvCPKBxLm3rve77JGDmHv2FNNE2nUW17FXhBs7Tws4Cr
                    blockHash: "0x2ace05e703aa50b48c0ccccfc8b424f7aab9a1e2c424ed12e45d20b1e8ffd0d6"
                    blockNumber: "0x00000000"
                    era: "0x00"
                    genesisHash: "0x2ace05e703aa50b48c0ccccfc8b424f7aab9a1e2c424ed12e45d20b1e8ffd0d\
                      6"
                    method: "0x07141f3da32e72ac6eb6cb40d9e757594363a617b2c3964a2b6ec6895c6648f48d50\
                      0000"
                    mode: 0
                    nonce: "0x00000000"
                    tip: "0x00000000000000000000000000000000"
                    specVersion: "0x006adb7a"
                    transactionVersion: "0x00000007"
                    version: 4
                    signedExtensions: []
              Snip12:
                value:
                  blockchainKind: Starknet
                  kind: Snip12
                  primaryType: Mail
                  types:
                    StarkNetDomain:
                      - name: name
                        type: felt
                      - name: version
                        type: felt
                      - name: chainId
                        type: felt
                      - name: revision
                        type: felt
                    Person:
                      - name: name
                        type: felt
                      - name: wallet
                        type: felt
                    Mail:
                      - name: from
                        type: Person
                      - name: to
                        type: Person
                      - name: contents
                        type: felt
                  domain:
                    name: StarkNet Mail
                    version: "1"
                    chainId: "0x534e5f4d41494e"
                    revision: 1
                  message:
                    from:
                      name: Alice
                      wallet: "0x1234567890123456789012345678901234567890"
                    to:
                      name: Bob
                      wallet: "0x0987654321098765432109876543210987654321"
                    contents: Hello Bob!
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SignatureRequest"
    get:
      summary: List Signatures
      tags:
        - Keys
      security:
        - authenticationToken: []
      description: List all signature requests for a key.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Keys:Signatures:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: The key to list signatures for.
          required: true
          description: The key to list signatures for.
          name: keyId
          in: path
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/SignatureRequest"
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                  keyId:
                    type: string
                    minLength: 1
                    maxLength: 64
                    pattern: ^key-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                    description: The key these signatures belong to.
                    example: key-01snl-t56gb-j8tsok0vn802p80i
                required:
                  - items
                  - keyId
  /keys/{keyId}/signatures/{signatureId}:
    get:
      summary: Get Signature
      tags:
        - Keys
      security:
        - authenticationToken: []
      description: Retrieve a signature request details.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Keys:Signatures:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: The key that was used for signing.
          required: true
          description: The key that was used for signing.
          name: keyId
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: The signature request to retrieve.
          required: true
          description: The signature request to retrieve.
          name: signatureId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SignatureRequest"
  /keys/import:
    post:
      summary: Import Key
      tags:
        - Keys
      security:
        - authenticationToken: []
          userActionSignature: []
      description: |
        Dfns secures private keys by generating them as MPC key shares in our decentralized key management network.  This happens by default when you create a [key](https://docs.dfns.co/api-reference/keys/create-key) or [wallet](https://docs.dfns.co/api-reference/wallets/create-wallet).

        In some circumstances, however, you may need to import an existing private key into Dfns infrastructure, instead of creating a brand new wallet with Dfns and transfer funds to it. As an example, you might want to keep an existing wallet if its address is tied to a smart contract which you don't want to re-deploy.

        In such a case, Dfns exposes this key import API endpoint, which can be used in conjunction with our [import SDK](https://github.com/dfns/dfns-sdk-ts/tree/m/examples/sdk/import-wallet).   Note this is intended to be used only to migrate wallets when first onboarding onto the Dfns platform.

        <Danger>
        Dfns can not guarantee the security of imported wallets, as we have no way to control who had access to the private key prior to import.  For this reason, this feature is restricted to Enterprise customers who have signed a contractual addendum limiting our liability for imported keys.  Please contact your sales representative for more information.
        </Danger>
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Keys:Import`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  maxLength: 100
                curve:
                  type: string
                  enum:
                    - ed25519
                    - secp256k1
                    - stark
                protocol:
                  anyOf:
                    - type: string
                      enum:
                        - CGGMP24
                        - FROST
                        - FROST_BITCOIN
                        - GLOW20_DH
                        - KU23
                    - type: string
                      enum:
                        - CGGMP21
                minSigners:
                  type: integer
                  exclusiveMinimum: 0
                encryptedKeyShares:
                  type: array
                  items:
                    type: object
                    properties:
                      signerId:
                        type: string
                        minLength: 1
                      encryptedKeyShare:
                        type: string
                        minLength: 1
                    required:
                      - signerId
                      - encryptedKeyShare
                  minItems: 1
                masterKey:
                  type: boolean
                  description: Specify to create an extended master key for HD derivation
              required:
                - curve
                - protocol
                - minSigners
                - encryptedKeyShares
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Key"
  /networks/fees:
    get:
      summary: Estimate Fees
      tags:
        - Networks
      security:
        - authenticationToken: []
      description: "Gets real-time fee details for a given network, allowing users to
        make decisions based on their preferences for transaction
        speed/priority. Three levels of priority will be displayed: `slow`,
        `standard`, `fast`."
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          No permission required.
      parameters:
        - schema:
            type: string
            enum:
              - Bitcoin
              - BitcoinSignet
              - BitcoinTestnet3
              - BitcoinTestnet4
              - ArbitrumOne
              - ArbitrumSepolia
              - ArcTestnet
              - AvalancheC
              - AvalancheCFuji
              - Base
              - BaseSepolia
              - Bob
              - BobSepolia
              - Bsc
              - BscTestnet
              - Berachain
              - BerachainBepolia
              - Celo
              - CeloAlfajores
              - Codex
              - CodexSepolia
              - Ethereum
              - EthereumClassic
              - EthereumClassicMordor
              - EthereumSepolia
              - EthereumHolesky
              - EthereumHoodi
              - FantomOpera
              - FantomTestnet
              - FlareC
              - FlareCCoston2
              - FlowEvm
              - FlowEvmTestnet
              - Ink
              - InkSepolia
              - Optimism
              - OptimismSepolia
              - Plasma
              - PlasmaTestnet
              - Plume
              - PlumeSepolia
              - Polygon
              - PolygonAmoy
              - Race
              - RaceSepolia
              - Tempo
              - TempoModerato
              - Tsc
              - TscTestnet1
              - Xdc
              - XdcApothem
              - XLayer
              - XLayerSepolia
              - Solana
              - SolanaDevnet
          required: true
          name: network
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      kind:
                        type: string
                        enum:
                          - Bitcoin
                      network:
                        type: string
                        enum:
                          - Bitcoin
                          - BitcoinSignet
                          - BitcoinTestnet3
                          - BitcoinTestnet4
                          - Litecoin
                          - LitecoinTestnet
                          - Dogecoin
                          - DogecoinTestnet
                      blockNumber:
                        type: number
                      slow:
                        type: object
                        properties:
                          feeRate:
                            type: string
                          blockHorizon:
                            type: number
                        required:
                          - feeRate
                          - blockHorizon
                      standard:
                        type: object
                        properties:
                          feeRate:
                            type: string
                          blockHorizon:
                            type: number
                        required:
                          - feeRate
                          - blockHorizon
                      fast:
                        type: object
                        properties:
                          feeRate:
                            type: string
                          blockHorizon:
                            type: number
                        required:
                          - feeRate
                          - blockHorizon
                    required:
                      - kind
                      - network
                      - blockNumber
                      - slow
                      - standard
                      - fast
                    title: Bitcoin
                  - type: object
                    properties:
                      kind:
                        type: string
                        enum:
                          - Eip1559
                      network:
                        type: string
                        enum: *a59
                      blockNumber:
                        type: number
                      slow:
                        type: object
                        properties:
                          maxPriorityFeePerGas:
                            type: string
                          maxFeePerGas:
                            type: string
                        required:
                          - maxPriorityFeePerGas
                          - maxFeePerGas
                      standard:
                        type: object
                        properties:
                          maxPriorityFeePerGas:
                            type: string
                          maxFeePerGas:
                            type: string
                        required:
                          - maxPriorityFeePerGas
                          - maxFeePerGas
                      fast:
                        type: object
                        properties:
                          maxPriorityFeePerGas:
                            type: string
                          maxFeePerGas:
                            type: string
                        required:
                          - maxPriorityFeePerGas
                          - maxFeePerGas
                      baseFeePerGas:
                        type: string
                    required:
                      - kind
                      - network
                      - blockNumber
                      - slow
                      - standard
                      - fast
                      - baseFeePerGas
                    description: "For EIP-1559, we  provide 2 different fields for each strategy:
                      `maxFee` (per Gas) and `maxPriorityFee` (per Gas). To
                      compute these estimations, we look at the block history,
                      compute three different percentiles for the rewards
                      offered by the transactions in the blocks, and then
                      calculate the average for each strategy."
                    title: EVM EIP-1559
                  - type: object
                    properties:
                      kind:
                        type: string
                        enum:
                          - Solana
                      network:
                        type: string
                        enum:
                          - Solana
                          - SolanaDevnet
                      blockNumber:
                        type: number
                      slow:
                        type: object
                        properties:
                          computeUnitPrice:
                            type: string
                        required:
                          - computeUnitPrice
                      standard:
                        type: object
                        properties:
                          computeUnitPrice:
                            type: string
                        required:
                          - computeUnitPrice
                      fast:
                        type: object
                        properties:
                          computeUnitPrice:
                            type: string
                        required:
                          - computeUnitPrice
                    required:
                      - kind
                      - network
                      - blockNumber
                      - slow
                      - standard
                      - fast
                    title: Solana
  /networks/{network}/call-function:
    post:
      summary: Call Function
      tags:
        - Networks
      security:
        - authenticationToken: []
      description: >-
        Call a read-only function on a smart contract. In Solidity, these are
        functions with the state mutability set to `view`.

          <Note>
          Currently only works on EVM compatible chains.
          </Note>
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          No permission required.
      parameters:
        - schema:
            type: string
            description: Network name formatted in kebab case
          required: true
          description: Network name formatted in kebab case
          name: network
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                contract:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{40}$
                  description: Address of the contract to call
                abi:
                  type: object
                  properties:
                    type:
                      type: string
                    name:
                      type: string
                    stateMutability:
                      type: string
                    inputs:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                          type:
                            type: string
                          components:
                            type: array
                            items: &a60
                              type: object
                        required:
                          - name
                          - type
                    outputs:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                          type:
                            type: string
                          components:
                            type: array
                            items: *a60
                        required:
                          - name
                          - type
                  required:
                    - type
                    - name
                    - stateMutability
                    - inputs
                    - outputs
                  description: ABI of the read-only function to invoke
                calldata:
                  type: object
                  properties: {}
                  description: Function call arguments
              required:
                - contract
                - abi
              additionalProperties: false
              description: Calls an on-chain read function.
              title: Call Function
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema: {}
  /networks/{network}/validators/{validatorId}:
    get:
      summary: Get Canton Validator
      tags:
        - Networks
      security:
        - authenticationToken: []
      description: Return a configured Canton Validator in your organization.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Networks:CantonValidators:Read`: Always required.
      parameters:
        - schema:
            type: string
            enum:
              - canton
              - canton-devnet
              - canton-testnet
          required: true
          name: network
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^cv-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          required: true
          name: validatorId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CantonValidator"
    put:
      summary: Update Canton Validator
      tags:
        - Networks
      security:
        - authenticationToken: []
          userActionSignature: []
      description: >-
        Update an existing Canton Validator configuration.
          
          Read details about the process [here](https://docs.dfns.co/networks/canton-validators). 
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Networks:CantonValidators:Update`: Always required.
      parameters:
        - schema:
            type: string
            enum:
              - canton
              - canton-devnet
              - canton-testnet
          required: true
          name: network
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^cv-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          required: true
          name: validatorId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: Nickname for this validator.
                validator:
                  type: object
                  properties:
                    url:
                      type: string
                      format: uri
                      description: URL to reach the API at this address. The calls will be originating
                        from our IP addresses (see [Dfns
                        Environments](https://docs.dfns.co/api-reference/environments))
                    oauth2:
                      type: object
                      properties:
                        domain:
                          type: string
                          format: uri
                          description: "your OAuth2 tenant domain. Provided by your auth provider. "
                        tokenPath:
                          type: string
                          description: "token endpoint from your authorization provider. We will call this
                            endpoint on your tenant domain (i.e.:
                            `<domain>/<token path>`)"
                        audience:
                          type: string
                          description: the audience your configured on your auth provider. It is suggested
                            to start with `https://canton.network.global`.
                        clientId:
                          type: string
                          description: The client id from your auth provider for this application.
                        clientSecret:
                          type: string
                          description: The client secret from your auth provider for this application.
                      required:
                        - domain
                        - audience
                        - clientId
                        - clientSecret
                      description: How Dfns will authenticate into your validator/ledger. You should
                        have setup authentication already (see details
                        [here](https://docs.dev.sync.global/validator_operator/validator_helm.html#helm-validator-auth)),
                        you can reuse the same Application details. See examples
                        in this endpoint payload examples above.
                  required:
                    - url
                    - oauth2
                ledger:
                  type: object
                  properties:
                    url:
                      type: string
                      format: uri
                      description: URL to reach the API at this address. The calls will be originating
                        from our IP addresses (see [Dfns
                        Environments](https://docs.dfns.co/api-reference/environments))
                    oauth2:
                      type: object
                      properties:
                        domain:
                          type: string
                          format: uri
                          description: "your OAuth2 tenant domain. Provided by your auth provider. "
                        tokenPath:
                          type: string
                          description: "token endpoint from your authorization provider. We will call this
                            endpoint on your tenant domain (i.e.:
                            `<domain>/<token path>`)"
                        audience:
                          type: string
                          description: the audience your configured on your auth provider. It is suggested
                            to start with `https://canton.network.global`.
                        clientId:
                          type: string
                          description: The client id from your auth provider for this application.
                        clientSecret:
                          type: string
                          description: The client secret from your auth provider for this application.
                      required:
                        - domain
                        - audience
                        - clientId
                        - clientSecret
                      description: How Dfns will authenticate into your validator/ledger. You should
                        have setup authentication already (see details
                        [here](https://docs.dev.sync.global/validator_operator/validator_helm.html#helm-validator-auth)),
                        you can reuse the same Application details. See examples
                        in this endpoint payload examples above.
                  required:
                    - url
                    - oauth2
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CantonValidator"
    delete:
      summary: Delete Canton Validator
      tags:
        - Networks
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Delete a specific Canton Validator configuration.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Networks:CantonValidators:Delete`: Always required.
      parameters:
        - schema:
            type: string
            enum:
              - canton
              - canton-devnet
              - canton-testnet
          required: true
          name: network
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^cv-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          required: true
          name: validatorId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CantonValidator"
  /networks/{network}/validators:
    post:
      summary: Create Canton Validator
      tags:
        - Networks
      security:
        - authenticationToken: []
          userActionSignature: []
      description: >-
        Link a Canton Validator to your organization. This is required in order
        to create wallets or interact with the Canton network.

          The `Shared` option allows you to use a shared validator hosted by Dfns and get started in seconds, while the `Custom` option allows you to connect your own validator and ledger nodes using OAuth2 authentication.

          Read details about the process [here](https://docs.dfns.co/networks/canton-validators). 
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Networks:CantonValidators:Create`: Always required.
      parameters:
        - schema:
            type: string
            enum:
              - canton
              - canton-devnet
              - canton-testnet
          required: true
          name: network
          in: path
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    name:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: Nickname for this validator.
                    kind:
                      type: string
                      enum:
                        - Shared
                  required:
                    - kind
                  description: Use Dfns' shared validator to create your Canton Wallets. See
                    [here](https://docs.dfns.co/networks/canton-validators#option-1-use-dfns-shared-validator)
                  title: Dfns Shared validator
                - type: object
                  properties:
                    name:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: Nickname for this validator.
                    kind:
                      type: string
                      enum:
                        - Custom
                    validator:
                      type: object
                      properties:
                        url:
                          type: string
                          format: uri
                          description: URL to reach the API at this address. The calls will be originating
                            from our IP addresses (see [Dfns
                            Environments](https://docs.dfns.co/api-reference/environments))
                        oauth2:
                          type: object
                          properties:
                            domain:
                              type: string
                              format: uri
                              description: "your OAuth2 tenant domain. Provided by your auth provider. "
                            tokenPath:
                              type: string
                              description: "token endpoint from your authorization provider. We will call this
                                endpoint on your tenant domain (i.e.:
                                `<domain>/<token path>`)"
                            audience:
                              type: string
                              description: the audience your configured on your auth provider. It is suggested
                                to start with `https://canton.network.global`.
                            clientId:
                              type: string
                              description: The client id from your auth provider for this application.
                            clientSecret:
                              type: string
                              description: The client secret from your auth provider for this application.
                          required:
                            - domain
                            - audience
                            - clientId
                            - clientSecret
                          description: How Dfns will authenticate into your validator/ledger. You should
                            have setup authentication already (see details
                            [here](https://docs.dev.sync.global/validator_operator/validator_helm.html#helm-validator-auth)),
                            you can reuse the same Application details. See
                            examples in this endpoint payload examples above.
                      required:
                        - url
                        - oauth2
                      description: Configuration to reach your validator Signing API. We will call the
                        validator External Signing API at the url (and using the
                        credentials) defined below ; for instance
                        `$URL/api/validator/v0/admin/external-party/topology/generate`.
                        See the underlying calls details
                        [here](https://docs.dev.sync.global/app_dev/validator_api/index.html#validator-api-external-signing).
                    ledger:
                      type: object
                      properties:
                        url:
                          type: string
                          format: uri
                          description: URL to reach the API at this address. The calls will be originating
                            from our IP addresses (see [Dfns
                            Environments](https://docs.dfns.co/api-reference/environments))
                        oauth2:
                          type: object
                          properties:
                            domain:
                              type: string
                              format: uri
                              description: "your OAuth2 tenant domain. Provided by your auth provider. "
                            tokenPath:
                              type: string
                              description: "token endpoint from your authorization provider. We will call this
                                endpoint on your tenant domain (i.e.:
                                `<domain>/<token path>`)"
                            audience:
                              type: string
                              description: the audience your configured on your auth provider. It is suggested
                                to start with `https://canton.network.global`.
                            clientId:
                              type: string
                              description: The client id from your auth provider for this application.
                            clientSecret:
                              type: string
                              description: The client secret from your auth provider for this application.
                          required:
                            - domain
                            - audience
                            - clientId
                            - clientSecret
                          description: How Dfns will authenticate into your validator/ledger. You should
                            have setup authentication already (see details
                            [here](https://docs.dev.sync.global/validator_operator/validator_helm.html#helm-validator-auth)),
                            you can reuse the same Application details. See
                            examples in this endpoint payload examples above.
                      required:
                        - url
                        - oauth2
                      description: Configuration to reach your validator Ledger JSON API. We will call
                        endpoints such as `/v2/state/ledger-end`,
                        `/v2/state/active-contracts`,
                        `/v2/parties/participant-id`,
                        `/v2/interactive-submission/prepare`,
                        `/v2/interactive-submission/execute`,
                        `/v2/commands/completions`. See the underlying details
                        [here](https://docs.dev.sync.global/app_dev/ledger_api/index.html).
                  required:
                    - kind
                    - validator
                    - ledger
                  description: Connect your own validator. See
                    [here](https://docs.dfns.co/networks/canton-validators#option-2-connect-your-own-validator-byov)
                    for more info.
                  title: Your own custom validator
            examples:
              Shared Validator:
                value:
                  kind: Shared
                  name: My shared validator
              Custom Validator | Auth0:
                value:
                  kind: Custom
                  name: My validator with auth0 credentials
                  validator:
                    url: https://validator.testnet.mydomain.com/
                    oauth2:
                      domain: https://xxxxxx.us.auth0.com
                      clientId: xxxxxx
                      clientSecret: xxxxxxx
                      audience: https://canton.network.global
                  ledger:
                    url: https://ledger.testnet.mydomain.com/
                    oauth2:
                      domain: https://xxxxxx.us.auth0.com
                      clientId: xxxxxx
                      clientSecret: xxxxxxx
                      audience: https://canton.network.global
              Custom Validator | Okta:
                value:
                  kind: Custom
                  name: My validator with auth0 credentials
                  validator:
                    url: https://validator.testnet.mydomain.com/
                    oauth2:
                      domain: https://xxxxxx.okta.com
                      tokenPath: oauth2/xxxxxx/v1/token
                      clientId: xxxxxx
                      clientSecret: xxxxxxx
                      audience: https://validator.testnet.mydomain.com/
                  ledger:
                    url: https://ledger.testnet.mydomain.com/
                    oauth2:
                      domain: https://xxxxxx.okta.com
                      tokenPath: oauth2/xxxxxx/v1/token
                      clientId: xxxxxx
                      clientSecret: xxxxxxx
                      audience: https://ledger.testnet.mydomain.com/
              Custom Validator | Keycloak:
                value:
                  kind: Custom
                  name: My validator with auth0 credentials
                  validator:
                    url: https://validator.testnet.mydomain.com/
                    oauth2:
                      domain: https://my-own-server.running-keycloak.com
                      tokenPath: /auth/realms/xxxxx/protocol/openid-connect/token
                      clientId: xxxxxx
                      clientSecret: xxxxxxx
                      audience: https://validator.testnet.mydomain.com/
                  ledger:
                    url: https://ledger.testnet.mydomain.com/
                    oauth2:
                      domain: https://my-own-server.running-keycloak.com
                      tokenPath: /auth/realms/xxxxx/protocol/openid-connect/token
                      clientId: xxxxxx
                      clientSecret: xxxxxxx
                      audience: https://ledger.testnet.mydomain.com/
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CantonValidator"
    get:
      summary: List Canton Validators
      tags:
        - Networks
      security:
        - authenticationToken: []
      description: Retrieve the list of configured Canton Validators in your organization.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Networks:CantonValidators:Read`: Always required.
      parameters:
        - schema:
            type: string
            enum:
              - canton
              - canton-devnet
              - canton-testnet
          required: true
          name: network
          in: path
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/CantonValidator"
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                required:
                  - items
  /payouts:
    post:
      summary: Create Payout
      tags:
        - Payouts
      security:
        - authenticationToken: []
          userActionSignature: []
      description: "

        \    Create a new payout to convert crypto assets to fiat currency.

        \  "
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Payouts:Create`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    walletId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: The wallet ID to remit funds from.
                      example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                    externalId:
                      type: string
                      description: Optional idempotency key to ensure only one payout is created.
                    asset:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Erc20
                            amount:
                              type: string
                              pattern: ^\d+$
                              description: The amount of the asset to be paid out in minimum denomination.
                            contract:
                              type: string
                              description: The ERC-20 contract address.
                          required:
                            - kind
                            - amount
                            - contract
                          title: ERC-20 Asset
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum: &a61
                                - Spl
                                - Spl2022
                            amount:
                              type: string
                              pattern: ^\d+$
                              description: The amount of the asset to be paid out in minimum denomination.
                            mint:
                              type: string
                              description: The token mint address.
                          required:
                            - kind
                            - amount
                            - mint
                          title: SPL/SPL-2022 Asset
                      description: The asset to be paid out.
                    fiatCurrency:
                      type: string
                      pattern: ^[A-Z]{3}$
                      description: ISO-4217 fiat currency code for the payout.
                    provider:
                      type: string
                      enum:
                        - Borderless
                    country:
                      type: string
                      pattern: ^[A-Z]{2}$
                      description: ISO-3166 Alpha-2 country code for the payout destination.
                    borderlessAccountId:
                      type: string
                      description: Borderless account ID specifying who is paying out funds.
                    paymentInstructionsId:
                      type: string
                      description: Borderless payment instructions ID specifying fiat settlement
                        instructions.
                    paymentPurpose:
                      type: string
                      enum:
                        - salary payment
                        - personal remittance
                        - rent payment
                        - property purchase
                        - owned account abroad
                        - advertising expenses
                        - advisory fees
                        - business insurance
                        - construction
                        - delivery fees
                        - education
                        - exports
                        - donation
                        - hotel
                        - loan payment
                        - maintenance expenses
                        - medical expense
                        - office expenses
                        - royalty fees
                        - service charge
                        - shares investment
                        - tax payment
                        - transportation fees
                        - travel
                        - utility bills
                        - other
                      description: Borderless reason/purpose for the payment.
                  required:
                    - walletId
                    - asset
                    - fiatCurrency
                    - provider
                    - country
                    - borderlessAccountId
                    - paymentInstructionsId
                    - paymentPurpose
                  title: Borderless Create Payout
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      id:
                        type: string
                        minLength: 1
                        maxLength: 64
                        pattern: ^pyt-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                        description: Payout id.
                        example: pyt-4ihii-9lonb-tmhjo9bor4odmb5h
                      walletId:
                        type: string
                        minLength: 1
                        maxLength: 64
                        pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                        description: The wallet ID used for the payout.
                        example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                      fiatCurrency:
                        type: string
                        description: ISO-4217 fiat currency code for the payout.
                      asset:
                        oneOf:
                          - type: object
                            properties:
                              kind:
                                type: string
                                enum:
                                  - Erc20
                              amount:
                                type: string
                                pattern: ^\d+$
                                description: The amount of the asset to be paid out in minimum denomination.
                              contract:
                                type: string
                                description: The ERC-20 contract address.
                              network:
                                $ref: "#/components/schemas/Network"
                              metadata:
                                type: object
                                properties:
                                  name:
                                    type: string
                                    description: The display name of the token.
                                  symbol:
                                    type: string
                                    description: The ticker symbol of the token.
                                  decimals:
                                    type: integer
                                    description: Number of decimals used by the token.
                                  verified:
                                    type: boolean
                                    description: Whether the token is verified by DFNS as legitimate.
                                required:
                                  - decimals
                            required:
                              - kind
                              - amount
                              - contract
                              - network
                            title: ERC-20 Asset
                          - type: object
                            properties:
                              kind:
                                type: string
                                enum: *a61
                              amount:
                                type: string
                                pattern: ^\d+$
                                description: The amount of the asset to be paid out in minimum denomination.
                              mint:
                                type: string
                                description: The token mint address.
                              network:
                                $ref: "#/components/schemas/Network"
                              metadata:
                                type: object
                                properties:
                                  name:
                                    type: string
                                    description: The display name of the token.
                                  symbol:
                                    type: string
                                    description: The ticker symbol of the token.
                                  decimals:
                                    type: integer
                                    description: Number of decimals used by the token.
                                  verified:
                                    type: boolean
                                    description: Whether the token is verified by DFNS as legitimate.
                                required:
                                  - decimals
                            required:
                              - kind
                              - amount
                              - mint
                              - network
                            title: SPL/SPL-2022 Asset
                        description: The asset being paid out, including token descriptor and metadata.
                      externalId:
                        type: string
                        description: Optional external identifier for idempotency.
                      status:
                        type: string
                        enum:
                          - Processing
                          - Completed
                          - Failed
                          - Rejected
                          - Expired
                          - Canceled
                        description: The current status of the payout.
                      requester:
                        allOf:
                          - $ref: "#/components/schemas/Requester"
                          - description: The user/token that initiated the payout.
                      dateCreated:
                        type: string
                        format: date-time
                        description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                          UTC). ISO 8601 timestamp when the payout was created."
                        example: 2023-04-14T20:41:28.715Z
                      dateFinalized:
                        type: string
                        format: date-time
                        description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                          UTC). ISO 8601 timestamp when the payout was
                          finalized."
                        example: 2023-04-14T20:41:28.715Z
                      provider:
                        type: string
                        enum:
                          - Borderless
                      data:
                        type: object
                        properties:
                          borderlessAccountId:
                            type: string
                            description: The Borderless account ID associated with the payout.
                          paymentInstructionsId:
                            type: string
                            description: The Borderless payment instructions ID linked to the destination
                              bank account.
                          paymentPurpose:
                            type: string
                            enum:
                              - salary payment
                              - personal remittance
                              - rent payment
                              - property purchase
                              - owned account abroad
                              - advertising expenses
                              - advisory fees
                              - business insurance
                              - construction
                              - delivery fees
                              - education
                              - exports
                              - donation
                              - hotel
                              - loan payment
                              - maintenance expenses
                              - medical expense
                              - office expenses
                              - royalty fees
                              - service charge
                              - shares investment
                              - tax payment
                              - transportation fees
                              - travel
                              - utility bills
                              - other
                            description: The purpose of the withdrawal payment.
                          dateConfirmed:
                            type: string
                            format: date-time
                            description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                              UTC). ISO 8601 timestamp when the settlement was
                              confirmed via Action Confirm."
                            example: 2023-04-14T20:41:28.715Z
                          dateCanceled:
                            type: string
                            format: date-time
                            description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                              UTC). ISO 8601 timestamp when the settlement was
                              canceled via Action Cancel."
                            example: 2023-04-14T20:41:28.715Z
                          executionStatus:
                            type: string
                            enum:
                              - Initializing
                              - AwaitingPayoutInstructions
                              - AwaitingPayoutConfirmation
                              - SubmittingPayoutTransfer
                              - PendingPolicyApproval
                              - DepositProcessing
                              - DisbursementPending
                              - Completed
                              - Rejected
                              - Failed
                              - Expired
                              - Canceled
                            description: The Borderless execution status.
                          statusReason:
                            type: string
                            description: Reason for the current status, primarily for failure cases.
                          country:
                            type: string
                            description: ISO-3166 Alpha-2 country code for the payout destination.
                          borderlessPayoutId:
                            type: string
                            description: The ID assigned by Borderless when the payout is created.
                          depositAddress:
                            type: string
                            description: The on-chain address to remit funds to.
                          transferId:
                            type: string
                            description: The Dfns transfer ID used to settle the payout.
                          transactionHash:
                            type: string
                            description: The blockchain transaction hash once the transfer is confirmed.
                          dateDepositConfirmed:
                            type: string
                            format: date-time
                            description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                              UTC). ISO 8601 timestamp when the on-chain deposit
                              was confirmed."
                            example: 2023-04-14T20:41:28.715Z
                          datePayoutConfirmed:
                            type: string
                            format: date-time
                            description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                              UTC). ISO 8601 timestamp when Borderless verified
                              fiat has settled."
                            example: 2023-04-14T20:41:28.715Z
                        required:
                          - borderlessAccountId
                          - paymentInstructionsId
                          - paymentPurpose
                          - executionStatus
                          - country
                        description: Borderless provider-specific payout data.
                    required:
                      - id
                      - walletId
                      - fiatCurrency
                      - asset
                      - status
                      - requester
                      - dateCreated
                      - provider
                      - data
                    title: Borderless Payout
    get:
      summary: List Payouts
      tags:
        - Payouts
      security:
        - authenticationToken: []
      description: List payouts with optional filtering and pagination.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Payouts:Read`: Always required.
      parameters:
        - schema:
            type: integer
            minimum: 1
            maximum: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Filter payouts by wallet ID.
          required: false
          description: Filter payouts by wallet ID.
          name: walletId
          in: query
        - schema:
            type: array
            items:
              type: string
              enum:
                - Processing
                - Completed
                - Failed
                - Rejected
                - Expired
                - Canceled
              description: Dfns managed payout status.
            description: Filter payouts by status (comma-separated).
          required: false
          description: Filter payouts by status (comma-separated).
          name: status
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      oneOf:
                        - type: object
                          properties:
                            id:
                              type: string
                              minLength: 1
                              maxLength: 64
                              pattern: ^pyt-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                              description: Payout id.
                              example: pyt-4ihii-9lonb-tmhjo9bor4odmb5h
                            walletId:
                              type: string
                              minLength: 1
                              maxLength: 64
                              pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                              description: The wallet ID used for the payout.
                              example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                            fiatCurrency:
                              type: string
                              description: ISO-4217 fiat currency code for the payout.
                            asset:
                              oneOf:
                                - type: object
                                  properties:
                                    kind:
                                      type: string
                                      enum:
                                        - Erc20
                                    amount:
                                      type: string
                                      pattern: ^\d+$
                                      description: The amount of the asset to be paid out in minimum denomination.
                                    contract:
                                      type: string
                                      description: The ERC-20 contract address.
                                    network:
                                      $ref: "#/components/schemas/Network"
                                    metadata:
                                      type: object
                                      properties:
                                        name:
                                          type: string
                                          description: The display name of the token.
                                        symbol:
                                          type: string
                                          description: The ticker symbol of the token.
                                        decimals:
                                          type: integer
                                          description: Number of decimals used by the token.
                                        verified:
                                          type: boolean
                                          description: Whether the token is verified by DFNS as legitimate.
                                      required:
                                        - decimals
                                  required:
                                    - kind
                                    - amount
                                    - contract
                                    - network
                                  title: ERC-20 Asset
                                - type: object
                                  properties:
                                    kind:
                                      type: string
                                      enum: *a61
                                    amount:
                                      type: string
                                      pattern: ^\d+$
                                      description: The amount of the asset to be paid out in minimum denomination.
                                    mint:
                                      type: string
                                      description: The token mint address.
                                    network:
                                      $ref: "#/components/schemas/Network"
                                    metadata:
                                      type: object
                                      properties:
                                        name:
                                          type: string
                                          description: The display name of the token.
                                        symbol:
                                          type: string
                                          description: The ticker symbol of the token.
                                        decimals:
                                          type: integer
                                          description: Number of decimals used by the token.
                                        verified:
                                          type: boolean
                                          description: Whether the token is verified by DFNS as legitimate.
                                      required:
                                        - decimals
                                  required:
                                    - kind
                                    - amount
                                    - mint
                                    - network
                                  title: SPL/SPL-2022 Asset
                              description: The asset being paid out, including token descriptor and metadata.
                            externalId:
                              type: string
                              description: Optional external identifier for idempotency.
                            status:
                              type: string
                              enum:
                                - Processing
                                - Completed
                                - Failed
                                - Rejected
                                - Expired
                                - Canceled
                              description: The current status of the payout.
                            requester:
                              allOf:
                                - $ref: "#/components/schemas/Requester"
                                - description: The user/token that initiated the payout.
                            dateCreated:
                              type: string
                              format: date-time
                              description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                UTC). ISO 8601 timestamp when the payout was
                                created."
                              example: 2023-04-14T20:41:28.715Z
                            dateFinalized:
                              type: string
                              format: date-time
                              description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                UTC). ISO 8601 timestamp when the payout was
                                finalized."
                              example: 2023-04-14T20:41:28.715Z
                            provider:
                              type: string
                              enum:
                                - Borderless
                            data:
                              type: object
                              properties:
                                borderlessAccountId:
                                  type: string
                                  description: The Borderless account ID associated with the payout.
                                paymentInstructionsId:
                                  type: string
                                  description: The Borderless payment instructions ID linked to the destination
                                    bank account.
                                paymentPurpose:
                                  type: string
                                  enum:
                                    - salary payment
                                    - personal remittance
                                    - rent payment
                                    - property purchase
                                    - owned account abroad
                                    - advertising expenses
                                    - advisory fees
                                    - business insurance
                                    - construction
                                    - delivery fees
                                    - education
                                    - exports
                                    - donation
                                    - hotel
                                    - loan payment
                                    - maintenance expenses
                                    - medical expense
                                    - office expenses
                                    - royalty fees
                                    - service charge
                                    - shares investment
                                    - tax payment
                                    - transportation fees
                                    - travel
                                    - utility bills
                                    - other
                                  description: The purpose of the withdrawal payment.
                                dateConfirmed:
                                  type: string
                                  format: date-time
                                  description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                    UTC). ISO 8601 timestamp when the settlement
                                    was confirmed via Action Confirm."
                                  example: 2023-04-14T20:41:28.715Z
                                dateCanceled:
                                  type: string
                                  format: date-time
                                  description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                    UTC). ISO 8601 timestamp when the settlement
                                    was canceled via Action Cancel."
                                  example: 2023-04-14T20:41:28.715Z
                                executionStatus:
                                  type: string
                                  enum:
                                    - Initializing
                                    - AwaitingPayoutInstructions
                                    - AwaitingPayoutConfirmation
                                    - SubmittingPayoutTransfer
                                    - PendingPolicyApproval
                                    - DepositProcessing
                                    - DisbursementPending
                                    - Completed
                                    - Rejected
                                    - Failed
                                    - Expired
                                    - Canceled
                                  description: The Borderless execution status.
                                statusReason:
                                  type: string
                                  description: Reason for the current status, primarily for failure cases.
                                country:
                                  type: string
                                  description: ISO-3166 Alpha-2 country code for the payout destination.
                                borderlessPayoutId:
                                  type: string
                                  description: The ID assigned by Borderless when the payout is created.
                                depositAddress:
                                  type: string
                                  description: The on-chain address to remit funds to.
                                transferId:
                                  type: string
                                  description: The Dfns transfer ID used to settle the payout.
                                transactionHash:
                                  type: string
                                  description: The blockchain transaction hash once the transfer is confirmed.
                                dateDepositConfirmed:
                                  type: string
                                  format: date-time
                                  description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                    UTC). ISO 8601 timestamp when the on-chain
                                    deposit was confirmed."
                                  example: 2023-04-14T20:41:28.715Z
                                datePayoutConfirmed:
                                  type: string
                                  format: date-time
                                  description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                    UTC). ISO 8601 timestamp when Borderless
                                    verified fiat has settled."
                                  example: 2023-04-14T20:41:28.715Z
                              required:
                                - borderlessAccountId
                                - paymentInstructionsId
                                - paymentPurpose
                                - executionStatus
                                - country
                              description: Borderless provider-specific payout data.
                          required:
                            - id
                            - walletId
                            - fiatCurrency
                            - asset
                            - status
                            - requester
                            - dateCreated
                            - provider
                            - data
                          title: Borderless Payout
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                required:
                  - items
  /payouts/quote:
    post:
      summary: Request Payout Quote
      tags:
        - Payouts
      security:
        - authenticationToken: []
      description: Request a quote from a given provider for a payout. Returns
        estimated fiat amount and fees.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Payouts:Create`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    walletId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: The wallet ID to use for determining the network.
                      example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                    asset:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Erc20
                            amount:
                              type: string
                              pattern: ^\d+$
                              description: The amount of the asset to be paid out in minimum denomination.
                            contract:
                              type: string
                              description: The ERC-20 contract address.
                          required:
                            - kind
                            - amount
                            - contract
                          title: ERC-20 Asset
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum: *a61
                            amount:
                              type: string
                              pattern: ^\d+$
                              description: The amount of the asset to be paid out in minimum denomination.
                            mint:
                              type: string
                              description: The token mint address.
                          required:
                            - kind
                            - amount
                            - mint
                          title: SPL/SPL-2022 Asset
                      description: The asset to be paid out.
                    fiatCurrency:
                      type: string
                      pattern: ^[A-Z]{3}$
                      description: ISO-4217 fiat currency code for the payout quote.
                    provider:
                      type: string
                      enum:
                        - Borderless
                    country:
                      type: string
                      pattern: ^[A-Z]{2}$
                      description: ISO-3166 Alpha-2 country code for the payout destination.
                  required:
                    - walletId
                    - asset
                    - fiatCurrency
                    - provider
                    - country
                  title: Borderless Create Payout Quote
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  provider:
                    type: string
                    enum:
                      - Borderless
                    description: Payout provider.
                  asset:
                    oneOf:
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - Erc20
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of the asset to be paid out in minimum denomination.
                          contract:
                            type: string
                            description: The ERC-20 contract address.
                          network:
                            $ref: "#/components/schemas/Network"
                          metadata:
                            type: object
                            properties:
                              name:
                                type: string
                                description: The display name of the token.
                              symbol:
                                type: string
                                description: The ticker symbol of the token.
                              decimals:
                                type: integer
                                description: Number of decimals used by the token.
                              verified:
                                type: boolean
                                description: Whether the token is verified by DFNS as legitimate.
                            required:
                              - decimals
                        required:
                          - kind
                          - amount
                          - contract
                          - network
                        title: ERC-20 Asset
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum: *a61
                          amount:
                            type: string
                            pattern: ^\d+$
                            description: The amount of the asset to be paid out in minimum denomination.
                          mint:
                            type: string
                            description: The token mint address.
                          network:
                            $ref: "#/components/schemas/Network"
                          metadata:
                            type: object
                            properties:
                              name:
                                type: string
                                description: The display name of the token.
                              symbol:
                                type: string
                                description: The ticker symbol of the token.
                              decimals:
                                type: integer
                                description: Number of decimals used by the token.
                              verified:
                                type: boolean
                                description: Whether the token is verified by DFNS as legitimate.
                            required:
                              - decimals
                        required:
                          - kind
                          - amount
                          - mint
                          - network
                        title: SPL/SPL-2022 Asset
                    description: The asset being quoted, enriched with network and metadata.
                  timestamp:
                    type: string
                    format: date-time
                    description: ISO 8601 timestamp when the quote was generated.
                  quotes:
                    type: array
                    items:
                      type: object
                      properties:
                        quoteId:
                          type: string
                          description: Quote ID from the provider, if applicable.
                        offer:
                          type: object
                          properties:
                            fiatCurrency:
                              type: string
                              pattern: ^[A-Z]{3}$
                              description: ISO-4217 fiat currency code.
                            amount:
                              type: number
                              description: Amount of fiat currency to be received net of fees.
                            fees:
                              type: number
                              description: Total fees associated with the transfer.
                          required:
                            - fiatCurrency
                            - amount
                            - fees
                          description: The offer from the provider.
                      required:
                        - offer
                    description: Array of quotes from the provider(s).
                required:
                  - provider
                  - asset
                  - timestamp
                  - quotes
  /payouts/{payoutId}:
    get:
      summary: Get Payout Status
      tags:
        - Payouts
      security:
        - authenticationToken: []
      description: "

        \    Retrieve the current status of a payout by its ID.

        \  "
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Payouts:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Payout id.
          required: true
          description: Payout id.
          name: payoutId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      id:
                        type: string
                        minLength: 1
                        maxLength: 64
                        pattern: ^pyt-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                        description: Payout id.
                        example: pyt-4ihii-9lonb-tmhjo9bor4odmb5h
                      walletId:
                        type: string
                        minLength: 1
                        maxLength: 64
                        pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                        description: The wallet ID used for the payout.
                        example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                      fiatCurrency:
                        type: string
                        description: ISO-4217 fiat currency code for the payout.
                      asset:
                        oneOf:
                          - type: object
                            properties:
                              kind:
                                type: string
                                enum:
                                  - Erc20
                              amount:
                                type: string
                                pattern: ^\d+$
                                description: The amount of the asset to be paid out in minimum denomination.
                              contract:
                                type: string
                                description: The ERC-20 contract address.
                              network:
                                $ref: "#/components/schemas/Network"
                              metadata:
                                type: object
                                properties:
                                  name:
                                    type: string
                                    description: The display name of the token.
                                  symbol:
                                    type: string
                                    description: The ticker symbol of the token.
                                  decimals:
                                    type: integer
                                    description: Number of decimals used by the token.
                                  verified:
                                    type: boolean
                                    description: Whether the token is verified by DFNS as legitimate.
                                required:
                                  - decimals
                            required:
                              - kind
                              - amount
                              - contract
                              - network
                            title: ERC-20 Asset
                          - type: object
                            properties:
                              kind:
                                type: string
                                enum: *a61
                              amount:
                                type: string
                                pattern: ^\d+$
                                description: The amount of the asset to be paid out in minimum denomination.
                              mint:
                                type: string
                                description: The token mint address.
                              network:
                                $ref: "#/components/schemas/Network"
                              metadata:
                                type: object
                                properties:
                                  name:
                                    type: string
                                    description: The display name of the token.
                                  symbol:
                                    type: string
                                    description: The ticker symbol of the token.
                                  decimals:
                                    type: integer
                                    description: Number of decimals used by the token.
                                  verified:
                                    type: boolean
                                    description: Whether the token is verified by DFNS as legitimate.
                                required:
                                  - decimals
                            required:
                              - kind
                              - amount
                              - mint
                              - network
                            title: SPL/SPL-2022 Asset
                        description: The asset being paid out, including token descriptor and metadata.
                      externalId:
                        type: string
                        description: Optional external identifier for idempotency.
                      status:
                        type: string
                        enum:
                          - Processing
                          - Completed
                          - Failed
                          - Rejected
                          - Expired
                          - Canceled
                        description: The current status of the payout.
                      requester:
                        allOf:
                          - $ref: "#/components/schemas/Requester"
                          - description: The user/token that initiated the payout.
                      dateCreated:
                        type: string
                        format: date-time
                        description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                          UTC). ISO 8601 timestamp when the payout was created."
                        example: 2023-04-14T20:41:28.715Z
                      dateFinalized:
                        type: string
                        format: date-time
                        description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                          UTC). ISO 8601 timestamp when the payout was
                          finalized."
                        example: 2023-04-14T20:41:28.715Z
                      provider:
                        type: string
                        enum:
                          - Borderless
                      data:
                        type: object
                        properties:
                          borderlessAccountId:
                            type: string
                            description: The Borderless account ID associated with the payout.
                          paymentInstructionsId:
                            type: string
                            description: The Borderless payment instructions ID linked to the destination
                              bank account.
                          paymentPurpose:
                            type: string
                            enum:
                              - salary payment
                              - personal remittance
                              - rent payment
                              - property purchase
                              - owned account abroad
                              - advertising expenses
                              - advisory fees
                              - business insurance
                              - construction
                              - delivery fees
                              - education
                              - exports
                              - donation
                              - hotel
                              - loan payment
                              - maintenance expenses
                              - medical expense
                              - office expenses
                              - royalty fees
                              - service charge
                              - shares investment
                              - tax payment
                              - transportation fees
                              - travel
                              - utility bills
                              - other
                            description: The purpose of the withdrawal payment.
                          dateConfirmed:
                            type: string
                            format: date-time
                            description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                              UTC). ISO 8601 timestamp when the settlement was
                              confirmed via Action Confirm."
                            example: 2023-04-14T20:41:28.715Z
                          dateCanceled:
                            type: string
                            format: date-time
                            description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                              UTC). ISO 8601 timestamp when the settlement was
                              canceled via Action Cancel."
                            example: 2023-04-14T20:41:28.715Z
                          executionStatus:
                            type: string
                            enum:
                              - Initializing
                              - AwaitingPayoutInstructions
                              - AwaitingPayoutConfirmation
                              - SubmittingPayoutTransfer
                              - PendingPolicyApproval
                              - DepositProcessing
                              - DisbursementPending
                              - Completed
                              - Rejected
                              - Failed
                              - Expired
                              - Canceled
                            description: The Borderless execution status.
                          statusReason:
                            type: string
                            description: Reason for the current status, primarily for failure cases.
                          country:
                            type: string
                            description: ISO-3166 Alpha-2 country code for the payout destination.
                          borderlessPayoutId:
                            type: string
                            description: The ID assigned by Borderless when the payout is created.
                          depositAddress:
                            type: string
                            description: The on-chain address to remit funds to.
                          transferId:
                            type: string
                            description: The Dfns transfer ID used to settle the payout.
                          transactionHash:
                            type: string
                            description: The blockchain transaction hash once the transfer is confirmed.
                          dateDepositConfirmed:
                            type: string
                            format: date-time
                            description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                              UTC). ISO 8601 timestamp when the on-chain deposit
                              was confirmed."
                            example: 2023-04-14T20:41:28.715Z
                          datePayoutConfirmed:
                            type: string
                            format: date-time
                            description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                              UTC). ISO 8601 timestamp when Borderless verified
                              fiat has settled."
                            example: 2023-04-14T20:41:28.715Z
                        required:
                          - borderlessAccountId
                          - paymentInstructionsId
                          - paymentPurpose
                          - executionStatus
                          - country
                        description: Borderless provider-specific payout data.
                    required:
                      - id
                      - walletId
                      - fiatCurrency
                      - asset
                      - status
                      - requester
                      - dateCreated
                      - provider
                      - data
                    title: Borderless Payout
  /payouts/{payoutId}/action:
    post:
      summary: Create Payout Action
      tags:
        - Payouts
      security:
        - authenticationToken: []
          userActionSignature: []
      description: "

        \    Perform an action on a payout, such as confirming or canceling.

        \  "
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Payouts:Write`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Payout id.
          required: true
          description: Payout id.
          name: payoutId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    action:
                      type: string
                      enum:
                        - Confirm
                    walletId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: The wallet ID to use for the transfer.
                      example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                    transfer:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Erc20
                            amount:
                              type: string
                              pattern: ^\d+$
                              description: The amount of the asset to be paid out in minimum denomination.
                            contract:
                              type: string
                              description: The ERC-20 contract address.
                            to:
                              type: string
                              pattern: ^0x[0-9a-fA-F]{40}$
                              description: The counterparty address for the payout.
                          required:
                            - kind
                            - amount
                            - contract
                            - to
                          title: ERC-20 Transfer
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum: *a61
                            amount:
                              type: string
                              pattern: ^\d+$
                              description: The amount of the asset to be paid out in minimum denomination.
                            mint:
                              type: string
                              description: The token mint address.
                            to:
                              type: string
                              pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
                              description: The counterparty address for the payout.
                          required:
                            - kind
                            - amount
                            - mint
                            - to
                          title: SPL/SPL-2022 Transfer
                      description: The transfer details for the payout settlement.
                  required:
                    - action
                    - walletId
                    - transfer
                  title: Confirm Payout Action
                - type: object
                  properties:
                    action:
                      type: string
                      enum:
                        - Cancel
                  required:
                    - action
                  title: Cancel Payout Action
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties: {}
  /permissions/{permissionId}/archive:
    put:
      summary: Archive Permission
      tags:
        - Permissions
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Archives or unarchives a permission (role). Archived permissions
        are effectively soft-deleted.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Permissions:Archive`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: ID of the permission (also referred to as "role" in the dashboard).
          required: true
          description: ID of the permission (also referred to as "role" in the dashboard).
          name: permissionId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                isArchived:
                  type: boolean
                  description: Set to true to archive, false to unarchive.
              required:
                - isArchived
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Permission"
  /permissions/{permissionId}/assignments:
    post:
      summary: Assign Permission
      tags:
        - Permissions
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Assigns a permission (role) to an identity (user, PAT or service
        account), granting it access to the operations defined in the
        permission. Returns the assignment on success (200), or a pending change
        request if approval is required (202).
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Permissions:Assign`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: ID of the permission (also referred to as "role" in the dashboard).
          required: true
          description: ID of the permission (also referred to as "role" in the dashboard).
          name: permissionId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                identityId:
                  type: string
                  minLength: 1
                  description: ID of the identity to assign the permission to. Can be a user ID, a
                    service account ID, or a personal access token (PAT) ID.
              required:
                - identityId
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    minLength: 1
                    maxLength: 64
                    pattern: ^as-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                    description: ID of the permission assignment.
                    example: as-1vcmc-qrek0-6b4vii9pln60907e
                  permissionId:
                    type: string
                    minLength: 1
                    maxLength: 64
                    pattern: ^pm-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                    description: ID of the permission (also referred to as "role" in the dashboard).
                    example: pm-37vj4-jkr4l-lc9945spfftkne57
                  identityId:
                    type: string
                    description: ID of the identity the permission is assigned to. Can be a user ID,
                      a service account ID, or a personal access token (PAT) ID.
                  isImmutable:
                    type: boolean
                    description: Whether this assignment is system-managed and cannot be modified.
                  dateCreated:
                    type: string
                    format: date-time
                    description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                      UTC). Date the assignment was created."
                    example: 2023-04-14T20:41:28.715Z
                  dateUpdated:
                    type: string
                    format: date-time
                    description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                      UTC). Date the assignment was last updated."
                    example: 2023-04-14T20:41:28.715Z
                required:
                  - id
                  - permissionId
                  - identityId
                  - isImmutable
                  - dateCreated
                  - dateUpdated
                additionalProperties: false
    get:
      summary: List Permission Assignments
      tags:
        - Permissions
      security:
        - authenticationToken: []
      description: Lists all permission (role) assignments for a given permission.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Permissions:Assignments:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: ID of the permission (also referred to as "role" in the dashboard).
          required: true
          description: ID of the permission (also referred to as "role" in the dashboard).
          name: permissionId
          in: path
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      allOf:
                        - type: object
                          properties:
                            id:
                              type: string
                              minLength: 1
                              maxLength: 64
                              pattern: ^as-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                              description: ID of the permission assignment.
                              example: as-1vcmc-qrek0-6b4vii9pln60907e
                            permissionId:
                              type: string
                              minLength: 1
                              maxLength: 64
                              pattern: ^pm-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                              description: ID of the permission (also referred to as "role" in the dashboard).
                              example: pm-37vj4-jkr4l-lc9945spfftkne57
                            identityId:
                              type: string
                              description: ID of the identity the permission is assigned to. Can be a user ID,
                                a service account ID, or a personal access token
                                (PAT) ID.
                            isImmutable:
                              type: boolean
                              description: Whether this assignment is system-managed and cannot be modified.
                            dateCreated:
                              type: string
                              format: date-time
                              description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                UTC). Date the assignment was created."
                              example: 2023-04-14T20:41:28.715Z
                            dateUpdated:
                              type: string
                              format: date-time
                              description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                UTC). Date the assignment was last updated."
                              example: 2023-04-14T20:41:28.715Z
                          required:
                            - id
                            - permissionId
                            - identityId
                            - isImmutable
                            - dateCreated
                            - dateUpdated
                          additionalProperties: false
                        - type: object
                          properties:
                            pendingChangeRequest:
                              type: object
                              properties:
                                id:
                                  type: string
                                  minLength: 1
                                  maxLength: 64
                                  pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                  description: ID of the change request.
                                  example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                                requester:
                                  $ref: "#/components/schemas/ChangeRequestRequester"
                                status:
                                  type: string
                                  enum:
                                    - Applied
                                    - Failed
                                    - Pending
                                    - Rejected
                                  description: Current status of the change request.
                                entityId:
                                  type: string
                                  description: ID of the entity being changed.
                                dateCreated:
                                  type: string
                                  format: date-time
                                  description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                    UTC). Date the change request was created."
                                  example: 2023-04-14T20:41:28.715Z
                                dateResolved:
                                  type: string
                                  format: date-time
                                  description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                    UTC). Date the change request was resolved."
                                  example: 2023-04-14T20:41:28.715Z
                                approvalId:
                                  type: string
                                  minLength: 1
                                  maxLength: 64
                                  pattern: ^ap-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                  example: ap-2a9in-tt2a1-983lho480p35ejd0
                                kind:
                                  type: string
                                  enum:
                                    - Assignment
                                operationKind:
                                  type: string
                                  enum: *a62
                                body:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                      minLength: 1
                                      maxLength: 64
                                      pattern: ^as-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                      description: ID of the permission assignment.
                                      example: as-1vcmc-qrek0-6b4vii9pln60907e
                                    permissionId:
                                      type: string
                                      minLength: 1
                                      maxLength: 64
                                      pattern: ^pm-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                      description: ID of the permission (also referred to as "role" in the dashboard).
                                      example: pm-37vj4-jkr4l-lc9945spfftkne57
                                    identityId:
                                      type: string
                                      description: ID of the identity the permission is assigned to. Can be a user ID,
                                        a service account ID, or a personal
                                        access token (PAT) ID.
                                    isImmutable:
                                      type: boolean
                                      description: Whether this assignment is system-managed and cannot be modified.
                                  required:
                                    - id
                                    - permissionId
                                    - identityId
                                    - isImmutable
                                  additionalProperties: false
                              required:
                                - id
                                - requester
                                - status
                                - entityId
                                - dateCreated
                                - kind
                                - operationKind
                                - body
                              additionalProperties: false
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                required:
                  - items
  /permissions:
    post:
      summary: Create Permission
      tags:
        - Permissions
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Creates a new permission (also referred to as "role" in the
        dashboard) that grants access to the specified API operations.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Permissions:Create`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 100
                  description: Human-readable name for the permission (role).
                operations:
                  type: array
                  items:
                    anyOf:
                      - type: string
                        enum:
                          - Registry:Addresses:Create
                          - Registry:Addresses:Delete
                          - Registry:Addresses:Read
                          - Registry:Addresses:Update
                          - Registry:ContractSchemas:Create
                          - Registry:ContractSchemas:Delete
                          - Registry:ContractSchemas:Read
                          - Auth:Logs:Read
                          - Auth:Users:Create
                          - Auth:Users:Read
                          - Auth:Users:Update
                          - Auth:Users:Activate
                          - Auth:Users:Deactivate
                          - Auth:Users:Delete
                          - Auth:ServiceAccounts:Create
                          - Auth:ServiceAccounts:Read
                          - Auth:ServiceAccounts:Update
                          - Auth:ServiceAccounts:Deactivate
                          - Auth:ServiceAccounts:Activate
                          - Auth:ServiceAccounts:Delete
                          - Auth:Pats:Create
                          - Auth:Register:Delegated
                          - Auth:Login:Delegated
                          - Auth:Recover:Delegated
                          - Agreements:Acceptance:Create
                          - Agreements:Acceptance:Read
                          - Events:Read
                          - Exchanges:Create
                          - Exchanges:Read
                          - Exchanges:Delete
                          - Exchanges:Deposits:Create
                          - Exchanges:Withdrawals:Create
                          - FeeSponsors:Create
                          - FeeSponsors:Read
                          - FeeSponsors:Update
                          - FeeSponsors:Delete
                          - FeeSponsors:Use
                          - Orgs:Read
                          - Orgs:Update
                          - Orgs:Settings:Read
                          - Orgs:Settings:Update
                          - Permissions:Archive
                          - Permissions:Create
                          - Permissions:Read
                          - Permissions:Update
                          - Permissions:Assign
                          - Permissions:Revoke
                          - Permissions:Assignments:Read
                          - Policies:Archive
                          - Policies:Create
                          - Policies:Read
                          - Policies:Update
                          - Policies:Approvals:Read
                          - Policies:Approvals:Approve
                          - Signers:ListSigners
                          - Stakes:Create
                          - Stakes:Read
                          - Stakes:Update
                          - Swaps:Create
                          - Swaps:Read
                          - Payouts:Create
                          - Payouts:Read
                          - Payouts:Write
                          - Allocations:Create
                          - Allocations:Update
                          - Allocations:Read
                          - Keys:Create
                          - Keys:Delete
                          - Keys:Read
                          - Keys:Update
                          - Keys:Reuse
                          - Keys:Delegate
                          - Keys:Import
                          - Keys:Export
                          - Keys:Derive
                          - Keys:ChildKeys:Create
                          - Keys:Signatures:Create
                          - Keys:Signatures:Read
                          - KeyStores:Read
                          - KeyStores:Fleets:Create
                          - KeyStores:Fleets:Clone
                          - KeyStores:ProofOfControl:Create
                          - KeyStores:OnchainSignatures:Create
                          - Networks:CantonValidators:Create
                          - Networks:CantonValidators:Read
                          - Networks:CantonValidators:Update
                          - Networks:CantonValidators:Delete
                          - Wallets:Create
                          - Wallets:Read
                          - Wallets:Update
                          - Wallets:Tags:Add
                          - Wallets:Tags:Delete
                          - Wallets:Transactions:Create
                          - Wallets:Transactions:Read
                          - Wallets:Transactions:Abort
                          - Wallets:Transfers:Create
                          - Wallets:Transfers:Read
                          - Wallets:Transfers:Abort
                          - Wallets:Offers:Read
                          - Wallets:Offers:Settle
                          - Vaults:Create
                          - Vaults:Read
                          - Vaults:Update
                          - Vaults:Tags:Add
                          - Vaults:Tags:Delete
                          - Webhooks:Create
                          - Webhooks:Read
                          - Webhooks:Update
                          - Webhooks:Delete
                          - Webhooks:Ping
                          - Webhooks:Events:Read
                          - Billing:Read
                          - Billing:Write
                          - Analytics:Read
                      - type: string
                        enum:
                          - Alias:Create
                          - Alias:Delete
                          - Alias:Read
                          - Alias:Update
                          - Wallets:GenerateSignature
                          - Wallets:BroadcastTransaction
                          - Auth:Action:Sign
                          - Auth:Apps:Read
                          - Auth:Apps:Create
                          - Auth:Apps:Update
                          - Auth:Creds:Create
                          - Auth:Creds:Read
                          - Auth:Creds:Update
                          - Auth:Creds:Code:Create
                          - Auth:Types:Application
                          - Auth:Types:Employee
                          - Auth:Types:EndUser
                          - Auth:Types:Pat
                          - Auth:Types:ServiceAccount
                          - Internal:Auth:Types:Staff
                          - Auth:Users:Delegate
                          - PermissionAssignments:Create
                          - PermissionAssignments:Read
                          - PermissionAssignments:Revoke
                  minItems: 1
                  description: List of API operations this permission grants access to. See
                    [Permissions
                    List](https://docs.dfns.co/core-concepts/roles-and-permissions#list-of-permissions)
                    for available operations.
              required:
                - name
                - operations
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Permission"
    get:
      summary: List Permissions
      tags:
        - Permissions
      security:
        - authenticationToken: []
      description: Lists all permissions (roles) in the organization.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Permissions:Read`: Always required.
      parameters:
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      allOf:
                        - $ref: "#/components/schemas/Permission"
                        - type: object
                          properties:
                            pendingChangeRequest:
                              type: object
                              properties:
                                id:
                                  type: string
                                  minLength: 1
                                  maxLength: 64
                                  pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                  description: ID of the change request.
                                  example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                                requester:
                                  $ref: "#/components/schemas/ChangeRequestRequester"
                                status:
                                  type: string
                                  enum:
                                    - Applied
                                    - Failed
                                    - Pending
                                    - Rejected
                                  description: Current status of the change request.
                                entityId:
                                  type: string
                                  description: ID of the entity being changed.
                                dateCreated:
                                  type: string
                                  format: date-time
                                  description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                    UTC). Date the change request was created."
                                  example: 2023-04-14T20:41:28.715Z
                                dateResolved:
                                  type: string
                                  format: date-time
                                  description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                    UTC). Date the change request was resolved."
                                  example: 2023-04-14T20:41:28.715Z
                                approvalId:
                                  type: string
                                  minLength: 1
                                  maxLength: 64
                                  pattern: ^ap-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                  example: ap-2a9in-tt2a1-983lho480p35ejd0
                                kind:
                                  type: string
                                  enum:
                                    - Permission
                                operationKind:
                                  type: string
                                  enum: *a63
                                body:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                      minLength: 1
                                      maxLength: 64
                                      pattern: ^pm-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                      description: ID of the permission (also referred to as "role" in the dashboard).
                                      example: pm-37vj4-jkr4l-lc9945spfftkne57
                                    name:
                                      type: string
                                      description: Human-readable name of the permission (role).
                                    status:
                                      type: string
                                      enum:
                                        - Active
                                      description: Current status of the permission.
                                    operations:
                                      type: array
                                      items:
                                        type: string
                                      description: List of API operations this permission grants access to. See
                                        [Permissions
                                        List](https://docs.dfns.co/core-concepts/roles-and-permissions#list-of-permissions)
                                        for available operations.
                                    isImmutable:
                                      type: boolean
                                      description: Whether this permission is system-managed and cannot be modified.
                                    isArchived:
                                      type: boolean
                                      description: Whether this permission has been archived (soft-deleted).
                                  required:
                                    - id
                                    - name
                                    - status
                                    - operations
                                    - isImmutable
                                    - isArchived
                                  additionalProperties: false
                              required:
                                - id
                                - requester
                                - status
                                - entityId
                                - dateCreated
                                - kind
                                - operationKind
                                - body
                              additionalProperties: false
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                required:
                  - items
  /permissions/{permissionId}/assignments/{assignmentId}:
    delete:
      summary: Revoke Permission
      tags:
        - Permissions
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Revokes a permission (role) assignment, removing the identity's
        access to the operations granted by the permission.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Permissions:Revoke`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: ID of the permission (also referred to as "role" in the dashboard).
          required: true
          description: ID of the permission (also referred to as "role" in the dashboard).
          name: permissionId
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^as-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
            description: ID of the permission assignment.
          required: true
          description: ID of the permission assignment.
          name: assignmentId
          in: path
        - schema:
            type: boolean
            default: false
            description: If true, bypasses the approval process and revokes immediately.
          required: false
          description: If true, bypasses the approval process and revokes immediately.
          name: force
          in: query
      responses:
        "200":
          description: Success
  /permissions/{permissionId}:
    get:
      summary: Get Permission
      tags:
        - Permissions
      security:
        - authenticationToken: []
      description: Retrieves a permission (role) by ID, including any pending change
        request.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Permissions:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: ID of the permission (also referred to as "role" in the dashboard).
          required: true
          description: ID of the permission (also referred to as "role" in the dashboard).
          name: permissionId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/Permission"
                  - type: object
                    properties:
                      pendingChangeRequest:
                        type: object
                        properties:
                          id:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            description: ID of the change request.
                            example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                          requester:
                            $ref: "#/components/schemas/ChangeRequestRequester"
                          status:
                            type: string
                            enum:
                              - Applied
                              - Failed
                              - Pending
                              - Rejected
                            description: Current status of the change request.
                          entityId:
                            type: string
                            description: ID of the entity being changed.
                          dateCreated:
                            type: string
                            format: date-time
                            description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                              UTC). Date the change request was created."
                            example: 2023-04-14T20:41:28.715Z
                          dateResolved:
                            type: string
                            format: date-time
                            description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                              UTC). Date the change request was resolved."
                            example: 2023-04-14T20:41:28.715Z
                          approvalId:
                            type: string
                            minLength: 1
                            maxLength: 64
                            pattern: ^ap-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                            example: ap-2a9in-tt2a1-983lho480p35ejd0
                          kind:
                            type: string
                            enum:
                              - Permission
                          operationKind:
                            type: string
                            enum: *a63
                          body:
                            type: object
                            properties:
                              id:
                                type: string
                                minLength: 1
                                maxLength: 64
                                pattern: ^pm-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                description: ID of the permission (also referred to as "role" in the dashboard).
                                example: pm-37vj4-jkr4l-lc9945spfftkne57
                              name:
                                type: string
                                description: Human-readable name of the permission (role).
                              status:
                                type: string
                                enum:
                                  - Active
                                description: Current status of the permission.
                              operations:
                                type: array
                                items:
                                  type: string
                                description: List of API operations this permission grants access to. See
                                  [Permissions
                                  List](https://docs.dfns.co/core-concepts/roles-and-permissions#list-of-permissions)
                                  for available operations.
                              isImmutable:
                                type: boolean
                                description: Whether this permission is system-managed and cannot be modified.
                              isArchived:
                                type: boolean
                                description: Whether this permission has been archived (soft-deleted).
                            required:
                              - id
                              - name
                              - status
                              - operations
                              - isImmutable
                              - isArchived
                            additionalProperties: false
                        required:
                          - id
                          - requester
                          - status
                          - entityId
                          - dateCreated
                          - kind
                          - operationKind
                          - body
                        additionalProperties: false
    put:
      summary: Update Permission
      tags:
        - Permissions
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Updates the name or operations of an existing permission (role).
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Permissions:Update`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: ID of the permission (also referred to as "role" in the dashboard).
          required: true
          description: ID of the permission (also referred to as "role" in the dashboard).
          name: permissionId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 100
                  description: New name for the permission (role).
                operations:
                  type: array
                  items:
                    anyOf:
                      - type: string
                        enum:
                          - Registry:Addresses:Create
                          - Registry:Addresses:Delete
                          - Registry:Addresses:Read
                          - Registry:Addresses:Update
                          - Registry:ContractSchemas:Create
                          - Registry:ContractSchemas:Delete
                          - Registry:ContractSchemas:Read
                          - Auth:Logs:Read
                          - Auth:Users:Create
                          - Auth:Users:Read
                          - Auth:Users:Update
                          - Auth:Users:Activate
                          - Auth:Users:Deactivate
                          - Auth:Users:Delete
                          - Auth:ServiceAccounts:Create
                          - Auth:ServiceAccounts:Read
                          - Auth:ServiceAccounts:Update
                          - Auth:ServiceAccounts:Deactivate
                          - Auth:ServiceAccounts:Activate
                          - Auth:ServiceAccounts:Delete
                          - Auth:Pats:Create
                          - Auth:Register:Delegated
                          - Auth:Login:Delegated
                          - Auth:Recover:Delegated
                          - Agreements:Acceptance:Create
                          - Agreements:Acceptance:Read
                          - Events:Read
                          - Exchanges:Create
                          - Exchanges:Read
                          - Exchanges:Delete
                          - Exchanges:Deposits:Create
                          - Exchanges:Withdrawals:Create
                          - FeeSponsors:Create
                          - FeeSponsors:Read
                          - FeeSponsors:Update
                          - FeeSponsors:Delete
                          - FeeSponsors:Use
                          - Orgs:Read
                          - Orgs:Update
                          - Orgs:Settings:Read
                          - Orgs:Settings:Update
                          - Permissions:Archive
                          - Permissions:Create
                          - Permissions:Read
                          - Permissions:Update
                          - Permissions:Assign
                          - Permissions:Revoke
                          - Permissions:Assignments:Read
                          - Policies:Archive
                          - Policies:Create
                          - Policies:Read
                          - Policies:Update
                          - Policies:Approvals:Read
                          - Policies:Approvals:Approve
                          - Signers:ListSigners
                          - Stakes:Create
                          - Stakes:Read
                          - Stakes:Update
                          - Swaps:Create
                          - Swaps:Read
                          - Payouts:Create
                          - Payouts:Read
                          - Payouts:Write
                          - Allocations:Create
                          - Allocations:Update
                          - Allocations:Read
                          - Keys:Create
                          - Keys:Delete
                          - Keys:Read
                          - Keys:Update
                          - Keys:Reuse
                          - Keys:Delegate
                          - Keys:Import
                          - Keys:Export
                          - Keys:Derive
                          - Keys:ChildKeys:Create
                          - Keys:Signatures:Create
                          - Keys:Signatures:Read
                          - KeyStores:Read
                          - KeyStores:Fleets:Create
                          - KeyStores:Fleets:Clone
                          - KeyStores:ProofOfControl:Create
                          - KeyStores:OnchainSignatures:Create
                          - Networks:CantonValidators:Create
                          - Networks:CantonValidators:Read
                          - Networks:CantonValidators:Update
                          - Networks:CantonValidators:Delete
                          - Wallets:Create
                          - Wallets:Read
                          - Wallets:Update
                          - Wallets:Tags:Add
                          - Wallets:Tags:Delete
                          - Wallets:Transactions:Create
                          - Wallets:Transactions:Read
                          - Wallets:Transactions:Abort
                          - Wallets:Transfers:Create
                          - Wallets:Transfers:Read
                          - Wallets:Transfers:Abort
                          - Wallets:Offers:Read
                          - Wallets:Offers:Settle
                          - Vaults:Create
                          - Vaults:Read
                          - Vaults:Update
                          - Vaults:Tags:Add
                          - Vaults:Tags:Delete
                          - Webhooks:Create
                          - Webhooks:Read
                          - Webhooks:Update
                          - Webhooks:Delete
                          - Webhooks:Ping
                          - Webhooks:Events:Read
                          - Billing:Read
                          - Billing:Write
                          - Analytics:Read
                      - type: string
                        enum:
                          - Alias:Create
                          - Alias:Delete
                          - Alias:Read
                          - Alias:Update
                          - Wallets:GenerateSignature
                          - Wallets:BroadcastTransaction
                          - Auth:Action:Sign
                          - Auth:Apps:Read
                          - Auth:Apps:Create
                          - Auth:Apps:Update
                          - Auth:Creds:Create
                          - Auth:Creds:Read
                          - Auth:Creds:Update
                          - Auth:Creds:Code:Create
                          - Auth:Types:Application
                          - Auth:Types:Employee
                          - Auth:Types:EndUser
                          - Auth:Types:Pat
                          - Auth:Types:ServiceAccount
                          - Internal:Auth:Types:Staff
                          - Auth:Users:Delegate
                          - PermissionAssignments:Create
                          - PermissionAssignments:Read
                          - PermissionAssignments:Revoke
                  minItems: 1
                  description: New list of API operations this permission grants access to. See
                    [Permissions
                    List](https://docs.dfns.co/core-concepts/roles-and-permissions#list-of-permissions)
                    for available operations.
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Permission"
  /v2/policies/{policyId}:
    delete:
      summary: Delete Policy
      tags:
        - Policies
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Delete an existing policy.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Policies:Archive`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: policyId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Policy"
    get:
      summary: Get Policy
      tags:
        - Policies
      security:
        - authenticationToken: []
      description: Retrieve information about a specific policy.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Policies:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: policyId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/Policy"
                  - type: object
                    properties:
                      pendingChangeRequest:
                        type: object
                        properties:
                          id:
                            type: string
                          requester:
                            $ref: "#/components/schemas/ChangeRequestRequester"
                          kind:
                            type: string
                            enum:
                              - Policy
                          operationKind:
                            type: string
                            enum: *a64
                          status:
                            type: string
                            enum:
                              - Applied
                              - Failed
                              - Pending
                              - Rejected
                          entityId:
                            type: string
                          dateCreated:
                            type: string
                            format: date-time
                          dateResolved:
                            type: string
                            format: date-time
                          approvalId:
                            type: string
                          body:
                            $ref: "#/components/schemas/Policy"
                        required:
                          - id
                          - requester
                          - kind
                          - operationKind
                          - status
                          - entityId
                          - dateCreated
                          - body
                        additionalProperties: false
    put:
      summary: Update Policy
      tags:
        - Policies
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Update an existing policy.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Policies:Update`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: policyId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    name:
                      type: string
                    activityKind:
                      type: string
                      enum:
                        - Registry:Addresses:Modify
                    rule:
                      type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - AlwaysTrigger
                        configuration:
                          type: object
                          properties: {}
                          additionalProperties: false
                      required:
                        - kind
                      additionalProperties: false
                      description: This rule will always be triggered, meaning that if this rule is
                        defined on a policy, the policy will always trigger the
                        policy action, regardless of the activity details.
                      title: AlwaysTrigger
                    action:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - RequestApproval
                            approvalGroups:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                  quorum:
                                    type: integer
                                    minimum: 1
                                  approvers:
                                    type: object
                                    properties:
                                      userId:
                                        type: object
                                        properties:
                                          in:
                                            type: array
                                            items:
                                              type: string
                                              minLength: 1
                                            minItems: 1
                                            maxItems: 100
                                        required:
                                          - in
                                        additionalProperties: false
                                    additionalProperties: false
                                  initiatorCanApprove:
                                    type: boolean
                                    description: Whether the initiator of the activity can participate in the
                                      approval.
                                  serviceAccountsCanApprove:
                                    type: boolean
                                    description: Whether service accounts can participate in the approval for this
                                      group.
                                required:
                                  - quorum
                                  - approvers
                                additionalProperties: false
                              minItems: 1
                            autoRejectTimeout:
                              type:
                                - integer
                                - "null"
                              minimum: 1
                          required:
                            - kind
                            - approvalGroups
                          additionalProperties: false
                          description: "

                            This action means that activity will first require
                            an Approval process to be completed before it
                            can  be executed (or be aborted if someone rejects
                            it during the approval process).


                            One or several groups of approvers need to be
                            specified. These groups define who is allowed to
                            approve / reject an activity.


                            The activity will only be executed if all approver
                            groups reach their \"quorum\" of approvals.
                            Otherwise, if any one user within any approver group
                            rejects, then the activity is aborted and the call
                            is not executed.


                            The example below shows a `RequestApproval` action,
                            configured with one approval group requiring 2
                            approvals amongst three specific users.


                            ```json

                            {

                            \  \"action\": {

                            \    \"kind\": \"RequestApproval\",

                            \    \"autoRejectTimeout\": 60, // minutes

                            \    \"approvalGroups\": [

                            \      {

                            \        \"name\": \"Admins\",

                            \        \"quorum\": 2, // only 2 approvers required
                            in that group\ 

                            \        \"approvers\": {

                            \          \"userId\": {

                            \            \"in\": [\"us-...1\", \"us-...2\",
                            \"us-...3\"],

                            \          }

                            \        }

                            \      }

                            \    ],


                            \  }

                            }

                            ```


                            **Don't lock yourself up**


                            By default, users cannot approve an activity they
                            initiated themselves, even if they are in an
                            approval group. To allow this, you must set
                            `initiatorCanApprove: true`.


                            *Example 1:* For any wallet transfer, a policy is
                            setup to require approval from **1 specific admin
                            user** (eg. the CEO). `initiatorCanApprove` was not
                            set to `true`. If the CEO himself initiates a
                            transfer, no-one can approve his transfer and it's
                            stuck.


                            *Example 2:* Company has only 3 users. A policy is
                            setup to require approval from **any 3 users**
                            (`quorum: 3`) for any modification of a policy.
                            `initiatorCanApprove` was not set to `true`. In this
                            case, they are locked, and the policy cannot be
                            modified: whoever requests a modification cannot
                            approve, and the policy is therefore always missing
                            one approver. To unlock, they would need to invite a
                            new user and give him the rights to approve as well.

                            \    "
                          title: RequestApproval
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Block
                          required:
                            - kind
                          additionalProperties: false
                          description: >
                            This action means that the activity will be blocked
                            if the policy is triggered.


                            ```json

                            {
                              "action": {
                                "kind": "Block"
                              }
                            }

                            ```
                          title: Block
                    filters:
                      type: object
                      properties: {}
                  required:
                    - name
                    - activityKind
                    - rule
                    - action
                  additionalProperties: false
                  description: ""
                  title: Registry:Addresses:Modify
                - type: object
                  properties:
                    name:
                      type: string
                    activityKind:
                      type: string
                      enum:
                        - Permissions:Assign
                    rule:
                      type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - AlwaysTrigger
                        configuration:
                          type: object
                          properties: {}
                          additionalProperties: false
                      required:
                        - kind
                      additionalProperties: false
                      description: This rule will always be triggered, meaning that if this rule is
                        defined on a policy, the policy will always trigger the
                        policy action, regardless of the activity details.
                      title: AlwaysTrigger
                    action:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - RequestApproval
                            approvalGroups:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                  quorum:
                                    type: integer
                                    minimum: 1
                                  approvers:
                                    type: object
                                    properties:
                                      userId:
                                        type: object
                                        properties:
                                          in:
                                            type: array
                                            items:
                                              type: string
                                              minLength: 1
                                            minItems: 1
                                            maxItems: 100
                                        required:
                                          - in
                                        additionalProperties: false
                                    additionalProperties: false
                                  initiatorCanApprove:
                                    type: boolean
                                    description: Whether the initiator of the activity can participate in the
                                      approval.
                                  serviceAccountsCanApprove:
                                    type: boolean
                                    description: Whether service accounts can participate in the approval for this
                                      group.
                                required:
                                  - quorum
                                  - approvers
                                additionalProperties: false
                              minItems: 1
                            autoRejectTimeout:
                              type:
                                - integer
                                - "null"
                              minimum: 1
                          required:
                            - kind
                            - approvalGroups
                          additionalProperties: false
                          description: "

                            This action means that activity will first require
                            an Approval process to be completed before it
                            can  be executed (or be aborted if someone rejects
                            it during the approval process).


                            One or several groups of approvers need to be
                            specified. These groups define who is allowed to
                            approve / reject an activity.


                            The activity will only be executed if all approver
                            groups reach their \"quorum\" of approvals.
                            Otherwise, if any one user within any approver group
                            rejects, then the activity is aborted and the call
                            is not executed.


                            The example below shows a `RequestApproval` action,
                            configured with one approval group requiring 2
                            approvals amongst three specific users.


                            ```json

                            {

                            \  \"action\": {

                            \    \"kind\": \"RequestApproval\",

                            \    \"autoRejectTimeout\": 60, // minutes

                            \    \"approvalGroups\": [

                            \      {

                            \        \"name\": \"Admins\",

                            \        \"quorum\": 2, // only 2 approvers required
                            in that group\ 

                            \        \"approvers\": {

                            \          \"userId\": {

                            \            \"in\": [\"us-...1\", \"us-...2\",
                            \"us-...3\"],

                            \          }

                            \        }

                            \      }

                            \    ],


                            \  }

                            }

                            ```


                            **Don't lock yourself up**


                            By default, users cannot approve an activity they
                            initiated themselves, even if they are in an
                            approval group. To allow this, you must set
                            `initiatorCanApprove: true`.


                            *Example 1:* For any wallet transfer, a policy is
                            setup to require approval from **1 specific admin
                            user** (eg. the CEO). `initiatorCanApprove` was not
                            set to `true`. If the CEO himself initiates a
                            transfer, no-one can approve his transfer and it's
                            stuck.


                            *Example 2:* Company has only 3 users. A policy is
                            setup to require approval from **any 3 users**
                            (`quorum: 3`) for any modification of a policy.
                            `initiatorCanApprove` was not set to `true`. In this
                            case, they are locked, and the policy cannot be
                            modified: whoever requests a modification cannot
                            approve, and the policy is therefore always missing
                            one approver. To unlock, they would need to invite a
                            new user and give him the rights to approve as well.

                            \    "
                          title: RequestApproval
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Block
                          required:
                            - kind
                          additionalProperties: false
                          description: >
                            This action means that the activity will be blocked
                            if the policy is triggered.


                            ```json

                            {
                              "action": {
                                "kind": "Block"
                              }
                            }

                            ```
                          title: Block
                    filters:
                      type: object
                      properties:
                        permissionId:
                          type: object
                          properties:
                            in:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                          required:
                            - in
                          additionalProperties: false
                      required:
                        - permissionId
                      additionalProperties: false
                  required:
                    - name
                    - activityKind
                    - rule
                    - action
                  additionalProperties: false
                  description: |-
                    A "`Permissions:Assign`" activity represents any activity which involves assigning a permission (or revoking it, aka "deleting a permission assignment"). These activities are Assignment change requests, created as a result of calling either:

                    * the endpoint [Assign Permission](https://docs.dfns.co/api-reference/permissions/assign-permission)
                    * the endpoint [Revoke Permission](https://docs.dfns.co/api-reference/permissions/revoke-permission)
                  title: Permissions:Assign
                - type: object
                  properties:
                    name:
                      type: string
                    activityKind:
                      type: string
                      enum:
                        - Permissions:Modify
                    rule:
                      type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - AlwaysTrigger
                        configuration:
                          type: object
                          properties: {}
                          additionalProperties: false
                      required:
                        - kind
                      additionalProperties: false
                      description: This rule will always be triggered, meaning that if this rule is
                        defined on a policy, the policy will always trigger the
                        policy action, regardless of the activity details.
                      title: AlwaysTrigger
                    action:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - RequestApproval
                            approvalGroups:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                  quorum:
                                    type: integer
                                    minimum: 1
                                  approvers:
                                    type: object
                                    properties:
                                      userId:
                                        type: object
                                        properties:
                                          in:
                                            type: array
                                            items:
                                              type: string
                                              minLength: 1
                                            minItems: 1
                                            maxItems: 100
                                        required:
                                          - in
                                        additionalProperties: false
                                    additionalProperties: false
                                  initiatorCanApprove:
                                    type: boolean
                                    description: Whether the initiator of the activity can participate in the
                                      approval.
                                  serviceAccountsCanApprove:
                                    type: boolean
                                    description: Whether service accounts can participate in the approval for this
                                      group.
                                required:
                                  - quorum
                                  - approvers
                                additionalProperties: false
                              minItems: 1
                            autoRejectTimeout:
                              type:
                                - integer
                                - "null"
                              minimum: 1
                          required:
                            - kind
                            - approvalGroups
                          additionalProperties: false
                          description: "

                            This action means that activity will first require
                            an Approval process to be completed before it
                            can  be executed (or be aborted if someone rejects
                            it during the approval process).


                            One or several groups of approvers need to be
                            specified. These groups define who is allowed to
                            approve / reject an activity.


                            The activity will only be executed if all approver
                            groups reach their \"quorum\" of approvals.
                            Otherwise, if any one user within any approver group
                            rejects, then the activity is aborted and the call
                            is not executed.


                            The example below shows a `RequestApproval` action,
                            configured with one approval group requiring 2
                            approvals amongst three specific users.


                            ```json

                            {

                            \  \"action\": {

                            \    \"kind\": \"RequestApproval\",

                            \    \"autoRejectTimeout\": 60, // minutes

                            \    \"approvalGroups\": [

                            \      {

                            \        \"name\": \"Admins\",

                            \        \"quorum\": 2, // only 2 approvers required
                            in that group\ 

                            \        \"approvers\": {

                            \          \"userId\": {

                            \            \"in\": [\"us-...1\", \"us-...2\",
                            \"us-...3\"],

                            \          }

                            \        }

                            \      }

                            \    ],


                            \  }

                            }

                            ```


                            **Don't lock yourself up**


                            By default, users cannot approve an activity they
                            initiated themselves, even if they are in an
                            approval group. To allow this, you must set
                            `initiatorCanApprove: true`.


                            *Example 1:* For any wallet transfer, a policy is
                            setup to require approval from **1 specific admin
                            user** (eg. the CEO). `initiatorCanApprove` was not
                            set to `true`. If the CEO himself initiates a
                            transfer, no-one can approve his transfer and it's
                            stuck.


                            *Example 2:* Company has only 3 users. A policy is
                            setup to require approval from **any 3 users**
                            (`quorum: 3`) for any modification of a policy.
                            `initiatorCanApprove` was not set to `true`. In this
                            case, they are locked, and the policy cannot be
                            modified: whoever requests a modification cannot
                            approve, and the policy is therefore always missing
                            one approver. To unlock, they would need to invite a
                            new user and give him the rights to approve as well.

                            \    "
                          title: RequestApproval
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Block
                          required:
                            - kind
                          additionalProperties: false
                          description: >
                            This action means that the activity will be blocked
                            if the policy is triggered.


                            ```json

                            {
                              "action": {
                                "kind": "Block"
                              }
                            }

                            ```
                          title: Block
                    filters:
                      type: object
                      properties:
                        permissionId:
                          type: object
                          properties:
                            in:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                          required:
                            - in
                          additionalProperties: false
                      required:
                        - permissionId
                      additionalProperties: false
                  required:
                    - name
                    - activityKind
                    - rule
                    - action
                  additionalProperties: false
                  description: |-
                    A "`Permissions:Modify`" activity represents any activity which involves updating or archiving a permission. These activities are Permission change requests, created as a result of calling either:

                    * the endpoint [Update Permission](https://docs.dfns.co/api-reference/permissions/update-permission)
                    * the endpoint [Delete Permission](https://docs.dfns.co/api-reference/permissions/delete-permission)
                  title: Permissions:Modify
                - type: object
                  properties:
                    name:
                      type: string
                    activityKind:
                      type: string
                      enum:
                        - Policies:Modify
                    rule:
                      type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - AlwaysTrigger
                        configuration:
                          type: object
                          properties: {}
                          additionalProperties: false
                      required:
                        - kind
                      additionalProperties: false
                      description: This rule will always be triggered, meaning that if this rule is
                        defined on a policy, the policy will always trigger the
                        policy action, regardless of the activity details.
                      title: AlwaysTrigger
                    action:
                      type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - RequestApproval
                        approvalGroups:
                          type: array
                          items:
                            type: object
                            properties:
                              name:
                                type: string
                              quorum:
                                type: integer
                                minimum: 1
                              approvers:
                                type: object
                                properties:
                                  userId:
                                    type: object
                                    properties:
                                      in:
                                        type: array
                                        items:
                                          type: string
                                          minLength: 1
                                        minItems: 1
                                        maxItems: 100
                                    required:
                                      - in
                                    additionalProperties: false
                                additionalProperties: false
                              initiatorCanApprove:
                                type: boolean
                                description: Whether the initiator of the activity can participate in the
                                  approval.
                              serviceAccountsCanApprove:
                                type: boolean
                                description: Whether service accounts can participate in the approval for this
                                  group.
                            required:
                              - quorum
                              - approvers
                            additionalProperties: false
                          minItems: 1
                        autoRejectTimeout:
                          type:
                            - integer
                            - "null"
                          minimum: 1
                      required:
                        - kind
                        - approvalGroups
                      additionalProperties: false
                      description: "

                        This action means that activity will first require an
                        Approval process to be completed before it can  be
                        executed (or be aborted if someone rejects it during the
                        approval process).


                        One or several groups of approvers need to be specified.
                        These groups define who is allowed to approve / reject
                        an activity.


                        The activity will only be executed if all approver
                        groups reach their \"quorum\" of approvals. Otherwise,
                        if any one user within any approver group rejects, then
                        the activity is aborted and the call is not executed.


                        The example below shows a `RequestApproval` action,
                        configured with one approval group requiring 2 approvals
                        amongst three specific users.


                        ```json

                        {

                        \  \"action\": {

                        \    \"kind\": \"RequestApproval\",

                        \    \"autoRejectTimeout\": 60, // minutes

                        \    \"approvalGroups\": [

                        \      {

                        \        \"name\": \"Admins\",

                        \        \"quorum\": 2, // only 2 approvers required in
                        that group\ 

                        \        \"approvers\": {

                        \          \"userId\": {

                        \            \"in\": [\"us-...1\", \"us-...2\",
                        \"us-...3\"],

                        \          }

                        \        }

                        \      }

                        \    ],


                        \  }

                        }

                        ```


                        **Don't lock yourself up**


                        By default, users cannot approve an activity they
                        initiated themselves, even if they are in an approval
                        group. To allow this, you must set `initiatorCanApprove:
                        true`.


                        *Example 1:* For any wallet transfer, a policy is setup
                        to require approval from **1 specific admin user** (eg.
                        the CEO). `initiatorCanApprove` was not set to `true`.
                        If the CEO himself initiates a transfer, no-one can
                        approve his transfer and it's stuck.


                        *Example 2:* Company has only 3 users. A policy is setup
                        to require approval from **any 3 users** (`quorum: 3`)
                        for any modification of a policy. `initiatorCanApprove`
                        was not set to `true`. In this case, they are locked,
                        and the policy cannot be modified: whoever requests a
                        modification cannot approve, and the policy is therefore
                        always missing one approver. To unlock, they would need
                        to invite a new user and give him the rights to approve
                        as well.

                        \    "
                      title: RequestApproval
                    filters:
                      type: object
                      properties:
                        policyId:
                          type: object
                          properties:
                            in:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                          required:
                            - in
                          additionalProperties: false
                      required:
                        - policyId
                      additionalProperties: false
                  required:
                    - name
                    - activityKind
                    - rule
                    - action
                  additionalProperties: false
                  description: |
                    A "`Policies:Modify`" activity represents any activity which involves updating or archiving a policy. These activities are Policy change requests, created as a result of calling either:

                    * the endpoint [Update Policy](https://docs.dfns.co/api-reference/policies/update-policy)
                    * the endpoint [Delete Policy](https://docs.dfns.co/api-reference/policies/delete-policy)
                  title: Policies:Modify
                - type: object
                  properties:
                    name:
                      type: string
                    activityKind:
                      type: string
                      enum:
                        - Registry:ContractSchemas:Modify
                    rule:
                      type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - AlwaysTrigger
                        configuration:
                          type: object
                          properties: {}
                          additionalProperties: false
                      required:
                        - kind
                      additionalProperties: false
                      description: This rule will always be triggered, meaning that if this rule is
                        defined on a policy, the policy will always trigger the
                        policy action, regardless of the activity details.
                      title: AlwaysTrigger
                    action:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - RequestApproval
                            approvalGroups:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                  quorum:
                                    type: integer
                                    minimum: 1
                                  approvers:
                                    type: object
                                    properties:
                                      userId:
                                        type: object
                                        properties:
                                          in:
                                            type: array
                                            items:
                                              type: string
                                              minLength: 1
                                            minItems: 1
                                            maxItems: 100
                                        required:
                                          - in
                                        additionalProperties: false
                                    additionalProperties: false
                                  initiatorCanApprove:
                                    type: boolean
                                    description: Whether the initiator of the activity can participate in the
                                      approval.
                                  serviceAccountsCanApprove:
                                    type: boolean
                                    description: Whether service accounts can participate in the approval for this
                                      group.
                                required:
                                  - quorum
                                  - approvers
                                additionalProperties: false
                              minItems: 1
                            autoRejectTimeout:
                              type:
                                - integer
                                - "null"
                              minimum: 1
                          required:
                            - kind
                            - approvalGroups
                          additionalProperties: false
                          description: "

                            This action means that activity will first require
                            an Approval process to be completed before it
                            can  be executed (or be aborted if someone rejects
                            it during the approval process).


                            One or several groups of approvers need to be
                            specified. These groups define who is allowed to
                            approve / reject an activity.


                            The activity will only be executed if all approver
                            groups reach their \"quorum\" of approvals.
                            Otherwise, if any one user within any approver group
                            rejects, then the activity is aborted and the call
                            is not executed.


                            The example below shows a `RequestApproval` action,
                            configured with one approval group requiring 2
                            approvals amongst three specific users.


                            ```json

                            {

                            \  \"action\": {

                            \    \"kind\": \"RequestApproval\",

                            \    \"autoRejectTimeout\": 60, // minutes

                            \    \"approvalGroups\": [

                            \      {

                            \        \"name\": \"Admins\",

                            \        \"quorum\": 2, // only 2 approvers required
                            in that group\ 

                            \        \"approvers\": {

                            \          \"userId\": {

                            \            \"in\": [\"us-...1\", \"us-...2\",
                            \"us-...3\"],

                            \          }

                            \        }

                            \      }

                            \    ],


                            \  }

                            }

                            ```


                            **Don't lock yourself up**


                            By default, users cannot approve an activity they
                            initiated themselves, even if they are in an
                            approval group. To allow this, you must set
                            `initiatorCanApprove: true`.


                            *Example 1:* For any wallet transfer, a policy is
                            setup to require approval from **1 specific admin
                            user** (eg. the CEO). `initiatorCanApprove` was not
                            set to `true`. If the CEO himself initiates a
                            transfer, no-one can approve his transfer and it's
                            stuck.


                            *Example 2:* Company has only 3 users. A policy is
                            setup to require approval from **any 3 users**
                            (`quorum: 3`) for any modification of a policy.
                            `initiatorCanApprove` was not set to `true`. In this
                            case, they are locked, and the policy cannot be
                            modified: whoever requests a modification cannot
                            approve, and the policy is therefore always missing
                            one approver. To unlock, they would need to invite a
                            new user and give him the rights to approve as well.

                            \    "
                          title: RequestApproval
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Block
                          required:
                            - kind
                          additionalProperties: false
                          description: >
                            This action means that the activity will be blocked
                            if the policy is triggered.


                            ```json

                            {
                              "action": {
                                "kind": "Block"
                              }
                            }

                            ```
                          title: Block
                    filters:
                      type: object
                      properties: {}
                  required:
                    - name
                    - activityKind
                    - rule
                    - action
                  additionalProperties: false
                  description: A "`Registry:ContractSchemas:Modify`" activity represents any
                    activity which modifies a Contract Schema registered for
                    execution in the Dfns Dashboard
                  title: Registry:ContractSchemas:Modify
                - type: object
                  properties:
                    name:
                      type: string
                    activityKind:
                      type: string
                      enum:
                        - Wallets:Sign
                    rule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - AlwaysTrigger
                            configuration:
                              type: object
                              properties: {}
                              additionalProperties: false
                          required:
                            - kind
                          additionalProperties: false
                          description: This rule will always be triggered, meaning that if this rule is
                            defined on a policy, the policy will always trigger
                            the policy action, regardless of the activity
                            details.
                          title: AlwaysTrigger
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - TransactionRecipientWhitelist
                            configuration:
                              type: object
                              properties:
                                addresses:
                                  type: array
                                  items:
                                    type: string
                                    minLength: 1
                                  description: Whitelisted recipient addresses
                              required:
                                - addresses
                              additionalProperties: false
                          required:
                            - kind
                            - configuration
                          additionalProperties: false
                          description: This rule will trigger if the destination address *is NOT
                            whitelisted*.
                          title: TransactionRecipientWhitelist
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - TransactionAmountLimit
                            configuration:
                              type: object
                              properties:
                                limit:
                                  type: number
                                  description: Amount limit in `currency`
                                currency:
                                  type: string
                                  enum: *a65
                                  description: Fiat currency, currently only `USD`
                              required:
                                - limit
                                - currency
                              additionalProperties: false
                          required:
                            - kind
                            - configuration
                          additionalProperties: false
                          description: 'This rule will trigger if the wallet activity detected is
                            transferring some value which amount is greater than
                            a given limit. Note: If the fiat amount of the
                            wallet activity cannot be evaluated for any reason
                            (eg. market prices are not available, or eg. the
                            amount cannot be inferred from a wallet signature
                            request, etc.), by default the rule will trigger the
                            policy (this is called "failing closed" and is
                            generally considered a security best practice).'
                          title: TransactionAmountLimit
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - TransactionAmountVelocity
                            configuration:
                              type: object
                              properties:
                                limit:
                                  type: number
                                  description: Amount limit in `currency`
                                currency:
                                  type: string
                                  enum: *a66
                                  description: Currency for the amount limit above
                                timeframe:
                                  type: integer
                                  minimum: 1
                                  maximum: 43200
                                  description: Time period in minutes. Minimum 1, Maximum 43,200.
                              required:
                                - limit
                                - currency
                                - timeframe
                              additionalProperties: false
                          required:
                            - kind
                            - configuration
                          additionalProperties: false
                          description: This rule will trigger if the cumulative amount transferred from a
                            given wallet within a given timeframe is greater
                            than a specified limit.  The aggregate amount
                            evaluated is based only on the wallet that triggered
                            the policy.
                          title: TransactionAmountVelocity
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - TransactionCountVelocity
                            configuration:
                              type: object
                              properties:
                                limit:
                                  type: number
                                  description: Count limit
                                timeframe:
                                  type: integer
                                  minimum: 1
                                  maximum: 43200
                                  description: Time period in minutes. Minimum 1, Maximum 43,200.
                              required:
                                - limit
                                - timeframe
                              additionalProperties: false
                          required:
                            - kind
                            - configuration
                          additionalProperties: false
                          description: This rule will trigger if the number of wallet activities for a
                            given wallet within a given timeframe, is greater
                            than a specified limit. The aggregate number of
                            transactions evaluated is based only on the wallet
                            that triggered the policy.
                          title: TransactionCountVelocity
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - ChainalysisTransactionPrescreening
                            configuration:
                              type: object
                              properties:
                                alerts:
                                  type: object
                                  properties:
                                    alertLevel:
                                      type: string
                                      enum:
                                        - LOW
                                        - MEDIUM
                                        - HIGH
                                        - SEVERE
                                    categoryIds:
                                      type: array
                                      items:
                                        type: integer
                                        exclusiveMinimum: 0
                                  required:
                                    - alertLevel
                                    - categoryIds
                                exposures:
                                  type: object
                                  properties:
                                    direct:
                                      type: object
                                      properties:
                                        categoryIds:
                                          type: array
                                          items:
                                            type: integer
                                            exclusiveMinimum: 0
                                      required:
                                        - categoryIds
                                  required:
                                    - direct
                                addresses:
                                  type: object
                                  properties:
                                    categoryIds:
                                      type: array
                                      items:
                                        type: integer
                                        exclusiveMinimum: 0
                                  required:
                                    - categoryIds
                                userIdTemplate:
                                  type: string
                                  minLength: 1
                                  maxLength: 50
                                  pattern: ^([a-zA-Z0-9_:-]|{wallet\.id}|{wallet\.externalId})+$
                                  default: dfns
                                  description: >-
                                    Value sent to Chainalysis as the "user ID".
                                    Used by Chainalysis for grouping transaction
                                    screenings. 
                                      
                                    This template can include variables,
                                    included in brackets. The following
                                    variables are currently
                                    supported:  `{wallet.id}` and
                                    `{wallet.externalId}`.

                                    As an example, if you set `userIdTemplate:
                                    "dfns:{wallet.id}_{wallet.externalId}"`,
                                    when your wallet receives a transaction that
                                    gets screened by a Chainalysis policy, the
                                    "user ID" sent to Chainalysis will be
                                    `dfns:wa-xxx_yyy` (`wa-xxx` being the wallet
                                    ID, and `yyy` being the wallet external ID).
                                fallbackBehaviours:
                                  type: object
                                  properties:
                                    skipUnscreenableTransaction:
                                      type: boolean
                                    skipUnsupportedNetwork:
                                      type: boolean
                                    skipUnsupportedAsset:
                                      type: boolean
                                    skipChainalysisFailure:
                                      type: boolean
                                  required:
                                    - skipUnscreenableTransaction
                                    - skipUnsupportedNetwork
                                    - skipUnsupportedAsset
                                    - skipChainalysisFailure
                              required:
                                - alerts
                                - exposures
                                - addresses
                                - fallbackBehaviours
                              additionalProperties: false
                          required:
                            - kind
                            - configuration
                          additionalProperties: false
                          description: |+
                            
                            <Info>
                            This rule can only be used once the Chainalysis integration is activated from the Dfns dashboard settings. (see more on [Chainalysis](https://docs.dfns.co/integrations/aml-kyt/chainalysis) integration page).
                            </Info>

                            It's a rule based on [Chainalysis](https://docs.dfns.co/integrations/aml-kyt/chainalysis) KYT integration (Know-Your-Transaction). Upon transfer attempt, we will first register the transfer with Chainalysis (as a ["withdrawal attempt"](https://docs.chainalysis.com/api/kyt/#registration-register-a-withdrawal-attempt)), and fetch the screening results (alerts, exposures, addresses detected). Based on the results, and the configuration of this rule, the policy will be triggered.

                            It's called "Pre"-screening, because the scanned transaction is not on chain yet, it's still a transaction attempt (before the transaction actually make it on chain).

                            ```json
                            {
                              "rule": {
                                "kind": "ChainalysisTransactionPrescreening",
                                "configuration": {
                                  "alerts": {
                                    "alertLevel": "LOW",
                                    "categoryIds": []
                                  },
                                  "exposures": {
                                    "direct": {
                                      "categoryIds": []
                                    }
                                  },
                                  "addresses": {
                                    "categoryIds": []
                                  },
                                  "fallbackBehaviours": {
                                    "skipUnscreenableTransaction": false,
                                    "skipUnsupportedNetwork": false,
                                    "skipUnsupportedAsset": false,
                                    "skipChainalysisFailure": false
                                  }
                                }
                              }
                            }
                            ```

                            **Configuration**

                            | Property | Type | Description |
                            | --- | --- | --- |
                            | `alerts`<br><br>`.alertLevel`* | `string` | Minimum alert level above which the rule should trigger, if any [alert is returned in Chainalysis results](https://docs.chainalysis.com/api/kyt/#withdrawal-attempts-get-alerts). Can be `LOW`, `MEDIUM`, `HIGH`, or `SEVERE` |
                            | `alerts`<br><br>`.categoryIds`* | list of integers | List of Chainalysis category IDs (see [here](https://docs.chainalysis.com/api/kyt/#categories)). If you leave this list empty, alerts of any category will trigger the rule. Otherwise, if you only want the rule to trigger on specific categories, you can specify some in the list. |
                            | `exposures`<br><br>`.direct`<br><br>`.categoryIds`* | list of integers | List of Chainalysis category IDs (see [here](https://docs.chainalysis.com/api/kyt/#categories)). If you leave this list empty, a [direct exposure](https://docs.chainalysis.com/api/kyt/#withdrawal-attempts-get-direct-exposure) of any category detected by chainalysis will trigger the rule. Otherwise, if you only want the rule to trigger on specific categories, you can specify some in the list. |
                            | `addresses`<br><br>`.categoryIds`* | list of integers | List of Chainalysis category IDs (see [here](https://docs.chainalysis.com/api/kyt/#categories)). If you leave this list empty, an [address](https://docs.chainalysis.com/api/kyt/#withdrawal-attempts-get-address-identifications) of any category identified by chainalysis will trigger the rule. Otherwise, if you only want the rule to trigger on specific categories, you can specify some in the list. |
                            | `fallbackBehaviours`<br><br>`.skipUnscreenableTransaction`* | boolean | Behaviour if the wallet activity is not screenable (eg. if it's a signature request of a hash). If true, a transaction which is "unscreenable" will just be skipped, and policy will not trigger |
                            | `fallbackBehaviours.skipUnsupportedNetwork`* | boolean | Behaviour if the wallet activity is on a network not supported by chainalysis, or not yet supported in the dfns-chainalysis integration. If true, an unsupported network will just be skipped, and policy will not trigger |
                            | `fallbackBehaviours.skipUnsupportedAsset`* | boolean | Behaviour if the wallet activity is with a asset not supported by chainalysis, or not yet supported in the dfns-chainalysis integration. If true, an unsupported asset will just be skipped, and policy will not trigger |
                            | `fallbackBehaviours.skipChainalysisFailure`* | boolean | Behaviour if any issue with Chainalysis calls (timeout, results took too long, rate limiting errors, any error). If true, will skip if any error happens |

                          title: ChainalysisTransactionPrescreening
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - GlobalLedgerTransactionPrescreening
                            configuration:
                              type: object
                              properties:
                                riskScoreThreshold:
                                  type: integer
                                  minimum: 0
                                  maximum: 100
                                  description: Risk score threshold (0-100). Policy triggers if
                                    address/transaction risk score >= threshold
                                fallbackBehaviours:
                                  type: object
                                  properties:
                                    skipUnscreenableTransaction:
                                      type: boolean
                                      description: skip all wallet requests that cannot be screened (eg. raw
                                        signatures)
                                    skipUnsupportedNetwork:
                                      type: boolean
                                      description: skip transfer requests to a network not supported yet in our
                                        GlobalLedger integration
                                    skipUnsupportedAsset:
                                      type: boolean
                                      description: skip transfer requests of an asset not supported by our
                                        GlobalLedger integration
                                    skipGlobalLedgerFailure:
                                      type: boolean
                                      description: skips any errors from GlobalLedger API request
                                  required:
                                    - skipUnscreenableTransaction
                                    - skipUnsupportedNetwork
                                    - skipUnsupportedAsset
                                    - skipGlobalLedgerFailure
                              required:
                                - riskScoreThreshold
                                - fallbackBehaviours
                              additionalProperties: false
                          required:
                            - kind
                            - configuration
                          additionalProperties: false
                          description: >-
                            This rule uses GlobalLedger KYT for pre-screening
                            outgoing transfers by checking the destination
                            address risk score.


                            Upon transfer attempt, we will query GlobalLedger's
                            address risk API, and check if the risk score
                            (0-100) is at or above the configured threshold, or
                            if any alerts show up. If so, the policy will be
                            triggered.


                            It's called "Pre"-screening, because the scanned
                            transaction is not on chain yet, it's still a
                            transaction attempt.
                          title: GlobalLedgerTransactionPrescreening
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - TravelRuleTransactionPrescreening
                            configuration:
                              type: object
                              properties:
                                vendor:
                                  type: string
                                  enum:
                                    - Notabene
                                autoTriggerTimeoutSeconds:
                                  type: integer
                                  minimum: 0
                                autoClearAfterDeliveredTimeoutSeconds:
                                  type: integer
                                  minimum: 0
                              required:
                                - vendor
                                - autoTriggerTimeoutSeconds
                              additionalProperties: false
                          required:
                            - kind
                            - configuration
                          additionalProperties: false
                          description: |-
                            This rule can only be used once the Notabene integration is activated from the Dfns dashboard settings (see more on [Notabene](https://docs.dfns.co/integrations/travel-rule/notabene) integration page).
                                
                                It's a rule based on [Notabene](https://docs.dfns.co/integrations/travel-rule/notabene) [TravelRule](https://docs.dfns.co/integrations/travel-rule) integration. It ***ONLY*** applies to Dfns [Transfer Asset](https://docs.dfns.co/api-reference/wallets/transfer-asset) Api Calls. It is NOT supported for Transfers initiated via the dashboard. Upon transfer attempt with an optional [TravelRule](https://docs.dfns.co/api-reference/wallets/transfer-asset#body-travel-rule) payload, we will call Notabene's APIs on your behalf to both confirm the validity of the travel rule message and submit it for processing. Dfns then waits for a response from the counterparty (for custodial transfers) or Notabene (for non-custodial transfers).

                            It's called "Pre"-screening, because the transaction is not on chain yet, it's still a transaction attempt (before the transaction actually make it on chain).
                          title: TravelRuleTransactionPrescreening
                    action:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - RequestApproval
                            approvalGroups:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                  quorum:
                                    type: integer
                                    minimum: 1
                                  approvers:
                                    type: object
                                    properties:
                                      userId:
                                        type: object
                                        properties:
                                          in:
                                            type: array
                                            items:
                                              type: string
                                              minLength: 1
                                            minItems: 1
                                            maxItems: 100
                                        required:
                                          - in
                                        additionalProperties: false
                                    additionalProperties: false
                                  initiatorCanApprove:
                                    type: boolean
                                    description: Whether the initiator of the activity can participate in the
                                      approval.
                                  serviceAccountsCanApprove:
                                    type: boolean
                                    description: Whether service accounts can participate in the approval for this
                                      group.
                                required:
                                  - quorum
                                  - approvers
                                additionalProperties: false
                              minItems: 1
                            autoRejectTimeout:
                              type:
                                - integer
                                - "null"
                              minimum: 1
                          required:
                            - kind
                            - approvalGroups
                          additionalProperties: false
                          description: "

                            This action means that activity will first require
                            an Approval process to be completed before it
                            can  be executed (or be aborted if someone rejects
                            it during the approval process).


                            One or several groups of approvers need to be
                            specified. These groups define who is allowed to
                            approve / reject an activity.


                            The activity will only be executed if all approver
                            groups reach their \"quorum\" of approvals.
                            Otherwise, if any one user within any approver group
                            rejects, then the activity is aborted and the call
                            is not executed.


                            The example below shows a `RequestApproval` action,
                            configured with one approval group requiring 2
                            approvals amongst three specific users.


                            ```json

                            {

                            \  \"action\": {

                            \    \"kind\": \"RequestApproval\",

                            \    \"autoRejectTimeout\": 60, // minutes

                            \    \"approvalGroups\": [

                            \      {

                            \        \"name\": \"Admins\",

                            \        \"quorum\": 2, // only 2 approvers required
                            in that group\ 

                            \        \"approvers\": {

                            \          \"userId\": {

                            \            \"in\": [\"us-...1\", \"us-...2\",
                            \"us-...3\"],

                            \          }

                            \        }

                            \      }

                            \    ],


                            \  }

                            }

                            ```


                            **Don't lock yourself up**


                            By default, users cannot approve an activity they
                            initiated themselves, even if they are in an
                            approval group. To allow this, you must set
                            `initiatorCanApprove: true`.


                            *Example 1:* For any wallet transfer, a policy is
                            setup to require approval from **1 specific admin
                            user** (eg. the CEO). `initiatorCanApprove` was not
                            set to `true`. If the CEO himself initiates a
                            transfer, no-one can approve his transfer and it's
                            stuck.


                            *Example 2:* Company has only 3 users. A policy is
                            setup to require approval from **any 3 users**
                            (`quorum: 3`) for any modification of a policy.
                            `initiatorCanApprove` was not set to `true`. In this
                            case, they are locked, and the policy cannot be
                            modified: whoever requests a modification cannot
                            approve, and the policy is therefore always missing
                            one approver. To unlock, they would need to invite a
                            new user and give him the rights to approve as well.

                            \    "
                          title: RequestApproval
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Block
                          required:
                            - kind
                          additionalProperties: false
                          description: >
                            This action means that the activity will be blocked
                            if the policy is triggered.


                            ```json

                            {
                              "action": {
                                "kind": "Block"
                              }
                            }

                            ```
                          title: Block
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - NoAction
                          required:
                            - kind
                          additionalProperties: false
                          description: "

                            \    This action kind means that nothing will happen
                            after policy rule evaluation. It's meant to be used
                            with policy rules
                            \"`ChainalysisTransactionPrescreening`\" or
                            \"`ChainalysisTransactionScreening`\". This action
                            is for when you just want the KYT analysis rule to
                            be run, and then if triggered, those result returned
                            in a `policy.triggered` [Webhook
                            Event](https://docs.dfns.co/api-reference/webhook-e\
                            vents).


                            ```json

                            {

                            \  \"action\": {

                            \    \"kind\": \"NoAction\"

                            \  }

                            }

                            ```

                            \    "
                          title: NoAction
                    filters:
                      type: object
                      properties:
                        walletId:
                          type: object
                          properties:
                            in:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                          required:
                            - in
                          additionalProperties: false
                        walletTags:
                          type: object
                          properties:
                            hasAny:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                            hasAll:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                          additionalProperties: false
                      additionalProperties: false
                  required:
                    - name
                    - activityKind
                    - rule
                    - action
                  additionalProperties: false
                  description: |
                    A "`Wallets:Sign`" activity represents any activity which involves signing with a wallet. Currently, in our API, these can be:

                    * a Transfer Request (created using the endpoint [Transfer Asset from Wallet](https://docs.dfns.co/api-reference/wallets/transfer-asset))
                    * a Transaction Request (created using the endpoint [Broadcast Transaction from Wallet](https://docs.dfns.co/api-reference/wallets/sign-and-broadcast-transaction))
                    * a Signature Request (created using the endpoint [Generate Signature from Wallet](https://docs.dfns.co/api-reference/keys/generate-signature))
                  title: Wallets:Sign
                - type: object
                  properties:
                    name:
                      type: string
                    activityKind:
                      type: string
                      enum:
                        - Wallets:IncomingTransaction
                    rule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - ChainalysisTransactionScreening
                            configuration:
                              type: object
                              properties:
                                alerts:
                                  type: object
                                  properties:
                                    alertLevel:
                                      type: string
                                      enum:
                                        - LOW
                                        - MEDIUM
                                        - HIGH
                                        - SEVERE
                                    categoryIds:
                                      type: array
                                      items:
                                        type: integer
                                        exclusiveMinimum: 0
                                  required:
                                    - alertLevel
                                    - categoryIds
                                exposures:
                                  type: object
                                  properties:
                                    direct:
                                      type: object
                                      properties:
                                        categoryIds:
                                          type: array
                                          items:
                                            type: integer
                                            exclusiveMinimum: 0
                                      required:
                                        - categoryIds
                                  required:
                                    - direct
                                userIdTemplate:
                                  type: string
                                  minLength: 1
                                  maxLength: 50
                                  pattern: ^([a-zA-Z0-9_:-]|{wallet\.id}|{wallet\.externalId})+$
                                  default: dfns
                                  description: >-
                                    Value sent to Chainalysis as the "user ID".
                                    Used by Chainalysis for grouping transaction
                                    screenings. 
                                      
                                    This template can include variables,
                                    included in brackets. The following
                                    variables are currently
                                    supported:  `{wallet.id}` and
                                    `{wallet.externalId}`.

                                    As an example, if you set `userIdTemplate:
                                    "dfns:{wallet.id}_{wallet.externalId}"`,
                                    when your wallet receives a transaction that
                                    gets screened by a Chainalysis policy, the
                                    "user ID" sent to Chainalysis will be
                                    `dfns:wa-xxx_yyy` (`wa-xxx` being the wallet
                                    ID, and `yyy` being the wallet external ID).
                                fallbackBehaviours:
                                  type: object
                                  properties:
                                    skipUnscreenableTransaction:
                                      type: boolean
                                    skipUnsupportedNetwork:
                                      type: boolean
                                    skipUnsupportedAsset:
                                      type: boolean
                                    skipChainalysisFailure:
                                      type: boolean
                                  required:
                                    - skipUnscreenableTransaction
                                    - skipUnsupportedNetwork
                                    - skipUnsupportedAsset
                                    - skipChainalysisFailure
                              required:
                                - alerts
                                - exposures
                                - fallbackBehaviours
                              additionalProperties: false
                          required:
                            - kind
                            - configuration
                          additionalProperties: false
                          description: |
                            
                            <Info>
                            This rule can only be used once the Chainalysis integration is activated from the Dfns dashboard settings. (see more on [Chainalysis](https://docs.dfns.co/integrations/aml-kyt/chainalysis) integration page).
                            </Info>

                            This rule can be used on a policy of `activityKind` = `Wallets:IncomingTransaction`, and with the action kind `NoAction`. It's a rule based on Chainalysis KYT integration (Know-Your-Transaction). Upon an incoming transaction detectedby our indexers, we will [register the transfer with Chainalysis](https://docs.chainalysis.com/api/kyt/#registration-register-a-transfer), and fetch the results of the analysis (alerts & exposures detected). Based on the results, and the configuration of this rule, the policy will be triggered.

                            The shape of the rule is almost like the `ChainalysisTransactionPrescreening` rule, expect the the `address` property is not supported.

                            ```json
                            {
                              "rule": {
                                "kind": "ChainalysisTransactionPrescreening",
                                "configuration": {
                                  "alerts": {
                                    "alertLevel": "LOW",
                                    "categoryIds": []
                                  },
                                  "exposures": {
                                    "direct": {
                                      "categoryIds": []
                                    }
                                  },
                                  "fallbackBehaviours": {
                                    "skipUnscreenableTransaction": false,
                                    "skipUnsupportedNetwork": false,
                                    "skipUnsupportedAsset": false,
                                    "skipChainalysisFailure": false
                                  }
                                }
                              }
                            }
                            ```

                            **Configuration**

                            Please refer to the configuration for the `ChainalysisTransactionPrescreening` rule.
                          title: ChainalysisTransactionScreening
                    action:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - NoAction
                          required:
                            - kind
                          additionalProperties: false
                          description: "

                            \    This action kind means that nothing will happen
                            after policy rule evaluation. It's meant to be used
                            with policy rules
                            \"`ChainalysisTransactionPrescreening`\" or
                            \"`ChainalysisTransactionScreening`\". This action
                            is for when you just want the KYT analysis rule to
                            be run, and then if triggered, those result returned
                            in a `policy.triggered` [Webhook
                            Event](https://docs.dfns.co/api-reference/webhook-e\
                            vents).


                            ```json

                            {

                            \  \"action\": {

                            \    \"kind\": \"NoAction\"

                            \  }

                            }

                            ```

                            \    "
                          title: NoAction
                    filters:
                      type: object
                      properties:
                        walletId:
                          type: object
                          properties:
                            in:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                          required:
                            - in
                          additionalProperties: false
                        walletTags:
                          type: object
                          properties:
                            hasAny:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                            hasAll:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                          additionalProperties: false
                      additionalProperties: false
                  required:
                    - name
                    - activityKind
                    - rule
                    - action
                  additionalProperties: false
                  description: A "`Wallets:IncomingTransaction`" activity represents when our
                    indexers detected an incoming transaction into a wallet.
                    This activity kind has to be used with the rule kind
                    "`ChainalysisTransactionScreening`" (see more on
                    [Chainalysis](https://docs.dfns.co/integrations/aml-kyt/chainalysis)
                    integration page), and the action kind "`NoAction`", meaning
                    that no actual action will be taken as a result of the
                    Chainalysis screening, other than notifying you through a
                    webhook event if the policy is triggered. The reason for
                    that, is that the incoming transaction is already on-chain,
                    so the funds are already in the wallet, we cannot block that
                    transfer on chain.
                  title: Wallets:IncomingTransaction
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Policy"
  /v2/policy-approvals/{approvalId}/decisions:
    post:
      summary: Create Approval Decision
      tags:
        - Policies
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Approve or Reject an Approval request.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Policies:Approvals:Approve`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: approvalId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                value:
                  type: string
                  enum:
                    - Approved
                    - Denied
                reason:
                  type: string
                  maxLength: 1000
              required:
                - value
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PolicyApproval"
  /v2/policies:
    post:
      summary: Create Policy
      tags:
        - Policies
      security:
        - authenticationToken: []
          userActionSignature: []
      description: >-
        Setup a new Policy for your organization.
          
          Every policy requires a rule to be specified. Upon policy evaluation, the configuration specified in the rule will be used to determine whether the policy should trigger or not for a given activity.
          
          By exposing controls on permissions and policies, Dfns enables the specification of an admin quorum to approve sensitive actions which could change system governance.   Note Dfns does not expose a separate "admin quorum" concept like some of our competitors - we simply enable this use case as another configuration of the policy engine itself.   This was chosen to promote flexibility as not every customer will have the same requirements around creating and managing admin quorums.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Policies:Create`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    name:
                      type: string
                    activityKind:
                      type: string
                      enum:
                        - Registry:Addresses:Modify
                    rule:
                      type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - AlwaysTrigger
                        configuration:
                          type: object
                          properties: {}
                          additionalProperties: false
                      required:
                        - kind
                      additionalProperties: false
                      description: This rule will always be triggered, meaning that if this rule is
                        defined on a policy, the policy will always trigger the
                        policy action, regardless of the activity details.
                      title: AlwaysTrigger
                    action:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - RequestApproval
                            approvalGroups:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                  quorum:
                                    type: integer
                                    minimum: 1
                                  approvers:
                                    type: object
                                    properties:
                                      userId:
                                        type: object
                                        properties:
                                          in:
                                            type: array
                                            items:
                                              type: string
                                              minLength: 1
                                            minItems: 1
                                            maxItems: 100
                                        required:
                                          - in
                                        additionalProperties: false
                                    additionalProperties: false
                                  initiatorCanApprove:
                                    type: boolean
                                    description: Whether the initiator of the activity can participate in the
                                      approval.
                                  serviceAccountsCanApprove:
                                    type: boolean
                                    description: Whether service accounts can participate in the approval for this
                                      group.
                                required:
                                  - quorum
                                  - approvers
                                additionalProperties: false
                              minItems: 1
                            autoRejectTimeout:
                              type:
                                - integer
                                - "null"
                              minimum: 1
                          required:
                            - kind
                            - approvalGroups
                          additionalProperties: false
                          description: "

                            This action means that activity will first require
                            an Approval process to be completed before it
                            can  be executed (or be aborted if someone rejects
                            it during the approval process).


                            One or several groups of approvers need to be
                            specified. These groups define who is allowed to
                            approve / reject an activity.


                            The activity will only be executed if all approver
                            groups reach their \"quorum\" of approvals.
                            Otherwise, if any one user within any approver group
                            rejects, then the activity is aborted and the call
                            is not executed.


                            The example below shows a `RequestApproval` action,
                            configured with one approval group requiring 2
                            approvals amongst three specific users.


                            ```json

                            {

                            \  \"action\": {

                            \    \"kind\": \"RequestApproval\",

                            \    \"autoRejectTimeout\": 60, // minutes

                            \    \"approvalGroups\": [

                            \      {

                            \        \"name\": \"Admins\",

                            \        \"quorum\": 2, // only 2 approvers required
                            in that group\ 

                            \        \"approvers\": {

                            \          \"userId\": {

                            \            \"in\": [\"us-...1\", \"us-...2\",
                            \"us-...3\"],

                            \          }

                            \        }

                            \      }

                            \    ],


                            \  }

                            }

                            ```


                            **Don't lock yourself up**


                            By default, users cannot approve an activity they
                            initiated themselves, even if they are in an
                            approval group. To allow this, you must set
                            `initiatorCanApprove: true`.


                            *Example 1:* For any wallet transfer, a policy is
                            setup to require approval from **1 specific admin
                            user** (eg. the CEO). `initiatorCanApprove` was not
                            set to `true`. If the CEO himself initiates a
                            transfer, no-one can approve his transfer and it's
                            stuck.


                            *Example 2:* Company has only 3 users. A policy is
                            setup to require approval from **any 3 users**
                            (`quorum: 3`) for any modification of a policy.
                            `initiatorCanApprove` was not set to `true`. In this
                            case, they are locked, and the policy cannot be
                            modified: whoever requests a modification cannot
                            approve, and the policy is therefore always missing
                            one approver. To unlock, they would need to invite a
                            new user and give him the rights to approve as well.

                            \    "
                          title: RequestApproval
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Block
                          required:
                            - kind
                          additionalProperties: false
                          description: >
                            This action means that the activity will be blocked
                            if the policy is triggered.


                            ```json

                            {
                              "action": {
                                "kind": "Block"
                              }
                            }

                            ```
                          title: Block
                    filters:
                      type: object
                      properties: {}
                  required:
                    - name
                    - activityKind
                    - rule
                    - action
                  additionalProperties: false
                  description: ""
                  title: Registry:Addresses:Modify
                - type: object
                  properties:
                    name:
                      type: string
                    activityKind:
                      type: string
                      enum:
                        - Permissions:Assign
                    rule:
                      type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - AlwaysTrigger
                        configuration:
                          type: object
                          properties: {}
                          additionalProperties: false
                      required:
                        - kind
                      additionalProperties: false
                      description: This rule will always be triggered, meaning that if this rule is
                        defined on a policy, the policy will always trigger the
                        policy action, regardless of the activity details.
                      title: AlwaysTrigger
                    action:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - RequestApproval
                            approvalGroups:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                  quorum:
                                    type: integer
                                    minimum: 1
                                  approvers:
                                    type: object
                                    properties:
                                      userId:
                                        type: object
                                        properties:
                                          in:
                                            type: array
                                            items:
                                              type: string
                                              minLength: 1
                                            minItems: 1
                                            maxItems: 100
                                        required:
                                          - in
                                        additionalProperties: false
                                    additionalProperties: false
                                  initiatorCanApprove:
                                    type: boolean
                                    description: Whether the initiator of the activity can participate in the
                                      approval.
                                  serviceAccountsCanApprove:
                                    type: boolean
                                    description: Whether service accounts can participate in the approval for this
                                      group.
                                required:
                                  - quorum
                                  - approvers
                                additionalProperties: false
                              minItems: 1
                            autoRejectTimeout:
                              type:
                                - integer
                                - "null"
                              minimum: 1
                          required:
                            - kind
                            - approvalGroups
                          additionalProperties: false
                          description: "

                            This action means that activity will first require
                            an Approval process to be completed before it
                            can  be executed (or be aborted if someone rejects
                            it during the approval process).


                            One or several groups of approvers need to be
                            specified. These groups define who is allowed to
                            approve / reject an activity.


                            The activity will only be executed if all approver
                            groups reach their \"quorum\" of approvals.
                            Otherwise, if any one user within any approver group
                            rejects, then the activity is aborted and the call
                            is not executed.


                            The example below shows a `RequestApproval` action,
                            configured with one approval group requiring 2
                            approvals amongst three specific users.


                            ```json

                            {

                            \  \"action\": {

                            \    \"kind\": \"RequestApproval\",

                            \    \"autoRejectTimeout\": 60, // minutes

                            \    \"approvalGroups\": [

                            \      {

                            \        \"name\": \"Admins\",

                            \        \"quorum\": 2, // only 2 approvers required
                            in that group\ 

                            \        \"approvers\": {

                            \          \"userId\": {

                            \            \"in\": [\"us-...1\", \"us-...2\",
                            \"us-...3\"],

                            \          }

                            \        }

                            \      }

                            \    ],


                            \  }

                            }

                            ```


                            **Don't lock yourself up**


                            By default, users cannot approve an activity they
                            initiated themselves, even if they are in an
                            approval group. To allow this, you must set
                            `initiatorCanApprove: true`.


                            *Example 1:* For any wallet transfer, a policy is
                            setup to require approval from **1 specific admin
                            user** (eg. the CEO). `initiatorCanApprove` was not
                            set to `true`. If the CEO himself initiates a
                            transfer, no-one can approve his transfer and it's
                            stuck.


                            *Example 2:* Company has only 3 users. A policy is
                            setup to require approval from **any 3 users**
                            (`quorum: 3`) for any modification of a policy.
                            `initiatorCanApprove` was not set to `true`. In this
                            case, they are locked, and the policy cannot be
                            modified: whoever requests a modification cannot
                            approve, and the policy is therefore always missing
                            one approver. To unlock, they would need to invite a
                            new user and give him the rights to approve as well.

                            \    "
                          title: RequestApproval
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Block
                          required:
                            - kind
                          additionalProperties: false
                          description: >
                            This action means that the activity will be blocked
                            if the policy is triggered.


                            ```json

                            {
                              "action": {
                                "kind": "Block"
                              }
                            }

                            ```
                          title: Block
                    filters:
                      type: object
                      properties:
                        permissionId:
                          type: object
                          properties:
                            in:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                          required:
                            - in
                          additionalProperties: false
                      required:
                        - permissionId
                      additionalProperties: false
                  required:
                    - name
                    - activityKind
                    - rule
                    - action
                  additionalProperties: false
                  description: |-
                    A "`Permissions:Assign`" activity represents any activity which involves assigning a permission (or revoking it, aka "deleting a permission assignment"). These activities are Assignment change requests, created as a result of calling either:

                    * the endpoint [Assign Permission](https://docs.dfns.co/api-reference/permissions/assign-permission)
                    * the endpoint [Revoke Permission](https://docs.dfns.co/api-reference/permissions/revoke-permission)
                  title: Permissions:Assign
                - type: object
                  properties:
                    name:
                      type: string
                    activityKind:
                      type: string
                      enum:
                        - Permissions:Modify
                    rule:
                      type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - AlwaysTrigger
                        configuration:
                          type: object
                          properties: {}
                          additionalProperties: false
                      required:
                        - kind
                      additionalProperties: false
                      description: This rule will always be triggered, meaning that if this rule is
                        defined on a policy, the policy will always trigger the
                        policy action, regardless of the activity details.
                      title: AlwaysTrigger
                    action:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - RequestApproval
                            approvalGroups:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                  quorum:
                                    type: integer
                                    minimum: 1
                                  approvers:
                                    type: object
                                    properties:
                                      userId:
                                        type: object
                                        properties:
                                          in:
                                            type: array
                                            items:
                                              type: string
                                              minLength: 1
                                            minItems: 1
                                            maxItems: 100
                                        required:
                                          - in
                                        additionalProperties: false
                                    additionalProperties: false
                                  initiatorCanApprove:
                                    type: boolean
                                    description: Whether the initiator of the activity can participate in the
                                      approval.
                                  serviceAccountsCanApprove:
                                    type: boolean
                                    description: Whether service accounts can participate in the approval for this
                                      group.
                                required:
                                  - quorum
                                  - approvers
                                additionalProperties: false
                              minItems: 1
                            autoRejectTimeout:
                              type:
                                - integer
                                - "null"
                              minimum: 1
                          required:
                            - kind
                            - approvalGroups
                          additionalProperties: false
                          description: "

                            This action means that activity will first require
                            an Approval process to be completed before it
                            can  be executed (or be aborted if someone rejects
                            it during the approval process).


                            One or several groups of approvers need to be
                            specified. These groups define who is allowed to
                            approve / reject an activity.


                            The activity will only be executed if all approver
                            groups reach their \"quorum\" of approvals.
                            Otherwise, if any one user within any approver group
                            rejects, then the activity is aborted and the call
                            is not executed.


                            The example below shows a `RequestApproval` action,
                            configured with one approval group requiring 2
                            approvals amongst three specific users.


                            ```json

                            {

                            \  \"action\": {

                            \    \"kind\": \"RequestApproval\",

                            \    \"autoRejectTimeout\": 60, // minutes

                            \    \"approvalGroups\": [

                            \      {

                            \        \"name\": \"Admins\",

                            \        \"quorum\": 2, // only 2 approvers required
                            in that group\ 

                            \        \"approvers\": {

                            \          \"userId\": {

                            \            \"in\": [\"us-...1\", \"us-...2\",
                            \"us-...3\"],

                            \          }

                            \        }

                            \      }

                            \    ],


                            \  }

                            }

                            ```


                            **Don't lock yourself up**


                            By default, users cannot approve an activity they
                            initiated themselves, even if they are in an
                            approval group. To allow this, you must set
                            `initiatorCanApprove: true`.


                            *Example 1:* For any wallet transfer, a policy is
                            setup to require approval from **1 specific admin
                            user** (eg. the CEO). `initiatorCanApprove` was not
                            set to `true`. If the CEO himself initiates a
                            transfer, no-one can approve his transfer and it's
                            stuck.


                            *Example 2:* Company has only 3 users. A policy is
                            setup to require approval from **any 3 users**
                            (`quorum: 3`) for any modification of a policy.
                            `initiatorCanApprove` was not set to `true`. In this
                            case, they are locked, and the policy cannot be
                            modified: whoever requests a modification cannot
                            approve, and the policy is therefore always missing
                            one approver. To unlock, they would need to invite a
                            new user and give him the rights to approve as well.

                            \    "
                          title: RequestApproval
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Block
                          required:
                            - kind
                          additionalProperties: false
                          description: >
                            This action means that the activity will be blocked
                            if the policy is triggered.


                            ```json

                            {
                              "action": {
                                "kind": "Block"
                              }
                            }

                            ```
                          title: Block
                    filters:
                      type: object
                      properties:
                        permissionId:
                          type: object
                          properties:
                            in:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                          required:
                            - in
                          additionalProperties: false
                      required:
                        - permissionId
                      additionalProperties: false
                  required:
                    - name
                    - activityKind
                    - rule
                    - action
                  additionalProperties: false
                  description: |-
                    A "`Permissions:Modify`" activity represents any activity which involves updating or archiving a permission. These activities are Permission change requests, created as a result of calling either:

                    * the endpoint [Update Permission](https://docs.dfns.co/api-reference/permissions/update-permission)
                    * the endpoint [Delete Permission](https://docs.dfns.co/api-reference/permissions/delete-permission)
                  title: Permissions:Modify
                - type: object
                  properties:
                    name:
                      type: string
                    activityKind:
                      type: string
                      enum:
                        - Policies:Modify
                    rule:
                      type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - AlwaysTrigger
                        configuration:
                          type: object
                          properties: {}
                          additionalProperties: false
                      required:
                        - kind
                      additionalProperties: false
                      description: This rule will always be triggered, meaning that if this rule is
                        defined on a policy, the policy will always trigger the
                        policy action, regardless of the activity details.
                      title: AlwaysTrigger
                    action:
                      type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - RequestApproval
                        approvalGroups:
                          type: array
                          items:
                            type: object
                            properties:
                              name:
                                type: string
                              quorum:
                                type: integer
                                minimum: 1
                              approvers:
                                type: object
                                properties:
                                  userId:
                                    type: object
                                    properties:
                                      in:
                                        type: array
                                        items:
                                          type: string
                                          minLength: 1
                                        minItems: 1
                                        maxItems: 100
                                    required:
                                      - in
                                    additionalProperties: false
                                additionalProperties: false
                              initiatorCanApprove:
                                type: boolean
                                description: Whether the initiator of the activity can participate in the
                                  approval.
                              serviceAccountsCanApprove:
                                type: boolean
                                description: Whether service accounts can participate in the approval for this
                                  group.
                            required:
                              - quorum
                              - approvers
                            additionalProperties: false
                          minItems: 1
                        autoRejectTimeout:
                          type:
                            - integer
                            - "null"
                          minimum: 1
                      required:
                        - kind
                        - approvalGroups
                      additionalProperties: false
                      description: "

                        This action means that activity will first require an
                        Approval process to be completed before it can  be
                        executed (or be aborted if someone rejects it during the
                        approval process).


                        One or several groups of approvers need to be specified.
                        These groups define who is allowed to approve / reject
                        an activity.


                        The activity will only be executed if all approver
                        groups reach their \"quorum\" of approvals. Otherwise,
                        if any one user within any approver group rejects, then
                        the activity is aborted and the call is not executed.


                        The example below shows a `RequestApproval` action,
                        configured with one approval group requiring 2 approvals
                        amongst three specific users.


                        ```json

                        {

                        \  \"action\": {

                        \    \"kind\": \"RequestApproval\",

                        \    \"autoRejectTimeout\": 60, // minutes

                        \    \"approvalGroups\": [

                        \      {

                        \        \"name\": \"Admins\",

                        \        \"quorum\": 2, // only 2 approvers required in
                        that group\ 

                        \        \"approvers\": {

                        \          \"userId\": {

                        \            \"in\": [\"us-...1\", \"us-...2\",
                        \"us-...3\"],

                        \          }

                        \        }

                        \      }

                        \    ],


                        \  }

                        }

                        ```


                        **Don't lock yourself up**


                        By default, users cannot approve an activity they
                        initiated themselves, even if they are in an approval
                        group. To allow this, you must set `initiatorCanApprove:
                        true`.


                        *Example 1:* For any wallet transfer, a policy is setup
                        to require approval from **1 specific admin user** (eg.
                        the CEO). `initiatorCanApprove` was not set to `true`.
                        If the CEO himself initiates a transfer, no-one can
                        approve his transfer and it's stuck.


                        *Example 2:* Company has only 3 users. A policy is setup
                        to require approval from **any 3 users** (`quorum: 3`)
                        for any modification of a policy. `initiatorCanApprove`
                        was not set to `true`. In this case, they are locked,
                        and the policy cannot be modified: whoever requests a
                        modification cannot approve, and the policy is therefore
                        always missing one approver. To unlock, they would need
                        to invite a new user and give him the rights to approve
                        as well.

                        \    "
                      title: RequestApproval
                    filters:
                      type: object
                      properties:
                        policyId:
                          type: object
                          properties:
                            in:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                          required:
                            - in
                          additionalProperties: false
                      required:
                        - policyId
                      additionalProperties: false
                  required:
                    - name
                    - activityKind
                    - rule
                    - action
                  additionalProperties: false
                  description: |
                    A "`Policies:Modify`" activity represents any activity which involves updating or archiving a policy. These activities are Policy change requests, created as a result of calling either:

                    * the endpoint [Update Policy](https://docs.dfns.co/api-reference/policies/update-policy)
                    * the endpoint [Delete Policy](https://docs.dfns.co/api-reference/policies/delete-policy)
                  title: Policies:Modify
                - type: object
                  properties:
                    name:
                      type: string
                    activityKind:
                      type: string
                      enum:
                        - Registry:ContractSchemas:Modify
                    rule:
                      type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - AlwaysTrigger
                        configuration:
                          type: object
                          properties: {}
                          additionalProperties: false
                      required:
                        - kind
                      additionalProperties: false
                      description: This rule will always be triggered, meaning that if this rule is
                        defined on a policy, the policy will always trigger the
                        policy action, regardless of the activity details.
                      title: AlwaysTrigger
                    action:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - RequestApproval
                            approvalGroups:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                  quorum:
                                    type: integer
                                    minimum: 1
                                  approvers:
                                    type: object
                                    properties:
                                      userId:
                                        type: object
                                        properties:
                                          in:
                                            type: array
                                            items:
                                              type: string
                                              minLength: 1
                                            minItems: 1
                                            maxItems: 100
                                        required:
                                          - in
                                        additionalProperties: false
                                    additionalProperties: false
                                  initiatorCanApprove:
                                    type: boolean
                                    description: Whether the initiator of the activity can participate in the
                                      approval.
                                  serviceAccountsCanApprove:
                                    type: boolean
                                    description: Whether service accounts can participate in the approval for this
                                      group.
                                required:
                                  - quorum
                                  - approvers
                                additionalProperties: false
                              minItems: 1
                            autoRejectTimeout:
                              type:
                                - integer
                                - "null"
                              minimum: 1
                          required:
                            - kind
                            - approvalGroups
                          additionalProperties: false
                          description: "

                            This action means that activity will first require
                            an Approval process to be completed before it
                            can  be executed (or be aborted if someone rejects
                            it during the approval process).


                            One or several groups of approvers need to be
                            specified. These groups define who is allowed to
                            approve / reject an activity.


                            The activity will only be executed if all approver
                            groups reach their \"quorum\" of approvals.
                            Otherwise, if any one user within any approver group
                            rejects, then the activity is aborted and the call
                            is not executed.


                            The example below shows a `RequestApproval` action,
                            configured with one approval group requiring 2
                            approvals amongst three specific users.


                            ```json

                            {

                            \  \"action\": {

                            \    \"kind\": \"RequestApproval\",

                            \    \"autoRejectTimeout\": 60, // minutes

                            \    \"approvalGroups\": [

                            \      {

                            \        \"name\": \"Admins\",

                            \        \"quorum\": 2, // only 2 approvers required
                            in that group\ 

                            \        \"approvers\": {

                            \          \"userId\": {

                            \            \"in\": [\"us-...1\", \"us-...2\",
                            \"us-...3\"],

                            \          }

                            \        }

                            \      }

                            \    ],


                            \  }

                            }

                            ```


                            **Don't lock yourself up**


                            By default, users cannot approve an activity they
                            initiated themselves, even if they are in an
                            approval group. To allow this, you must set
                            `initiatorCanApprove: true`.


                            *Example 1:* For any wallet transfer, a policy is
                            setup to require approval from **1 specific admin
                            user** (eg. the CEO). `initiatorCanApprove` was not
                            set to `true`. If the CEO himself initiates a
                            transfer, no-one can approve his transfer and it's
                            stuck.


                            *Example 2:* Company has only 3 users. A policy is
                            setup to require approval from **any 3 users**
                            (`quorum: 3`) for any modification of a policy.
                            `initiatorCanApprove` was not set to `true`. In this
                            case, they are locked, and the policy cannot be
                            modified: whoever requests a modification cannot
                            approve, and the policy is therefore always missing
                            one approver. To unlock, they would need to invite a
                            new user and give him the rights to approve as well.

                            \    "
                          title: RequestApproval
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Block
                          required:
                            - kind
                          additionalProperties: false
                          description: >
                            This action means that the activity will be blocked
                            if the policy is triggered.


                            ```json

                            {
                              "action": {
                                "kind": "Block"
                              }
                            }

                            ```
                          title: Block
                    filters:
                      type: object
                      properties: {}
                  required:
                    - name
                    - activityKind
                    - rule
                    - action
                  additionalProperties: false
                  description: A "`Registry:ContractSchemas:Modify`" activity represents any
                    activity which modifies a Contract Schema registered for
                    execution in the Dfns Dashboard
                  title: Registry:ContractSchemas:Modify
                - type: object
                  properties:
                    name:
                      type: string
                    activityKind:
                      type: string
                      enum:
                        - Wallets:Sign
                    rule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - AlwaysTrigger
                            configuration:
                              type: object
                              properties: {}
                              additionalProperties: false
                          required:
                            - kind
                          additionalProperties: false
                          description: This rule will always be triggered, meaning that if this rule is
                            defined on a policy, the policy will always trigger
                            the policy action, regardless of the activity
                            details.
                          title: AlwaysTrigger
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - TransactionRecipientWhitelist
                            configuration:
                              type: object
                              properties:
                                addresses:
                                  type: array
                                  items:
                                    type: string
                                    minLength: 1
                                  description: Whitelisted recipient addresses
                              required:
                                - addresses
                              additionalProperties: false
                          required:
                            - kind
                            - configuration
                          additionalProperties: false
                          description: This rule will trigger if the destination address *is NOT
                            whitelisted*.
                          title: TransactionRecipientWhitelist
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - TransactionAmountLimit
                            configuration:
                              type: object
                              properties:
                                limit:
                                  type: number
                                  description: Amount limit in `currency`
                                currency:
                                  type: string
                                  enum: *a65
                                  description: Fiat currency, currently only `USD`
                              required:
                                - limit
                                - currency
                              additionalProperties: false
                          required:
                            - kind
                            - configuration
                          additionalProperties: false
                          description: 'This rule will trigger if the wallet activity detected is
                            transferring some value which amount is greater than
                            a given limit. Note: If the fiat amount of the
                            wallet activity cannot be evaluated for any reason
                            (eg. market prices are not available, or eg. the
                            amount cannot be inferred from a wallet signature
                            request, etc.), by default the rule will trigger the
                            policy (this is called "failing closed" and is
                            generally considered a security best practice).'
                          title: TransactionAmountLimit
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - TransactionAmountVelocity
                            configuration:
                              type: object
                              properties:
                                limit:
                                  type: number
                                  description: Amount limit in `currency`
                                currency:
                                  type: string
                                  enum: *a66
                                  description: Currency for the amount limit above
                                timeframe:
                                  type: integer
                                  minimum: 1
                                  maximum: 43200
                                  description: Time period in minutes. Minimum 1, Maximum 43,200.
                              required:
                                - limit
                                - currency
                                - timeframe
                              additionalProperties: false
                          required:
                            - kind
                            - configuration
                          additionalProperties: false
                          description: This rule will trigger if the cumulative amount transferred from a
                            given wallet within a given timeframe is greater
                            than a specified limit.  The aggregate amount
                            evaluated is based only on the wallet that triggered
                            the policy.
                          title: TransactionAmountVelocity
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - TransactionCountVelocity
                            configuration:
                              type: object
                              properties:
                                limit:
                                  type: number
                                  description: Count limit
                                timeframe:
                                  type: integer
                                  minimum: 1
                                  maximum: 43200
                                  description: Time period in minutes. Minimum 1, Maximum 43,200.
                              required:
                                - limit
                                - timeframe
                              additionalProperties: false
                          required:
                            - kind
                            - configuration
                          additionalProperties: false
                          description: This rule will trigger if the number of wallet activities for a
                            given wallet within a given timeframe, is greater
                            than a specified limit. The aggregate number of
                            transactions evaluated is based only on the wallet
                            that triggered the policy.
                          title: TransactionCountVelocity
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - ChainalysisTransactionPrescreening
                            configuration:
                              type: object
                              properties:
                                alerts:
                                  type: object
                                  properties:
                                    alertLevel:
                                      type: string
                                      enum:
                                        - LOW
                                        - MEDIUM
                                        - HIGH
                                        - SEVERE
                                    categoryIds:
                                      type: array
                                      items:
                                        type: integer
                                        exclusiveMinimum: 0
                                  required:
                                    - alertLevel
                                    - categoryIds
                                exposures:
                                  type: object
                                  properties:
                                    direct:
                                      type: object
                                      properties:
                                        categoryIds:
                                          type: array
                                          items:
                                            type: integer
                                            exclusiveMinimum: 0
                                      required:
                                        - categoryIds
                                  required:
                                    - direct
                                addresses:
                                  type: object
                                  properties:
                                    categoryIds:
                                      type: array
                                      items:
                                        type: integer
                                        exclusiveMinimum: 0
                                  required:
                                    - categoryIds
                                userIdTemplate:
                                  type: string
                                  minLength: 1
                                  maxLength: 50
                                  pattern: ^([a-zA-Z0-9_:-]|{wallet\.id}|{wallet\.externalId})+$
                                  default: dfns
                                  description: >-
                                    Value sent to Chainalysis as the "user ID".
                                    Used by Chainalysis for grouping transaction
                                    screenings. 
                                      
                                    This template can include variables,
                                    included in brackets. The following
                                    variables are currently
                                    supported:  `{wallet.id}` and
                                    `{wallet.externalId}`.

                                    As an example, if you set `userIdTemplate:
                                    "dfns:{wallet.id}_{wallet.externalId}"`,
                                    when your wallet receives a transaction that
                                    gets screened by a Chainalysis policy, the
                                    "user ID" sent to Chainalysis will be
                                    `dfns:wa-xxx_yyy` (`wa-xxx` being the wallet
                                    ID, and `yyy` being the wallet external ID).
                                fallbackBehaviours:
                                  type: object
                                  properties:
                                    skipUnscreenableTransaction:
                                      type: boolean
                                    skipUnsupportedNetwork:
                                      type: boolean
                                    skipUnsupportedAsset:
                                      type: boolean
                                    skipChainalysisFailure:
                                      type: boolean
                                  required:
                                    - skipUnscreenableTransaction
                                    - skipUnsupportedNetwork
                                    - skipUnsupportedAsset
                                    - skipChainalysisFailure
                              required:
                                - alerts
                                - exposures
                                - addresses
                                - fallbackBehaviours
                              additionalProperties: false
                          required:
                            - kind
                            - configuration
                          additionalProperties: false
                          description: |+
                            
                            <Info>
                            This rule can only be used once the Chainalysis integration is activated from the Dfns dashboard settings. (see more on [Chainalysis](https://docs.dfns.co/integrations/aml-kyt/chainalysis) integration page).
                            </Info>

                            It's a rule based on [Chainalysis](https://docs.dfns.co/integrations/aml-kyt/chainalysis) KYT integration (Know-Your-Transaction). Upon transfer attempt, we will first register the transfer with Chainalysis (as a ["withdrawal attempt"](https://docs.chainalysis.com/api/kyt/#registration-register-a-withdrawal-attempt)), and fetch the screening results (alerts, exposures, addresses detected). Based on the results, and the configuration of this rule, the policy will be triggered.

                            It's called "Pre"-screening, because the scanned transaction is not on chain yet, it's still a transaction attempt (before the transaction actually make it on chain).

                            ```json
                            {
                              "rule": {
                                "kind": "ChainalysisTransactionPrescreening",
                                "configuration": {
                                  "alerts": {
                                    "alertLevel": "LOW",
                                    "categoryIds": []
                                  },
                                  "exposures": {
                                    "direct": {
                                      "categoryIds": []
                                    }
                                  },
                                  "addresses": {
                                    "categoryIds": []
                                  },
                                  "fallbackBehaviours": {
                                    "skipUnscreenableTransaction": false,
                                    "skipUnsupportedNetwork": false,
                                    "skipUnsupportedAsset": false,
                                    "skipChainalysisFailure": false
                                  }
                                }
                              }
                            }
                            ```

                            **Configuration**

                            | Property | Type | Description |
                            | --- | --- | --- |
                            | `alerts`<br><br>`.alertLevel`* | `string` | Minimum alert level above which the rule should trigger, if any [alert is returned in Chainalysis results](https://docs.chainalysis.com/api/kyt/#withdrawal-attempts-get-alerts). Can be `LOW`, `MEDIUM`, `HIGH`, or `SEVERE` |
                            | `alerts`<br><br>`.categoryIds`* | list of integers | List of Chainalysis category IDs (see [here](https://docs.chainalysis.com/api/kyt/#categories)). If you leave this list empty, alerts of any category will trigger the rule. Otherwise, if you only want the rule to trigger on specific categories, you can specify some in the list. |
                            | `exposures`<br><br>`.direct`<br><br>`.categoryIds`* | list of integers | List of Chainalysis category IDs (see [here](https://docs.chainalysis.com/api/kyt/#categories)). If you leave this list empty, a [direct exposure](https://docs.chainalysis.com/api/kyt/#withdrawal-attempts-get-direct-exposure) of any category detected by chainalysis will trigger the rule. Otherwise, if you only want the rule to trigger on specific categories, you can specify some in the list. |
                            | `addresses`<br><br>`.categoryIds`* | list of integers | List of Chainalysis category IDs (see [here](https://docs.chainalysis.com/api/kyt/#categories)). If you leave this list empty, an [address](https://docs.chainalysis.com/api/kyt/#withdrawal-attempts-get-address-identifications) of any category identified by chainalysis will trigger the rule. Otherwise, if you only want the rule to trigger on specific categories, you can specify some in the list. |
                            | `fallbackBehaviours`<br><br>`.skipUnscreenableTransaction`* | boolean | Behaviour if the wallet activity is not screenable (eg. if it's a signature request of a hash). If true, a transaction which is "unscreenable" will just be skipped, and policy will not trigger |
                            | `fallbackBehaviours.skipUnsupportedNetwork`* | boolean | Behaviour if the wallet activity is on a network not supported by chainalysis, or not yet supported in the dfns-chainalysis integration. If true, an unsupported network will just be skipped, and policy will not trigger |
                            | `fallbackBehaviours.skipUnsupportedAsset`* | boolean | Behaviour if the wallet activity is with a asset not supported by chainalysis, or not yet supported in the dfns-chainalysis integration. If true, an unsupported asset will just be skipped, and policy will not trigger |
                            | `fallbackBehaviours.skipChainalysisFailure`* | boolean | Behaviour if any issue with Chainalysis calls (timeout, results took too long, rate limiting errors, any error). If true, will skip if any error happens |

                          title: ChainalysisTransactionPrescreening
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - GlobalLedgerTransactionPrescreening
                            configuration:
                              type: object
                              properties:
                                riskScoreThreshold:
                                  type: integer
                                  minimum: 0
                                  maximum: 100
                                  description: Risk score threshold (0-100). Policy triggers if
                                    address/transaction risk score >= threshold
                                fallbackBehaviours:
                                  type: object
                                  properties:
                                    skipUnscreenableTransaction:
                                      type: boolean
                                      description: skip all wallet requests that cannot be screened (eg. raw
                                        signatures)
                                    skipUnsupportedNetwork:
                                      type: boolean
                                      description: skip transfer requests to a network not supported yet in our
                                        GlobalLedger integration
                                    skipUnsupportedAsset:
                                      type: boolean
                                      description: skip transfer requests of an asset not supported by our
                                        GlobalLedger integration
                                    skipGlobalLedgerFailure:
                                      type: boolean
                                      description: skips any errors from GlobalLedger API request
                                  required:
                                    - skipUnscreenableTransaction
                                    - skipUnsupportedNetwork
                                    - skipUnsupportedAsset
                                    - skipGlobalLedgerFailure
                              required:
                                - riskScoreThreshold
                                - fallbackBehaviours
                              additionalProperties: false
                          required:
                            - kind
                            - configuration
                          additionalProperties: false
                          description: >-
                            This rule uses GlobalLedger KYT for pre-screening
                            outgoing transfers by checking the destination
                            address risk score.


                            Upon transfer attempt, we will query GlobalLedger's
                            address risk API, and check if the risk score
                            (0-100) is at or above the configured threshold, or
                            if any alerts show up. If so, the policy will be
                            triggered.


                            It's called "Pre"-screening, because the scanned
                            transaction is not on chain yet, it's still a
                            transaction attempt.
                          title: GlobalLedgerTransactionPrescreening
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - TravelRuleTransactionPrescreening
                            configuration:
                              type: object
                              properties:
                                vendor:
                                  type: string
                                  enum:
                                    - Notabene
                                autoTriggerTimeoutSeconds:
                                  type: integer
                                  minimum: 0
                                autoClearAfterDeliveredTimeoutSeconds:
                                  type: integer
                                  minimum: 0
                              required:
                                - vendor
                                - autoTriggerTimeoutSeconds
                              additionalProperties: false
                          required:
                            - kind
                            - configuration
                          additionalProperties: false
                          description: |-
                            This rule can only be used once the Notabene integration is activated from the Dfns dashboard settings (see more on [Notabene](https://docs.dfns.co/integrations/travel-rule/notabene) integration page).
                                
                                It's a rule based on [Notabene](https://docs.dfns.co/integrations/travel-rule/notabene) [TravelRule](https://docs.dfns.co/integrations/travel-rule) integration. It ***ONLY*** applies to Dfns [Transfer Asset](https://docs.dfns.co/api-reference/wallets/transfer-asset) Api Calls. It is NOT supported for Transfers initiated via the dashboard. Upon transfer attempt with an optional [TravelRule](https://docs.dfns.co/api-reference/wallets/transfer-asset#body-travel-rule) payload, we will call Notabene's APIs on your behalf to both confirm the validity of the travel rule message and submit it for processing. Dfns then waits for a response from the counterparty (for custodial transfers) or Notabene (for non-custodial transfers).

                            It's called "Pre"-screening, because the transaction is not on chain yet, it's still a transaction attempt (before the transaction actually make it on chain).
                          title: TravelRuleTransactionPrescreening
                    action:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - RequestApproval
                            approvalGroups:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                  quorum:
                                    type: integer
                                    minimum: 1
                                  approvers:
                                    type: object
                                    properties:
                                      userId:
                                        type: object
                                        properties:
                                          in:
                                            type: array
                                            items:
                                              type: string
                                              minLength: 1
                                            minItems: 1
                                            maxItems: 100
                                        required:
                                          - in
                                        additionalProperties: false
                                    additionalProperties: false
                                  initiatorCanApprove:
                                    type: boolean
                                    description: Whether the initiator of the activity can participate in the
                                      approval.
                                  serviceAccountsCanApprove:
                                    type: boolean
                                    description: Whether service accounts can participate in the approval for this
                                      group.
                                required:
                                  - quorum
                                  - approvers
                                additionalProperties: false
                              minItems: 1
                            autoRejectTimeout:
                              type:
                                - integer
                                - "null"
                              minimum: 1
                          required:
                            - kind
                            - approvalGroups
                          additionalProperties: false
                          description: "

                            This action means that activity will first require
                            an Approval process to be completed before it
                            can  be executed (or be aborted if someone rejects
                            it during the approval process).


                            One or several groups of approvers need to be
                            specified. These groups define who is allowed to
                            approve / reject an activity.


                            The activity will only be executed if all approver
                            groups reach their \"quorum\" of approvals.
                            Otherwise, if any one user within any approver group
                            rejects, then the activity is aborted and the call
                            is not executed.


                            The example below shows a `RequestApproval` action,
                            configured with one approval group requiring 2
                            approvals amongst three specific users.


                            ```json

                            {

                            \  \"action\": {

                            \    \"kind\": \"RequestApproval\",

                            \    \"autoRejectTimeout\": 60, // minutes

                            \    \"approvalGroups\": [

                            \      {

                            \        \"name\": \"Admins\",

                            \        \"quorum\": 2, // only 2 approvers required
                            in that group\ 

                            \        \"approvers\": {

                            \          \"userId\": {

                            \            \"in\": [\"us-...1\", \"us-...2\",
                            \"us-...3\"],

                            \          }

                            \        }

                            \      }

                            \    ],


                            \  }

                            }

                            ```


                            **Don't lock yourself up**


                            By default, users cannot approve an activity they
                            initiated themselves, even if they are in an
                            approval group. To allow this, you must set
                            `initiatorCanApprove: true`.


                            *Example 1:* For any wallet transfer, a policy is
                            setup to require approval from **1 specific admin
                            user** (eg. the CEO). `initiatorCanApprove` was not
                            set to `true`. If the CEO himself initiates a
                            transfer, no-one can approve his transfer and it's
                            stuck.


                            *Example 2:* Company has only 3 users. A policy is
                            setup to require approval from **any 3 users**
                            (`quorum: 3`) for any modification of a policy.
                            `initiatorCanApprove` was not set to `true`. In this
                            case, they are locked, and the policy cannot be
                            modified: whoever requests a modification cannot
                            approve, and the policy is therefore always missing
                            one approver. To unlock, they would need to invite a
                            new user and give him the rights to approve as well.

                            \    "
                          title: RequestApproval
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Block
                          required:
                            - kind
                          additionalProperties: false
                          description: >
                            This action means that the activity will be blocked
                            if the policy is triggered.


                            ```json

                            {
                              "action": {
                                "kind": "Block"
                              }
                            }

                            ```
                          title: Block
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - NoAction
                          required:
                            - kind
                          additionalProperties: false
                          description: "

                            \    This action kind means that nothing will happen
                            after policy rule evaluation. It's meant to be used
                            with policy rules
                            \"`ChainalysisTransactionPrescreening`\" or
                            \"`ChainalysisTransactionScreening`\". This action
                            is for when you just want the KYT analysis rule to
                            be run, and then if triggered, those result returned
                            in a `policy.triggered` [Webhook
                            Event](https://docs.dfns.co/api-reference/webhook-e\
                            vents).


                            ```json

                            {

                            \  \"action\": {

                            \    \"kind\": \"NoAction\"

                            \  }

                            }

                            ```

                            \    "
                          title: NoAction
                    filters:
                      type: object
                      properties:
                        walletId:
                          type: object
                          properties:
                            in:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                          required:
                            - in
                          additionalProperties: false
                        walletTags:
                          type: object
                          properties:
                            hasAny:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                            hasAll:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                          additionalProperties: false
                      additionalProperties: false
                  required:
                    - name
                    - activityKind
                    - rule
                    - action
                  additionalProperties: false
                  description: |
                    A "`Wallets:Sign`" activity represents any activity which involves signing with a wallet. Currently, in our API, these can be:

                    * a Transfer Request (created using the endpoint [Transfer Asset from Wallet](https://docs.dfns.co/api-reference/wallets/transfer-asset))
                    * a Transaction Request (created using the endpoint [Broadcast Transaction from Wallet](https://docs.dfns.co/api-reference/wallets/sign-and-broadcast-transaction))
                    * a Signature Request (created using the endpoint [Generate Signature from Wallet](https://docs.dfns.co/api-reference/keys/generate-signature))
                  title: Wallets:Sign
                - type: object
                  properties:
                    name:
                      type: string
                    activityKind:
                      type: string
                      enum:
                        - Wallets:IncomingTransaction
                    rule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - ChainalysisTransactionScreening
                            configuration:
                              type: object
                              properties:
                                alerts:
                                  type: object
                                  properties:
                                    alertLevel:
                                      type: string
                                      enum:
                                        - LOW
                                        - MEDIUM
                                        - HIGH
                                        - SEVERE
                                    categoryIds:
                                      type: array
                                      items:
                                        type: integer
                                        exclusiveMinimum: 0
                                  required:
                                    - alertLevel
                                    - categoryIds
                                exposures:
                                  type: object
                                  properties:
                                    direct:
                                      type: object
                                      properties:
                                        categoryIds:
                                          type: array
                                          items:
                                            type: integer
                                            exclusiveMinimum: 0
                                      required:
                                        - categoryIds
                                  required:
                                    - direct
                                userIdTemplate:
                                  type: string
                                  minLength: 1
                                  maxLength: 50
                                  pattern: ^([a-zA-Z0-9_:-]|{wallet\.id}|{wallet\.externalId})+$
                                  default: dfns
                                  description: >-
                                    Value sent to Chainalysis as the "user ID".
                                    Used by Chainalysis for grouping transaction
                                    screenings. 
                                      
                                    This template can include variables,
                                    included in brackets. The following
                                    variables are currently
                                    supported:  `{wallet.id}` and
                                    `{wallet.externalId}`.

                                    As an example, if you set `userIdTemplate:
                                    "dfns:{wallet.id}_{wallet.externalId}"`,
                                    when your wallet receives a transaction that
                                    gets screened by a Chainalysis policy, the
                                    "user ID" sent to Chainalysis will be
                                    `dfns:wa-xxx_yyy` (`wa-xxx` being the wallet
                                    ID, and `yyy` being the wallet external ID).
                                fallbackBehaviours:
                                  type: object
                                  properties:
                                    skipUnscreenableTransaction:
                                      type: boolean
                                    skipUnsupportedNetwork:
                                      type: boolean
                                    skipUnsupportedAsset:
                                      type: boolean
                                    skipChainalysisFailure:
                                      type: boolean
                                  required:
                                    - skipUnscreenableTransaction
                                    - skipUnsupportedNetwork
                                    - skipUnsupportedAsset
                                    - skipChainalysisFailure
                              required:
                                - alerts
                                - exposures
                                - fallbackBehaviours
                              additionalProperties: false
                          required:
                            - kind
                            - configuration
                          additionalProperties: false
                          description: |
                            
                            <Info>
                            This rule can only be used once the Chainalysis integration is activated from the Dfns dashboard settings. (see more on [Chainalysis](https://docs.dfns.co/integrations/aml-kyt/chainalysis) integration page).
                            </Info>

                            This rule can be used on a policy of `activityKind` = `Wallets:IncomingTransaction`, and with the action kind `NoAction`. It's a rule based on Chainalysis KYT integration (Know-Your-Transaction). Upon an incoming transaction detectedby our indexers, we will [register the transfer with Chainalysis](https://docs.chainalysis.com/api/kyt/#registration-register-a-transfer), and fetch the results of the analysis (alerts & exposures detected). Based on the results, and the configuration of this rule, the policy will be triggered.

                            The shape of the rule is almost like the `ChainalysisTransactionPrescreening` rule, expect the the `address` property is not supported.

                            ```json
                            {
                              "rule": {
                                "kind": "ChainalysisTransactionPrescreening",
                                "configuration": {
                                  "alerts": {
                                    "alertLevel": "LOW",
                                    "categoryIds": []
                                  },
                                  "exposures": {
                                    "direct": {
                                      "categoryIds": []
                                    }
                                  },
                                  "fallbackBehaviours": {
                                    "skipUnscreenableTransaction": false,
                                    "skipUnsupportedNetwork": false,
                                    "skipUnsupportedAsset": false,
                                    "skipChainalysisFailure": false
                                  }
                                }
                              }
                            }
                            ```

                            **Configuration**

                            Please refer to the configuration for the `ChainalysisTransactionPrescreening` rule.
                          title: ChainalysisTransactionScreening
                    action:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - NoAction
                          required:
                            - kind
                          additionalProperties: false
                          description: "

                            \    This action kind means that nothing will happen
                            after policy rule evaluation. It's meant to be used
                            with policy rules
                            \"`ChainalysisTransactionPrescreening`\" or
                            \"`ChainalysisTransactionScreening`\". This action
                            is for when you just want the KYT analysis rule to
                            be run, and then if triggered, those result returned
                            in a `policy.triggered` [Webhook
                            Event](https://docs.dfns.co/api-reference/webhook-e\
                            vents).


                            ```json

                            {

                            \  \"action\": {

                            \    \"kind\": \"NoAction\"

                            \  }

                            }

                            ```

                            \    "
                          title: NoAction
                    filters:
                      type: object
                      properties:
                        walletId:
                          type: object
                          properties:
                            in:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                          required:
                            - in
                          additionalProperties: false
                        walletTags:
                          type: object
                          properties:
                            hasAny:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                            hasAll:
                              type: array
                              items:
                                type: string
                                minLength: 1
                              minItems: 1
                              maxItems: 100
                          additionalProperties: false
                      additionalProperties: false
                  required:
                    - name
                    - activityKind
                    - rule
                    - action
                  additionalProperties: false
                  description: A "`Wallets:IncomingTransaction`" activity represents when our
                    indexers detected an incoming transaction into a wallet.
                    This activity kind has to be used with the rule kind
                    "`ChainalysisTransactionScreening`" (see more on
                    [Chainalysis](https://docs.dfns.co/integrations/aml-kyt/chainalysis)
                    integration page), and the action kind "`NoAction`", meaning
                    that no actual action will be taken as a result of the
                    Chainalysis screening, other than notifying you through a
                    webhook event if the policy is triggered. The reason for
                    that, is that the incoming transaction is already on-chain,
                    so the funds are already in the wallet, we cannot block that
                    transfer on chain.
                  title: Wallets:IncomingTransaction
            examples:
              Chainalysis Transaction Prescreening:
                value:
                  name: chainalysis prescreening policy
                  activityKind: Wallets:Sign
                  rule:
                    kind: ChainalysisTransactionPrescreening
                    configuration:
                      alerts:
                        alertLevel: LOW
                        categoryIds: []
                      exposures:
                        direct:
                          categoryIds: []
                      addresses:
                        alertLevel: LOW
                        categoryIds: []
                      fallbackBehaviours:
                        skipUnscreenableTransaction: false
                        skipUnsupportedNetwork: false
                        skipUnsupportedAsset: false
                        skipChainalysisFailure: false
                  action:
                    kind: Block
                  filters:
                    walletId:
                      in:
                        - wa-4sql3-a6ct4-8j2q8ih86d853rgg
                        - wa-j9btt-5s9o8-i3r8373ddg0usn3
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Policy"
    get:
      summary: List Policies
      tags:
        - Policies
      security:
        - authenticationToken: []
      description: Retrieve the list of policies on your organization.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Policies:Read`: Always required.
      parameters:
        - schema:
            type: string
            pattern: ^\d+$
          required: false
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
          required: false
          name: paginationToken
          in: query
        - schema:
            type: string
            enum:
              - Active
              - Archived
          required: false
          name: status
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      allOf:
                        - $ref: "#/components/schemas/Policy"
                        - type: object
                          properties:
                            pendingChangeRequest:
                              type: object
                              properties:
                                id:
                                  type: string
                                requester:
                                  $ref: "#/components/schemas/ChangeRequestRequester"
                                kind:
                                  type: string
                                  enum:
                                    - Policy
                                operationKind:
                                  type: string
                                  enum: *a64
                                status:
                                  type: string
                                  enum:
                                    - Applied
                                    - Failed
                                    - Pending
                                    - Rejected
                                entityId:
                                  type: string
                                dateCreated:
                                  type: string
                                  format: date-time
                                dateResolved:
                                  type: string
                                  format: date-time
                                approvalId:
                                  type: string
                                body:
                                  $ref: "#/components/schemas/Policy"
                              required:
                                - id
                                - requester
                                - kind
                                - operationKind
                                - status
                                - entityId
                                - dateCreated
                                - body
                              additionalProperties: false
                  nextPageToken:
                    type: string
                required:
                  - items
  /v2/policy-approvals/{approvalId}:
    get:
      summary: Get Approval
      tags:
        - Policies
      security:
        - authenticationToken: []
      description: Retrieve information about a specific approval request.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Policies:Approvals:Read`: Always required.
      parameters:
        - schema:
            type: string
          required: true
          name: approvalId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PolicyApproval"
  /v2/policy-approvals:
    get:
      summary: List Approvals
      tags:
        - Policies
      security:
        - authenticationToken: []
      description: Retrieve the list of pending approval requests.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Policies:Approvals:Read`: Always required.
      parameters:
        - schema:
            type: string
            pattern: ^\d+$
          required: false
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
          required: false
          name: paginationToken
          in: query
        - schema:
            type: string
            enum:
              - Pending
              - Approved
              - Denied
              - Expired
          required: false
          name: status
          in: query
        - schema:
            type: string
          required: false
          name: initiatorId
          in: query
        - schema:
            type: string
          required: false
          name: approverId
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/PolicyApproval"
                  nextPageToken:
                    type: string
                required:
                  - items
  /key-stores/{storeId}/clone/input:
    post:
      summary: Create Clone Input
      tags:
        - Signers
      security:
        - authenticationToken: []
          userActionSignature: []
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `KeyStores:Fleets:Clone`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: storeId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Clone
                hsmSourceSerial:
                  type: string
                  minLength: 1
                hsmTargetSerial:
                  type: string
                  minLength: 1
              required:
                - kind
                - hsmSourceSerial
                - hsmTargetSerial
      responses:
        "200":
          description: Success
          content:
            application/zip:
              schema:
                type: string
                description: Zip archive containing `input/input.json`, the clone fleet-input
                  document.
  /key-stores/{storeId}/genesis/input:
    post:
      summary: Create Genesis Input
      tags:
        - Signers
      security:
        - authenticationToken: []
          userActionSignature: []
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `KeyStores:Fleets:Create`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: storeId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                kind:
                  type: string
                  enum:
                    - Genesis
                numProvisioners:
                  type: integer
                  minimum: 2
                  maximum: 5
                numSecp256k1:
                  type: integer
                  minimum: 0
                  maximum: 2000
                numEd25519:
                  type: integer
                  minimum: 0
                  maximum: 2000
                hsmGenesisSerial:
                  type: string
                  minLength: 1
                hsmGenesisFirmwareVersion:
                  type: string
                  enum:
                    - "2.2"
                    - "2.4"
              required:
                - kind
                - numProvisioners
                - numSecp256k1
                - numEd25519
                - hsmGenesisSerial
      responses:
        "200":
          description: Success
          content:
            application/zip:
              schema:
                type: string
                description: Zip archive containing `input/input.json`, the genesis fleet-input
                  document.
  /key-stores/{storeId}/onchain-sign/input:
    post:
      summary: Create Onchain Sign Input
      tags:
        - Signers
      security:
        - authenticationToken: []
          userActionSignature: []
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `KeyStores:OnchainSignatures:Create`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: storeId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties: {}
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/zip:
              schema:
                type: string
                description: Zip archive containing `input/input.json` and
                  `input-annex/keys.jsonl` for the onchain-sign roundtrip.
  /key-stores/{storeId}/proof-of-control/input:
    post:
      summary: Create Proof Of Control Input
      tags:
        - Signers
      security:
        - authenticationToken: []
          userActionSignature: []
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `KeyStores:ProofOfControl:Create`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: storeId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                walletIds:
                  type: array
                  items:
                    type: string
                    minLength: 1
                  minItems: 1
                  maxItems: 100
              required:
                - walletIds
      responses:
        "200":
          description: Success
          content:
            application/zip:
              schema:
                type: string
                description: Zip archive containing `input/input.json` (proof of control spec)
                  and `input-annex/wrapped-keystore.jsonl` (one key per line).
  /key-stores:
    get:
      summary: List Key Stores
      tags:
        - Signers
      security:
        - authenticationToken: []
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `KeyStores:Read`: Always required.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        kind:
                          type: string
                          enum:
                            - Hsm
                            - Mpc
                            - OfflineSigner
                        name:
                          type: string
                        primary:
                          type: boolean
                      required:
                        - id
                        - kind
                        - primary
                required:
                  - items
  /signers:
    get:
      summary: List Signers
      tags:
        - Signers
      security:
        - authenticationToken: []
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Signers:ListSigners`: Always required.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  clusters:
                    type: array
                    items:
                      type: object
                      properties:
                        clusterId:
                          type: string
                        signers:
                          type: array
                          items:
                            type: object
                            properties:
                              signerId:
                                type: string
                              encryptionKey:
                                type: string
                            required:
                              - signerId
                              - encryptionKey
                      required:
                        - clusterId
                        - signers
                required:
                  - clusters
  /key-stores/{storeId}/clone/output:
    post:
      summary: Submit Clone Output
      tags:
        - Signers
      security:
        - authenticationToken: []
          userActionSignature: []
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `KeyStores:Fleets:Clone`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: storeId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                fileChecksum:
                  type: string
                  pattern: ^[a-f0-9]{64}$
                outputJson:
                  type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - fleet-output
                    version:
                      type: number
                      enum:
                        - 1
                    status:
                      type: string
                      enum:
                        - success
                    org_id:
                      type: string
                      minLength: 1
                    fleet_id:
                      type: string
                      minLength: 1
                    fleet_label:
                      type: string
                      minLength: 1
                    keystore_id:
                      type: string
                      minLength: 1
                    outputs:
                      type: object
                      additionalProperties:
                        type: object
                        properties:
                          success:
                            oneOf:
                              - type: object
                                properties:
                                  type:
                                    type: string
                                    enum:
                                      - genesis-registration
                                  ceremony_mode:
                                    type: string
                                    minLength: 1
                                  hsm_serial:
                                    type: string
                                    minLength: 1
                                  hsm_identity_key:
                                    type: string
                                    pattern: ^[a-f0-9]+$
                                  mac_serial:
                                    type: string
                                    minLength: 1
                                  mac_se_wrap_key_pub_key:
                                    type: string
                                    minLength: 1
                                  provisioners:
                                    type: object
                                    additionalProperties:
                                      type: string
                                  hsm_sealed: {}
                                  key_harvest:
                                    type: object
                                    properties:
                                      ed25519-start:
                                        type: integer
                                        minimum: 0
                                      ed25519:
                                        type: integer
                                        minimum: 0
                                      error:
                                        type:
                                          - string
                                          - "null"
                                      secp256k1-start:
                                        type: integer
                                        minimum: 0
                                      secp256k1:
                                        type: integer
                                        minimum: 0
                                    required:
                                      - ed25519-start
                                      - ed25519
                                      - error
                                      - secp256k1-start
                                      - secp256k1
                                required:
                                  - type
                                  - ceremony_mode
                                  - hsm_serial
                                  - hsm_identity_key
                                  - mac_serial
                                  - mac_se_wrap_key_pub_key
                                  - provisioners
                                  - key_harvest
                                title: Genesis Registration
                              - type: object
                                properties:
                                  type:
                                    type: string
                                    enum:
                                      - clone-registration
                                  ceremony_mode:
                                    type: string
                                    minLength: 1
                                  hsm_target_serial:
                                    type: string
                                    minLength: 1
                                  hsm_identity_key:
                                    type: string
                                    pattern: ^[a-f0-9]+$
                                  mac_target_serial:
                                    type: string
                                    minLength: 1
                                  mac_se_wrap_key_pub_key:
                                    type: string
                                    minLength: 1
                                  hsm_sealed: {}
                                required:
                                  - type
                                  - ceremony_mode
                                  - hsm_target_serial
                                  - hsm_identity_key
                                  - mac_target_serial
                                  - mac_se_wrap_key_pub_key
                                title: Clone Registration
                        required:
                          - success
                  required:
                    - type
                    - version
                    - status
                    - org_id
                    - fleet_id
                    - fleet_label
                    - keystore_id
                    - outputs
              required:
                - fileChecksum
                - outputJson
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
  /key-stores/{storeId}/genesis/output:
    post:
      summary: Submit Genesis Output
      tags:
        - Signers
      security:
        - authenticationToken: []
          userActionSignature: []
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `KeyStores:Fleets:Create`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: storeId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                fileChecksum:
                  type: string
                  pattern: ^[a-f0-9]{64}$
                outputJson:
                  type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - fleet-output
                    version:
                      type: number
                      enum:
                        - 1
                    status:
                      type: string
                      enum:
                        - success
                    org_id:
                      type: string
                      minLength: 1
                    fleet_id:
                      type: string
                      minLength: 1
                    fleet_label:
                      type: string
                      minLength: 1
                    keystore_id:
                      type: string
                      minLength: 1
                    outputs:
                      type: object
                      additionalProperties:
                        type: object
                        properties:
                          success:
                            oneOf:
                              - type: object
                                properties:
                                  type:
                                    type: string
                                    enum:
                                      - genesis-registration
                                  ceremony_mode:
                                    type: string
                                    minLength: 1
                                  hsm_serial:
                                    type: string
                                    minLength: 1
                                  hsm_identity_key:
                                    type: string
                                    pattern: ^[a-f0-9]+$
                                  mac_serial:
                                    type: string
                                    minLength: 1
                                  mac_se_wrap_key_pub_key:
                                    type: string
                                    minLength: 1
                                  provisioners:
                                    type: object
                                    additionalProperties:
                                      type: string
                                  hsm_sealed: {}
                                  key_harvest:
                                    type: object
                                    properties:
                                      ed25519-start:
                                        type: integer
                                        minimum: 0
                                      ed25519:
                                        type: integer
                                        minimum: 0
                                      error:
                                        type:
                                          - string
                                          - "null"
                                      secp256k1-start:
                                        type: integer
                                        minimum: 0
                                      secp256k1:
                                        type: integer
                                        minimum: 0
                                    required:
                                      - ed25519-start
                                      - ed25519
                                      - error
                                      - secp256k1-start
                                      - secp256k1
                                required:
                                  - type
                                  - ceremony_mode
                                  - hsm_serial
                                  - hsm_identity_key
                                  - mac_serial
                                  - mac_se_wrap_key_pub_key
                                  - provisioners
                                  - key_harvest
                                title: Genesis Registration
                              - type: object
                                properties:
                                  type:
                                    type: string
                                    enum:
                                      - clone-registration
                                  ceremony_mode:
                                    type: string
                                    minLength: 1
                                  hsm_target_serial:
                                    type: string
                                    minLength: 1
                                  hsm_identity_key:
                                    type: string
                                    pattern: ^[a-f0-9]+$
                                  mac_target_serial:
                                    type: string
                                    minLength: 1
                                  mac_se_wrap_key_pub_key:
                                    type: string
                                    minLength: 1
                                  hsm_sealed: {}
                                required:
                                  - type
                                  - ceremony_mode
                                  - hsm_target_serial
                                  - hsm_identity_key
                                  - mac_target_serial
                                  - mac_se_wrap_key_pub_key
                                title: Clone Registration
                        required:
                          - success
                  required:
                    - type
                    - version
                    - status
                    - org_id
                    - fleet_id
                    - fleet_label
                    - keystore_id
                    - outputs
              required:
                - fileChecksum
                - outputJson
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
  /key-stores/{storeId}/onchain-sign/output:
    post:
      summary: Submit Onchain Sign Output
      tags:
        - Signers
      security:
        - authenticationToken: []
          userActionSignature: []
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `KeyStores:OnchainSignatures:Create`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: storeId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                fileChecksum:
                  type: string
                  pattern: ^[a-f0-9]{64}$
                outputJson:
                  type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - keystore-output
                    version:
                      type: number
                      enum:
                        - 1
                    org_id:
                      type: string
                      minLength: 1
                    fleet_id:
                      type: string
                      minLength: 1
                    keystore_id:
                      type: string
                      minLength: 1
                    group_id:
                      type: string
                      minLength: 1
                    status:
                      type: string
                      enum: &a67
                        - success
                        - partial
                        - fail
                    outputs:
                      type: object
                      additionalProperties:
                        oneOf:
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - proof-of-control-v1
                              result:
                                anyOf:
                                  - type: object
                                    properties:
                                      success:
                                        type: object
                                        properties:
                                          signer_public_key:
                                            type: string
                                            pattern: ^[a-f0-9]+$
                                          prefix:
                                            type: string
                                            pattern: ^[a-f0-9]+$
                                          message:
                                            type: string
                                            minLength: 1
                                          exact_bytes_signed:
                                            type: string
                                            pattern: ^[a-f0-9]{64}$
                                          signature:
                                            type: string
                                            pattern: ^[a-f0-9]+$
                                        required:
                                          - signer_public_key
                                          - prefix
                                          - message
                                          - exact_bytes_signed
                                          - signature
                                    required:
                                      - success
                                    additionalProperties: false
                                  - type: object
                                    properties:
                                      fail:
                                        type: object
                                        properties:
                                          message:
                                            type: string
                                            minLength: 1
                                          code:
                                            type: string
                                            minLength: 1
                                        required:
                                          - message
                                          - code
                                    required:
                                      - fail
                                    additionalProperties: false
                            required:
                              - type
                              - result
                            title: Proof of Control Output
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - onchain-sign-v1
                              result:
                                anyOf:
                                  - type: object
                                    properties:
                                      success:
                                        type: object
                                        additionalProperties:
                                          type: object
                                          properties:
                                            signer_public_key:
                                              type: string
                                              pattern: ^[a-f0-9]+$
                                            exact_bytes_signed:
                                              type: string
                                              pattern: ^[a-f0-9]+$
                                            signature:
                                              type: string
                                              pattern: ^[a-f0-9]+$
                                          required:
                                            - signer_public_key
                                            - exact_bytes_signed
                                            - signature
                                    required:
                                      - success
                                    additionalProperties: false
                                  - type: object
                                    properties:
                                      fail:
                                        type: object
                                        properties:
                                          message:
                                            type: string
                                            minLength: 1
                                          code:
                                            type: string
                                            minLength: 1
                                        required:
                                          - message
                                          - code
                                    required:
                                      - fail
                                    additionalProperties: false
                            required:
                              - type
                              - result
                            title: Onchain Sign Output
                  required:
                    - type
                    - version
                    - org_id
                    - fleet_id
                    - keystore_id
                    - group_id
                    - status
                    - outputs
              required:
                - fileChecksum
                - outputJson
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                      - success
                      - partial
                required:
                  - status
  /key-stores/{storeId}/proof-of-control/output:
    post:
      summary: Submit Proof Of Control Output
      tags:
        - Signers
      security:
        - authenticationToken: []
          userActionSignature: []
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `KeyStores:ProofOfControl:Create`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: storeId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                fileChecksum:
                  type: string
                  pattern: ^[a-f0-9]{64}$
                outputJson:
                  type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - keystore-output
                    version:
                      type: number
                      enum:
                        - 1
                    org_id:
                      type: string
                      minLength: 1
                    fleet_id:
                      type: string
                      minLength: 1
                    keystore_id:
                      type: string
                      minLength: 1
                    group_id:
                      type: string
                      minLength: 1
                    status:
                      type: string
                      enum: *a67
                    outputs:
                      type: object
                      additionalProperties:
                        oneOf:
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - proof-of-control-v1
                              result:
                                anyOf:
                                  - type: object
                                    properties:
                                      success:
                                        type: object
                                        properties:
                                          signer_public_key:
                                            type: string
                                            pattern: ^[a-f0-9]+$
                                          prefix:
                                            type: string
                                            pattern: ^[a-f0-9]+$
                                          message:
                                            type: string
                                            minLength: 1
                                          exact_bytes_signed:
                                            type: string
                                            pattern: ^[a-f0-9]{64}$
                                          signature:
                                            type: string
                                            pattern: ^[a-f0-9]+$
                                        required:
                                          - signer_public_key
                                          - prefix
                                          - message
                                          - exact_bytes_signed
                                          - signature
                                    required:
                                      - success
                                    additionalProperties: false
                                  - type: object
                                    properties:
                                      fail:
                                        type: object
                                        properties:
                                          message:
                                            type: string
                                            minLength: 1
                                          code:
                                            type: string
                                            minLength: 1
                                        required:
                                          - message
                                          - code
                                    required:
                                      - fail
                                    additionalProperties: false
                            required:
                              - type
                              - result
                            title: Proof of Control Output
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - onchain-sign-v1
                              result:
                                anyOf:
                                  - type: object
                                    properties:
                                      success:
                                        type: object
                                        additionalProperties:
                                          type: object
                                          properties:
                                            signer_public_key:
                                              type: string
                                              pattern: ^[a-f0-9]+$
                                            exact_bytes_signed:
                                              type: string
                                              pattern: ^[a-f0-9]+$
                                            signature:
                                              type: string
                                              pattern: ^[a-f0-9]+$
                                          required:
                                            - signer_public_key
                                            - exact_bytes_signed
                                            - signature
                                    required:
                                      - success
                                    additionalProperties: false
                                  - type: object
                                    properties:
                                      fail:
                                        type: object
                                        properties:
                                          message:
                                            type: string
                                            minLength: 1
                                          code:
                                            type: string
                                            minLength: 1
                                        required:
                                          - message
                                          - code
                                    required:
                                      - fail
                                    additionalProperties: false
                            required:
                              - type
                              - result
                            title: Onchain Sign Output
                  required:
                    - type
                    - version
                    - org_id
                    - fleet_id
                    - keystore_id
                    - group_id
                    - status
                    - outputs
              required:
                - fileChecksum
                - outputJson
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                      - success
                      - partial
                required:
                  - status
  /staking/stakes:
    post:
      summary: Create Stake
      tags:
        - Staking
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Create a new stake.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Stakes:Create`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - oneOf:
                    - type: object
                      properties:
                        protocol:
                          type: string
                          enum:
                            - Ethereum
                        walletId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: Id of the Dfns wallet making the deposit.
                          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                        provider:
                          type: string
                          enum:
                            - Figment
                          description: Staking Provider
                        amount:
                          type: string
                          pattern: ^\d+$
                          description: Transaction amount denominated in min units
                      required:
                        - protocol
                        - walletId
                        - provider
                        - amount
                      title: Ethereum
                    - type: object
                      properties:
                        protocol:
                          type: string
                          enum:
                            - Iota
                        walletId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: Id of the Dfns wallet making the deposit.
                          example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                        validator:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{64}$
                        amount:
                          type: string
                          pattern: ^\d+$
                          description: Transaction amount denominated in min units
                        lockedIotas:
                          type: array
                          items:
                            type: string
                            pattern: ^0x[0-9a-fA-F]{64}$
                          minItems: 1
                      required:
                        - protocol
                        - walletId
                        - validator
                        - amount
                      title: Iota
                - type: object
                  properties:
                    externalId:
                      type: string
            examples:
              Ethereum:
                value:
                  externalId: ext-123
                  walletId: wa-4g991-s29to-9hrq4nbuto6ih33b
                  protocol: Ethereum
                  provider: Figment
                  amount: "32000000000000000000"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/Stake"
                  - type: object
                    properties:
                      actions:
                        type: array
                        items:
                          $ref: "#/components/schemas/StakeAction"
                    required:
                      - actions
    get:
      summary: List Stakes
      tags:
        - Staking
      security:
        - authenticationToken: []
      description: Retrieve the list of stakes.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Stakes:Read`: Always required.
      parameters:
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/Stake"
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                required:
                  - items
  /staking/stakes/{stakeId}/actions:
    post:
      summary: Create Stake Action
      tags:
        - Staking
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Create a new action for an existing stake.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Stakes:Update`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^stk-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          required: true
          name: stakeId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - anyOf:
                    - oneOf:
                        - type: object
                          properties:
                            protocol:
                              type: string
                              enum:
                                - Iota
                            kind:
                              type: string
                              enum:
                                - Withdraw
                            amount:
                              type: string
                              pattern: ^\d+$
                          required:
                            - protocol
                            - kind
                            - amount
                          title: IOTA Withdrawal
                        - type: object
                          properties:
                            protocol:
                              type: string
                              enum:
                                - Iota
                            kind:
                              type: string
                              enum:
                                - Deposit
                            amount:
                              type: string
                              pattern: ^\d+$
                            lockedIotas:
                              type: array
                              items:
                                type: string
                                pattern: ^0x[0-9a-fA-F]{64}$
                          required:
                            - protocol
                            - kind
                            - amount
                          title: IOTA Deposit
                    - type: object
                      properties:
                        protocol:
                          type: string
                          enum:
                            - Ethereum
                        kind:
                          type: string
                          enum:
                            - Withdraw
                      required:
                        - protocol
                        - kind
                      title: Ethereum Withdrawal
                - type: object
                  properties:
                    externalId:
                      type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/Stake"
                  - type: object
                    properties:
                      actions:
                        type: array
                        items:
                          $ref: "#/components/schemas/StakeAction"
                    required:
                      - actions
    get:
      summary: List Stake Actions
      tags:
        - Staking
      security:
        - authenticationToken: []
      description: Retrieve the list of actions for a specific stake.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Stakes:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^stk-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          required: true
          name: stakeId
          in: path
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/StakeAction"
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                required:
                  - items
  /staking/stakes/{stakeId}:
    get:
      summary: Get Stakes
      tags:
        - Staking
      security:
        - authenticationToken: []
      description: Retrieve the details of a specific stake.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Stakes:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^stk-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          required: true
          name: stakeId
          in: path
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/Stake"
                  - type: object
                    properties:
                      actions:
                        type: array
                        items:
                          $ref: "#/components/schemas/StakeAction"
                    required:
                      - actions
  /staking/stakes/{stakeId}/rewards:
    get:
      summary: Get Stake Rewards
      tags:
        - Staking
      security:
        - authenticationToken: []
      description: Retrieves the rewards linked to a specific stake.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Stakes:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^stk-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          required: true
          name: stakeId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  symbol:
                    type: string
                  balance:
                    type: string
                required:
                  - symbol
                  - balance
  /swaps:
    post:
      summary: Create Swap
      tags:
        - Swaps
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Create a new swap based on an existing quote. This is the second
        step of the [Swap
        flow](https://docs.dfns.co/api-reference/swaps#flow-overview).
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Swaps:Create`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                quoteId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^swapQuote-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Quote to use for this swap.
                  example: swapQuote-7n9p0-cth75-6l74n2sj7u73ooeq
                reference:
                  type: string
                  description: An optional reference for this Swap.
                provider:
                  type: string
                  enum:
                    - UniswapX
                    - UniswapClassic
                  description: Provided for this swap. Used for attesting that the swap is being
                    created with the same parameters as the quote.
                walletId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the Dfns wallet spending the sourceAsset. Used for attesting
                    that the swap is being created with the same parameters as
                    the quote.
                  example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                targetWalletId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the Dfns wallet receiving the target asset. Currently this
                    value must be the same as the `walletId`. Used for attesting
                    that the swap is being created with the same parameters as
                    the quote.
                  example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                slippageBps:
                  type: number
                  description: "The slippage tolerance for this trade in [basis
                    point](https://en.wikipedia.org/wiki/Basis_point) (BPS).
                    Slippage tolerance defines the maximum price difference you
                    are willing to accept during a trade from the estimated
                    quote, ensuring you still receive at least a minimum number
                    of tokens if the price shifts. One basis point equals
                    one-hundredth of a percentage point, or 0.01%. Used for
                    attesting that the swap is being created with the same
                    parameters as the quote. "
                sourceAsset:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Native
                        amount:
                          type: string
                          pattern: ^\d+$
                      required:
                        - kind
                        - amount
                      title: Native Asset
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Erc20
                        contract:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{40}$
                        amount:
                          type: string
                          pattern: ^\d+$
                      required:
                        - kind
                        - contract
                        - amount
                      title: EVM Fungible Token (ERC-20)
                  description: The source asset that will be spent on the Swap transaction. Used
                    for attesting that the swap is being created with the same
                    parameters as the quote.
                targetAsset:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Native
                        amount:
                          type: string
                          pattern: ^\d+$
                      required:
                        - kind
                        - amount
                      title: Native Asset
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Erc20
                        contract:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{40}$
                        amount:
                          type: string
                          pattern: ^\d+$
                      required:
                        - kind
                        - contract
                        - amount
                      title: EVM Fungible Token (ERC-20)
                  description: The target asset that will be received with the Swap transaction.
                    Used for attesting that the swap is being created with the
                    same parameters as the quote.
              required:
                - quoteId
                - provider
                - walletId
                - slippageBps
                - sourceAsset
                - targetAsset
            examples:
              confirmingAnExistingQuote:
                value:
                  quoteId: swapQuote-3hgv4-q8tbf-8v2ajmrbmg6m4i9t
                  reference: optional reference for record keeping
                  provider: UniswapClassic
                  walletId: wa-123456-12345678
                  targetWalletId: wa-123456-87654321
                  slippageBps: 50
                  sourceAsset:
                    kind: Native
                    amount: "1000000000000000000"
                  targetAsset:
                    kind: Erc20
                    contract: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
                    amount: "5600000"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Swap"
    get:
      summary: List Swaps
      tags:
        - Swaps
      security:
        - authenticationToken: []
      description: List all swaps with pagination
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Swaps:Read`: Always required.
      parameters:
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/Swap"
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                required:
                  - items
  /swaps/quotes:
    post:
      summary: Request Swap Quote
      tags:
        - Swaps
      security:
        - authenticationToken: []
      description: Request a quote from a given provider for swapping assets. This is
        the first step of the [Swap
        flow](https://docs.dfns.co/api-reference/swaps#flow-overview).
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          No permission required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                provider:
                  type: string
                  enum:
                    - UniswapX
                    - UniswapClassic
                  description: Swap provider.
                walletId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the Dfns wallet spending the sourceAsset.
                  example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                targetWalletId:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: Id of the Dfns wallet receiving the target asset. Currently this
                    value must be the same as the `walletId`.
                  example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                sourceAsset:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Native
                        amount:
                          type: string
                          pattern: ^\d+$
                      required:
                        - kind
                        - amount
                      title: Native Asset
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Erc20
                        contract:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{40}$
                        amount:
                          type: string
                          pattern: ^\d+$
                      required:
                        - kind
                        - contract
                        - amount
                      title: EVM Fungible Token (ERC-20)
                  description: The source asset that will be spent on the Swap transaction,
                    following the same stucture as the [transfer
                    API](https://docs.dfns.co/api-reference/wallets/transfer-asset).
                targetAsset:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Native
                      required:
                        - kind
                      title: Native Asset
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - Erc20
                        contract:
                          type: string
                          pattern: ^0x[0-9a-fA-F]{40}$
                      required:
                        - kind
                        - contract
                      title: EVM Fungible Token (ERC-20)
                  description: The target asset that will be received with the Swap transaction,
                    follows the same structure as sourceAsset, but doesn't
                    include the amount.
                slippageBps:
                  type: number
                  description: The slippage tolerance for this trade in [basis
                    point](https://en.wikipedia.org/wiki/Basis_point) (BPS).
                    Slippage tolerance defines the maximum price difference
                    you're willing to accept during a trade from the estimated
                    quote, ensuring you still receive at least a minimum number
                    of tokens if the price shifts. One basis point equals
                    one-hundredth of a percentage point, or 0.01%.
              required:
                - provider
                - walletId
                - sourceAsset
                - targetAsset
                - slippageBps
            examples:
              UniswapClassic:
                value:
                  walletId: wa-3l3cj-l8mq7-8q78f9nopq7f1qjv
                  targetWalletId: wa-3l3cj-l8mq7-8q78f9nopq7f1qjv
                  provider: UniswapClassic
                  sourceAsset:
                    kind: Native
                    amount: "1000000000000000000"
                  targetAsset:
                    kind: Erc20
                    contract: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
                  slippageBps: 50
              UniswapX:
                value:
                  walletId: wa-3l3cj-l8mq7-8q78f9nopq7f1qjv
                  targetWalletId: wa-3l3cj-l8mq7-8q78f9nopq7f1qjv
                  provider: UniswapX
                  sourceAsset:
                    kind: Erc20
                    contract: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
                    amount: "1000000000000000000"
                  targetAsset:
                    kind: Native
                    amount: "1000000000000000000"
                  slippageBps: 50
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SwapQuote"
  /swaps/{swapId}:
    get:
      summary: Get Swap
      tags:
        - Swaps
      security:
        - authenticationToken: []
      description: Get details of a specific swap by its ID
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Swaps:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Id of the swap for which we want to get details.
          required: true
          description: Id of the swap for which we want to get details.
          name: swapId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Swap"
  /swaps/quotes/{quoteId}:
    get:
      summary: Get Swap Quote
      tags:
        - Swaps
      security:
        - authenticationToken: []
      description: Get details of a specific swap quote by its ID
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          No permission required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: The ID of the Swap Quote.
          required: true
          description: The ID of the Swap Quote.
          name: quoteId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SwapQuote"
  /wallets/{walletId}/transactions/{transactionId}/abort:
    put:
      summary: Abort Transaction
      tags:
        - Wallets
      security:
        - authenticationToken: []
          userActionSignature: []
      description: >-
        Aborts a transaction that is currently in 'Executing' status and has not
        yet been signed. Sets the transaction status to 'Failed' and removes it
        from the retry queue.

          This is useful when a transaction is stuck in the execution pipeline (e.g., during construct or sign phase) and you want to abort it without waiting for it to fail on its own.

          Unlike cancel, which creates a replacement on-chain transaction, abort simply marks the transaction as failed without any blockchain interaction.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Transactions:Abort`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet id.
          required: true
          description: Wallet id.
          name: walletId
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Transaction id.
          required: true
          description: Transaction id.
          name: transactionId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionRequest"
  /wallets/{walletId}/transfers/{transferId}/abort:
    put:
      summary: Abort Transfer
      tags:
        - Wallets
      security:
        - authenticationToken: []
          userActionSignature: []
      description: >-
        Aborts a transfer that is currently in 'Executing' status and has not
        yet been signed. Sets the transfer status to 'Failed' and removes it
        from the retry queue.

          This is useful when a transfer is stuck in the execution pipeline (e.g., during construct or sign phase) and you want to abort it without waiting for it to fail on its own.

          Unlike cancel, which creates a replacement on-chain transaction, abort simply marks the transfer as failed without any blockchain interaction.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Transfers:Abort`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet id.
          required: true
          description: Wallet id.
          name: walletId
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Transfer id.
          required: true
          description: Transfer id.
          name: transferId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransferRequest"
  /wallets/{walletId}/activate:
    post:
      summary: Activate Wallet
      tags:
        - Wallets
      security:
        - authenticationToken: []
          userActionSignature: []
      description: >
        Activates a wallet by deploying the account contract on-chain, making it
        ready for transactions.

            This operation is required for wallets on networks where you need to explicitly activate your account on-chain
            before it can be used for transactions.

            - **Starknet**: Deploys the account contract using the wallet's public key to initialize the account on the blockchain. No additional parameters required.
            - **Concordium**: Deploys the account using credential deployment information and cryptographic randomness returned by the IDApp.
            - **Canton**: Registers the wallet on a validator. You must specify the `validatorId` to activate the wallet. Before activation, the wallet cannot be used and its address will not have a prefix.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Create`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet id.
          required: true
          description: Wallet id.
          name: walletId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
                - type: object
                  properties: {}
                  additionalProperties: false
                  description: "Starknet: No parameters required."
                - type: object
                  properties:
                    expiry:
                      type: number
                      description: Expiry timestamp of the Credential Deployment
                    unsignedCdiStr:
                      type: string
                      description: Unsigned Credential Deployment to sign
                  required:
                    - expiry
                    - unsignedCdiStr
                  description: "The full credential deployment request object returned by the
                    Concordium IdApp.

                    \    Please see the example in dfns-sdk-ts on how to
                    retrieve the CredentialDeploymentTx and activate a
                    Concordium wallet.

                    \    (https://github.com/dfns/dfns-sdk-ts/tree/m/examples/l\
                    ibs/concordium)

                    \    "
                - type: object
                  properties:
                    validatorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^cv-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the validator on which the wallet is created for Canton
                        networks
                      example: cv-7jeof-m584r-p35ucm37ko3cqgts
                  required:
                    - validatorId
                  additionalProperties: false
            examples:
              Starknet Activation:
                value: {}
              Concordium Activation:
                value:
                  expiry: 1698768000
                  unsignedCdiStr: '{"proofs":{"challenge":"...","commitments":"..."},"ipIdentity":0,"credentialPublicKeys":{"threshold":1,"keys":{"0":{"schemeId":"Ed25519","verifyKey":"..."}}},"policy":{"validTo":"202412","createdAt":"202410","revealedAttributes":{}},"credId":"...","revocationThreshold":1,"arData":{"0":{"encIdCredPubShare":"..."}}}'
              Canton Activation:
                value:
                  validatorId: cv-12o3k-t44tq-9ecb13hivsksiafg
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionRequest"
  /wallets/{walletId}/transactions:
    post:
      summary: Sign and Broadcast Transaction
      tags:
        - Wallets
      security:
        - authenticationToken: []
          userActionSignature: []
      description: |-
        Sign & Broadcast transaction enables communication with any arbitrary smart contract of the target blockchain. You can construct a transaction that performs a complex task and this endpoint will sign the transaction, add the signature and broadcast it to chain. It can be used to call smart contract functions like mint tokens and even deploy new smart contracts.

        | Status      | Definition                                                                                                                                      |
        |-------------|-------------------------------------------------------------------------------------------------------------------------------------------------|
        | Pending     | The request is pending approval due to a policy applied to the wallet.                                                                          |
        | Executing   | The request is approved and is in the process of being executed. note this status is only set for a short time between pending and broadcasted. |
        | Broadcasted | The transaction has been successfully written to the mempool.                                                                                   |
        | Confirmed   | The transaction has been confirmed on-chain by our indexing pipeline.                                                                           |
        | Failed      | Indicates either a system failure to complete the request or the transaction failed on chain.                                                   |
        | Rejected    | The request has been rejected by a policy approval action.                                                                                      |


          <Info>
          for reading from a "view" function on EVM chains, please use [Read Contract](https://docs.dfns.co/api-reference/networks/read-contract) endpoint.
          </Info>
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Transactions:Create`: Always required   
          `FeeSponsors:Use`: Required if `feeSponsorId` is specified.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet id.
          required: true
          description: Wallet id.
          name: walletId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Transaction
                    transaction:
                      anyOf:
                        - type: string
                          pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                        - type: object
                          properties: {}
                      description: The unsigned hex encoded transaction or JSON transactions for
                        compatible networks.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - transaction
                  additionalProperties: false
                  description: |
                    Signs an unsigned transaction and broadcasts it to chain.
                    For EVM transactions, you may use JSON objects:

                    | Field                | Description                                                                                                                                                                                                                         | Type - Optional              |
                    |----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------|
                    | type                 | Ethereum transaction type. 0 for legacy transaction; 2 for EIP-1559 transaction; 4 for EIP-7702 transaction. Default is 2 if undefined.                                                                                             | Integer (optional)           |
                    | to                   | The destination address or target contract. Leave undefined when the transaction is a contract deployment.                                                                                                                          | String (optional)            |
                    | value                | The amount of native tokens to transfer in minimum denomination.                                                                                                                                                                    | String (optional)            |
                    | data                 | ABI encoded function call data in hex format. Can also be the encoded smart contract data when the transaction is a contract deployment.                                                                                            | String (optional)            |
                    | nonce                | The transaction number to guarantee idempotency. If omitted, it will be provided automatically. Note the same nonce can be submitted multiple times with a higher maxFeePerGas to "overwrite" existing transactions in the mempool. | Integer or String (optional) |
                    | gasLimit             | The maximum amount of gas that can be spent for executing the transaction. If omitted, it will be calculated automatically.                                                                                                         | String (optional)            |
                    | gasPrice             | The amount of per unit gas. Only valid for a type 0 legacy transaction. If omitted, it will be calculated automatically.                                                                                                            | String (optional)            |
                    | maxFeePerGas         | The maximum amount of per unit gas willing to be paid for the transaction. Valid for type 2 and type 4 transactions. If omitted, it will be calculated automatically.                                                               | String (optional)            |
                    | maxPriorityFeePerGas | The maximum amount of per unit gas to be included as a tip to the validator. Valid for type 2 and type 4 transactions. If omitted, it will be calculated automatically.                                                             | String (optional)            |
                    | authorizationList    | A list that indicates what code the signer of each authorization desires to execute in the context of their EOA. Only valid for type 4 transaction.                                                                                 | Authorization (optional)     |

                    For Starknet transactions, you may use invocation request objects (https://github.com/starkware-libs/starknet-specs/blob/v0.8.1/api/starknet_api_openrpc.json#L2621):

                    | Field                         | Description                                                                                         | Type - Optional                  |
                    |-------------------------------|-----------------------------------------------------------------------------------------------------|----------------------------------|
                    | calldata                      | **Array** of encoded function call parameters                                                       | **Array of Strings** (required)  |
                    | nonce                         | Transaction nonce in hex format                                                                     | String (required)                |
                    | version                       | Transaction version in hex format. Typically "0x3" for current transactions                         | String (required)                |
                    | resourceBounds                | Gas bounds for L1, L2, and L1 data gas                                                              | Object (required)                |
                    | ↳ resourceBounds.l1Gas        | L1 gas configuration with maxAmount and maxPricePerUnit                                             | Object (required)                |
                    | ↳ resourceBounds.l2Gas        | L2 gas configuration with maxAmount and maxPricePerUnit                                             | Object (required)                |
                    | ↳ resourceBounds.l1DataGas    | L1 data gas configuration with maxAmount and maxPricePerUnit                                        | Object (required)                |
                    | tip                           | Transaction tip in hex format. Typically "0x0"                                                      | String (required)                |
                    | paymasterData                 | Paymaster data array                                                                                | Array of Strings (required)      |
                    | accountDeploymentData         | Account deployment data array                                                                       | Array of Strings (required)      |
                    | nonceDataAvailabilityMode     | Data availability mode for nonce. Typically "L1" for now                                            | String (required)                |
                    | feeDataAvailabilityMode       | Data availability mode for fee. Typically "L1" for now                                              | String (required)                |

                    For Concordium transactions, you may use JSON objects (from https://github.com/Concordium/concordium-node-sdk-js/blob/sdk/12.0.0-alpha.3/packages/sdk/src/transactions/Transaction.ts#L102)

                    | Field                            | Description                                                                                                                                                  | Type - Optional
                    |----------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------|
                    | Header                           | Transaction header for the intermediary state of account transactions, i.e. prior to being signing.                                                          | Object (required)               |
                    | ↳ Header.executionEnergyAmount   | The destination address or target contract. Leave undefined when the transaction is a contract deployment.                                                   | String/Number/BigInt (required) |
                    | ↳ Header.numSignatures           | The number of signatures the transaction can hold. If "undefined", this will be defined at the time of signing                                               | Integer (optional)              |
                    | ↳ Header.sender                  | The account address that is source of this transaction                                                                                                       | String (optional)               |
                    | ↳ Header.nonce                   | The account nonce                                                                                                                                            | String/Number/BigInt (optional) |
                    | ↳ Header.expiry                  | expiration of the transaction                                                                                                                                | Integer (optional)              |
                    | Payload                          | The transaction account payload in JSON format (https://github.com/Concordium/concordium-node-sdk-js/blob/main/packages/sdk/src/accountTransactions.ts#L646) | Object (required)               |



                    ```json
                    {
                      "kind": "Transaction",
                      "transaction": {
                        "to": "0x00fb58432ef9d418bf6688bcf0a226d2fcaa18e2",
                        "data": "0x40d097c3000000000000000000000000d2f77f85a50cdd650ca562f3a180284e1d5b4934",
                        "maxFeePerGas": "1626000000000",
                        "maxPriorityFeePerGas": "1332000000000"
                      }
                    }
                    ```

                    ```json
                    {
                      "kind": "Transaction",
                      "transaction": {
                        "type": "INVOKE",
                        "calldata": [
                          "1",
                          "2009894490435840142178314390393166646092438090257831307886760648929397478285",
                          "232670485425082704932579856502088130646006032362877466777181098476241604910",
                          "3",
                          "296727860213112272332383824629975240127004024814636931420022890499591637514",
                          "1",
                          "0"
                        ],
                        "nonce": "0x51",
                        "version": "0x3",
                        "resourceBounds": {
                          "l1Gas": { "maxAmount": "0x0", "maxPricePerUnit": "0x239a01ff6e6c" },
                          "l2Gas": { "maxAmount": "0x1694a0", "maxPricePerUnit": "0x10c388d00" },
                          "l1DataGas": { "maxAmount": "0x120", "maxPricePerUnit": "0x98e8" }
                        },
                        "tip": "0x0",
                        "paymasterData": [],
                        "accountDeploymentData": [],
                        "nonceDataAvailabilityMode": "L1",
                        "feeDataAvailabilityMode": "L1",
                      }
                    }
                    ```

                    ```json
                    {
                      "kind": "Transaction",
                      "transaction": {
                        "header": {
                          "sender": undefined,
                          "nonce": undefined,
                          "expiry": undefined,
                          "executionEnergyAmount": 300
                        },
                        "payload": {
                          "type": "transferWithMemo",
                          "toAddress": "4HhAcToZs6rtxGcgsBRS3VcjeAECPTTSTFVUKS6rBSVEZAPL6d",
                          "memo": "000968656c6c6f20636364",
                          "amount": "1"
                        }
                      }
                    }
                    ```
                  title: Transaction
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Psbt
                    psbt:
                      type: string
                      pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                      description: The hex encoded PSBT.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - psbt
                  additionalProperties: false
                  description: Signs a partially signed Bitcoin / Litecoin transaction.
                  title: PSBT
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - SignDocDirect
                    signDoc:
                      type: string
                      pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - signDoc
                  additionalProperties: false
                  description: Signs an unsigned transaction using [sign mode
                    direct](https://docs.cosmos.network/main/learn/advanced/transactions#sign_mode_direct-preferred).
                  title: SignDocDirect
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - UserOperations
                    userOperations:
                      type: array
                      items:
                        type: object
                        properties:
                          to:
                            type: string
                            pattern: ^0x[0-9a-fA-F]{40}$
                            description: The destination address or target contract.
                          value:
                            type: string
                            pattern: ^\d+$
                            description: The amount of native tokens to transfer in minimum denomination.
                          data:
                            type: string
                            pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                            description: ABI encoded function call data in hex format.
                        required:
                          - to
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: A fee sponsor id to sponsor the transaction fee by another wallet.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - userOperations
                    - feeSponsorId
                  additionalProperties: false
                  description: >-
                    Signs one or more user operations and broadcasts to chain
                    using a sponsored transaction. Used for invoking arbitrary
                    smart contract calls, including batch operations, with a
                    [fee sponsor](https://docs.dfns.co/features/fee-sponsors).


                    Can only be used with a fee sponsor. Unsponsored user
                    operations are not supported.
                  title: EVM Sponsored transaction
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - FunctionCall
                    call:
                      type: object
                      properties: {}
                      description: Function call arguments
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                    - call
                  additionalProperties: false
                  description: Calls an on-chain function that mutates state.
                  title: Function Call
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - TransferPreapproval
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                  additionalProperties: false
                  description: Enable canton coin auto approval.
                  title: Canton Transfer Preapproval
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Evm
                    to:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                    value:
                      anyOf:
                        - type: string
                          pattern: ^\d+$
                        - type: string
                          pattern: ^0x[0-9a-fA-F]*$
                    data:
                      type: string
                      pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                    nonce:
                      anyOf:
                        - type: integer
                          minimum: 0
                        - type: string
                          pattern: ^\d+$
                        - type: string
                          pattern: ^0x[0-9a-fA-F]*$
                      description: The current nonce of the signer EOA.
                    gasLimit:
                      anyOf:
                        - type: string
                          pattern: ^\d+$
                        - type: string
                          pattern: ^0x[0-9a-fA-F]*$
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                  additionalProperties: false
                  description: Deprecated. Only support type 2 transactions. Use the new JSON
                    format with `Transaction` kind instead which has support for
                    legacy and type 4 transactions.
                  title: <Deprecated> EVM Transaction
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Eip1559
                    to:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                    value:
                      anyOf:
                        - type: string
                          pattern: ^\d+$
                        - type: string
                          pattern: ^0x[0-9a-fA-F]*$
                    data:
                      type: string
                      pattern: ^(0x)?([0-9a-fA-F][0-9a-fA-F])*$
                    nonce:
                      anyOf:
                        - type: integer
                          minimum: 0
                        - type: string
                          pattern: ^\d+$
                        - type: string
                          pattern: ^0x[0-9a-fA-F]*$
                    gasLimit:
                      anyOf:
                        - type: string
                          pattern: ^\d+$
                        - type: string
                          pattern: ^0x[0-9a-fA-F]*$
                    maxFeePerGas:
                      anyOf:
                        - type: string
                          pattern: ^\d+$
                        - type: string
                          pattern: ^0x[0-9a-fA-F]*$
                    maxPriorityFeePerGas:
                      anyOf:
                        - type: string
                          pattern: ^\d+$
                        - type: string
                          pattern: ^0x[0-9a-fA-F]*$
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                  additionalProperties: false
                  description: Deprecated. Only support type 2 transactions. Use the new JSON
                    format with `Transaction` kind instead which has support for
                    legacy and type 4 transactions.
                  title: <Deprecated> EVM EIP-1559
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - CreateSolanaNonceAccounts
                    nonceAuthority:
                      type: string
                      description: Optional Solana address. The wallet that will own the nonce
                        accounts (be their on-chain authority). When omitted,
                        the URL wallet bootstraps for itself. When set, the URL
                        wallet pays the rent and signs the bootstrap, but the
                        resulting accounts' authority is this address — used to
                        bootstrap on behalf of an offline wallet that can't sign
                        within the 90-second blockhash window.
                    count:
                      type: integer
                      exclusiveMinimum: 0
                      maximum: 8
                      description: Optional. Number of nonce accounts to create in one bootstrap
                        transaction (1–8; capped by Solana max-tx-size budget).
                        Defaults to 1.
                    priority:
                      type: string
                      enum:
                        - Slow
                        - Standard
                        - Fast
                      description: Priority for the bootstrap fee. Defaults to Standard.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                  additionalProperties: false
                  description: "Creates Solana durable-nonce accounts owned by the calling wallet
                    (or by `nonceAuthority` for cross-bootstrap). Pre-populates
                    the wallet's nonce account pool so subsequent transfers can
                    use `useDurableNonce: true`."
                  title: Create Solana Nonce Accounts
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - AcceptInboundAsset
                    issuer:
                      type: string
                      description: Stellar (G-address) or XRPL (r-address) issuer of the asset.
                    assetCode:
                      type: string
                      description: Stellar asset code (1–12 ASCII alphanumeric chars).
                    currency:
                      type: string
                      description: XRPL IOU currency code.
                    assetId:
                      type: string
                      pattern: ^\d+$
                      description: Algorand Standard Asset (ASA) id.
                    tokenId:
                      type: string
                      description: Hedera token entity id, e.g. "0.0.456858".
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key (read more
                        [here](https://docs.dfns.co/api-reference/idempotency)).
                  required:
                    - kind
                  additionalProperties: false
                  description: Accept a non-native asset into the wallet on chains that gate
                    inbound holding at the protocol level. Maps to Stellar
                    `ChangeTrust`, XRPL `TrustSet`, Algorand asset opt-in (a
                    0-amount asset transfer to self), Hedera `TokenAssociate`,
                    or Canton `TransferPreapproval`. The body fields differ per
                    network — see the field descriptions.
                  title: AcceptInboundAsset
            examples:
              Eip1559:
                value:
                  kind: Eip1559
                  to: "0xe5a2ebc128e262ab1e3bd02bffbe16911adfbffc"
                  value: "1"
                  maxFeePerGas: "1000000000"
                  maxPriorityFeePerGas: "1000000"
              EVM Transaction:
                value:
                  kind: Transaction
                  transaction:
                    to: "0xe5a2ebc128e262ab1e3bd02bffbe16911adfbffb"
                    value: "1"
              Function Call:
                value:
                  kind: FunctionCall
                  call:
                    contract: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
                    abi:
                      type: function
                      name: transfer
                      stateMutability: nonpayable
                      inputs:
                        - name: to
                          type: address
                        - name: value
                          type: uint256
                      outputs:
                        - name: ""
                          type: bool
                    calldata:
                      to: "0xd964d741998edc275f3800eed113378a391951d9"
                      value: "1000000"
              Starknet Transaction:
                value:
                  kind: Transaction
                  transaction:
                    calldata:
                      - "1"
                      - "200989449043584014217831439039316664609243809025783130\
                        7886760648929397478285"
                      - "232670485425082704932579856502088130646006032362877466\
                        777181098476241604910"
                      - "3"
                      - "296727860213112272332383824629975240127004024814636931\
                        420022890499591637514"
                      - "1"
                      - "0"
                    nonce: "0x51"
                    version: "0x3"
                    resourceBounds:
                      l1Gas:
                        maxAmount: "0x0"
                        maxPricePerUnit: "0x239a01ff6e6c"
                      l2Gas:
                        maxAmount: "0x1694a0"
                        maxPricePerUnit: "0x10c388d00"
                      l1DataGas:
                        maxAmount: "0x120"
                        maxPricePerUnit: "0x98e8"
                    tip: "0x0"
                    paymasterData: []
                    accountDeploymentData: []
                    nonceDataAvailabilityMode: L1
                    feeDataAvailabilityMode: L1
              Concordium Transaction:
                value:
                  kind: Transaction
                  transaction:
                    header:
                      executionEnergyAmount: 300
                    payload:
                      type: transferWithMemo
                      toAddress: 4HhAcToZs6rtxGcgsBRS3VcjeAECPTTSTFVUKS6rBSVEZAPL6d
                      memo: 000968656c6c6f20636364
                      amount: "1"
              Psbt:
                value:
                  kind: Psbt
                  psbt: "0x70736274ff0100710200000001ca17431a33a13d3ef8bfb041c8546071f9d3a609abe3\
                    c91efbed83265e1426730100000000ffffffff02e803000000000000160\
                    014a40a65b46ff36c53f1afb8e35e25a4c0bcfc9979d6d1150000000000\
                    160014237ad8ba2ffd992f6ebc7ab388e77f00fc87d1c90000000000010\
                    11f54d6150000000000160014237ad8ba2ffd992f6ebc7ab388e77f00fc\
                    87d1c9000000"
              Transaction:
                value:
                  kind: Transaction
                  transaction: "0xe703847735941a82520894f0965f5eb35ace69f01b77031f2cff22daca62288\
                    7470de4df82000080"
              SignDoc:
                value:
                  kind: SignDocDirect
                  signDoc: "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
              User Operations:
                value:
                  kind: UserOperations
                  userOperations:
                    - to: "0x1c7d4b196cb0c7b01d743fbc6116a902379c7238"
                      data: a9059cbb000000000000000000000000d964d741998edc275f3800eed113378a391951d90000000000000000000000000000000000000000000000000000000000000001
                    - to: "0x1c7d4b196cb0c7b01d743fbc6116a902379c7238"
                      data: a9059cbb000000000000000000000000e5a2ebc128e262ab1e3bd02bffbe16911adfbffb0000000000000000000000000000000000000000000000000000000000000001
                  feeSponsorId: fs-5ercu-e9r9u-8fpqi8bvu2eah0e2
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionRequest"
    get:
      summary: List Transactions
      tags:
        - Wallets
      security:
        - authenticationToken: []
      description: Retrieves a list of transactions requests for the specified wallet.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Transactions:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet id.
          required: true
          description: Wallet id.
          name: walletId
          in: path
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/TransactionRequest"
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                  walletId:
                    type: string
                    minLength: 1
                    maxLength: 64
                    pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                    description: Wallet id.
                    example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                required:
                  - items
                  - walletId
  /wallets/{walletId}/transactions/{transactionId}/cancel:
    post:
      summary: Cancel Transaction
      tags:
        - Wallets
      security:
        - authenticationToken: []
          userActionSignature: []
      description: >-
        Cancels an EVM transaction by creating a replacement transaction with
        the same nonce. The new transaction sends 0 value to the same address,
        effectively nullifying the original transaction.
          
          This endpoint works for:
          - EVM-compatible networks (Ethereum, Polygon, BSC, etc.)
          - Transactions that are in 'Broadcasted' status (pending inclusion in a block)
          - Transactions that are in 'Failed' status, but failed off-chain (before being broadcasted to the network)
          
          The cancellation works by:
          1. Extracting the nonce from the original transaction's signed data
          2. Creating a new transaction to the same wallet address with 0 amount
          3. Using the same nonce to either:
             - Replace the original transaction in the mempool (if it was broadcasted)
             - Consume the nonce that was reserved but not used (if the transaction failed off-chain)
          
          Note: For transactions that were broadcasted on-chain, success is not guaranteed as it depends on network conditions and whether the original transaction has already been mined.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Transactions:Create`: Always required.   
          `Wallets:Transactions:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet id.
          required: true
          description: Wallet id.
          name: walletId
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Transaction id.
          required: true
          description: Transaction id.
          name: transactionId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionRequest"
  /wallets/{walletId}/transfers/{transferId}/cancel:
    post:
      summary: Cancel Transfer
      tags:
        - Wallets
      security:
        - authenticationToken: []
          userActionSignature: []
      description: >-
        Cancels an EVM transfer by creating a replacement transaction with the
        same nonce. The new transaction sends 0 value to the same address,
        effectively nullifying the original transfer.
          
          This endpoint works for:
          - EVM-compatible networks (Ethereum, Polygon, BSC, etc.)
          - Transfers that are in 'Broadcasted' status (pending inclusion in a block)
          - Transfers that are in 'Failed' status, but failed off-chain (before being broadcasted to the network)
          
          The cancellation works by:
          1. Extracting the nonce from the original transfer's signed data
          2. Creating a new transaction to the same wallet address with 0 amount
          3. Using the same nonce to either:
             - Replace the original transaction in the mempool (if it was broadcasted)
             - Consume the nonce that was reserved but not used (if the transfer failed off-chain)
          
          Note: For transfers that were broadcasted on-chain, success is not guaranteed as it depends on network conditions and whether the original transaction has already been mined.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Transactions:Create`: Always required.   
          `Wallets:Transfers:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet id.
          required: true
          description: Wallet id.
          name: walletId
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Transfer id.
          required: true
          description: Transfer id.
          name: transferId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionRequest"
  /wallets/{walletId}/canton/ledger-api:
    post:
      summary: Proxy a request to the Canton Ledger API
      tags:
        - Wallets
      security:
        - authenticationToken: []
      description: Proxies a request to the Canton Ledger API associated with this
        wallet, using the validator's OAuth2 credentials. Restricted to a
        curated allow-list of read-style resources. Used to satisfy the Canton
        WalletConnect `canton_ledgerApi` method.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet id.
          required: true
          description: Wallet id.
          name: walletId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                requestMethod:
                  type: string
                  enum:
                    - GET
                    - POST
                  description: The HTTP method used against the Canton Ledger API.
                resource:
                  type: string
                  minLength: 1
                  description: The Canton Ledger API resource path, beginning with `/v2/` (e.g.
                    `/v2/state/active-contracts`).
                body:
                  description: Optional JSON body, forwarded verbatim for POST resources. Must be
                    omitted for GET resources.
              required:
                - requestMethod
                - resource
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema: {}
  /wallets/{walletId}/transactions/{transactionId}/speed-up:
    post:
      summary: Speed Up Transaction
      tags:
        - Wallets
      security:
        - authenticationToken: []
          userActionSignature: []
      description: >-
        Speeds up a transaction by creating a replacement transaction with the
        same parameters but higher gas fees.
          
          This endpoint only works for:
          - EVM-compatible networks (Ethereum, Polygon, BSC, etc.)
          - Transactions that are in 'Broadcasted' status (already submitted to blockchain, but not confirmed yet)
          
          The speed-up works by:
          1. Extracting the parameters from the original broadcasted transaction
          2. Creating a new transaction with the same nonce, recipient, value, and data
          3. Using higher gas fees (maximum between 10% bump or Fast network fees)
          4. Replacing the original transaction in the mempool
          
          Note: Success is not guaranteed as it depends on network conditions and whether the original transaction has already been mined.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Transactions:Create`: Always required.   
          `Wallets:Transactions:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet id.
          required: true
          description: Wallet id.
          name: walletId
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Transaction id.
          required: true
          description: Transaction id.
          name: transactionId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionRequest"
  /wallets/{walletId}/transfers/{transferId}/speed-up:
    post:
      summary: Speed Up Transfer
      tags:
        - Wallets
      security:
        - authenticationToken: []
          userActionSignature: []
      description: >-
        Speeds up a transfer by creating a replacement transaction with the same
        parameters but higher gas fees.
          
          This endpoint only works for:
          - EVM-compatible networks (Ethereum, Polygon, BSC, etc.)
          - Transfers that are in 'Broadcasted' status (already submitted to blockchain, but not confirmed yet)
          
          The speed-up works by:
          1. Extracting the parameters from the original broadcasted transfer
          2. Creating a new transaction with the same nonce, recipient, value, and data
          3. Using higher gas fees (maximum between 10% bump or Fast network fees)
          4. Replacing the original transaction in the mempool
          
          Note: Success is not guaranteed as it depends on network conditions and whether the original transaction has already been mined.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Transactions:Create`: Always required.   
          `Wallets:Transfers:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet id.
          required: true
          description: Wallet id.
          name: walletId
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Transfer id.
          required: true
          description: Transfer id.
          name: transferId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionRequest"
  /wallets:
    post:
      summary: Create Wallet
      tags:
        - Wallets
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Creates a new Wallet associated with the given chain (such as
        Bitcoin or Ethereum ). Returns a new wallet entity.
      x-mint:
        content: >-
          #### Authentication


          ✅ Organization User (`CustomerEmployee`)    

          ✅ Delegated User (`EndUser`)    

          ✅ Service Account


          #### Required Permissions


          `Wallets:Create`: Always required   

          `Keys:Create`: Required if wallet creation also creates a new [Key
          entity](https://docs.dfns.co/api-reference/keys). This is the default
          behavior.   

          `Keys:Reuse`: Required if `signingKey.id` is specified. Wallet will
          reuse an existing key instead of creating a new one.   

          `Keys:Delegate`: Required if `delegateTo` is specified.   

          `Wallets:Tags:Add`: Required if `tags` are specified.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                network:
                  type: string
                  description: Network used for the wallet.
                  enum: *a1
                name:
                  type: string
                  maxLength: 100
                  description: Wallet nickname.
                signingKey:
                  type: object
                  properties:
                    id:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^key-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Use this parameter to create a wallet from an existing key. This
                        enables one key to be used across multiple networks and
                        have the same address if networks share the same address
                        format, ex. `Ethereum` and `Polygon`. If specified,
                        requires the `Keys:Reuse` permission. If the key is
                        delegated to an end user, then the new wallet will be
                        automatically delegated to the same end user.
                      example: key-01snl-t56gb-j8tsok0vn802p80i
                    scheme:
                      allOf:
                        - $ref: "#/components/schemas/KeyScheme"
                        - description: Use this to specify the new key scheme for networks that support
                            multiple key formats. ex. use `Schnorr` to create a
                            `Bitcoin Taproot` wallet.
                    curve:
                      allOf:
                        - $ref: "#/components/schemas/KeyCurve"
                        - description: Use this to specify the new key curve for networks that support
                            multiple key formats.
                    storeId:
                      type: string
                      description: Use this to specify the key store the key material is saved to.
                    deriveFrom:
                      type: object
                      properties:
                        keyId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^key-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: The master key to derive from.
                          example: key-01snl-t56gb-j8tsok0vn802p80i
                        path:
                          type: string
                          pattern: ^m(\/(0|[1-9]\d{0,9}))+$
                          description: Use this to specify the derivation path of the signing key. One
                            will be auto generated if left blank.
                      required:
                        - keyId
                      description: Use this for hierarchical deterministic key derivation.
                  description: Options for the wallet's underlying key
                delegateTo:
                  type: string
                  minLength: 1
                  maxLength: 64
                  pattern: ^us-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                  description: ID of the end user to delegate this wallet to. The wallet will only
                    be usable by the end user. More info
                    [here](https://docs.dfns.co/advanced/delegated-signing).
                  example: us-6b58p-r53sr-rlrd3l5cj3uc4ome
                delayDelegation:
                  type: boolean
                  default: false
                  description: Specify if you want to create the wallet from a service account and
                    later [delegate it](/api-reference/keys/delegate-key) to an
                    end user.
                externalId:
                  type: string
                  maxLength: 100
                  description: User-defined value that can be used to correlate the entity with an
                    external system
                tags:
                  type: array
                  items:
                    type: string
                    pattern: ^[a-zA-Z0-9_.:/+-]{1,100}$
                    description: Wallet Tag.
                  maxItems: 10
                  description: List of tags to be created for this wallet. If specified, requires
                    the `Wallets:Tags:Add` permission, like the [Tag
                    Wallet](https://docs.dfns.co/api-reference/wallets/tag-wallet)
                    endpoint.
              required:
                - network
              additionalProperties: false
            examples:
              Bitcoin Taproot:
                value:
                  network: BitcoinSignet
                  signingKey:
                    scheme: Schnorr
              Multi chain:
                value:
                  network: BaseSepolia
                  signingKey:
                    id: key-b56ng-qm1c8-pqaki69j8jmmafo
              Ethereum:
                value:
                  network: Ethereum
                  name: trading hot wallet
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/Wallet"
                  - additionalProperties: false
    get:
      summary: List Wallets
      tags:
        - Wallets
      security:
        - authenticationToken: []
      description: Retrieves the list of Wallets in your organization. You can filter
        the results by owner (either by owner id or owner username). Pagination
        is supported via limit and paginationToken parameters.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Read`: Always required.
      parameters:
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
        - schema:
            type: string
            minLength: 1
            description: Filter by owner id or username.
          required: false
          description: Filter by owner id or username.
          name: owner
          in: query
        - schema:
            type: string
            minLength: 1
            description: "@deprecated use owner instead"
          required: false
          description: "@deprecated use owner instead"
          name: ownerId
          in: query
        - schema:
            type: string
            minLength: 1
            description: "@deprecated use owner instead"
          required: false
          description: "@deprecated use owner instead"
          name: ownerUsername
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/Wallet"
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                required:
                  - items
  /wallets/{walletId}/transactions/{transactionId}:
    get:
      summary: Get Transaction
      tags:
        - Wallets
      security:
        - authenticationToken: []
      description: Retrieve information about a specific transaction.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Transactions:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet id.
          required: true
          description: Wallet id.
          name: walletId
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Transaction id.
          required: true
          description: Transaction id.
          name: transactionId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionRequest"
  /wallets/{walletId}/transfers/{transferId}:
    get:
      summary: Get Transfer
      tags:
        - Wallets
      security:
        - authenticationToken: []
      description: Retrieves a Wallet Transfer Request by its ID.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Transfers:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet id.
          required: true
          description: Wallet id.
          name: walletId
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Transfer id.
          required: true
          description: Transfer id.
          name: transferId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransferRequest"
  /wallets/{walletId}:
    get:
      summary: Get Wallet
      tags:
        - Wallets
      security:
        - authenticationToken: []
      description: Retrieves a Wallet information by its ID.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: The wallet to retrieve.
          required: true
          description: The wallet to retrieve.
          name: walletId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Wallet"
    put:
      summary: Update Wallet
      tags:
        - Wallets
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Updates the name of an existing wallet.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Update`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: walletId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type:
                    - string
                    - "null"
                  maxLength: 100
                externalId:
                  type:
                    - string
                    - "null"
                  maxLength: 100
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/Wallet"
                  - additionalProperties: false
  /wallets/{walletId}/assets:
    get:
      summary: Get Wallet Assets
      tags:
        - Wallets
      security:
        - authenticationToken: []
      description: Retrieves a list of assets owned by the specified wallet.  Return
        values vary by chain as shown below.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: walletId
          in: path
        - schema:
            type: string
            enum:
              - "true"
          required: false
          name: netWorth
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  walletId:
                    type: string
                  network:
                    $ref: "#/components/schemas/Network"
                  assets:
                    type: array
                    items:
                      allOf:
                        - oneOf:
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum:
                                    - Native
                              required:
                                - kind
                              title: Native assets
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum:
                                    - Aip21
                                metadata:
                                  type: string
                              required:
                                - kind
                                - metadata
                              title: Aptos Fungible Assets (AIP-21)
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum:
                                    - Asa
                                assetId:
                                  type: string
                              required:
                                - kind
                                - assetId
                              title: Algorand Standard Assets (ASAs)
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum:
                                    - Cis2
                                tokenAddress:
                                  type: string
                              required:
                                - kind
                                - tokenAddress
                              title: Concordium CIS-2 tokens
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum: *a68
                                contract:
                                  type: string
                              required:
                                - kind
                                - contract
                              title: EVM ERC-20/Starknet SNIP-2/TRON TRC-20 tokens
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum:
                                    - Erc7984
                                contract:
                                  type: string
                              required:
                                - kind
                                - contract
                              title: EVM ERC-7984 confidential tokens
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum:
                                    - Hts
                                tokenId:
                                  type: string
                              required:
                                - kind
                                - tokenId
                              title: Hedera tokens (HTS)
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum:
                                    - Iou
                                currency:
                                  type: string
                                issuer:
                                  type: string
                              required:
                                - kind
                                - currency
                                - issuer
                              title: XRP Ledger IOU tokens
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum:
                                    - Cip56
                                instrumentId:
                                  type: string
                                instrumentAdmin:
                                  type: string
                              required:
                                - kind
                                - instrumentId
                                - instrumentAdmin
                              title: Canton CIP-56 tokens
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum: *a69
                                coin:
                                  type: string
                              required:
                                - kind
                                - coin
                              title: Sui/IOTA Coin assets
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum:
                                    - Xls33
                                issuanceId:
                                  type: string
                              required:
                                - kind
                                - issuanceId
                              title: XRP Ledger MPL (XLS-33) tokens
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum:
                                    - Asset
                                assetId:
                                  type: string
                              required:
                                - kind
                                - assetId
                              title: Polymesh/Cardano assets
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum:
                                    - Cis7
                                tokenId:
                                  type: string
                              required:
                                - kind
                                - tokenId
                              title: Concordium PLTs ( CIS-7 tokens)
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum:
                                    - Sep41
                                issuer:
                                  type: string
                                assetCode:
                                  type: string
                              required:
                                - kind
                                - issuer
                                - assetCode
                              title: Stellar SEP-41 tokens
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum:
                                    - Trc10
                                tokenId:
                                  type: string
                              required:
                                - kind
                                - tokenId
                              title: TRON TRC-10 tokens
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum: *a70
                                mint:
                                  type: string
                              required:
                                - kind
                                - mint
                              title: Solana SPL/SPL2022 tokens
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum:
                                    - Tep74
                                master:
                                  type: string
                              required:
                                - kind
                                - master
                              title: TON TEP-74 Jetton
                        - type: object
                          properties:
                            symbol:
                              type: string
                            decimals:
                              type: number
                            verified:
                              type: boolean
                            balance:
                              type: string
                            quotes:
                              type: object
                              properties:
                                USD:
                                  type: number
                          required:
                            - decimals
                            - balance
                  netWorth:
                    type: object
                    properties:
                      USD:
                        type: number
                required:
                  - walletId
                  - network
                  - assets
  /wallets/{walletId}/history:
    get:
      summary: Get Wallet History
      tags:
        - Wallets
      security:
        - authenticationToken: []
      description: |-
        Retrieves a list of historical on chain activities for the specified wallet.

        The list reflects the indexed on-chain activity: it includes confirmed transactions only.

        If you need to list your on-going or failed transactions please use the related endpoints (
        [List Transfers](https://docs.dfns.co/api-reference/wallets/list-transfers) or
        [List Transactions](https://docs.dfns.co/api-reference/wallets/list-transactions)
        depending on the API you are using).
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet you want to get the history from.
          required: true
          description: Wallet you want to get the history from.
          name: walletId
          in: path
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
        - schema:
            type: string
            enum:
              - In
              - Out
            description: Transfer direction.
          required: false
          description: Transfer direction.
          name: direction
          in: query
        - schema:
            type: string
            enum:
              - NativeTransfer
              - Aip21Transfer
              - AsaTransfer
              - AssetTransfer
              - Cip56Transfer
              - Cis2Transfer
              - Cis7Transfer
              - CoinTransfer
              - Erc20Transfer
              - Erc721Transfer
              - Erc7984Transfer
              - Hip17Transfer
              - HtsTransfer
              - IouTransfer
              - LockedCoinTransfer
              - Sep41Transfer
              - Snip2Transfer
              - Snip3Transfer
              - SplTransfer
              - Spl2022Transfer
              - Tep74Transfer
              - Trc10Transfer
              - Trc20Transfer
              - Trc721Transfer
              - UtxoTransfer
              - Xls33Transfer
            description: Blockchain event kind.
          required: false
          description: Blockchain event kind.
          name: kind
          in: query
        - schema:
            type: string
            minLength: 1
          required: false
          name: contract
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/BlockchainEvent"
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                  walletId:
                    type: string
                    minLength: 1
                    maxLength: 64
                    pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                    description: Wallet id.
                    example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                  network:
                    $ref: "#/components/schemas/Network"
                required:
                  - items
                  - walletId
                  - network
  /wallets/{walletId}/nfts:
    get:
      summary: Get Wallet Nfts
      tags:
        - Wallets
      security:
        - authenticationToken: []
      description: Retrieves a list of NFTs owned by the specified Wallet.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: walletId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  walletId:
                    type: string
                  network:
                    $ref: "#/components/schemas/Network"
                  nfts:
                    type: array
                    items:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Asa
                            assetId:
                              type: string
                              description: The NFT id.
                            symbol:
                              type: string
                              description: The NFT symbol.
                            tokenUri:
                              type: string
                              description: The NFT metadata URI.
                          required:
                            - kind
                            - assetId
                          title: Algorand NFT
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Erc721
                                - Snip3
                                - Trc721
                            contract:
                              type: string
                              description: contract address.
                            tokenId:
                              type: string
                              description: The NFT id.
                            symbol:
                              type: string
                              description: The NFT symbol.
                            tokenUri:
                              type: string
                              description: The NFT metadata URI.
                          required:
                            - kind
                            - contract
                            - tokenId
                          title: ERC/TRC-721 NFT
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Hip17
                            tokenId:
                              type: string
                              description: The NFT id.
                            serialNumber:
                              type: string
                              description: The NFT serial number.
                            symbol:
                              type: string
                              description: The NFT symbol.
                            tokenUri:
                              type: string
                              description: The NFT metadata URI.
                          required:
                            - kind
                            - tokenId
                            - serialNumber
                          title: Hedera NFT
                required:
                  - walletId
                  - network
                  - nfts
  /wallets/import:
    post:
      summary: Import Wallet
      tags:
        - Wallets
      security:
        - authenticationToken: []
          userActionSignature: []
      description: |
        <Warning>
        This endpoint is not enabled by default. [Contact Dfns](https://support.dfns.co) to have it activated.
        </Warning>

        Dfns secures private keys by generating them as MPC key shares in our decentralized key management network.  This happens by default when you [create a wallet](https://docs.dfns.co/api-reference/wallets/create-wallet).

        In some circumstances, however, you may need to import an existing wallet (an existing private key) into Dfns infrastructure, instead of creating a brand new wallet with Dfns and transfer funds to it. As an example, you might want to keep an existing wallet if its address is tied to a smart contract which you don't want to re-deploy.

        In such a case, Dfns exposes this wallet import API endpoint, which can be used in conjunction with our [import SDK](https://github.com/dfns/dfns-sdk-ts/tree/m/examples/sdk/import-wallet).   Note this is intended to be used only to migrate wallets when first onboarding onto the Dfns platform.

        <Danger>
        Dfns can not guarantee the security of imported wallets, as we have no way to control who had access to the private key prior to import.  For this reason, this feature is restricted to Enterprise customers who have signed a contractual addendum limiting our liability for imported keys.  Please contact your sales representative for more information.
        </Danger>
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Keys:Import`: Always required.   
          `Wallets:Create`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  maxLength: 100
                curve:
                  type: string
                  enum:
                    - ed25519
                    - secp256k1
                    - stark
                protocol:
                  anyOf:
                    - type: string
                      enum:
                        - CGGMP24
                        - FROST
                        - FROST_BITCOIN
                        - GLOW20_DH
                        - KU23
                    - type: string
                      enum:
                        - CGGMP21
                minSigners:
                  type: integer
                  exclusiveMinimum: 0
                encryptedKeyShares:
                  type: array
                  items:
                    type: object
                    properties:
                      signerId:
                        type: string
                        minLength: 1
                      encryptedKeyShare:
                        type: string
                        minLength: 1
                    required:
                      - signerId
                      - encryptedKeyShare
                  minItems: 1
                network:
                  type: string
                  enum: *a1
                externalId:
                  type: string
              required:
                - curve
                - protocol
                - minSigners
                - encryptedKeyShares
                - network
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Wallet"
  /wallets/{walletId}/transfers:
    get:
      summary: List Transfers
      tags:
        - Wallets
      security:
        - authenticationToken: []
      description: Retrieves a list of transfer requests for the specified wallet.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Transfers:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet id.
          required: true
          description: Wallet id.
          name: walletId
          in: path
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/TransferRequest"
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                  walletId:
                    type: string
                    minLength: 1
                    maxLength: 64
                    pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                    description: Wallet id.
                    example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                required:
                  - items
                  - walletId
    post:
      summary: Transfer Asset
      tags:
        - Wallets
      security:
        - authenticationToken: []
          userActionSignature: []
      description: "

        Transfer an asset out of the specified wallet to a destination address.

        For all fungible token transfers, the transfer amount must be specified
        in the minimum denomination of that token.

        For example, use the amount in Satoshi for a Bitcoin transfer, or the
        amount in Wei for an Ethereum transfer etc.


        See the different options in the Body description below. You can also
        select your kind of transfers in the payload examples in the different
        languages.


        <Tip>

        Binance chains users can use ERC transfers for BEP tokens and Native
        transfers for BNB.

        </Tip>


        <Note>

        Some blockchains may require additional steps before the transfer can be
        completed, such as creating a destination account (e.g., Stellar).
        Please refer to the specific blockchain documentation for any
        prerequisites or additional requirements.

        </Note>

        \    "
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Transfers:Create`: Always required   
          `FeeSponsors:Use`: Required if `feeSponsorId` is specified.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: The source wallet id (`wa-...`).
          required: true
          description: The source wallet id (`wa-...`).
          name: walletId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Native
                    to:
                      type: string
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of native tokens to transfer in minimum denomination.
                    memo:
                      anyOf:
                        - type: string
                          maxLength: 64
                          pattern: ^[a-zA-Z0-9]+$
                        - type: string
                          enum:
                            - ""
                      description: The memo or destination tag (supported networks only).
                    priority:
                      type: string
                      enum:
                        - Slow
                        - Standard
                        - Fast
                      description: The priority that determines the fees paid for the transfer. All
                        EVM compatible networks and Bitcoin support `priority`.
                        Not supported for other networks. It uses the [estimate
                        fees](https://docs.dfns.co/api-reference/networks/estimate-fees)
                        API to calculate the transfer fees. When not specified,
                        defaults to `Standard` priority.
                    createDestinationAccount:
                      type: boolean
                      description: Whether to create the destination account on chains that require
                        account creation (e.g., Stellar). Only valid for chains
                        that require the receiver account to exist before
                        transfer.
                    offer:
                      type: boolean
                      description: Optional field for Canton, if true it will create a transfer offer.
                    expiresAt:
                      type: string
                      format: date-time
                      description: Optional field for Canton, especially useful in the context of
                        offers
                    useDurableNonce:
                      type: boolean
                      description: "Optional Solana-only flag. When `true` the SOL transfer is built
                        as a durable-nonce transaction using one of the wallet's
                        nonce accounts (picked server-side). Use this for
                        offline-signing flows where the construct → broadcast
                        gap may exceed 90 seconds. The wallet's nonce account
                        pool must be pre-populated via `POST
                        /wallets/{id}/transactions` with `kind:
                        CreateSolanaNonceAccounts`."
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - to
                    - amount
                  additionalProperties: false
                  description: Transfer the native token of the network. All networks support the
                    native token type.
                  title: Native Asset
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Aip21
                    metadata:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{64}$
                      description: "The asset metadata address. "
                    to:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{64}$
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - metadata
                    - to
                    - amount
                  additionalProperties: false
                  description: Transfer Aptos fungible asset that implement the [AIP-21
                    specification](https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-21.md).
                  title: Aptos Fungible Asset (AIP-21)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Asa
                    assetId:
                      type: string
                      pattern: ^\d+$
                      description: "The token asset id. "
                    to:
                      type: string
                      pattern: ^[A-Z0-9]{58}$
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    memo:
                      anyOf:
                        - type: string
                          maxLength: 64
                          pattern: ^[a-zA-Z0-9]+$
                        - type: string
                          enum:
                            - ""
                      description: The memo or destination tag.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - assetId
                    - to
                    - amount
                  additionalProperties: false
                  description: Transfer Algorand standard assets, or
                    [ASAs](https://developer.algorand.org/docs/get-details/asa/).
                  title: Algorand Standard Asset
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Asset
                    assetId:
                      type: string
                      description: "The token asset id. "
                    to:
                      type: string
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - assetId
                    - to
                    - amount
                  additionalProperties: false
                  description: Transfer Cardano assets following [Mary
                    update](https://docs.cardano.org/about-cardano/evolution/upgrades/mary)
                  title: Cardano Asset
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Cip56
                    instrumentAdmin:
                      type: string
                      pattern: ^[a-zA-Z0-9-_]*::1220[a-f0-9]{64}$
                      description: The instrument admin address.
                    instrumentId:
                      type: string
                      description: The instrument id.
                    to:
                      type: string
                      pattern: ^[a-zA-Z0-9-_]*::1220[a-f0-9]{64}$
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    offer:
                      type: boolean
                      description: If true it will create a transfer offer.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - instrumentAdmin
                    - instrumentId
                    - to
                    - amount
                  additionalProperties: false
                  description: Transfer standard tokens that implement the [CIP-56
                    specification](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0056/cip-0056.md).
                  title: Canton Standard Token (CIP-56)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Cis2
                    to:
                      type: string
                      pattern: ^[1-9A-HJ-NP-Za-km-z]{50}$
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    tokenAddress:
                      type: string
                      description: The token address following
                        (https://proposals.concordium.com/CIS/cis-2.html#token-address).
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - to
                    - amount
                    - tokenAddress
                  additionalProperties: false
                  description: Transfer tokens that implement the [CIS-2
                    specification](https://proposals.concordium.software/CIS/cis-2.html).
                  title: CIS-2 Standard
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Cis7
                    to:
                      type: string
                      pattern: ^[1-9A-HJ-NP-Za-km-z]{50}$
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    tokenId:
                      type: string
                      description: The Cis7 token identifier.
                    memo:
                      anyOf:
                        - type: string
                          maxLength: 64
                          pattern: ^[a-zA-Z0-9]+$
                        - type: string
                          enum:
                            - ""
                      description: The memo or destination tag.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - to
                    - amount
                    - tokenId
                  additionalProperties: false
                  description: Transfer Concordium protocol level tokens.
                    (https://proposals.concordium.com/CIS/cis-7.html#cis-7-protocol-level-tokens-plts)
                  title: Concordium Protocol Level Token (CIS-7)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Coin
                    coin:
                      type: string
                      description: The coin identifier.
                    to:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{64}$
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - coin
                    - to
                    - amount
                  additionalProperties: false
                  description: Transfer Sui fungible assets that implement [coin
                    standard](https://docs.sui.io/standards/coin).
                  title: Sui Coin
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Erc20
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                      description: The ERC-20 contract address.
                    to:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    priority:
                      type: string
                      enum:
                        - Slow
                        - Standard
                        - Fast
                      description: The priority that determines the fees paid for the transfer.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - contract
                    - to
                    - amount
                  additionalProperties: false
                  description: Transfer fungible tokens that implement the [ERC-20
                    specification](https://eips.ethereum.org/EIPS/eip-20).
                  title: EVM Fungible Token (ERC-20)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Erc721
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                      description: The ERC-721 contract address.
                    to:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                      description: The destination address.
                    tokenId:
                      type: string
                      pattern: ^\d+$
                      description: The token to transfer.
                    priority:
                      type: string
                      enum:
                        - Slow
                        - Standard
                        - Fast
                      description: The priority that determines the fees paid for the transfer.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - contract
                    - to
                    - tokenId
                  additionalProperties: false
                  description: Transfer non-fungible tokens that implement the [ERC-721
                    specification](https://eips.ethereum.org/EIPS/eip-721)
                  title: EVM Non Fungible Token (ERC-721)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Erc7984
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                      description: The ERC-7984 confidential token contract address.
                    to:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{40}$
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    priority:
                      type: string
                      enum:
                        - Slow
                        - Standard
                        - Fast
                      description: The priority that determines the fees paid for the transfer.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - contract
                    - to
                    - amount
                  additionalProperties: false
                  description: Transfer confidential tokens that implement the [ERC-7984
                    specification](https://eips.ethereum.org/EIPS/eip-7984). The
                    transfer amount is encrypted on-chain using Fully
                    Homomorphic Encryption (FHE).
                  title: EVM Confidential Token (ERC-7984)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Hip17
                    tokenId:
                      type: string
                      description: The token to transfer.
                    serialNumber:
                      type: string
                      pattern: ^\d+$
                    to:
                      type: string
                      pattern: ^(0x[0-9a-fA-F]{40}|0\.0\.(\d+|[0-9a-fA-F]{40}|[0-9a-fA-F]{64,}))$
                      description: The destination address.
                    memo:
                      anyOf:
                        - type: string
                          maxLength: 64
                          pattern: ^[a-zA-Z0-9]+$
                        - type: string
                          enum:
                            - ""
                      description: The memo or destination tag.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - tokenId
                    - serialNumber
                    - to
                  additionalProperties: false
                  description: ""
                  title: Hedera Non-Fungible Token (HIP-17)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Hts
                    tokenId:
                      type: string
                      description: The token to transfer.
                    to:
                      type: string
                      pattern: ^(0x[0-9a-fA-F]{40}|0\.0\.(\d+|[0-9a-fA-F]{40}|[0-9a-fA-F]{64,}))$
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    memo:
                      anyOf:
                        - type: string
                          maxLength: 64
                          pattern: ^[a-zA-Z0-9]+$
                        - type: string
                          enum:
                            - ""
                      description: The memo.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - tokenId
                    - to
                    - amount
                  additionalProperties: false
                  description: ""
                  title: Hedera Tokens (HTS)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Iou
                    currency:
                      type: string
                      description: The IOU currency code.
                    issuer:
                      type: string
                      pattern: ^r[1-9A-HJ-NP-Za-km-z]{24,34}$
                      description: The IOU issuer address.
                    to:
                      type: string
                      pattern: ^r[1-9A-HJ-NP-Za-km-z]{24,34}$
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    memo:
                      anyOf:
                        - type: string
                          maxLength: 64
                          pattern: ^[a-zA-Z0-9]+$
                        - type: string
                          enum:
                            - ""
                      description: The memo or destination tag.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - currency
                    - issuer
                    - to
                    - amount
                  additionalProperties: false
                  description: Transfer XRPL IOU tokens with specified currency and issuer.
                    (https://xrpl.org/docs/concepts/tokens/fungible-tokens/trust-line-tokens)
                  title: XRPL IOU Token
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Sep41
                    issuer:
                      type: string
                      pattern: ^(G[A-Z0-9]{55}|M[A-Z0-9]{68})$
                      description: The asset issuer address.
                    assetCode:
                      type: string
                      description: The asset code.
                    to:
                      type: string
                      pattern: ^(G[A-Z0-9]{55}|M[A-Z0-9]{68})$
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    memo:
                      anyOf:
                        - type: string
                          maxLength: 64
                          pattern: ^[a-zA-Z0-9]+$
                        - type: string
                          enum:
                            - ""
                      description: The memo or destination tag.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - issuer
                    - assetCode
                    - to
                    - amount
                  additionalProperties: false
                  description: Transfer classic [Stellar
                    Assets](https://developers.stellar.org/docs/issuing-assets/anatomy-of-an-asset).
                    They all implement the [SEP-41 token
                    interface](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0041.md).
                  title: Stellar Classic Assets (SEP-41)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Snip2
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{64}$
                      description: The SNIP-2 (ERC-20-like) contract address.
                    to:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{64}$
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - contract
                    - to
                    - amount
                  additionalProperties: false
                  description: Transfer fungible tokens that implement the [SNIP-2 (ERC-20-like)
                    specification](https://github.com/starknet-io/SNIPs/blob/ea46a8777d8c8d53a43f45b7beb1abcc301a1a69/SNIPS/snip-2.md).
                  title: Starknet SNIP-2 (ERC-20 like)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Snip3
                    contract:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{64}$
                      description: The SNIP-3 (ERC-721) contract address.
                    to:
                      type: string
                      pattern: ^0x[0-9a-fA-F]{64}$
                      description: The destination address.
                    tokenId:
                      type: string
                      pattern: ^\d+$
                      description: The token to transfer.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - contract
                    - to
                    - tokenId
                  additionalProperties: false
                  description: Transfer non-fungible tokens that implement the [SNIP-3
                    (ERC-721-like)
                    specification](https://github.com/starknet-io/SNIPs/blob/ea46a8777d8c8d53a43f45b7beb1abcc301a1a69/SNIPS/snip-3.md)
                  title: Starknet SNIP-3 (ERC-721-like)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum: *a57
                    to:
                      type: string
                      pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    mint:
                      type: string
                      pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
                      description: The mint account address.
                    memo:
                      anyOf:
                        - type: string
                          maxLength: 64
                          pattern: ^[a-zA-Z0-9]+$
                        - type: string
                          enum:
                            - ""
                      description: The memo or destination tag.
                    createDestinationAccount:
                      type: boolean
                      description: If `true`, pay to create the associated token account for the
                        recipient if it doesn't exist. Defaults to `false`.
                    useDurableNonce:
                      type: boolean
                      description: "Optional. When `true` the SPL transfer is built as a durable-nonce
                        transaction using one of the wallet's nonce accounts
                        (picked server-side). The wallet's nonce account pool
                        must be pre-populated via `POST
                        /wallets/{id}/transactions` with `kind:
                        CreateSolanaNonceAccounts`."
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - to
                    - amount
                    - mint
                  additionalProperties: false
                  description: Transfer [SPL tokens](https://spl.solana.com/token) or [SPL 2022
                    tokens](https://spl.solana.com/token-2022).
                  title: Solana Program Library Token (SPL and SPL 2022)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Tep74
                    to:
                      type: string
                      pattern: ^(?:[A-Za-z0-9\-_]{48}|\d+:[a-fA-F0-9]{64})$
                      description: The destination address.
                    master:
                      type: string
                      pattern: ^(?:[A-Za-z0-9\-_]{48}|\d+:[a-fA-F0-9]{64})$
                      description: The Jetton master contract address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    memo:
                      anyOf:
                        - type: string
                          maxLength: 64
                          pattern: ^[a-zA-Z0-9]+$
                        - type: string
                          enum:
                            - ""
                      description: The memo or destination tag.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - to
                    - master
                    - amount
                  additionalProperties: false
                  description: Transfer
                    [Jetton](https://github.com/ton-blockchain/TEPs/blob/master/text/0074-jettons-standard.md)
                    tokens.
                  title: TON Jetton (TEP-74)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Trc10
                    tokenId:
                      type: string
                      pattern: ^\d+$
                      description: The token ID.
                    to:
                      type: string
                      pattern: ^T[0-9a-zA-Z]{33}$
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - tokenId
                    - to
                    - amount
                  additionalProperties: false
                  description: Transfer TRON's TRC-10 fungible tokens
                  title: TRON Native Fungible Token (TRC-10)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Trc20
                    contract:
                      type: string
                      pattern: ^T[0-9a-zA-Z]{33}$
                      description: The smart contract address.
                    to:
                      type: string
                      pattern: ^T[0-9a-zA-Z]{33}$
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - contract
                    - to
                    - amount
                  additionalProperties: false
                  description: Transfer fungible tokens that implement the TRC-20 smart contract
                    specification.
                  title: TRON Smart Contract Fungible Token (TRC-20)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Trc721
                    contract:
                      type: string
                      pattern: ^T[0-9a-zA-Z]{33}$
                      description: The smart contract address.
                    to:
                      type: string
                      pattern: ^T[0-9a-zA-Z]{33}$
                      description: The destination address.
                    tokenId:
                      type: string
                      pattern: ^\d+$
                      description: The token to transfer.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - contract
                    - to
                    - tokenId
                  additionalProperties: false
                  description: Transfer non-fungible tokens that implement the TRC-721 smart
                    contract specification.
                  title: TRON Non Fungible Token (TRC-721)
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - Xls33
                    issuanceId:
                      type: string
                      description: The XLS-33 issuance identifier.
                    to:
                      type: string
                      pattern: ^r[1-9A-HJ-NP-Za-km-z]{24,34}$
                      description: The destination address.
                    amount:
                      type: string
                      pattern: ^\d+$
                      description: The amount of tokens to transfer in minimum denomination.
                    memo:
                      anyOf:
                        - type: string
                          maxLength: 64
                          pattern: ^[a-zA-Z0-9]+$
                        - type: string
                          enum:
                            - ""
                      description: The memo or destination tag.
                    externalId:
                      type: string
                      minLength: 1
                      maxLength: 50
                      description: A unique ID from your system. It can be leveraged to be used as an
                        idempotency key. (read more
                        [here](https://docs.dfns.co/api-reference/idempotency))
                    travelRule:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - Notabene
                            beneficiaryVASPdid:
                              type: string
                            beneficiaryProof:
                              type: object
                              additionalProperties: {}
                            originator:
                              type: object
                              additionalProperties: {}
                            beneficiary:
                              type: object
                              additionalProperties: {}
                          required:
                            - kind
                            - originator
                            - beneficiary
                          additionalProperties: false
                          title: Notabene Travel Rule
                      description: A travel rule payload to associate with the transfer. (read more
                        [here](https://docs.dfns.co/features/travel-rule))
                    feeSponsorId:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                      description: Id of the fee sponsor that will be used to pay for your transfer
                        fees, it might not be available for all blockchains.
                        (read more
                        [here](https://docs.dfns.co/features/fee-sponsors))
                      example: fs-5vqdl-gliqk-b4rfukqauov1sp7j
                  required:
                    - kind
                    - issuanceId
                    - to
                    - amount
                  additionalProperties: false
                  description: Transfer XRPL XLS-33 Token with specified issuance ID.
                    (https://xrpl.org/docs/concepts/tokens/fungible-tokens/multi-purpose-tokens
                  title: XRPL XLS-33 Token
            examples:
              Native:
                value:
                  kind: Native
                  to: "0xe5a2ebc128e262ab1e3bd02bffbe16911adfbffb"
                  amount: "1"
              Asa:
                value:
                  kind: Asa
                  assetId: "10458941"
                  to: CJLKQWNTSQU64F4OBJSQK35THVI4KE4QIT3KEYB4CRBHQAIMO2CD6JWBCY
                  amount: "1"
              Cardano Asset:
                description: Transfer Cardano assets following [Mary
                  update](https://docs.cardano.org/about-cardano/evolution/upgrades/mary)
                value:
                  kind: Asset
                  assetId: c003c63129289a15b2d87216ce7366ea1832cfb9fc967f524ff1a8b564666e73636f696e
                  to: addr_test1vqucg65d0c2fmjexgeenwz4acajyfxj8qqewu9xl5vmq32casygkx
                  amount: "1"
              Cip56:
                value:
                  kind: Cip56
                  instrumentAdmin: dfnsdev1::12209b43bea8836d8cb65f3e05515f44b19daf1cf9110096e407c50fb7134e0823ea
                  instrumentId: DfnsToken2
                  to: dfns1::122035ead564c650e3051c6bad8e01f319b9db0acbfd2e0acf1c05baebcef16cb468
                  amount: "100000000000"
              Cis2:
                value:
                  kind: Cis2
                  tokenAddress: 33ojRvaXs8J2
                  to: 4HhAcToZs6rtxGcgsBRS3VcjeAECPTTSTFVUKS6rBSVEZAPL6d
                  amount: "3"
              Coin:
                value:
                  kind: Coin
                  coin: 0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC
                  to: "0x1d9c96adb0eda0b3beca44ed89143444b4147b30f06eef7bfc39cbbff848f6e5"
                  amount: "1"
              Erc20:
                value:
                  kind: Erc20
                  contract: "0x6f14c02fc1f78322cfd7d707ab90f18bad3b54f5"
                  to: "0xe5a2ebc128e262ab1e3bd02bffbe16911adfbffb"
                  amount: "1"
              Erc20 Fee Sponsor:
                value:
                  kind: Erc20
                  contract: "0xF56636F7eD43068BEbe9D5Dc7486e70D10bCa5ac"
                  to: "0xe5a2ebc128e262ab1e3bd02bffbe16911adfbffb"
                  amount: "1000000000000000000"
                  feeSponsorId: fs-5c47l-bp7f9-82n9raruj5n3spbe
              Erc721:
                value:
                  kind: Erc721
                  contract: "0xc98f6a0670de5029faf44db6c35d935d534708cf"
                  to: "0xe5a2ebc128e262ab1e3bd02bffbe16911adfbffb"
                  tokenId: "1"
              Erc7984:
                value:
                  kind: Erc7984
                  contract: "0x593E77e7E2bEe748aa27942E1f2069b5B6902625"
                  to: "0xe5a2ebc128e262ab1e3bd02bffbe16911adfbffb"
                  amount: "1000000"
              Native Fee Sponsor:
                value:
                  kind: Native
                  to: "0xe5a2ebc128e262ab1e3bd02bffbe16911adfbffb"
                  amount: "1"
                  feeSponsorId: fs-5c47l-bp7f9-82n9raruj5n3spbe
              Native Offer:
                description: Set `offer` field to `true` to create a transfer offer. Currently
                  only supported on Canton.
                value:
                  kind: Native
                  to: dfns1::122035ead564c650e3051c6bad8e01f319b9db0acbfd2e0acf1c05baebcef16cb468
                  amount: "100000000000"
                  offer: true
              Cis7:
                value:
                  kind: Cis7
                  tokenId: USDR
                  to: 4HhAcToZs6rtxGcgsBRS3VcjeAECPTTSTFVUKS6rBSVEZAPL6d
                  amount: "1000000"
              Sep41:
                value:
                  kind: Sep41
                  issuer: GCIQLRAXSY4FDEMCEPOGQICBZKJZBRZURKSD75BFKASMFUKYMFAUQVQ5
                  assetCode: Dfns
                  to: GCVGVFCH2ECV2KIHJ46Q5NPFMTO5RAD3KGRJ3ZBHAZ37EMMAL7DOXXRS
                  amount: "1"
              Sep41 Fee Sponsor:
                value:
                  kind: Sep41
                  issuer: GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5
                  assetCode: USDC
                  to: GC32HQJNYDEMOSFLA5JFW4AREK4IXV4PMAGHMNBNE7ZF4X4SIRGN5ACC
                  amount: "1"
                  feeSponsorId: fs-43hcm-1pa06-99i97tj9srfnnlla
              Snip2:
                description: Transfer fungible tokens that implement the SNIP-2 (ERC-20-like)
                  specification on Starknet
                value:
                  kind: Snip2
                  contract: "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7"
                  to: "0x00a7f1280ab53c49cb06878ba23496359bd94f2d786baee710ec1f34acd40a0a"
                  amount: "1000000000000000000"
              Snip3:
                description: Transfer non-fungible tokens that implement the SNIP-3
                  (ERC-721-like) specification on Starknet
                value:
                  kind: Snip3
                  contract: "0x0367b438f8b77137bdeccf457676677e134c82c92f9580eda85df4f61236c101"
                  to: "0x00a7f1280ab53c49cb06878ba23496359bd94f2d786baee710ec1f34acd40a0a"
                  tokenId: "1"
              Spl:
                value:
                  kind: Spl
                  mint: BhkGzPPoadnw1sAymCj2zNH3JuBe6Lk68hNAcFNhMGeH
                  to: 3U6stgsD1FmA7o3omUguritCU8iWmUM7Rs6KqAHHxHVZ
                  amount: "1"
              Tep74:
                value:
                  kind: Tep74
                  master: kQBFAGo2Af6omLixtgsqqte_QXpZfjbEe8VfsqW_cWLyFz-h
                  to: 0QAWf1Hx6ZFX6-IQ2zsZTthHWOMNQHmoKFbuhQRvV3F_b3yd
                  amount: "1"
              Trc10:
                value:
                  kind: Trc10
                  tokenId: "1005273"
                  to: TADDx31pdCFfp3XrYxp6fQGbRxriYFLTrx
                  amount: "1"
              Trc721:
                value:
                  kind: Trc721
                  contract: TKgnDMWHYmwH24REe9XnrnwcNCvtb53n8Q
                  to: TADDx31pdCFfp3XrYxp6fQGbRxriYFLTrx
                  tokenId: "0"
              Iou:
                value:
                  kind: Iou
                  currency: USD
                  issuer: rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq
                  to: rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe
                  amount: "1000000"
              Xls33:
                value:
                  kind: Xls33
                  issuanceId: ABCDEF123456789
                  to: rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe
                  amount: "1000000"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransferRequest"
  /wallets/{walletId}/tags:
    put:
      summary: Tag Wallet
      tags:
        - Wallets
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Add a [Tag](https://docs.dfns.co/api-reference/wallets/tags) to a wallet.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Tags:Add`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: walletId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                tags:
                  type: array
                  items:
                    type: string
                    pattern: ^[a-zA-Z0-9_.:/+-]{1,100}$
                    description: Wallet Tag.
                  minItems: 1
                  maxItems: 10
              required:
                - tags
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties: {}
    delete:
      summary: Untag Wallet
      tags:
        - Wallets
      security:
        - authenticationToken: []
          userActionSignature: []
      description: "Removes the specified tags from a wallet. "
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Tags:Delete`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: walletId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                tags:
                  type: array
                  items:
                    type: string
                    pattern: ^[a-zA-Z0-9_.:/+-]{1,100}$
                    description: Wallet Tag.
                  maxItems: 10
                  description: List of tags.
              required:
                - tags
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties: {}
  /wallets/{walletId}/offers/{offerId}:
    get:
      summary: Get Offer
      tags:
        - Wallets
      security:
        - authenticationToken: []
      description: Retrieve information about a specific offer received on your wallet.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Offers:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet id.
          required: true
          description: Wallet id.
          name: walletId
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^offer-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
            description: Offer id.
          required: true
          description: Offer id.
          name: offerId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Offer"
  /wallets/{walletId}/offers:
    get:
      summary: List Offers
      tags:
        - Wallets
      security:
        - authenticationToken: []
      description: List all offers received on a specific wallet.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Offers:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet id.
          required: true
          description: Wallet id.
          name: walletId
          in: path
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/Offer"
                    description: Current page items.
                  nextPageToken:
                    type: string
                    description: token to use as `paginationToken` to request the next page.
                required:
                  - items
  /wallets/{walletId}/offers/{offerId}/accept:
    put:
      summary: Accept Offer
      tags:
        - Wallets
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Accept an offer received on your wallet.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Offers:Settle`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet id.
          required: true
          description: Wallet id.
          name: walletId
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^offer-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
            description: Offer id.
          required: true
          description: Offer id.
          name: offerId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Offer"
  /wallets/{walletId}/offers/{offerId}/reject:
    put:
      summary: Reject Offer
      tags:
        - Wallets
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Reject an offer received on your wallet.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ✅ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Offers:Settle`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Wallet id.
          required: true
          description: Wallet id.
          name: walletId
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^offer-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
            description: Offer id.
          required: true
          description: Offer id.
          name: offerId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Offer"
  /wallets/all/history:
    get:
      summary: List Org Wallet History
      tags:
        - Wallets
      security:
        - authenticationToken: []
      description: Retrieve the transaction history across all wallets within a
        specified timeframe.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Wallets:Read`: Always required.
      parameters:
        - schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
            description: Maximum number of items to return.
          required: false
          description: Maximum number of items to return.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            description: Opaque token used to retrieve the next page. Returned as
              `nextPageToken` from the previous request.
          required: false
          description: Opaque token used to retrieve the next page. Returned as
            `nextPageToken` from the previous request.
          name: paginationToken
          in: query
        - schema:
            type: string
            format: date-time
            description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
              UTC). Start of the time range to query."
          required: true
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). Start of the time range to query."
          name: startTime
          in: query
        - schema:
            type: string
            format: date-time
            description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
              UTC). End of the time range to query."
          required: true
          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
            UTC). End of the time range to query."
          name: endTime
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                anyOf:
                  - type: object
                    properties:
                      orgId:
                        type: string
                      items:
                        type: array
                        items:
                          type: object
                          properties:
                            timestamp:
                              type: string
                            walletId:
                              type: string
                            network:
                              type: string
                            direction:
                              type: string
                            from:
                              type: string
                            to:
                              type: string
                            amount:
                              type: string
                            tokenId:
                              type: string
                            asset:
                              type: string
                            symbol:
                              type: string
                            decimals:
                              type: string
                            fee:
                              type: string
                            feeSymbol:
                              type: string
                            feeDecimals:
                              type: string
                            txHash:
                              type: string
                          required:
                            - timestamp
                            - walletId
                            - network
                            - direction
                            - txHash
                      nextPageToken:
                        type: string
                    required:
                      - orgId
                      - items
                  - type: string
  /webhooks:
    post:
      summary: Create Webhook
      tags:
        - Webhooks
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Register a new webhook.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Webhooks:Create`: Always required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  description: Webhook url
                status:
                  type: string
                  enum:
                    - Enabled
                    - Disabled
                  description: Webhook status
                description:
                  type: string
                  maxLength: 256
                events:
                  type: array
                  items:
                    anyOf:
                      - type: string
                        enum: *a54
                        description: WebhookEventKind
                      - type: string
                        enum:
                          - "*"
                    description: WebhookEventKind
                  minItems: 1
                  description: All events this webhook is subscribed to.
              required:
                - url
                - events
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Webhook"
    get:
      summary: List Webhooks
      tags:
        - Webhooks
      security:
        - authenticationToken: []
      description: List all webhooks for the authenticated user's organization. The
        results are paginated.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Webhooks:Read`: Always required.
      parameters:
        - schema:
            type: integer
            exclusiveMinimum: 0
            maximum: 200
          required: false
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
          required: false
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      allOf:
                        - $ref: "#/components/schemas/Webhook"
                        - properties:
                            id:
                              type: string
                              description: Webhook ID
                            url:
                              type: string
                              description: Webhook url
                            events:
                              type: array
                              items:
                                anyOf:
                                  - type: string
                                    enum: *a54
                                    description: WebhookEventKind
                                  - type: string
                                    enum:
                                      - "*"
                                description: WebhookEventKind
                              description: All events this webhook is subscribed to.
                            status:
                              type: string
                              enum:
                                - Enabled
                                - Disabled
                              description: Webhook status
                            description:
                              type: string
                              description: Short description this webhook's purpose
                            dateCreated:
                              type: string
                              description: Date when webhook was created
                            dateUpdated:
                              type: string
                              description: Date when webhook was last updated
                          required:
                            - id
                            - url
                            - events
                            - status
                            - dateCreated
                            - dateUpdated
                  nextPageToken:
                    type: string
                required:
                  - items
                additionalProperties: false
  /webhooks/{webhookId}:
    delete:
      summary: Delete Webhook
      tags:
        - Webhooks
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Deletes an existing webhook registration.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Webhooks:Delete`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: webhookId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  deleted:
                    type: boolean
                    enum:
                      - true
                required:
                  - deleted
    get:
      summary: Get Webhook
      tags:
        - Webhooks
      security:
        - authenticationToken: []
      description: Retrieve information about a specific webhook.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Webhooks:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: webhookId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/Webhook"
                  - properties:
                      id:
                        type: string
                        description: Webhook ID
                      url:
                        type: string
                        description: Webhook url
                      events:
                        type: array
                        items:
                          anyOf:
                            - type: string
                              enum: *a54
                              description: WebhookEventKind
                            - type: string
                              enum:
                                - "*"
                          description: WebhookEventKind
                        description: All events this webhook is subscribed to.
                      status:
                        type: string
                        enum:
                          - Enabled
                          - Disabled
                        description: Webhook status
                      description:
                        type: string
                        description: Short description this webhook's purpose
                      dateCreated:
                        type: string
                        description: Date when webhook was created
                      dateUpdated:
                        type: string
                        description: Date when webhook was last updated
                    required:
                      - id
                      - url
                      - events
                      - status
                      - dateCreated
                      - dateUpdated
    put:
      summary: Update Webhook
      tags:
        - Webhooks
      security:
        - authenticationToken: []
          userActionSignature: []
      description: Update the definition of an existing webhook.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Webhooks:Update`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: webhookId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  description: Webhook url
                description:
                  type: string
                  maxLength: 256
                events:
                  type: array
                  items:
                    anyOf:
                      - type: string
                        enum: *a54
                        description: WebhookEventKind
                      - type: string
                        enum:
                          - "*"
                    description: WebhookEventKind
                  minItems: 1
                  description: All events this webhook is subscribed to.
                status:
                  type: string
                  enum:
                    - Enabled
                    - Disabled
                  description: Webhook status
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/Webhook"
                  - properties:
                      id:
                        type: string
                        description: Webhook ID
                      url:
                        type: string
                        description: Webhook url
                      events:
                        type: array
                        items:
                          anyOf:
                            - type: string
                              enum: *a54
                              description: WebhookEventKind
                            - type: string
                              enum:
                                - "*"
                          description: WebhookEventKind
                        description: All events this webhook is subscribed to.
                      status:
                        type: string
                        enum:
                          - Enabled
                          - Disabled
                        description: Webhook status
                      description:
                        type: string
                        description: Short description this webhook's purpose
                      dateCreated:
                        type: string
                        description: Date when webhook was created
                      dateUpdated:
                        type: string
                        description: Date when webhook was last updated
                    required:
                      - id
                      - url
                      - events
                      - status
                      - dateCreated
                      - dateUpdated
  /webhooks/{webhookId}/ping:
    post:
      summary: Ping Webhook
      tags:
        - Webhooks
      security:
        - authenticationToken: []
          userActionSignature: []
      description: This endpoint is meant for webhook setup and troubleshooting.
        Calling the endpoint will trigger a fake test event that will be pushed
        to the webhook URL. The fake event will not be saved and not appear in
        further requests to Webhook Events.
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Webhooks:Ping`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: webhookId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  error:
                    type: string
                required:
                  - status
                additionalProperties: false
  /webhooks/{webhookId}/events/{webhookEventId}:
    get:
      summary: Get Webhook Event
      tags:
        - Webhooks
      security:
        - authenticationToken: []
      description: >-
        Retrieve a specific webhook event details by its ID.
          
        <Warning>

        We only keep a trace of those Webhook Events in our system for a
        **retention period of 31 days**. Past that, they are discarded, so you
        cannot see them using [List Webhook
        Events](https://docs.dfns.co/api-reference/webhooks/list-webhook-events)
        or [Get Webhook
        Event](https://docs.dfns.co/api-reference/webhooks/get-webhook-event)
        endpoints.

        </Warning>
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Webhooks:Events:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^wh-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          required: true
          name: webhookId
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^whe-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
          required: true
          name: webhookEventId
          in: path
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebhookEvent"
  /webhooks/{webhookId}/events:
    get:
      summary: List Webhook Events
      tags:
        - Webhooks
      security:
        - authenticationToken: []
      description: >-
        Lists all events for a given webhook. 



        <Warning>

        We only keep a trace of those Webhook Events in our system for a
        **retention period of 31 days**. Past that, they are discarded, so you
        cannot see them using [List Webhook
        Events](https://docs.dfns.co/api-reference/webhooks/list-webhook-events)
        or [Get Webhook
        Event](https://docs.dfns.co/api-reference/webhooks/get-webhook-event)
        endpoints.

        </Warning>
      x-mint:
        content: |-
          #### Authentication

          ✅ Organization User (`CustomerEmployee`)    
          ❌ Delegated User (`EndUser`)    
          ✅ Service Account

          #### Required Permissions

          `Webhooks:Events:Read`: Always required.
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: webhookId
          in: path
        - schema:
            type: string
            enum: *a54
          required: false
          name: kind
          in: query
        - schema:
            type: string
            enum:
              - "true"
              - "false"
          required: false
          name: deliveryFailed
          in: query
        - schema:
            type: integer
            exclusiveMinimum: 0
            maximum: 200
          required: false
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
          required: false
          name: paginationToken
          in: query
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/WebhookEvent"
                  nextPageToken:
                    type: string
                required:
                  - items
webhooks:
  payout.action.required:
    post:
      summary: Payout Action Required
      description: A payout requires an action to be taken (e.g., confirmation)
      tags:
        - Payouts
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - payout.action.required
                    data:
                      type: object
                      properties:
                        actionKind:
                          type: string
                          enum:
                            - Confirmation
                          description: The kind of action required.
                        payout:
                          oneOf:
                            - type: object
                              properties:
                                id:
                                  type: string
                                  minLength: 1
                                  maxLength: 64
                                  pattern: ^pyt-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                  description: Payout id.
                                  example: pyt-4ihii-9lonb-tmhjo9bor4odmb5h
                                walletId:
                                  type: string
                                  minLength: 1
                                  maxLength: 64
                                  pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                  description: The wallet ID used for the payout.
                                  example: wa-5pfuu-9euek-h0odgb6snva8ph3k
                                fiatCurrency:
                                  type: string
                                  description: ISO-4217 fiat currency code for the payout.
                                asset:
                                  oneOf:
                                    - type: object
                                      properties:
                                        kind:
                                          type: string
                                          enum:
                                            - Erc20
                                        amount:
                                          type: string
                                          pattern: ^\d+$
                                          description: The amount of the asset to be paid out in minimum denomination.
                                        contract:
                                          type: string
                                          description: The ERC-20 contract address.
                                        network:
                                          $ref: "#/components/schemas/Network"
                                        metadata:
                                          type: object
                                          properties:
                                            name:
                                              type: string
                                              description: The display name of the token.
                                            symbol:
                                              type: string
                                              description: The ticker symbol of the token.
                                            decimals:
                                              type: integer
                                              description: Number of decimals used by the token.
                                            verified:
                                              type: boolean
                                              description: Whether the token is verified by DFNS as legitimate.
                                          required:
                                            - decimals
                                      required:
                                        - kind
                                        - amount
                                        - contract
                                        - network
                                      title: ERC-20 Asset
                                    - type: object
                                      properties:
                                        kind:
                                          type: string
                                          enum: *a61
                                        amount:
                                          type: string
                                          pattern: ^\d+$
                                          description: The amount of the asset to be paid out in minimum denomination.
                                        mint:
                                          type: string
                                          description: The token mint address.
                                        network:
                                          $ref: "#/components/schemas/Network"
                                        metadata:
                                          type: object
                                          properties:
                                            name:
                                              type: string
                                              description: The display name of the token.
                                            symbol:
                                              type: string
                                              description: The ticker symbol of the token.
                                            decimals:
                                              type: integer
                                              description: Number of decimals used by the token.
                                            verified:
                                              type: boolean
                                              description: Whether the token is verified by DFNS as legitimate.
                                          required:
                                            - decimals
                                      required:
                                        - kind
                                        - amount
                                        - mint
                                        - network
                                      title: SPL/SPL-2022 Asset
                                  description: The asset being paid out, including token descriptor and metadata.
                                externalId:
                                  type: string
                                  description: Optional external identifier for idempotency.
                                status:
                                  type: string
                                  enum:
                                    - Processing
                                    - Completed
                                    - Failed
                                    - Rejected
                                    - Expired
                                    - Canceled
                                  description: The current status of the payout.
                                requester:
                                  allOf:
                                    - $ref: "#/components/schemas/Requester"
                                    - description: The user/token that initiated the payout.
                                dateCreated:
                                  type: string
                                  format: date-time
                                  description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                    UTC). ISO 8601 timestamp when the payout was
                                    created."
                                  example: 2023-04-14T20:41:28.715Z
                                dateFinalized:
                                  type: string
                                  format: date-time
                                  description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                    UTC). ISO 8601 timestamp when the payout was
                                    finalized."
                                  example: 2023-04-14T20:41:28.715Z
                                provider:
                                  type: string
                                  enum:
                                    - Borderless
                                data:
                                  type: object
                                  properties:
                                    borderlessAccountId:
                                      type: string
                                      description: The Borderless account ID associated with the payout.
                                    paymentInstructionsId:
                                      type: string
                                      description: The Borderless payment instructions ID linked to the destination
                                        bank account.
                                    paymentPurpose:
                                      type: string
                                      enum:
                                        - salary payment
                                        - personal remittance
                                        - rent payment
                                        - property purchase
                                        - owned account abroad
                                        - advertising expenses
                                        - advisory fees
                                        - business insurance
                                        - construction
                                        - delivery fees
                                        - education
                                        - exports
                                        - donation
                                        - hotel
                                        - loan payment
                                        - maintenance expenses
                                        - medical expense
                                        - office expenses
                                        - royalty fees
                                        - service charge
                                        - shares investment
                                        - tax payment
                                        - transportation fees
                                        - travel
                                        - utility bills
                                        - other
                                      description: The purpose of the withdrawal payment.
                                    dateConfirmed:
                                      type: string
                                      format: date-time
                                      description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                        UTC). ISO 8601 timestamp when the
                                        settlement was confirmed via Action
                                        Confirm."
                                      example: 2023-04-14T20:41:28.715Z
                                    dateCanceled:
                                      type: string
                                      format: date-time
                                      description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                        UTC). ISO 8601 timestamp when the
                                        settlement was canceled via Action
                                        Cancel."
                                      example: 2023-04-14T20:41:28.715Z
                                    executionStatus:
                                      type: string
                                      enum:
                                        - Initializing
                                        - AwaitingPayoutInstructions
                                        - AwaitingPayoutConfirmation
                                        - SubmittingPayoutTransfer
                                        - PendingPolicyApproval
                                        - DepositProcessing
                                        - DisbursementPending
                                        - Completed
                                        - Rejected
                                        - Failed
                                        - Expired
                                        - Canceled
                                      description: The Borderless execution status.
                                    statusReason:
                                      type: string
                                      description: Reason for the current status, primarily for failure cases.
                                    country:
                                      type: string
                                      description: ISO-3166 Alpha-2 country code for the payout destination.
                                    borderlessPayoutId:
                                      type: string
                                      description: The ID assigned by Borderless when the payout is created.
                                    depositAddress:
                                      type: string
                                      description: The on-chain address to remit funds to.
                                    transferId:
                                      type: string
                                      description: The Dfns transfer ID used to settle the payout.
                                    transactionHash:
                                      type: string
                                      description: The blockchain transaction hash once the transfer is confirmed.
                                    dateDepositConfirmed:
                                      type: string
                                      format: date-time
                                      description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                        UTC). ISO 8601 timestamp when the
                                        on-chain deposit was confirmed."
                                      example: 2023-04-14T20:41:28.715Z
                                    datePayoutConfirmed:
                                      type: string
                                      format: date-time
                                      description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                        UTC). ISO 8601 timestamp when Borderless
                                        verified fiat has settled."
                                      example: 2023-04-14T20:41:28.715Z
                                  required:
                                    - borderlessAccountId
                                    - paymentInstructionsId
                                    - paymentPurpose
                                    - executionStatus
                                    - country
                                  description: Borderless provider-specific payout data.
                              required:
                                - id
                                - walletId
                                - fiatCurrency
                                - asset
                                - status
                                - requester
                                - dateCreated
                                - provider
                                - data
                              title: Borderless Payout
                      required:
                        - actionKind
                        - payout
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  swap.completed:
    post:
      summary: Swap Completed
      description: A swap has completed successfully
      tags:
        - Swaps
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - swap.completed
                    data:
                      type: object
                      properties:
                        orgId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^or-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: Organization id.
                          example: or-30tnh-itmjs-s235s5ontr3r23h2
                        swap:
                          $ref: "#/components/schemas/Swap"
                      required:
                        - orgId
                        - swap
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  swap.failed:
    post:
      summary: Swap Failed
      description: A Swap request has failed to process
      tags:
        - Swaps
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - swap.failed
                    data:
                      type: object
                      properties:
                        orgId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^or-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: Organization id.
                          example: or-30tnh-itmjs-s235s5ontr3r23h2
                        swap:
                          $ref: "#/components/schemas/Swap"
                      required:
                        - orgId
                        - swap
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.created:
    post:
      summary: Wallet Created
      description: A new wallet has been created
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.created
                    data:
                      type: object
                      properties:
                        wallet:
                          $ref: "#/components/schemas/Wallet"
                      required:
                        - wallet
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.activated:
    post:
      summary: Wallet Activated
      description: A new wallet has been activated
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.activated
                    data:
                      type: object
                      properties:
                        wallet:
                          $ref: "#/components/schemas/Wallet"
                      required:
                        - wallet
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.delegated:
    post:
      summary: Wallet Delegated
      description: A wallet was delegated to an End User
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.delegated
                    data:
                      type: object
                      properties:
                        wallet:
                          $ref: "#/components/schemas/Wallet"
                      required:
                        - wallet
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.tags.modified:
    post:
      summary: Wallet Tags Modified
      description: Tags of a wallet were modified
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.tags.modified
                    data:
                      type: object
                      properties:
                        wallet:
                          $ref: "#/components/schemas/Wallet"
                        tagsRemoved:
                          type: array
                          items:
                            type: string
                        tagsAdded:
                          type: array
                          items:
                            type: string
                      required:
                        - wallet
                        - tagsRemoved
                        - tagsAdded
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.exported:
    post:
      summary: Wallet Exported
      description: A wallet was exported
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.exported
                    data:
                      type: object
                      properties:
                        wallet:
                          $ref: "#/components/schemas/Wallet"
                      required:
                        - wallet
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.blockchainevent.detected:
    post:
      summary: Blockchain Event Detected
      description: "A wallet event has been detected on chain (e.g.: a deposit). Note:
        This is only available for [Tier-1
        chains](https://docs.dfns.co/d/api-docs/wallets#tier-1-vs-tier-2-suppor\
        t)."
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.blockchainevent.detected
                    data:
                      type: object
                      properties:
                        blockchainEvent:
                          $ref: "#/components/schemas/BlockchainEvent"
                        wallet:
                          $ref: "#/components/schemas/Wallet"
                      required:
                        - blockchainEvent
                        - wallet
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.offer.received:
    post:
      summary: Offer Received
      description: A new offer was made to a wallet.
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.offer.received
                    data:
                      type: object
                      properties:
                        offer:
                          $ref: "#/components/schemas/Offer"
                      required:
                        - offer
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.offer.accepted:
    post:
      summary: Offer Accepted
      description: The offer was accepted and this settlement was confirmed on chain.
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.offer.accepted
                    data:
                      type: object
                      properties:
                        offer:
                          $ref: "#/components/schemas/Offer"
                      required:
                        - offer
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.offer.rejected:
    post:
      summary: Offer Rejected
      description: The offer was rejected and this settlement was confirmed on chain.
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.offer.rejected
                    data:
                      type: object
                      properties:
                        offer:
                          $ref: "#/components/schemas/Offer"
                      required:
                        - offer
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.offer.withdrawn:
    post:
      summary: Offer Withdrawn
      description: The offer was withdrawn by the sender and this settlement was
        confirmed on chain.
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.offer.withdrawn
                    data:
                      type: object
                      properties:
                        offer:
                          $ref: "#/components/schemas/Offer"
                      required:
                        - offer
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.transfer.requested:
    post:
      summary: Transfer Requested
      description: A wallet transfer request has been created
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.transfer.requested
                    data:
                      type: object
                      properties:
                        transferRequest:
                          $ref: "#/components/schemas/TransferRequest"
                      required:
                        - transferRequest
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.transfer.failed:
    post:
      summary: Transfer Failed
      description: A wallet transfer request has failed to process
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.transfer.failed
                    data:
                      type: object
                      properties:
                        transferRequest:
                          $ref: "#/components/schemas/TransferRequest"
                      required:
                        - transferRequest
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.transfer.rejected:
    post:
      summary: Transfer Rejected
      description: A wallet transfer request with a policy approval has been rejected
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.transfer.rejected
                    data:
                      type: object
                      properties:
                        transferRequest:
                          $ref: "#/components/schemas/TransferRequest"
                      required:
                        - transferRequest
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.transfer.broadcasted:
    post:
      summary: Transfer Broadcasted
      description: A wallet transfer request has been submitted to the mempool
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.transfer.broadcasted
                    data:
                      type: object
                      properties:
                        transferRequest:
                          $ref: "#/components/schemas/TransferRequest"
                      required:
                        - transferRequest
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.transfer.confirmed:
    post:
      summary: Transfer Confirmed
      description: A wallet transfer request has been confirmed on chain
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.transfer.confirmed
                    data:
                      type: object
                      properties:
                        transferRequest:
                          $ref: "#/components/schemas/TransferRequest"
                      required:
                        - transferRequest
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.transaction.broadcasted:
    post:
      summary: Transaction Broadcasted
      description: A transaction request has been successfully written to the mempool.
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.transaction.broadcasted
                    data:
                      type: object
                      properties:
                        transactionRequest:
                          $ref: "#/components/schemas/TransactionRequest"
                      required:
                        - transactionRequest
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.transaction.confirmed:
    post:
      summary: Transaction Confirmed
      description: A transaction request has been confirmed on-chain by our indexing
        pipeline.
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.transaction.confirmed
                    data:
                      type: object
                      properties:
                        transactionRequest:
                          $ref: "#/components/schemas/TransactionRequest"
                      required:
                        - transactionRequest
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.transaction.failed:
    post:
      summary: Transaction Failed
      description: A transaction request failed. Indicates either a system failure to
        complete the request or the transaction failed on chain.
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.transaction.failed
                    data:
                      type: object
                      properties:
                        transactionRequest:
                          $ref: "#/components/schemas/TransactionRequest"
                      required:
                        - transactionRequest
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.transaction.rejected:
    post:
      summary: Transaction Rejected
      description: A transaction request has been rejected by a policy approval action.
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.transaction.rejected
                    data:
                      type: object
                      properties:
                        transactionRequest:
                          $ref: "#/components/schemas/TransactionRequest"
                      required:
                        - transactionRequest
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.transaction.requested:
    post:
      summary: Transaction Requested
      description: A transaction signature and broadcast using one of your wallets has
        been requested.
      tags:
        - Wallets
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.transaction.requested
                    data:
                      type: object
                      properties:
                        transactionRequest:
                          $ref: "#/components/schemas/TransactionRequest"
                      required:
                        - transactionRequest
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  key.created:
    post:
      summary: Key Created
      description: A new key has been created
      tags:
        - Keys
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - key.created
                    data:
                      type: object
                      properties:
                        key:
                          $ref: "#/components/schemas/Key"
                      required:
                        - key
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  key.delegated:
    post:
      summary: Key Delegated
      description: A key was delegated to an End User
      tags:
        - Keys
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - key.delegated
                    data:
                      type: object
                      properties:
                        key:
                          $ref: "#/components/schemas/Key"
                      required:
                        - key
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  key.deleted:
    post:
      summary: Key Deleted
      description: A key has been deleted
      tags:
        - Keys
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - key.deleted
                    data:
                      type: object
                      properties:
                        key:
                          $ref: "#/components/schemas/Key"
                        wallets:
                          type: array
                          items:
                            $ref: "#/components/schemas/Wallet"
                      required:
                        - key
                        - wallets
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  key.exported:
    post:
      summary: Key Exported
      description: A key was exported
      tags:
        - Keys
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - key.exported
                    data:
                      type: object
                      properties:
                        key:
                          $ref: "#/components/schemas/Key"
                      required:
                        - key
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.signature.requested:
    post:
      summary: Signature Requested
      description: A signature using one of your keys has been requested.
      tags:
        - Keys
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.signature.requested
                    data:
                      type: object
                      properties:
                        signatureRequest:
                          $ref: "#/components/schemas/SignatureRequest"
                      required:
                        - signatureRequest
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.signature.failed:
    post:
      summary: Signature Failed
      description: A signature request failed.
      tags:
        - Keys
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.signature.failed
                    data:
                      type: object
                      properties:
                        signatureRequest:
                          $ref: "#/components/schemas/SignatureRequest"
                      required:
                        - signatureRequest
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.signature.rejected:
    post:
      summary: Signature Rejected
      description: A signature request has been rejected by a policy approval action.
      tags:
        - Keys
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.signature.rejected
                    data:
                      type: object
                      properties:
                        signatureRequest:
                          $ref: "#/components/schemas/SignatureRequest"
                      required:
                        - signatureRequest
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  wallet.signature.signed:
    post:
      summary: Signature Complete
      description: "A signature request has been completed. The signature is available. "
      tags:
        - Keys
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - wallet.signature.signed
                    data:
                      type: object
                      properties:
                        signatureRequest:
                          $ref: "#/components/schemas/SignatureRequest"
                      required:
                        - signatureRequest
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  policy.activity.resolved:
    post:
      summary: Policy Activity Resolved
      description: A policy has been fulfilled.
      tags:
        - Policies
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - policy.activity.resolved
                    data:
                      type: object
                      properties:
                        activityId:
                          type: string
                        status:
                          anyOf:
                            - type: string
                              enum:
                                - Cleared
                            - type: string
                              enum:
                                - Blocked
                        activityKind:
                          type: string
                          enum:
                            - Registry:Addresses:Modify
                            - Registry:ContractSchemas:Modify
                            - Permissions:Modify
                            - Permissions:Assign
                            - Policies:Modify
                            - Wallets:Sign
                            - Wallets:IncomingTransaction
                      required:
                        - activityId
                        - status
                        - activityKind
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  policy.approval.pending:
    post:
      summary: Policy Approval Pending
      description: A new
        [Approval](https://docs.dfns.co/api-reference/policy-approvals) process
        has been created and is pending.
      tags:
        - Policies
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - policy.approval.pending
                    data:
                      type: object
                      properties:
                        approval:
                          $ref: "#/components/schemas/PolicyApproval"
                      required:
                        - approval
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  policy.approval.resolved:
    post:
      summary: Policy Approval Resolved
      description: "An [Approval](https://docs.dfns.co/api-reference/policy-approvals)
        process is finalized: it has been either approved or rejected."
      tags:
        - Policies
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - policy.approval.resolved
                    data:
                      type: object
                      properties:
                        activityId:
                          type: string
                        activityKind:
                          type: string
                          enum:
                            - Registry:Addresses:Modify
                            - Registry:ContractSchemas:Modify
                            - Permissions:Modify
                            - Permissions:Assign
                            - Policies:Modify
                            - Wallets:Sign
                            - Wallets:IncomingTransaction
                        status:
                          type: string
                          enum:
                            - Pending
                            - Approved
                            - Denied
                            - Expired
                      required:
                        - activityId
                        - activityKind
                        - status
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  policy.triggered:
    post:
      summary: Policy Triggered
      description: A policy got triggered upon some activity (the policy rule got
        evaluated, and it triggered).
      tags:
        - Policies
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - policy.triggered
                    data:
                      type: object
                      properties:
                        policyEvaluation:
                          type: object
                          properties:
                            id:
                              type: string
                            triggered:
                              type: boolean
                            status:
                              type: string
                              enum:
                                - Cleared
                                - Blocked
                                - Pending
                                - ApprovalRequired
                            reason:
                              type: string
                            date:
                              type: string
                            policy:
                              $ref: "#/components/schemas/Policy"
                            activity:
                              oneOf:
                                - type: object
                                  properties:
                                    kind:
                                      type: string
                                      enum:
                                        - Wallets:Sign
                                    transferRequest:
                                      $ref: "#/components/schemas/TransferRequest"
                                    transactionRequest:
                                      $ref: "#/components/schemas/TransactionRequest"
                                    signatureRequest:
                                      $ref: "#/components/schemas/SignatureRequest"
                                    swapRequest:
                                      $ref: "#/components/schemas/Swap"
                                  required:
                                    - kind
                                  description: |2
                                    
                                          A "`Wallets:Sign`" activity represents any activity which involves signing with a wallet. Currently, in our API, these can be:

                                    * a Transfer Request (created using the endpoint [Transfer Asset from Wallet](https://docs.dfns.co/api-reference/wallets/transfer-asset))
                                    * a Transaction Request (created using the endpoint [Broadcast Transaction from Wallet](https://docs.dfns.co/api-reference/wallets/sign-and-broadcast-transaction))
                                    * a Signature Request (created using the endpoint [Generate Signature from Wallet](https://docs.dfns.co/api-reference/keys/generate-signature))
                                  title: Wallets:Sign
                                - type: object
                                  properties:
                                    kind:
                                      type: string
                                      enum:
                                        - Wallets:IncomingTransaction
                                    blockchainEvent:
                                      $ref: "#/components/schemas/BlockchainEvent"
                                  required:
                                    - kind
                                    - blockchainEvent
                                  description: A "`Wallets:IncomingTransaction`" activity represents when our
                                    indexers detected an incoming transaction
                                    into a wallet. This activity kind has to be
                                    used with the rule kind
                                    "`ChainalysisTransactionScreening`" (see
                                    more on
                                    [Chainalysis](https://docs.dfns.co/integrations/aml-kyt/chainalysis)
                                    integration page), and the action kind
                                    "`NoAction`", meaning that no actual action
                                    will be taken as a result of the Chainalysis
                                    screening, other than notifying you through
                                    a webhook event if the policy is triggered.
                                    The reason for that, is that the incoming
                                    transaction is already on-chain, so the
                                    funds are already in the wallet, we cannot
                                    block that transfer on chain.
                                  title: Wallets:IncomingTransaction
                                - type: object
                                  properties:
                                    kind:
                                      type: string
                                      enum:
                                        - Policies:Modify
                                    changeRequest:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        requester:
                                          $ref: "#/components/schemas/ChangeRequestRequester"
                                        kind:
                                          type: string
                                          enum:
                                            - Policy
                                        operationKind:
                                          type: string
                                          enum: *a64
                                        status:
                                          type: string
                                          enum:
                                            - Applied
                                            - Failed
                                            - Pending
                                            - Rejected
                                        entityId:
                                          type: string
                                        dateCreated:
                                          type: string
                                          format: date-time
                                        dateResolved:
                                          type: string
                                          format: date-time
                                        approvalId:
                                          type: string
                                        body:
                                          $ref: "#/components/schemas/Policy"
                                      required:
                                        - id
                                        - requester
                                        - kind
                                        - operationKind
                                        - status
                                        - entityId
                                        - dateCreated
                                        - body
                                      additionalProperties: false
                                  required:
                                    - kind
                                    - changeRequest
                                  description: |2
                                    
                                          A "`Policies:Modify`" activity represents any activity which involves updating or archiving a policy. These activities are Policy change requests, created as a result of calling either:

                                    * the endpoint [Update Policy](https://docs.dfns.co/api-reference/policies/update-policy)
                                    * the endpoint [Delete Policy](https://docs.dfns.co/api-reference/policies/delete-policy)
                                  title: Policies:Modify
                                - type: object
                                  properties:
                                    kind:
                                      type: string
                                      enum:
                                        - Permissions:Modify
                                    changeRequest:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                          minLength: 1
                                          maxLength: 64
                                          pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                          description: ID of the change request.
                                          example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                                        requester:
                                          $ref: "#/components/schemas/ChangeRequestRequester"
                                        status:
                                          type: string
                                          enum:
                                            - Applied
                                            - Failed
                                            - Pending
                                            - Rejected
                                          description: Current status of the change request.
                                        entityId:
                                          type: string
                                          description: ID of the entity being changed.
                                        dateCreated:
                                          type: string
                                          format: date-time
                                          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                            UTC). Date the change request was
                                            created."
                                          example: 2023-04-14T20:41:28.715Z
                                        dateResolved:
                                          type: string
                                          format: date-time
                                          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                            UTC). Date the change request was
                                            resolved."
                                          example: 2023-04-14T20:41:28.715Z
                                        approvalId:
                                          type: string
                                          minLength: 1
                                          maxLength: 64
                                          pattern: ^ap-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                          example: ap-2a9in-tt2a1-983lho480p35ejd0
                                        kind:
                                          type: string
                                          enum:
                                            - Permission
                                        operationKind:
                                          type: string
                                          enum: *a63
                                        body:
                                          type: object
                                          properties:
                                            id:
                                              type: string
                                              minLength: 1
                                              maxLength: 64
                                              pattern: ^pm-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                              description: ID of the permission (also referred to as "role" in the dashboard).
                                              example: pm-37vj4-jkr4l-lc9945spfftkne57
                                            name:
                                              type: string
                                              description: Human-readable name of the permission (role).
                                            status:
                                              type: string
                                              enum:
                                                - Active
                                              description: Current status of the permission.
                                            operations:
                                              type: array
                                              items:
                                                type: string
                                              description: List of API operations this permission grants access to. See
                                                [Permissions
                                                List](https://docs.dfns.co/core-concepts/roles-and-permissions#list-of-permissions)
                                                for available operations.
                                            isImmutable:
                                              type: boolean
                                              description: Whether this permission is system-managed and cannot be modified.
                                            isArchived:
                                              type: boolean
                                              description: Whether this permission has been archived (soft-deleted).
                                          required:
                                            - id
                                            - name
                                            - status
                                            - operations
                                            - isImmutable
                                            - isArchived
                                          additionalProperties: false
                                      required:
                                        - id
                                        - requester
                                        - status
                                        - entityId
                                        - dateCreated
                                        - kind
                                        - operationKind
                                        - body
                                      additionalProperties: false
                                  required:
                                    - kind
                                    - changeRequest
                                  description: |2
                                    
                                          A "`Permissions:Modify`" activity represents any activity which involves updating or archiving a permission. These activities are Permission change requests, created as a result of calling either:

                                    * the endpoint [Update Permission](https://docs.dfns.co/api-reference/permissions/update-permission)
                                    * the endpoint [Delete Permission](https://docs.dfns.co/api-reference/permissions/delete-permission)
                                  title: Permissions:Modify
                                - type: object
                                  properties:
                                    kind:
                                      type: string
                                      enum:
                                        - Permissions:Assign
                                    changeRequest:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                          minLength: 1
                                          maxLength: 64
                                          pattern: ^cr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                          description: ID of the change request.
                                          example: cr-6uunn-bm6ja-f6rmod5kqrk5rbel
                                        requester:
                                          $ref: "#/components/schemas/ChangeRequestRequester"
                                        status:
                                          type: string
                                          enum:
                                            - Applied
                                            - Failed
                                            - Pending
                                            - Rejected
                                          description: Current status of the change request.
                                        entityId:
                                          type: string
                                          description: ID of the entity being changed.
                                        dateCreated:
                                          type: string
                                          format: date-time
                                          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                            UTC). Date the change request was
                                            created."
                                          example: 2023-04-14T20:41:28.715Z
                                        dateResolved:
                                          type: string
                                          format: date-time
                                          description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date (must be
                                            UTC). Date the change request was
                                            resolved."
                                          example: 2023-04-14T20:41:28.715Z
                                        approvalId:
                                          type: string
                                          minLength: 1
                                          maxLength: 64
                                          pattern: ^ap-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                          example: ap-2a9in-tt2a1-983lho480p35ejd0
                                        kind:
                                          type: string
                                          enum:
                                            - Assignment
                                        operationKind:
                                          type: string
                                          enum: *a62
                                        body:
                                          type: object
                                          properties:
                                            id:
                                              type: string
                                              minLength: 1
                                              maxLength: 64
                                              pattern: ^as-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                              description: ID of the permission assignment.
                                              example: as-1vcmc-qrek0-6b4vii9pln60907e
                                            permissionId:
                                              type: string
                                              minLength: 1
                                              maxLength: 64
                                              pattern: ^pm-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                              description: ID of the permission (also referred to as "role" in the dashboard).
                                              example: pm-37vj4-jkr4l-lc9945spfftkne57
                                            identityId:
                                              type: string
                                              description: ID of the identity the permission is assigned to. Can be a user ID,
                                                a service account ID, or a
                                                personal access token (PAT) ID.
                                            isImmutable:
                                              type: boolean
                                              description: Whether this assignment is system-managed and cannot be modified.
                                          required:
                                            - id
                                            - permissionId
                                            - identityId
                                            - isImmutable
                                          additionalProperties: false
                                      required:
                                        - id
                                        - requester
                                        - status
                                        - entityId
                                        - dateCreated
                                        - kind
                                        - operationKind
                                        - body
                                      additionalProperties: false
                                  required:
                                    - kind
                                    - changeRequest
                                  description: |2
                                    
                                          A "`Permissions:Assign`" activity represents any activity which involves assigning a permission (or revoking it, aka "deleting a permission assignment"). These activities are Assignment change requests, created as a result of calling either:

                                    * the endpoint [Assign Permission](https://docs.dfns.co/api-reference/permissions/assign-permission)
                                    * the endpoint [Revoke Permission](https://docs.dfns.co/api-reference/permissions/revoke-permission)
                                  title: Permissions:Assign
                                - type: object
                                  properties:
                                    kind:
                                      type: string
                                      enum:
                                        - Registry:Addresses:Modify
                                    changeRequest:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        kind:
                                          type: string
                                          enum:
                                            - Alias
                                        body:
                                          oneOf:
                                            - type: object
                                              properties:
                                                entityId:
                                                  type: string
                                                alias:
                                                  type: string
                                                operationKind:
                                                  type: string
                                                  enum:
                                                    - Create
                                                description:
                                                  type: string
                                                  minLength: 1
                                                  maxLength: 200
                                                values:
                                                  type: object
                                                  properties:
                                                    add:
                                                      type: array
                                                      items:
                                                        type: object
                                                        properties:
                                                          network:
                                                            $ref: "#/components/schemas/Network"
                                                          memo:
                                                            type: string
                                                            minLength: 1
                                                            maxLength: 64
                                                            pattern: ^[a-zA-Z0-9]+$
                                                          value:
                                                            type: string
                                                            minLength: 1
                                                            maxLength: 300
                                                            pattern: ^[a-zA-Z0-9_:-]+$
                                                        required:
                                                          - network
                                                          - value
                                                  required:
                                                    - add
                                              required:
                                                - entityId
                                                - alias
                                                - operationKind
                                                - values
                                              additionalProperties: false
                                              title: Alias creation
                                            - type: object
                                              properties:
                                                entityId:
                                                  type: string
                                                alias:
                                                  type: string
                                                operationKind:
                                                  type: string
                                                  enum:
                                                    - Update
                                                description:
                                                  type:
                                                    - string
                                                    - "null"
                                                  minLength: 1
                                                  maxLength: 200
                                                values:
                                                  type: object
                                                  properties:
                                                    add:
                                                      type: array
                                                      items:
                                                        type: object
                                                        properties:
                                                          network:
                                                            $ref: "#/components/schemas/Network"
                                                          memo:
                                                            type: string
                                                            minLength: 1
                                                            maxLength: 64
                                                            pattern: ^[a-zA-Z0-9]+$
                                                          value:
                                                            type: string
                                                            minLength: 1
                                                            maxLength: 300
                                                            pattern: ^[a-zA-Z0-9_:-]+$
                                                        required:
                                                          - network
                                                          - value
                                                    remove:
                                                      type: array
                                                      items:
                                                        type: object
                                                        properties:
                                                          network:
                                                            $ref: "#/components/schemas/Network"
                                                          memo:
                                                            type: string
                                                            minLength: 1
                                                            maxLength: 64
                                                            pattern: ^[a-zA-Z0-9]+$
                                                          value:
                                                            type: string
                                                            minLength: 1
                                                            maxLength: 300
                                                            pattern: ^[a-zA-Z0-9_:-]+$
                                                        required:
                                                          - network
                                                          - value
                                                  required:
                                                    - add
                                                    - remove
                                              required:
                                                - entityId
                                                - alias
                                                - operationKind
                                                - values
                                              additionalProperties: false
                                              title: Alias update
                                            - type: object
                                              properties:
                                                entityId:
                                                  type: string
                                                alias:
                                                  type: string
                                                operationKind:
                                                  type: string
                                                  enum:
                                                    - Delete
                                              required:
                                                - entityId
                                                - alias
                                                - operationKind
                                              title: Alias deletion
                                      required:
                                        - id
                                        - kind
                                        - body
                                  required:
                                    - kind
                                    - changeRequest
                                  description: ""
                                  title: Registry:Addresses:Modify
                                - type: object
                                  properties:
                                    kind:
                                      type: string
                                      enum:
                                        - Registry:ContractSchemas:Modify
                                    changeRequest:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        kind:
                                          type: string
                                          enum:
                                            - SmartContract
                                        operationKind:
                                          type: string
                                          enum: *a71
                                        body:
                                          type: object
                                          properties:
                                            id:
                                              type: string
                                              minLength: 1
                                              maxLength: 64
                                              pattern: ^cs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                                              example: cs-30ude-5i87r-gfrpg3fi68l2u14b
                                            name:
                                              type: string
                                              minLength: 1
                                              maxLength: 50
                                              pattern: ^[a-z0-9-]+$
                                            description:
                                              type: string
                                              minLength: 1
                                              maxLength: 200
                                            network:
                                              type: string
                                              enum: *a59
                                            address:
                                              type: string
                                              pattern: ^0x[0-9a-fA-F]{40}$
                                            schema: {}
                                          required:
                                            - id
                                            - name
                                            - network
                                            - address
                                      required:
                                        - id
                                        - kind
                                        - operationKind
                                        - body
                                  required:
                                    - kind
                                    - changeRequest
                                  description: ""
                                  title: Registry:ContractSchemas:Modify
                            context:
                              type: object
                              additionalProperties: {}
                            autoRejectDate:
                              type: string
                            autoClearDate:
                              type: string
                          required:
                            - id
                            - reason
                            - date
                            - policy
                            - activity
                            - context
                      required:
                        - policyEvaluation
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
  webhook.event.retry.triggered:
    post:
      summary: Webhook Event Retry
      description: A webhook delivery is being retried. See [Webhook Event Deliveries
        &
        Retries](https://docs.dfns.co/api-reference/webhook-events#webhook-event-deliveries-%26-retries)
        for details.
      tags:
        - Webhooks
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: "#/components/schemas/WebhookEnvelopeBase"
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - webhook.event.retry.triggered
                    data:
                      type: object
                      properties:
                        id:
                          type: string
                          description: ID of this webhook retry event.
                        webhookId:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^wh-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: ID of the webhook to which this event is delivered.
                          example: wh-705m3-si5pq-k3kkp3vv9fnehdil
                        retryOf:
                          type: string
                          minLength: 1
                          maxLength: 64
                          pattern: ^whe-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
                          description: ID of the webhook event whose delivery failed and is retried.
                          example: whe-544ul-uqgad-jkgltj5p6fvd04cj
                        deliveryAttempt:
                          type: number
                          description: Attempt number of this delivery attempt.
                        originalEvent:
                          allOf:
                            - $ref: "#/components/schemas/WebhookEvent"
                            - description: The original Dfns event.
                      required:
                        - id
                        - webhookId
                        - retryOf
                        - deliveryAttempt
                        - originalEvent
                  required:
                    - kind
                    - data
      responses:
        "200":
          description: Respond with a 200 to indicate that the event was successfully
            received. If your endpoint returns anything else than a 200 status
            code, we will consider the delivery has failed and retry later. See
            details
            [here](https://docs.dfns.co/developers/webhooks#webhook-event-deliveries-%26-retries).
x-networks:
  - id: Algorand
    name: Algorand
    testnets:
      - network: AlgorandTestnet
        faucet: https://bank.testnet.algorand.network/
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards:
      - ASA
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: 7
    footnote: null
  - id: Aptos
    name: Aptos
    testnets:
      - network: AptosTestnet
        faucet: https://www.aptosfaucet.com/
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards:
      - AIP-21
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: 30
    footnote: null
  - id: ArbitrumOne
    name: Arbitrum One
    testnets:
      - network: ArbitrumSepolia
        faucet: https://cloud.google.com/application/web3/faucet
    tier: 1
    specialty: false
    feeSponsor: true
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 50
    footnote: null
  - id: AvalancheC
    name: Avalanche C-Chain
    testnets:
      - network: AvalancheCFuji
        faucet: https://faucets.chain.link/fuji
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 50
    footnote: null
  - id: BabylonGenesis
    name: Babylon Genesis
    testnets:
      - network: BabylonTestnet5
        faucet: https://faucet.hoodscan.io/
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards: null
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 5
    footnote: null
  - id: Base
    name: Base
    testnets:
      - network: BaseSepolia
        faucet: https://docs.base.org/base-chain/tools/network-faucets
    tier: 1
    specialty: false
    feeSponsor: true
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 50
    footnote: null
  - id: Berachain
    name: Berachain
    testnets:
      - network: BerachainBepolia
        faucet: https://bepolia.faucet.berachain.com/
    tier: 1
    specialty: false
    feeSponsor: true
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 5
    footnote: null
  - id: Bsc
    name: Binance Smart Chain
    testnets:
      - network: BscTestnet
        faucet: https://www.bnbchain.org/en/testnet-faucet
    tier: 1
    specialty: false
    feeSponsor: true
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 5
    footnote: null
  - id: Bitcoin
    name: Bitcoin
    testnets:
      - network: BitcoinSignet
        faucet: https://signetfaucet.com/
      - network: BitcoinTestnet3
        faucet: null
      - network: BitcoinTestnet4
        faucet: null
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: true
    standards: null
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
      - scheme: Schnorr
        curve: secp256k1
    confirmationDelay: 2
    footnote: null
  - id: BitcoinCash
    name: Bitcoin Cash
    testnets: []
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards: null
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 15
    footnote: null
  - id: Bob
    name: BOB
    testnets:
      - network: BobSepolia
        faucet: https://faucets.chain.link/bob-testnet
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 50
    footnote: null
  - id: Canton
    name: Canton
    testnets:
      - network: CantonTestnet
        faucet: null
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: true
    standards:
      - CIP-56
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: null
    footnote: null
  - id: Cardano
    name: Cardano
    testnets:
      - network: CardanoPreprod
        faucet: https://docs.cardano.org/cardano-testnets/tools/faucet
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards:
      - Asset
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: 5
    footnote: null
  - id: Celo
    name: Celo
    testnets:
      - network: CeloAlfajores
        faucet: https://faucet.celo.org/alfajores
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 50
    footnote: "[^2]"
  - id: Codex
    name: Codex
    testnets:
      - network: CodexSepolia
        faucet: null
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 50
    footnote: null
  - id: Concordium
    name: Concordium
    testnets:
      - network: ConcordiumTestnet
        faucet: https://github.com/Concordium/concordium-dapp-examples/tree/main/testnet-faucet
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards:
      - CIS-2
      - CIS-7
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: 5
    footnote: null
  - id: CosmosHub4
    name: Cosmos Hub 4
    testnets:
      - network: CosmosIcsTestnet
        faucet: null
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards: null
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 5
    footnote: null
  - id: Dogecoin
    name: Dogecoin
    testnets:
      - network: DogecoinTestnet
        faucet: null
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards: null
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 40
    footnote: null
  - id: Ethereum
    name: Ethereum
    testnets:
      - network: EthereumHolesky
        faucet: null
      - network: EthereumHoodi
        faucet: null
      - network: EthereumSepolia
        faucet: https://cloud.google.com/application/web3/faucet/ethereum/sepolia
    tier: 1
    specialty: false
    feeSponsor: true
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
      - ERC-7984
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 12
    footnote: null
  - id: EthereumClassic
    name: Ethereum Classic
    testnets:
      - network: EthereumClassicMordor
        faucet: null
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: true
    standards: null
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 3000
    footnote: null
  - id: FantomOpera
    name: Fantom Opera
    testnets:
      - network: FantomTestnet
        faucet: https://faucet.fantom.network/
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 5
    footnote: null
  - id: FlareC
    name: Flare C-Chain
    testnets:
      - network: FlareCCoston2
        faucet: https://faucet.flare.network/coston2
    tier: 1
    specialty: true
    feeSponsor: false
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 50
    footnote: null
  - id: FlowEvm
    name: Flow EVM
    testnets:
      - network: FlowEvmTestnet
        faucet: https://faucet.flow.com/fund-account
    tier: 1
    specialty: true
    feeSponsor: true
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 10
    footnote: null
  - id: Hedera
    name: Hedera
    testnets:
      - network: HederaTestnet
        faucet: https://portal.hedera.com/faucet
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: true
    standards:
      - HTS
      - HIP-17
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 5
    footnote: null
  - id: InternetComputer
    name: ICP (aka Dfinity)
    testnets: []
    tier: 1
    specialty: true
    feeSponsor: false
    walletConnect: false
    standards: null
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: 2
    footnote: null
  - id: Ink
    name: Ink
    testnets:
      - network: InkSepolia
        faucet: https://inkonchain.com/faucet
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 50
    footnote: null
  - id: Ion
    name: ION
    testnets:
      - network: IonTestnet
        faucet: null
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards:
      - TEP-74
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: 15
    footnote: null
  - id: Iota
    name: Iota
    testnets:
      - network: IotaTestnet
        faucet: https://docs.iota.org/developer/getting-started/get-coins
    tier: 1
    specialty: true
    feeSponsor: false
    walletConnect: false
    standards: null
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: 5
    footnote: null
  - id: Kaspa
    name: Kaspa
    testnets: []
    tier: 1
    specialty: true
    feeSponsor: false
    walletConnect: false
    standards: null
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 20
    footnote: null
  - id: Kusama
    name: Kusama
    testnets:
      - network: Westend
        faucet: https://faucet.polkadot.io/westend
    tier: 2
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards: null
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: null
    footnote: "@deprecated Assets have been moved to Asset Hub. Refer to [multichain
      wallets](https://docs.dfns.co/guides/multichain-wallets) to recover your
      funds."
  - id: KusamaAssetHub
    name: Kusama Asset Hub
    testnets:
      - network: WestendAssetHub
        faucet: null
    tier: 2
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards: null
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: null
    footnote: null
  - id: Litecoin
    name: Litecoin
    testnets:
      - network: LitecoinTestnet
        faucet: null
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards: null
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
      - scheme: Schnorr
        curve: secp256k1
    confirmationDelay: 12
    footnote: null
  - id: Near
    name: NEAR
    testnets:
      - network: NearTestnet
        faucet: https://near-faucet.io/
    tier: 2
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards: null
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: null
    footnote: null
  - id: Optimism
    name: Optimism
    testnets:
      - network: OptimismSepolia
        faucet: null
    tier: 1
    specialty: false
    feeSponsor: true
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 50
    footnote: null
  - id: Origyn
    name: ORIGYN
    testnets: []
    tier: 1
    specialty: true
    feeSponsor: false
    walletConnect: false
    standards: null
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: null
    footnote: null
  - id: Plasma
    name: Plasma
    testnets:
      - network: PlasmaTestnet
        faucet: https://www.gas.zip/faucet/plasma
    tier: 1
    specialty: false
    feeSponsor: true
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 5
    footnote: null
  - id: Plume
    name: Plume
    testnets:
      - network: PlumeSepolia
        faucet: https://faucet.plume.org/
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 50
    footnote: null
  - id: Polkadot
    name: Polkadot
    testnets:
      - network: Paseo
        faucet: null
    tier: 2
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards: null
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: null
    footnote: "@deprecated Assets have been moved to Asset Hub. Refer to [multichain
      wallets](https://docs.dfns.co/guides/multichain-wallets) to recover your
      funds."
  - id: PolkadotAssetHub
    name: Polkadot Asset Hub
    testnets:
      - network: PaseoAssetHub
        faucet: null
    tier: 2
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards: null
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: null
    footnote: null
  - id: Polygon
    name: Polygon
    testnets:
      - network: PolygonAmoy
        faucet: https://faucet.polygon.technology/
    tier: 1
    specialty: false
    feeSponsor: true
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 50
    footnote: null
  - id: Polymesh
    name: Polymesh
    testnets:
      - network: PolymeshTestnet
        faucet: null
    tier: 1
    specialty: true
    feeSponsor: false
    walletConnect: false
    standards: null
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: 4
    footnote: null
  - id: Race
    name: Race
    testnets:
      - network: RaceSepolia
        faucet: null
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: true
    standards: null
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: null
    footnote: null
  - id: SeiPacific1
    name: Sei Pacific
    testnets:
      - network: SeiAtlantic2
        faucet: https://docs.sei.io/learn/faucet
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards: null
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 150
    footnote: null
  - id: Solana
    name: Solana
    testnets:
      - network: SolanaDevnet
        faucet: https://faucet.solana.com/
    tier: 1
    specialty: false
    feeSponsor: true
    walletConnect: true
    standards:
      - SPL
      - SPL2022
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: 8
    footnote: null
  - id: Starknet
    name: Starknet
    testnets:
      - network: StarknetSepolia
        faucet: https://starknet-faucet.vercel.app
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards:
      - SNIP-2
      - SNIP-3
    keyFormats:
      - scheme: ECDSA
        curve: stark
    confirmationDelay: 5
    footnote: null
  - id: Stellar
    name: Stellar
    testnets:
      - network: StellarTestnet
        faucet: https://faucet.triangleplatform.com/stellar/testnet
    tier: 1
    specialty: false
    feeSponsor: true
    walletConnect: true
    standards:
      - SEP-41
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: 2
    footnote: null
  - id: Sui
    name: Sui
    testnets:
      - network: SuiTestnet
        faucet: https://faucet.sui.io/
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards:
      - Coin
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: 5
    footnote: null
  - id: Tempo
    name: Tempo
    testnets:
      - network: TempoModerato
        faucet: null
    tier: 1
    specialty: true
    feeSponsor: false
    walletConnect: true
    standards: null
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: null
    footnote: null
  - id: Tezos
    name: Tezos
    testnets:
      - network: TezosGhostnet
        faucet: https://faucet.ghostnet.teztnets.com/
      - network: TezosShadownet
        faucet: https://faucet.shadownet.teztnets.com/
    tier: 2
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards: null
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: null
    footnote: null
  - id: Ton
    name: TON
    testnets:
      - network: TonTestnet
        faucet: https://faucet.chainstack.com/ton-testnet-faucet
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards:
      - TEP-74
    keyFormats:
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: 15
    footnote: null
  - id: Tron
    name: TRON
    testnets:
      - network: TronNile
        faucet: https://faucet.triangleplatform.com/tron/nile
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: true
    standards:
      - TRC-10
      - TRC-20
      - TRC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 19
    footnote: null
  - id: Tsc
    name: Trusted Smart Chain
    testnets:
      - network: TscTestnet1
        faucet: null
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: true
    standards: null
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: null
    footnote: null
  - id: XLayer
    name: X Layer Network
    testnets:
      - network: XLayerSepolia
        faucet: https://web3.okx.com/xlayer/faucet/xlayerfaucet/
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 10
    footnote: null
  - id: Xdc
    name: XDC Network
    testnets:
      - network: XdcApothem
        faucet: https://faucet.apothem.network/
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: true
    standards:
      - ERC-20
      - ERC-721
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
    confirmationDelay: 10
    footnote: null
  - id: XrpLedger
    name: XrpLedger (aka Ripple)
    testnets:
      - network: XrpLedgerTestnet
        faucet: https://xrpl.org/resources/dev-tools/xrp-faucets
    tier: 1
    specialty: false
    feeSponsor: false
    walletConnect: false
    standards:
      - IOU
      - XLS-33
    keyFormats:
      - scheme: ECDSA
        curve: secp256k1
      - scheme: EdDSA
        curve: ed25519
    confirmationDelay: null
    footnote: null
